Baixe o app para aproveitar ainda mais
Prévia do material em texto
s WinCC V1X Professional - PLC code display 29/12/2014 Página 1 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline WinCC V1X Uso de “PLC code display” para monitoramento de lógica do PLC Denilson Pegaia Objetivo: indicar os passos necessários para configurar o objeto “PLC code display” no WinCC Professional V1X de modo a visualizar a lógica do PLC. Aviso: Este documento apresenta dicas e exemplos sobre o produto e supõe que o leitor possua conhecimento básico prévio sobre o mesmo. Para informações completas e atualizadas, deve-se consultar o manual do produto. O intuito deste texto é meramente didático, podendo ser alterado pela Siemens sem aviso prévio. Os exemplos devem ser adaptados ao uso final e exaustivamente testados antes de utilizados em projetos reais. Índice 1. Introdução ...................................................................................................................... 1 2. Procedimento de configuração. ...................................................................................... 3 3. Referências .................................................................................................................. 16 4. Suporte técnico ............................................................................................................ 16 1. Introdução A partir da versão 13 do WinCC Professional Runtime, está disponível o objeto “PLC code display”. Este objeto permite que se visualize a lógica do PLC online em aplicações de WinCC Professional Runtime sem a necessidade do software de configuração do PLC (STEP 7). s WinCC V1X Professional - PLC code display 29/12/2014 Página 2 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline Configuração Na janela de inspeção é possível fazer algumas configurações básicas, como estilos e cores. Visualização da lógica do PLC O objeto “PLC code display” permite que se visualizem lógicas do PLC feitas em linguagem de contatos (LAD) e blocos (FBD). É possível também ver lógicas sequencias (S7-GRAPH). Apenas um conjunto restrito de tipos de instruções pode ser visualizado pelo objeto “PLC code display”. A tabela a seguir indica estas instruções: Conjunto de instruções que podem ser visualizadas pelo objeto “PLC code display” Em linguagem de contatos (LAD) Em linguagem de blocos (FBD) Contato normalmente aberto AND Contato normalmente fechado OR OU Exclusivo NOT NOT SET SET RESET RESET Atribuição de valor Atribuição de valor FLIP FLOP FLIP FLOP A seleção de que parte da lógica do PLC será vai ser apresentada é determinada através de chamada de funções específicas (via C script): OpenViewerIECPLByAssigment: ajusta o objeto “PLC code display” para apresentar a parte da lógica que atribui valor a uma determinada variável, dentro de um bloco de programação. Se a variável recebe valores em mais de um ponto da lógica, será apresentado a primeira destas atribuições. Através dos botões do objeto é possível ao usuário navegar entre as diferentes atribuições. OpenViewerIECPLByCall: ajusta o objeto “PLC code display” para apresentar a parte da lógica que atribui valor a uma determinada entrada (pino) na chamada de um bloco. Notas O objeto "PLC Code Display" não pode ser usado em grupos ou faceplates. Após a alteração do programa do PLC é recomendado reiniciar a execução do WinCC runtime. s WinCC V1X Professional - PLC code display 29/12/2014 Página 3 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline 2. Procedimento de configuração. A configuração é feita nos seguintes passos: 1.1. Inserir o objeto na tela O objeto “PLC code display” está disponível no menu à direita (“Toolbox”) na divisão “Controls”: 1.2. Criar script A seleção de que parte da lógica do PLC vai ser apresentada é determinada através de chamada de funções específicas (via C script). Os scripts podem ser criados diretamente em objetos (por exemplo, no evento “On Click” de um botão), ou criados como funções / sub-rotinas para serem chamados nestes objetos, com passagem de parâmetros. A criação de scripts como funções / sub-rotinas, tem a vantagem de centralizar o algoritmo num único ponto, facilitando a manutenção e o desenvolvimento do projeto. Nos tópicos seguintes serão mostrados exemplos de funções / sub-rotinas. 1.2.1. Monitorando variável de saída O objetivo desta sub-rotina é criar um ambiente adequado e padronizado para a chamada da função “OpenViewerIECPLByAssigment”. Ao criar uma função / sub-rotina, podem-se especificar parâmetros que vão ser passados na chamada. Esta definição é feita na janela de inspeção. s WinCC V1X Professional - PLC code display 29/12/2014 Página 4 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline Os parâmetros definidos neste exemplo são: ScreenName: string que descreve o nome da tela onde está o objeto “PLC code display” a ser endereçado. ObjectName: string que descreve o nome do objeto “PLC code display” a ser endereçado. CPUName: string que descreve o nome da CPU a ser acessada pelo objeto “PLC code display”. BlockName: string que descreve o nome do bloco a ser monitorado pelo objeto “PLC code display”. OperandName: string que descreve o nome da variável de saída que deverá ser monitorada. s WinCC V1X Professional - PLC code display 29/12/2014 Página 5 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline Exemplo de script comentado Comentários iniciais: 0001 /* 0002 0003 This fuction call OpenViewerIECPLByAssignment with correct eviroment / parameters 0004 0005 OpenViewerIECPLByAssignment is used for the LAD and FBD languages by Code Viewer object. 0006 It shows the assignment to an operator (program related to a "coil"). 0007 0008 */ 0009 Inclusão de definições padrão (default para aplicações com WinCC Professional): 0010 #include "GlobalDefinitions.h" // add standard deffinitions Definição do cabeçalho: sem variável de retorno (não é necessário), definição de variáveis a serem passadas para a rotina conforme propriedades definidas na janela de inspeção. 0011 void C_OpenCodeViewer_Assig(char* ScreenName, char* ObjectName, char* CPUName, char* BlockName, char* OperandName) Início da rotina: 0012 { 0013 Inclusão de biblioteca própria para uso do objeto “PLC code display” 0014 // add libraries 0015 #pragma code("KOPAPI.dll") 0016 #include "kopapi.h" 0017 #pragma code() 0018 s WinCC V1X Professional - PLC code display 29/12/2014 Página 6 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline Definição de variáveis internas: no geral, os parâmetros são copiados para variáveis internas por questão de organização. A variável “error” retorna informações de erro na chamada da função. A função “OpenViewerIECPLByAssigment” retorna “1” se houve erro em sua execução (a variável “result” coleta esta informação). 0019 // Variable definitions for fuction call 0020 char* pServerPrefix= NULL; 0021 char* pCPUName = CPUName; // CPU's name to be monitored 0022 char* pContainingBlock = BlockName; // Block's name to be monitored //(OB, FC, DB, Instance DB) 0023 char* pOperand = OperandName; // Operand's name to be monitored 0024 CMN_ERROR error; // Error description 0025 0026 BOOL result; // 0 means that the fuction was executed without errors 0027 Chamada da função OpenViewerIECPLByAssigment: as variávies do cabeçalho são passadas para a função. 0028 // function call 0029 result = OpenViewerIECPLByAssignment(0, // DWFLAGS: Bit array, 0 by default (i.e open TIA in online mode). KOPAPI_FLAG_TIAPORTAL_SUPPRE SS_PROGRAM_STATUS=0x0004: Open TIA in offline mode. 0030 pServerPrefix, // Server Prefix: NULL 0031 ScreenName, // Screen Name where Code Viewer object is used 0032 ObjectName, // Name of Code Viewer object 0033 pCPUName, // PLC name to be monitored 0034 pContainingBlock, // Name of the Block to be monitored 0035 pOperand, // Operand to be monitored 0036 &error); // Error description 0037 Diagnósticos de falha: esta parte do programa é opcional. Caso haja alguma falha durante a execução, a variável “result” retornará o valor “1”. Estando “result” com o valor “1”, será impresso (função printf) no objeto “ “ um texto fixo mais os valores de detalhes do erro, conforme variável “error”. 0038 // check for errors, and print a log if necessary 0039 if(!result) 0040 { 0041 // there are only few reasons why the call to OpenViewerIECPLByAssignment will 0042 // fail, in most cases the viewer control could not be found 0043 // most of the errors have to be handled in the OnError event of the viewer 0044 printf("OpenViewerIECPLByAssignment failed: err1=%ld, err2=%ld, err3=%ld, err4=%ld, err5=%ld, text=\"%s\"\r \n", result, error.dwError1, error.dwError2, error.dwError3, error.dwError4, error.dwError5, error.szError- Text); 0045 } Fim da rotina: 0046 0047 } s WinCC V1X Professional - PLC code display 29/12/2014 Página 7 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline 1.2.2. Monitorando entrada de bloco O objetivo desta sub-rotina é criar um ambiente adequado e padronizado para a chamada da função “OpenViewerIECPLByCall”. Ao criar uma função / sub-rotina, podem-se especificar parâmetros que vão ser passados na chamada. Esta definição é feita na janela de inspeção. Os parâmetros definidos neste exemplo são: screenName: string que descreve o nome da tela onde está o objeto “PLC code display” a ser endereçado. objectName: string que descreve o nome do objeto “PLC code display” a ser endereçado. cpuName: string que descreve o nome da CPU a ser acessada pelo objeto “PLC code display”. containingBlock: string que descreve o nome do bloco a ser monitorado pelo objeto “PLC code display”. calledBlock: string o bloco que esta sendo chamado dentro do containingBlock e que servirá de ponto focal para a monitoração. pinName: string que define o nome da variável de entrada que do bloco definido em “calledBlock” e que servirá de ponto focal para a monitoração. s WinCC V1X Professional - PLC code display 29/12/2014 Página 8 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline Exemplo de script comentado Comentários iniciais: 0001 /* 0002 0003 This fuction call OpenViewerIECPLByCall with correct eviroment / parameters 0004 0005 OpenViewerIECPLByCall is used for the LAD and FBD languages by Code Viewer object. 0006 It shows the assignment to an operator (program related to a called block's input). 0007 0008 */ 0009 Inclusão de definições padrão (default para aplicações com WinCC Professional): 0010 #include "GlobalDefinitions.h" Definição do cabeçalho: sem variável de retorno (não é necessário), definição de variáveis a serem passadas para a rotina conforme propriedades definidas na janela de inspeção. 0011 void C_OpenCodeViewe_Call(char* screenName, char* objectName, char* cpuName, char* containingBlock, char* calledBlock, char* pinName) Início da rotina: 0012 { 0013 Inclusão de biblioteca própria para uso do objeto “PLC code display” 0014 0015 // add libraries 0016 #pragma code("kopapi.dll") 0017 #include "kopapi.h" 0018 #pragma code() 0019 s WinCC V1X Professional - PLC code display 29/12/2014 Página 9 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline Definição de variáveis internas: no geral, os parâmetros são copiados para variáveis internas por questão de organização. A variável “error” retorna informações de erro na chamada da função. A função “OpenViewerIECPLByCall” retorna “1” se houve erro em sua execução (a variável “result” coleta esta informação). 0020 // Variable definitions for fuction call 0021 0022 char* serverPrefix = ""; 0023 CMN_ERROR error; // Error description 0024 0025 BOOL result; // 0 means that the fuction was executed without errors 0026 0027 Chamada da função OpenViewerIECPLByCall: as variáveis do cabeçalho são passadas para a função. 0028 result = OpenViewerIECPLByCall(0, // DWFLAGS: Bit array, 0 by default(the complete pin name is compared to lpszPin); IECPLVIEWER_PIN_SUBSTRING_SEARCH= 0x0001: the pin name starts with the string pass in lpszPin. 0029 serverPrefix, // Server Prefix: NULL 0030 screenName, // Screen Name where Code Viewer object is used 0031 objectName, // Name of Code Viewer object 0032 cpuName, // PLC name to be monitored 0033 containingBlock,//Name of the Block to be monitored 0034 calledBlock, // Name of the Block called in the monitored's block 0035 pinName, // Input name of the called Block to be monitored 0036 &error); // Error description 0037 0038 Diagnósticos de falha: esta parte do programa é opcional. Caso haja alguma falha durante a execução, a variável “result” retornará o valor “1”. Estando “result” com o valor “1”, será impresso (função printf) no objeto “ “ um texto fixo mais os valores de detalhes do erro, conforme variável “error”. 0039 if(!result) 0040 { 0041 // there are only few reasons why the call to OpenViewerIECPLByCall will fail, in most cases the viewer control could not be found 0042 // most of the errors have to be handled in the OnError event of the viewer 0043 printf("OpenViewerIECPLByCall failed: err1=%ld, err2=%ld, err3=%ld, err4=%ld, err5=%ld, text=\"%s\"\r\n", result, error.dwError1, error.dwError2, error.dwError3, error.dwError4, error.dwError5, error.szErrorText); 0044 } 0045 0046 Fim da rotina: 0047 } s WinCC V1X Professional - PLC code display 29/12/2014 Página 10 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline 1.3. Chamada do script Neste exemplo os scripts são chamados a partir de botões. 1.3.1. Monitorando variável de saída Neste caso usa-se a rotina “C_OpenCodeViewer_Assig” (vide 1.2.1). Os parâmetros são passados como strings, exceto menção em contrário: Parâmetros: ScreenName: Nome da tela onde o objeto “PLC code display”. O nomeda tela pode ser obtido nas propriedades da tela (General / Name), título das propriedades ou estrutura de diretórios: s WinCC V1X Professional - PLC code display 29/12/2014 Página 11 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline Object name: Nome do objeto “PLC code display”. O nome do objeto pode ser obtido nas propriedades da tela (Miscellaneous / Name) ou título das propriedades: CPUName: Nome da CPU a ser monitorada. O nome da CPU pode ser obtido da estrutura de diretórios ou nas propriedades da CPU, diretório General / Project Information / Name. s WinCC V1X Professional - PLC code display 29/12/2014 Página 12 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline BlockName: Nome do bloco a ser monitorado. No caso de FB, usar o nome do instance DB: OperandName: nome da variável de saída a ser monitorada. Ela serve de referência para a representação do segmento (network) a ser monitorado. Para o caso de variáveis globais, usar o nome simbólico da variável (por exemplo, “Tag_1”). Para o caso de variáveis locais, usar o nome simbólico da variável, precedido de “#” (por exemplo, “#out”). s WinCC V1X Professional - PLC code display 29/12/2014 Página 13 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline 1.3.2. Monitorando entrada de bloco Neste caso usa-se a rotina “C_OpenCodeViewer_Call” (vide 1.2.2). Os parâmetros são passados como strings, exceto menção em contrário: Parâmetros: ScreenName: Nome da tela onde o objeto “PLC code display”. O nome da tela pode ser obtido nas propriedades da tela (General / Name), título das propriedades ou estrutura de diretórios: s WinCC V1X Professional - PLC code display 29/12/2014 Página 14 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline Object name: Nome do objeto “PLC code display”. O nome do objeto pode ser obtido nas propriedades da tela (Miscellaneous / Name) ou título das propriedades: CPUName: Nome da CPU a ser monitorada. O nome da CPU pode ser obtida da estrutura de dirtórios ou nas propriedades da CPU, diretório General / Project Information / Name. s WinCC V1X Professional - PLC code display 29/12/2014 Página 15 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline ContainingBlock: Nome do bloco a ser monitorado. No caso de FB, usar o nome do instance DB: CalledBlock: nome do bloco cuja chamada deve ser monitorada. No caso de FB, usar o instance DB. No caso de FB muiltinstance, usar o nome do Multiinstance, precedido por “#” (por exemplo, “#My_Block2_Instance”). s WinCC V1X Professional - PLC code display 29/12/2014 Página 16 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline PinName: nome do pino de entrada do bloco cuja chamada deve ser monitorada. 3. Referências Um projeto exemplo pode ser acessado no Fórum Siemens para automação industrial, sob link: https://www.automation.siemens.com/BR/forum/guests/PostShow.aspx?PageIndex=1&PostI D=531865&Language=en&onlyInternet=False#top 4. Suporte técnico Siemens Industry Sector Customer Service Division / Service Delivery - Technical Support & Hotline – Requisição de suporte: www.siemens.com.br/Hotline/SR Tel.: +55 0800 7 73 73 73 Portal de Suporte: www.siemens.com.br/Hotline Homepage Brasil: www.siemens.com.br
Compartilhar