WinCC V1X Índice 1. Introdução

Propaganda
s
WinCC V1X Professional - PLC code display
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).
29/12/2014
s Industry Sector
- Technical Support & Hotline
Página 1 /
www.siemens.com.br/Hotline
16
s
WinCC V1X Professional - PLC code display
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)
Contato normalmente aberto
Contato normalmente fechado
NOT
SET
RESET
Atribuição de valor
FLIP FLOP
Em linguagem de blocos (FBD)
AND
OR
OU Exclusivo
NOT
SET
RESET
Atribuição de valor
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.
29/12/2014
s Industry Sector
- Technical Support & Hotline
Página 2 /
www.siemens.com.br/Hotline
16
s
WinCC V1X Professional - PLC code display
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.
29/12/2014
s Industry Sector
- Technical Support & Hotline
Página 3 /
www.siemens.com.br/Hotline
16
s
WinCC V1X Professional - PLC code display
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.
29/12/2014
s Industry Sector
- Technical Support & Hotline
Página 4 /
www.siemens.com.br/Hotline
16
s
WinCC V1X Professional - PLC code display
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
0015
0016
0017
0018
// add libraries
#pragma code("KOPAPI.dll")
#include "kopapi.h"
#pragma code()
29/12/2014
s Industry Sector
- Technical Support & Hotline
Página 5 /
www.siemens.com.br/Hotline
16
s
WinCC V1X Professional - PLC code display
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
0020
0021
0022
// Variable definitions for fuction call
char* pServerPrefix = NULL;
char* pCPUName = CPUName;
// CPU's name to be monitored
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.
pServerPrefix,
// Server Prefix: NULL
ScreenName,
// Screen Name where Code
Viewer object is used
ObjectName,
// Name of Code Viewer
object
pCPUName,
// PLC name to be monitored
pContainingBlock, // Name of the Block to be
monitored
pOperand,
// Operand to be monitored
&error);
// Error description
0030
0031
0032
0033
0034
0035
0036
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
0039
0040
0041
0042
0043
0044
0045
// check for errors, and print a log if necessary
if(!result)
{
// there are only few reasons why the call to
OpenViewerIECPLByAssignment will
// fail, in most cases the viewer control could not be found
// most of the errors have to be handled in the OnError event of the
viewer
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.szErrorText);
}
Fim da rotina:
0046
0047 }
29/12/2014
s Industry Sector
- Technical Support & Hotline
Página 6 /
www.siemens.com.br/Hotline
16
s
WinCC V1X Professional - PLC code display
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.
29/12/2014
s Industry Sector
- Technical Support & Hotline
Página 7 /
www.siemens.com.br/Hotline
16
s
WinCC V1X Professional - PLC code display
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
0016
0017
0018
0019
// add libraries
#pragma code("kopapi.dll")
#include "kopapi.h"
#pragma code()
29/12/2014
s Industry Sector
- Technical Support & Hotline
Página 8 /
www.siemens.com.br/Hotline
16
s
WinCC V1X Professional - PLC code display
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
0021
0022
0023
0024
0025
0026
0027
// Variable definitions for fuction call
char* serverPrefix = "";
CMN_ERROR error;
// Error description
BOOL result; // 0 means that the fuction was executed without errors
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 }
29/12/2014
s Industry Sector
- Technical Support & Hotline
Página 9 /
www.siemens.com.br/Hotline
16
s
WinCC V1X Professional - PLC code display
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 nome da tela pode ser
obtido nas propriedades da tela (General / Name), título das propriedades ou estrutura
de diretórios:
29/12/2014
s Industry Sector
- Technical Support & Hotline
Página 10 /
www.siemens.com.br/Hotline
16
s
WinCC V1X Professional - PLC code display
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.
29/12/2014
s Industry Sector
- Technical Support & Hotline
Página 11 /
www.siemens.com.br/Hotline
16
s
WinCC V1X Professional - PLC code display
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”).
29/12/2014
s Industry Sector
- Technical Support & Hotline
Página 12 /
www.siemens.com.br/Hotline
16
s
WinCC V1X Professional - PLC code display
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:
29/12/2014
s Industry Sector
- Technical Support & Hotline
Página 13 /
www.siemens.com.br/Hotline
16
s
WinCC V1X Professional - PLC code display
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.
29/12/2014
s Industry Sector
- Technical Support & Hotline
Página 14 /
www.siemens.com.br/Hotline
16
s
WinCC V1X Professional - PLC code display
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”).
29/12/2014
s Industry Sector
- Technical Support & Hotline
Página 15 /
www.siemens.com.br/Hotline
16
s
WinCC V1X Professional - PLC code display
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
29/12/2014
s Industry Sector
- Technical Support & Hotline
Página 16 /
www.siemens.com.br/Hotline
16
Download