wincc professional plc code display
DESCRIPTION
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.TRANSCRIPT
-
s WinCC V1X Professional - PLC code display
29/12/2014 Pgina 1 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
WinCC V1X
Uso de PLC code display para monitoramento de lgica do PLC
Denilson Pegaia
Objetivo: indicar os passos necessrios para configurar o objeto PLC code display no
WinCC Professional V1X de modo a visualizar a lgica do PLC.
Aviso: Este documento apresenta dicas e exemplos sobre o produto e supe que o leitor possua conhecimento bsico prvio sobre o mesmo. Para informaes completas e atualizadas, deve-se consultar o manual do produto. O intuito deste
texto meramente didtico, podendo ser alterado pela Siemens sem aviso prvio. Os exemplos devem ser adaptados ao uso
final e exaustivamente testados antes de utilizados em projetos reais.
ndice
1. Introduo ...................................................................................................................... 1
2. Procedimento de configurao. ...................................................................................... 3
3. Referncias .................................................................................................................. 16
4. Suporte tcnico ............................................................................................................ 16
1. Introduo
A partir da verso 13 do WinCC Professional Runtime, est disponvel o objeto PLC code
display. Este objeto permite que se visualize a lgica do PLC online em aplicaes de
WinCC Professional Runtime sem a necessidade do software de configurao do PLC
(STEP 7).
-
s WinCC V1X Professional - PLC code display
29/12/2014 Pgina 2 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
Configurao Na janela de inspeo possvel fazer algumas configuraes bsicas, como estilos e cores. Visualizao da lgica do PLC O objeto PLC code display permite que se visualizem lgicas do PLC feitas em linguagem de contatos (LAD) e blocos (FBD). possvel tambm ver lgicas sequencias (S7-GRAPH). Apenas um conjunto restrito de tipos de instrues pode ser visualizado pelo objeto PLC code display. A tabela a seguir indica estas instrues:
Conjunto de instrues 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
Atribuio de valor Atribuio de valor
FLIP FLOP FLIP FLOP
A seleo de que parte da lgica do PLC ser vai ser apresentada determinada atravs de chamada de funes especficas (via C script):
OpenViewerIECPLByAssigment: ajusta o objeto PLC code display para apresentar a parte da lgica que atribui valor a uma determinada varivel, dentro de um bloco de programao. Se a varivel recebe valores em mais de um ponto da lgica, ser apresentado a primeira destas atribuies. Atravs dos botes do objeto possvel ao usurio navegar entre as diferentes atribuies.
OpenViewerIECPLByCall: ajusta o objeto PLC code display para apresentar a parte da lgica que atribui valor a uma determinada entrada (pino) na chamada de um bloco.
Notas
O objeto "PLC Code Display" no pode ser usado em grupos ou faceplates.
Aps a alterao do programa do PLC recomendado reiniciar a execuo do
WinCC runtime.
-
s WinCC V1X Professional - PLC code display
29/12/2014 Pgina 3 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
2. Procedimento de configurao.
A configurao feita nos seguintes passos:
1.1. Inserir o objeto na tela
O objeto PLC code display est disponvel no menu direita (Toolbox) na diviso
Controls:
1.2. Criar script
A seleo de que parte da lgica do PLC vai ser apresentada determinada atravs de
chamada de funes especficas (via C script). Os scripts podem ser criados
diretamente em objetos (por exemplo, no evento On Click de um boto), ou criados
como funes / sub-rotinas para serem chamados nestes objetos, com passagem de
parmetros.
A criao de scripts como funes / sub-rotinas, tem a vantagem de centralizar o
algoritmo num nico ponto, facilitando a manuteno e o desenvolvimento do projeto.
Nos tpicos seguintes sero mostrados exemplos de funes / sub-rotinas.
1.2.1. Monitorando varivel de sada
O objetivo desta sub-rotina criar um ambiente adequado e padronizado para a
chamada da funo OpenViewerIECPLByAssigment.
Ao criar uma funo / sub-rotina, podem-se especificar parmetros que vo ser
passados na chamada. Esta definio feita na janela de inspeo.
-
s WinCC V1X Professional - PLC code display
29/12/2014 Pgina 4 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
Os parmetros definidos neste exemplo so:
ScreenName: string que descreve o nome da tela onde est o objeto PLC
code display a ser endereado.
ObjectName: string que descreve o nome do objeto PLC code display a ser
endereado.
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 varivel de sada que dever
ser monitorada.
-
s WinCC V1X Professional - PLC code display
29/12/2014 Pgina 5 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
Exemplo de script comentado
Comentrios 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
Incluso de definies padro (default para aplicaes com WinCC Professional):
0010 #include "GlobalDefinitions.h" // add standard deffinitions
Definio do cabealho: sem varivel de retorno (no necessrio), definio de
variveis a serem passadas para a rotina conforme propriedades definidas na janela
de inspeo.
0011 void C_OpenCodeViewer_Assig(char* ScreenName, char* ObjectName, char*
CPUName, char* BlockName, char* OperandName)
Incio da rotina:
0012 { 0013
Incluso de biblioteca prpria 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 Pgina 6 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
Definio de variveis internas: no geral, os parmetros so copiados para variveis
internas por questo de organizao. A varivel error retorna informaes de erro
na chamada da funo. A funo OpenViewerIECPLByAssigment retorna 1 se
houve erro em sua execuo (a varivel result coleta esta informao).
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 funo OpenViewerIECPLByAssigment: as varivies do cabealho
so passadas para a funo.
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
Diagnsticos de falha: esta parte do programa opcional. Caso haja alguma falha
durante a execuo, a varivel result retornar o valor 1. Estando result com o
valor 1, ser impresso (funo printf) no objeto um texto fixo mais os valores de
detalhes do erro, conforme varivel 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 Pgina 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 funo OpenViewerIECPLByCall.
Ao criar uma funo / sub-rotina, podem-se especificar parmetros que vo ser
passados na chamada. Esta definio feita na janela de inspeo.
Os parmetros definidos neste exemplo so:
screenName: string que descreve o nome da tela onde est o objeto PLC
code display a ser endereado.
objectName: string que descreve o nome do objeto PLC code display a ser
endereado.
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 monitorao.
pinName: string que define o nome da varivel de entrada que do bloco
definido em calledBlock e que servir de ponto focal para a monitorao.
-
s WinCC V1X Professional - PLC code display
29/12/2014 Pgina 8 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
Exemplo de script comentado
Comentrios 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
Incluso de definies padro (default para aplicaes com WinCC Professional):
0010 #include "GlobalDefinitions.h"
Definio do cabealho: sem varivel de retorno (no necessrio), definio de
variveis a serem passadas para a rotina conforme propriedades definidas na janela
de inspeo.
0011 void C_OpenCodeViewe_Call(char* screenName, char* objectName, char* cpuName, char* containingBlock, char* calledBlock, char* pinName)
Incio da rotina:
0012 {
0013
Incluso de biblioteca prpria 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 Pgina 9 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
Definio de variveis internas: no geral, os parmetros so copiados para variveis
internas por questo de organizao. A varivel error retorna informaes de erro
na chamada da funo. A funo OpenViewerIECPLByCall retorna 1 se houve
erro em sua execuo (a varivel result coleta esta informao).
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 funo OpenViewerIECPLByCall: as variveis do cabealho so
passadas para a funo.
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
Diagnsticos de falha: esta parte do programa opcional. Caso haja alguma falha
durante a execuo, a varivel result retornar o valor 1. Estando result com o
valor 1, ser impresso (funo printf) no objeto um texto fixo mais os valores de
detalhes do erro, conforme varivel 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 Pgina 10 / 16 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline
1.3. Chamada do script
Neste exemplo os scripts so chamados a partir de botes.
1.3.1. Monitorando varivel de sada
Neste caso usa-se a rotina C_OpenCodeViewer_Assig (vide 1.2.1).
Os parmetros so passados como strings, exceto meno em contrrio:
Parmetros:
ScreenName: Nome da tela onde o objeto PLC code display. O nome da tela pode ser
obtido nas propriedades da tela (General / Name), ttulo das propriedades ou estrutura
de diretrios:
-
s WinCC V1X Professional - PLC code display
29/12/2014 Pgina 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 ttulo das propriedades:
CPUName: Nome da CPU a ser monitorada. O nome da CPU pode ser obtido da
estrutura de diretrios ou nas propriedades da CPU, diretrio General / Project
Information / Name.
-
s WinCC V1X Professional - PLC code display
29/12/2014 Pgina 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 varivel de sada a ser monitorada. Ela serve de referncia
para a representao do segmento (network) a ser monitorado.
Para o caso de variveis globais, usar o nome simblico da varivel (por exemplo,
Tag_1). Para o caso de variveis locais, usar o nome simblico da varivel, precedido
de # (por exemplo, #out).
-
s WinCC V1X Professional - PLC code display
29/12/2014 Pgina 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 parmetros so passados como strings, exceto meno em contrrio:
Parmetros:
ScreenName: Nome da tela onde o objeto PLC code display. O nome da tela pode ser
obtido nas propriedades da tela (General / Name), ttulo das propriedades ou estrutura
de diretrios:
-
s WinCC V1X Professional - PLC code display
29/12/2014 Pgina 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 ttulo das propriedades:
CPUName: Nome da CPU a ser monitorada. O nome da CPU pode ser obtida da
estrutura de dirtrios ou nas propriedades da CPU, diretrio General / Project
Information / Name.
-
s WinCC V1X Professional - PLC code display
29/12/2014 Pgina 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 Pgina 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. Referncias
Um projeto exemplo pode ser acessado no Frum Siemens para automao 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 tcnico
Siemens Industry Sector Customer Service Division / Service Delivery
- Technical Support & Hotline
Requisio 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