Você está na página 1de 16

s

WinCC V1X Professional - PLC code display

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).

29/12/2014

s Industry Sector

- Technical Support & Hotline

Pgina 1 /
www.siemens.com.br/Hotline

16

WinCC V1X Professional - PLC code display

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)
Contato normalmente aberto
Contato normalmente fechado
NOT
SET
RESET
Atribuio de valor
FLIP FLOP

Em linguagem de blocos (FBD)


AND
OR
OU Exclusivo
NOT
SET
RESET
Atribuio de valor
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.

29/12/2014

s Industry Sector

- Technical Support & Hotline

Pgina 2 /
www.siemens.com.br/Hotline

16

WinCC V1X Professional - PLC code display

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.
29/12/2014

s Industry Sector

- Technical Support & Hotline

Pgina 3 /
www.siemens.com.br/Hotline

16

WinCC V1X Professional - PLC code display

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.

29/12/2014

s Industry Sector

- Technical Support & Hotline

Pgina 4 /
www.siemens.com.br/Hotline

16

WinCC V1X Professional - PLC code display

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
0015
0016
0017
0018

// add libraries
#pragma code("KOPAPI.dll")
#include "kopapi.h"
#pragma code()

29/12/2014

s Industry Sector

- Technical Support & Hotline

Pgina 5 /
www.siemens.com.br/Hotline

16

WinCC V1X Professional - PLC code display

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
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 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.
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

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
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

Pgina 6 /
www.siemens.com.br/Hotline

16

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 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.

29/12/2014

s Industry Sector

- Technical Support & Hotline

Pgina 7 /
www.siemens.com.br/Hotline

16

WinCC V1X Professional - PLC code display

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
0016
0017
0018
0019

// add libraries
#pragma code("kopapi.dll")
#include "kopapi.h"
#pragma code()

29/12/2014

s Industry Sector

- Technical Support & Hotline

Pgina 8 /
www.siemens.com.br/Hotline

16

WinCC V1X Professional - PLC code display

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
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 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 }
29/12/2014

s Industry Sector

- Technical Support & Hotline

Pgina 9 /
www.siemens.com.br/Hotline

16

WinCC V1X Professional - PLC code display

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:

29/12/2014

s Industry Sector

- Technical Support & Hotline

Pgina 10 /
www.siemens.com.br/Hotline

16

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 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.

29/12/2014

s Industry Sector

- Technical Support & Hotline

Pgina 11 /
www.siemens.com.br/Hotline

16

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 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).

29/12/2014

s Industry Sector

- Technical Support & Hotline

Pgina 12 /
www.siemens.com.br/Hotline

16

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 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:

29/12/2014

s Industry Sector

- Technical Support & Hotline

Pgina 13 /
www.siemens.com.br/Hotline

16

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 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.

29/12/2014

s Industry Sector

- Technical Support & Hotline

Pgina 14 /
www.siemens.com.br/Hotline

16

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

Pgina 15 /
www.siemens.com.br/Hotline

16

WinCC V1X Professional - PLC code display

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

29/12/2014

s Industry Sector

- Technical Support & Hotline

Pgina 16 /
www.siemens.com.br/Hotline

16