• Nenhum resultado encontrado

Uso de PLC code display para monitoramento de lógica do PLC

N/A
N/A
Protected

Academic year: 2021

Share "Uso de PLC code display para monitoramento de lógica do PLC"

Copied!
19
0
0

Texto

(1)

24/01/2017 Página 1 / 19 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 ... 18

4. Suporte técnico e treinamento ... 19

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

(2)

24/01/2017 Página 2 / 19 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.

(3)

24/01/2017 Página 3 / 19 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.

(4)

24/01/2017 Página 4 / 19 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.

(5)

24/01/2017 Página 5 / 19 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()

(6)

24/01/2017 Página 6 / 19 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 }

(7)

24/01/2017 Página 7 / 19 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline

Fim da rotina: 0046

0047 }

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

(8)

24/01/2017 Página 8 / 19 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline

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

(9)

24/01/2017 Página 9 / 19 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()

(10)

24/01/2017 Página 10 / 19 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

(11)

24/01/2017 Página 11 / 19 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline 0046

Fim da rotina:

0047 }

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:

(12)

24/01/2017 Página 12 / 19 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

(13)

24/01/2017 Página 13 / 19 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline

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.

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

(14)

24/01/2017 Página 14 / 19 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline

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

(15)

24/01/2017 Página 15 / 19 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:

(16)

24/01/2017 Página 16 / 19 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.

(17)

24/01/2017 Página 17 / 19 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”).

(18)

24/01/2017 Página 18 / 19 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

(19)

24/01/2017 Página 19 / 19 s Industry Sector - Technical Support & Hotline www.siemens.com.br/Hotline

4. Suporte técnico e treinamento

Suporte Técnico

Requisição de suporte:

www.siemens.com.br/Hotline/SR

Tel.: 0800 7 73 73 73

Portal de Suporte: www.siemens.com.br/Hotline

Homepage Brasil: www.siemens.com.br

Centro de treinamento - SITRAIN

Informações: www.siemens.com.br/sitrain Tel.: 0800 7 73 73 73

Referências

Documentos relacionados

[r]

a)a explicitação rigorosa da referência teórica a que pretende aderir (teoria como modelo compreensivo do processo social ou teoria como reprodução ideal do movimento real do

Anais do XI Encontro Nacional de Educação Matemática – ISSN 2178–034X Página 6 Inicialmente o teste não foi pensado para que apresentasse uma distribuição

Outro aspecto importante é a diminuição de tempo para atividades de lazer e recreação, necessárias para a manutenção da saúde física e mental dos tra- balhadores, pois, de

Sendo a areia verde um material simples e, neste caso formada apenas da combinação de areia base, argila e água, torna-se necessário o conhecimento e determinação

O seu fundamento está no fato de que para se caracterizar competência da Justiça do Trabalho basta que haja trabalho humano em benefício de outrem, desta forma a Justiça do

37 Síntomas Período de incubação Tempo de duração Dose infecciosa • Baixa - Hospedeiro dependente - 400-500 células. - Taxa de infecção diretamente proporcional ao número

Em um dos dias d'esta semana appareceu no Jornal do Commereio um folhetim sobre theatros com a mesma assignatura, e para que não haja confusões,