Académique Documents
Professionnel Documents
Culture Documents
IEC 61131
Rev. D 09/2015
Cd. Doc.: MP399048
DIREITOS AUTORAIS
Nexto e MasterTool IEC XE so marcas registradas da Altus Sistemas de Automao S.A.
Windows marca registrada da Microsoft Corporation.
Sumrio
Sumrio
SUMRIO ...................................................................................................................................................... II
1. INTRODUO ...........................................................................................................................................6
Documentos Relacionados a este Manual ...................................................................................................6
Consideraes Gerais sobre Documentao ALTUS ..............................................................................7
Documentao de Suporte ao MasterTool IEC XE .................................................................................7
Inspeo Visual ............................................................................................................................................7
Suporte Tcnico ...........................................................................................................................................7
Mensagens de Advertncia Utilizadas neste Manual ..................................................................................8
2. CONCEITOS E COMPONENTES BSICOS ...........................................................................................9
Introduo ....................................................................................................................................................9
Conceitos Bsicos .........................................................................................................................................9
Funcionalidades Avanadas ........................................................................................................................9
Orientao a Objetos na Programao e na Estrutura do Projeto .............................................................9
Tipos de Dados Especiais ..................................................................................................................... 10
Operadores e Variveis Especiais ......................................................................................................... 10
Conceito de Gerenciamento de Usurio e Direitos de Acesso ............................................................... 10
Caractersticas em Editores .................................................................................................................. 10
Verses de Bibliotecas ......................................................................................................................... 10
Funcionalidades Adicionais ................................................................................................................. 10
Perfis .......................................................................................................................................................... 11
Projeto ........................................................................................................................................................ 11
Dispositivos ................................................................................................................................................ 11
Aplicao .................................................................................................................................................... 12
Task Configuration .................................................................................................................................... 12
Notas Importantes para Sistemas Multitarefas ...................................................................................... 12
Comunicao .............................................................................................................................................. 13
Gerao de Cdigo e Alterao Online ..................................................................................................... 13
Gerao de Cdigo e Informaes de Compilao ................................................................................ 13
Alteraes Online ................................................................................................................................ 13
Aplicao de Inicializao (Projeto de Inicializao) ............................................................................ 13
Mtodo de Envio/Login de Projetos Sem Diferena de Projetos ........................................................... 14
Monitorao ............................................................................................................................................... 14
Depurao .................................................................................................................................................. 14
Linguagens de Programao Suportadas.................................................................................................. 14
Unidades de Organizao de Programas .................................................................................................. 15
POU .................................................................................................................................................... 15
Programa ............................................................................................................................................. 17
Funo ................................................................................................................................................. 18
Bloco Funcional ................................................................................................................................... 20
Unidades de Tipo de Dados.................................................................................................................. 24
Mtodo ................................................................................................................................................ 25
Propriedade.......................................................................................................................................... 26
Ao .................................................................................................................................................... 27
Funo Externa, Bloco Funcional, Mtodo ........................................................................................... 28
Lista de Variveis Globais - GVL ........................................................................................................ 28
Variveis Persistentes .......................................................................................................................... 29
Arquivo Externo .................................................................................................................................. 29
POUs para Verificaes Implcitas ....................................................................................................... 30
ii
Sumrio
Gerenciamento de Bibliotecas ................................................................................................................... 30
Instalao e Incluso no Projeto ........................................................................................................... 31
Bibliotecas Referenciadas .................................................................................................................... 31
Verses de Biblioteca .......................................................................................................................... 32
Acesso nico aos Mdulos da Biblioteca ou s Variveis .................................................................... 32
Criando Bibliotecas, Codificao, Documentao ................................................................................ 33
3. COMANDOS DO MENU .......................................................................................................................... 35
Library Manager ....................................................................................................................................... 35
Comandos do Gerenciador de Bibliotecas ............................................................................................ 35
Acrescentar Biblioteca ......................................................................................................................... 35
Propriedades ........................................................................................................................................ 38
Tentar Recarregar a Biblioteca ............................................................................................................. 39
4. REFERNCIA DE PROGRAMAO .................................................................................................... 40
Declarao .................................................................................................................................................. 40
Declarao de Variveis ....................................................................................................................... 40
Recomendaes na Nomeao de Identificadores ................................................................................. 41
Inicializao de Variveis .................................................................................................................... 45
Expresses Arbitrrias para Inicializao de Variveis ......................................................................... 45
Editor de Declarao ............................................................................................................................ 45
Dilogo Autodeclarar ........................................................................................................................... 46
Modo Atalho ....................................................................................................................................... 46
Declarao AT ..................................................................................................................................... 46
Palavras-chave ..................................................................................................................................... 47
Variveis Locais VAR ......................................................................................................................... 48
Variveis de Entrada - VAR_INPUT.................................................................................................... 48
Variveis de Sada - VAR_OUTPUT ................................................................................................... 48
Variveis de Entrada e Sada - VAR_IN_OUT ..................................................................................... 48
Variveis Globais - VAR_GLOBAL .................................................................................................... 49
Variveis Temporrias - VAR_TEMP .................................................................................................. 49
Variveis Estticas - VAR-STAT ......................................................................................................... 49
Variveis Externas VAR_EXTERNAL ............................................................................................. 49
Atributo Palavras-chave para Tipos de Variveis .................................................................................. 50
Variveis Remanentes .......................................................................................................................... 50
Constantes ........................................................................................................................................... 52
Configurao de Variveis VAR_CONFIG ....................................................................................... 53
Declarao e Inicializao de Tipos de Dados Definidos pelo Usurio.................................................. 54
Mtodos FB_Init e FB_Reinit .............................................................................................................. 54
FB_Exit ............................................................................................................................................... 55
Instrues de Pragma ........................................................................................................................... 56
Funcionalidade Listar Componentes ..................................................................................................... 71
Mapeamentos de E/S.................................................................................................................................. 71
Geral ................................................................................................................................................... 71
Canais.................................................................................................................................................. 72
Tipos de Dados ........................................................................................................................................... 73
Tipos de Dados Padro ........................................................................................................................ 73
Extenses da Norma IEC 1131-3 ......................................................................................................... 75
Tipos de Dados Definidos pelo Usurio ............................................................................................... 77
Operadores................................................................................................................................................. 84
Operadores IEC e Funes Adicionais Norma ................................................................................... 84
Operadores Aritmticos ....................................................................................................................... 84
Operadores de Bitstring ....................................................................................................................... 89
Operadores de Deslocamento de Bits ................................................................................................... 91
iii
Sumrio
Operadores de Seleo ......................................................................................................................... 94
Operadores de Comparao.................................................................................................................. 97
Operadores de Endereo .................................................................................................................... 100
Operador de Chamada ........................................................................................................................ 101
Funes de Converso de Tipo ........................................................................................................... 101
Funes Numricas ............................................................................................................................ 109
Operadores Adicionais Norma IEC.................................................................................................. 114
Operandos ................................................................................................................................................ 115
Constantes ......................................................................................................................................... 115
Variveis ........................................................................................................................................... 118
Endereos .......................................................................................................................................... 120
Funes ............................................................................................................................................. 122
5. EDITORES DAS LINGUAGENS DE PROGRAMAO .................................................................... 123
Editor CFC .............................................................................................................................................. 123
Linguagem Grfico Funcional Contnuo - CFC .................................................................................. 123
Posies do Cursor no CFC................................................................................................................ 124
Elementos CFC / Caixa de Ferramentas ............................................................................................. 125
Inserir e Organizar Elementos ............................................................................................................ 128
Editor CFC no Modo Online .............................................................................................................. 130
Editor SFC ............................................................................................................................................... 131
Seqenciamento Grfico de Funes - SFC ........................................................................................ 132
Posies do Cursor no SFC ................................................................................................................ 133
Trabalhando no Editor SFC................................................................................................................ 134
Propriedades do Elemento SFC .......................................................................................................... 135
Elementos SFC / Caixa de Ferramentas .............................................................................................. 136
Qualificador ....................................................................................................................................... 144
Variveis Implcitas - Memrias SFC ................................................................................................. 145
Seqncia de Processamento no SFC ................................................................................................. 150
Editor SFC no Modo Online .............................................................................................................. 151
Texto Estruturado (ST) / Texto Estruturado Estendido (ExST) ............................................................ 152
Expresses ......................................................................................................................................... 152
Instrues .......................................................................................................................................... 154
Editor ST .................................................................................................................................................. 160
Editor ST no Modo Online ................................................................................................................. 160
Editor FBD/LD/IL ................................................................................................................................... 163
Diagrama de Blocos Funcionais - FBD .............................................................................................. 163
Diagrama Ladder - LD ....................................................................................................................... 164
Lista de Instrues - IL ...................................................................................................................... 164
Trabalhando na Visualizao dos Editores FBD e LD ........................................................................ 167
Trabalhando na Visualizao do Editor IL .......................................................................................... 169
Posies do Cursor em FBD, LD e IL ................................................................................................ 173
Menu FBD/LD/IL .............................................................................................................................. 175
Elementos .......................................................................................................................................... 176
6. BIBLIOTECAS........................................................................................................................................ 188
A Biblioteca Standard.library ................................................................................................................. 188
Funes de String .............................................................................................................................. 188
Blocos Funcionais Biestveis ............................................................................................................. 193
Disparador ......................................................................................................................................... 194
Contador ............................................................................................................................................ 195
Temporizador .................................................................................................................................... 198
A Biblioteca UTIL.library ....................................................................................................................... 202
Converso BCD ................................................................................................................................. 202
iv
Sumrio
Funes BIT/BYTE ........................................................................................................................... 203
Funo Matemtica Auxiliar .............................................................................................................. 204
Controllers ......................................................................................................................................... 208
Geradores de Sinal ............................................................................................................................. 211
Manipuladores de Funo .................................................................................................................. 214
Processamento de Valores Analgicos ............................................................................................... 216
A Biblioteca NextoPID.library ................................................................................................................ 218
PID .................................................................................................................................................... 218
PID_REAL ........................................................................................................................................ 222
PID_INT............................................................................................................................................ 224
LibRecipeHandler.................................................................................................................................... 237
WriteRecipe ....................................................................................................................................... 237
7. GLOSSRIO ........................................................................................................................................... 239
1. Introduo
1. Introduo
A Srie Nexto uma poderosa e completa srie de Controladores Programveis (CP) com
caractersticas exclusivas e inovadoras. Devido a sua flexibilidade, design inteligente, recursos de
diagnsticos avanados e arquitetura modular, a Srie Nexto pode ser usada para controle de sistemas
em aplicaes de mdio e grande porte ou em mquinas com requisitos de alto desempenho.
O MasterTool IEC XE uma ferramenta completa para programao, depurao, configurao e
simulao das aplicaes do usurio. O software baseado no conceito de ferramenta integrada,
provendo flexibilidade e facilidade de uso permitindo aos usurios a programao em seis linguagens
definidas pela norma IEC 61131-3: Texto Estruturado (ST), Sequenciamento Grfico de Funes
(SFC), Diagrama de Blocos Funcionais (FBD), Diagrama Ladder (LD), Lista de Instrues (IL) e
Grfico Contnuo de Funes (CFC). O MasterTool IEC XE permite o uso de diferentes linguagens
na mesma aplicao, fornecendo ao usurio uma poderosa maneira de organizar a sua aplicao alm
de reutilizar cdigo desenvolvido em aplicaes anteriores.
Este produto oferece caractersticas para todas as etapas de desenvolvimento de um sistema de
automao, comeando por uma anlise grfica da topologia da arquitetura, passando por um
ambiente de programao com suporte s linguagens da norma IEC 61131-3, com uma ferramenta de
simulao realstica, onde o usurio pode verificar o comportamento da aplicao antes de execut-la
em um sistema real, e, finalmente, prov uma completa interface para visualizao de diagnsticos e
status.
O MasterTool IEC XE tambm oferece dois diferentes mecanismos de proteo da aplicao e
caractersticas de segurana: Proteo da Propriedade Intelectual e Login Seguro no CP. A Proteo
da Propriedade Intelectual tem por objetivo proteger a propriedade intelectual do usurio, permitindo
a ele proteger todo o projeto ou arquivos especficos dentro do projeto atravs da definio uma
senha de acesso. Isso significa que estes arquivos estaro disponveis (para operao de leitura e
escrita) apenas depois de desbloqueados com a senha correta. J o Login Seguro no CP prov uma
maneira de proteger a aplicao do usurio de qualquer acesso no autorizado. Habilitando esta
caracterstica, a UCP da Srie Nexto ir solicitar uma senha de usurio antes de executar quaisquer
comandos entre MasterTool IEC XE e a UCP, como parar e programar a aplicao ou forar pontos
de sada em um mdulo.
O MasterTool IEC XE torna o uso de interfaces para redes de campo uma prtica to simples como
nunca visto anteriormente. O usurio no precisa um software especial para configurar a rede de
campo porque o MasterTool IEC XE atende este requisito atravs de uma nica ferramenta reduzindo
tempo de desenvolvimento e simplificando a aplicao.
Outras caractersticas importantes tambm esto disponveis para aumentar a produtividade do
usurio como: Mdulo de impresso que consiste de um relatrio com os parmetros especficos dos
mdulos e as configuraes da aplicao; Impresso de lgicas que consiste de um relatrio com
todo o cdigo da aplicao; Verificao de Projeto que auxilia o usurio a verificar diferentes
condies durante a programao como: sintaxe do programa, consumo de corrente da fonte de
alimentao, regras de posicionamento dos mdulos da Srie Nexto, parametrizao e configurao
de mdulos; Depurao em tempo real que prov uma maneira de verificar a funcionalidade da
aplicao passo-a-passo, verificar o contedo de variveis ou ainda adicionar e remover breakpoints
durante a programao da UCP da Srie Nexto.
1. Introduo
Consideraes Gerais sobre Documentao ALTUS
Cada produto possui um documento denominado Caracterstica Tcnica (CT), onde se encontram as
caractersticas do produto em questo. Adicionalmente o produto pode possuir Manuais de Utilizao
(os cdigos dos manuais, se aplicveis, so sempre citados na CT).
Documentao de Suporte ao MasterTool IEC XE
Aconselham-se os seguintes documentos como fontes de informao adicional:
Cdigo do documento Descrio
Idioma
CE114000
Ingls
CT114000
Portugus
CS114000
Espanhol
CE114100
Ingls
CT114100
Portugus
CS114100
Espanhol
CE103705
Ingls
CT103705
Portugus
CS103705
Espanhol
MU214600
Ingls
MU214000
Portugus
MU214300
Espanhol
MU214605
Ingls
MU214100
Portugus
MU214305
Espanhol
MU299609
Ingls
MU299048
Portugus
MU299800
Espanhol
MU399609
Ingls
MU399048
Portugus
MU399800
Espanhol
Inspeo Visual
Antes de proceder instalao, recomendvel fazer uma inspeo visual cuidadosa dos
equipamentos, verificando se no h danos causados pelo transporte. Verifique se todos os
componentes de seu pedido esto em perfeito estado. Em caso de defeitos, informe a companhia
transportadora e o representante ou distribuidor Altus mais prximo.
CUIDADO:
Antes de retirar os mdulos da embalagem, importante descarregar eventuais potenciais
estticos acumulados no corpo. Para isso, toque (com as mos nuas) em qualquer superfcie
metlica aterrada antes de manipular os mdulos. Tal procedimento garante que os nveis de
eletricidade esttica suportados pelo mdulo no sero ultrapassados.
importante registrar o nmero de srie de cada equipamento recebido, bem como as revises de
software, caso existentes. Essas informaes sero necessrias caso seja preciso contatar o Suporte
Tcnico da Altus.
Suporte Tcnico
Para entrar em contato com o Suporte Tcnico da Altus em So Leopoldo, RS, ligue para +55-513589-9500. Para conhecer os centros de Suporte Tcnico da Altus existentes em outras localidades,
consulte nosso site (www.altus.com.br) ou envie um e-mail para altus@altus.com.br.
7
1. Introduo
Se o equipamento j estiver instalado tenha em mos as seguintes informaes ao solicitar
assistncia:
Conceitos Bsicos
Considere os seguintes conceitos bsicos que caracterizam a programao via MasterTool IEC XE:
Funcionalidades Avanadas
A seguir, so apresentadas as funcionalidades avanadas disponveis no MasterTool IEC XE.
Orientao a Objetos na Programao e na Estrutura do Projeto
Extenses para blocos funcionais: Propriedades, Mtodos, Herana, Invocao de Mtodo.
9
UNION
LTIME
Referncias
Enumeraes: tipos de dados bsicos podem ser especificados
DI: DINT := DINT#16#FFFFFFFF
Contas de usurios, grupos de usurios, direitos especficos de grupos para acesso e aes em
objetos especficos
Caractersticas em Editores
Verses de Bibliotecas
Vrias verses de bibliotecas podem ser usadas no mesmo projeto utilizando o recurso de
contextos
Instalao em repositrios, atualizao automtica e depurao
Funcionalidades Adicionais
Perfis
Um perfil de projeto no MasterTool IEC XE um conjunto de regras, caractersticas comuns e
padres utilizados no desenvolvimento de uma soluo de automao industrial, um perfil que
influencia a forma de implementao da aplicao. Com a diversidade de tipos de aplicaes
suportadas pelo Runtime System da Srie Nexto, seguir um perfil uma forma de reduzir a
complexidade na programao.
As aplicaes podem ser criadas conforme um dos seguintes perfis:
Simples
Bsico
Normal
Experiente
Personalizado
Para maiores detalhes sobre os perfis consultar seo Perfis no Manual de Utilizao UCPs Srie
Nexto MU214100, no captulo Programao Inicial.
Projeto
Um projeto contm os objetos das POUs que compem um programa do CP, assim como as
definies dos objetos de recursos necessrios para executar uma ou mais instncias do programa
(aplicao) em determinados sistemas-destino (CPs, dispositivos). Objetos de POUs podem ser
gerenciados na janela de visualizao das POUs ou na janela de visualizao dos dispositivos, POUs
criadas a partir do wizard, aparecem na janela visualizao dos dispositivos, e os objetos de recursos
especficos do dispositivo so gerenciados na janela de visualizao dos dispositivos.
Um projeto salvo no arquivo <nome do projeto>.project.
NOTA: A aparncia e as propriedades da interface do usurio so definidas e armazenadas no
MasterTool IEC XE e no no projeto.
Dispositivos
Na janela Dispositivos (rvore de dispositivos) define-se o hardware onde a aplicao ser
executada.
11
Aplicao
Uma aplicao o conjunto dos objetos necessrios para executar uma instncia especfica do
programa do CP em um determinado dispositivo de hardware (CP, controlador). Para isto, objetos
independentes gerenciados na visualizao das POUs so instanciados e atribudos a um
dispositivo na janela visualizao dos Dispositivos. Isto est em conformidade com a programao
orientada a objetos. Entretanto, POUs especficas da aplicao tambm podem ser utilizadas.
Uma aplicao representada por um objeto de aplicao ( ) na rvore de Dispositivos inserido
abaixo de um n do dispositivo programvel (PLC Logic). Os objetos que definem o conjunto de
recursos da aplicao podem ser inseridos abaixo de um item da aplicao.
A aplicao padro, Application, criada junto com novos projetos criados a partir do modelo
Projeto MasterTool Padro ela acrescentada rvore de dispositivos abaixo do item Device e PLC
Logic.
Uma parte essencial da aplicao a Task Configuration que controla a execuo de um programa
(instncias de POU ou POUs especficas da aplicao). Adicionalmente, podem estar atribudos
objetos de recursos, tais como listas de variveis globais, bibliotecas, entre outros, os quais - ao
contrrio daqueles gerenciados na janela das POUs - somente podem ser usados pela aplicao
especfica e seus subitens.
A compatibilidade dos parmetros da aplicao no CP com os parmetros da aplicao do projeto
verificada no momento do login em um dispositivo (CP ou dispositivo de simulao). Em caso de
incompatibilidade, exibida uma mensagem apropriada.
Task Configuration
A Task Configuration (
programa aplicativo.
Ela um objeto de recurso essencial para uma aplicao e inserido automaticamente ao criar um
novo projeto a partir do modelo Projeto MasterTool Padro. Uma tarefa pode chamar uma POU de
programa especfica da aplicao que esteja disponvel na rvore de dispositivos, assim como o
programa gerenciado na janela das POUs. Neste ltimo caso, o programa do projeto global
disponvel ser instanciado pela aplicao.
Uma task configuration pode ser editada no editor de tarefas, sendo as opes disponveis especficas
do dispositivo.
No modo online o editor de tarefas fornece uma visualizao da monitorao e tambm informaes
sobre os ciclos, tempos e status.
Notas Importantes para Sistemas Multitarefas
Em alguns sistemas so realizadas algumas multitarefas preferenciais. Neste caso, as seguintes
observaes devem ser consideradas.
12
Comunicao
Para informaes sobre Comunicao (Configurao do CP, Topologia de rede, Endereamento e
roteamento, Estrutura de endereos e Variveis de rede), consulte o Manual de Utilizao
MasterTool IEC XE MU299048.
NOTAS:
- Quando realizada uma alterao online, as inicializaes especficas da aplicao no sero
executadas, pois a mquina mantm o seu estado. Por esta razo, o novo cdigo de programa pode
no funcionar conforme o desejado.
- Variveis de ponteiro mantm os valores do ciclo anterior. Se houver um ponteiro em uma varivel
que tenha alterado seu tamanho devido a uma alterao online, o valor no estar mais correto.
Certifique-se de que as variveis de ponteiro sejam re-atribudas a cada ciclo.
Aplicao de Inicializao (Projeto de Inicializao)
Uma aplicao de inicializao o projeto que ser iniciado automaticamente quando o controlador
inicializado. Para tanto, o projeto deve estar disponvel no CP em um arquivo <nome do
projeto>.app. Este arquivo pode ser criado no modo offline atravs do comando Criar Aplicao de
Inicializao (menu Comunicao).
A cada envio bem sucedido, a aplicao ativa ser automaticamente armazenada no arquivo
<aplicao>.app na pasta do sistema do dispositivo, ficando assim disponvel como uma aplicao
13
Para logar em UCPs em execuo sem gerar alteraes de projeto a partir de diferentes estaes,
deve-se abrir um arquivo de projeto gerado a partir do projeto original e executar o comando Login.
Na falta deste, podem ser realizados os seguintes procedimentos:
Para mais informaes consulte: Menu Arquivo e Menu Comunicao no Manual de Utilizao
MasterTool IEC XE MU299048.
Monitorao
No modo online, existem vrias possibilidades de exibir os valores atuais das expresses de
monitorao de um objeto no CP.
Para mais informaes a respeito deste item, consultar Monitorao no Manual de Utilizao
MasterTool IEC XE MU299048.
Depurao
Para avaliar erros de programao use a funcionalidade de depurao do MasterTool IEC XE no
modo online. Neste contexto, considere a possibilidade de verificar a aplicao no modo de
simulao, isto , sem a necessidade de conectar-se com um dispositivo de hardware real.
Breakpoints podem ser configurados em determinadas posies para forar uma interrupo na
execuo. Algumas condies podem ser configuradas para cada breakpoint, como por exemplo,
quais as tarefas associadas ou em quais ciclos o breakpoint deve atuar. Funes de passos esto
disponveis para que um programa seja executado em passos controlados. A cada interrupo, os
valores atuais das variveis podem ser examinados. Uma pilha de chamadas pode ser visualizada na
posio do passo atual.
Para mais informaes a respeito deste item, consultar Breakpoints no Manual de Utilizao
MasterTool IEC XE MU299048.
14
Editores FBD/LD/IL para Diagrama de Bloco Funcional (FBD), Diagrama Ladder (LD) e Lista
de Instrues (IL)
Editor SFC para Sequenciamento Grfico de Funes
Editor ST para Texto Estruturado
POU
Ao
DUT (Unidade de Tipo de Dado)
Arquivo Externo
Lista de Variveis Globais
Mtodo
Propriedades
Programa
Funo
Bloco Funcional
Variveis Persistentes
POUs para Verificaes Implcitas
17
Atribuindo os parmetros (utilizando Assistente de Entrada com opo Com argumentos marcada):
Exemplo em ST:
PRGEXAMPLE();
ERG := PRGEXAMPLE.OUT_VAR;
Funo
Uma funo uma POU que produz exatamente um elemento de dados (que pode consistir de um ou
vrios elementos, tais como campos ou estruturas) ao ser processada e cuja chamada em linguagens
textuais pode ocorrer como um operador em expresses.
Via comando Acrescentar Objeto e Acrescentar POU, pode-se adicionar uma funo ao projeto. Para
atribu-la a uma aplicao existente, selecione-a na visualizao dos Dispositivos e use o comando do
menu de contexto. Caso contrrio, ela ser adicionada visualizao das POUs. No dilogo
Acrescentar POU, escolha o tipo Funo, digite um nome (<nome da funo>) e o tipo de dados de
18
Esta sintaxe seguida pelas declaraes das variveis de entrada e das variveis da funo.
Um resultado deve ser atribudo a uma funo, ou seja, o nome da funo usado como varivel de
sada.
NOTA: Se uma varivel local for declarada como retentiva em uma funo, isto no ter efeito. A
varivel no ser includa na rea de reteno.
Exemplo de uma Funo em ST:
FUNCTION FCT : INT
VAR_INPUT
IVAR1:INT;
IVAR2:INT;
IVAR3:INT;
END_VAR
FCT:=IVAR1+IVAR2*IVAR3;
Esta funo l trs variveis de entrada e retorna o produto das duas ltimas, adicionadas primeira.
Chamada de Funo
A chamada de uma funo em ST pode aparecer como um operando em expresses.
Em IL, uma chamada de funo somente pode estar posicionada dentro das aes de um passo ou
dentro de uma transio.
Funes (ao contrrio dos programas ou blocos funcionais) no contm informaes de estado, ou
seja, a invocao de uma funo com os mesmos argumentos (parmetros de entrada) sempre
produzir os mesmos valores (sada). Por esta razo, as funes no devem conter variveis globais e
endereos.
Abaixo, encontram-se exemplos para chamadas de funo.
Em IL:
Em ST:
RESULT := FCT1(5, 3, 22);
Em FBD:
De acordo com a norma IEC 61131-3, as funes podem ter sadas adicionais. Estas sadas devem ser
atribudas na chamada de uma funo, por exemplo, em ST, conforme a seguinte sintaxe:
OUT1 => <VARIVEL DE SADA 1> | OUT2 => <VARIVEL DE SADA 2> |... OUTRAS
VARIVEIS DE SADA
Exemplo:
A funo FUN definida com duas variveis de entrada in1 e in2. O valor de retorno de FUN ser
escrito nas variveis de sada (VAR_OUTPUT) loc1 e loc2 declaradas localmente.
FUN(IN1 := 1, IN2 := 2, OUT1 => LOC1, OUT2 => LOC2);
Bloco Funcional
Um bloco funcional uma POU que fornece um ou mais valores durante o processamento de um
programa do CP. Ao contrrio da funo, os valores das variveis de sada e das variveis internas
necessrias mantm-se de uma execuo do bloco funcional at a prxima execuo. Assim sendo, a
chamada de um bloco funcional com os mesmos argumentos (parmetros de entrada) nem sempre
produz os mesmos valores de sada.
Alm da funcionalidade descrita na norma IEC 61131-3, a programao orientada a objetos
suportada e os blocos funcionais podem ser definidos como extenses de outros blocos funcionais.
Isto significa que a herana pode ser usada ao programar com blocos funcionais.
Um bloco funcional sempre chamado atravs de uma instncia, que uma reproduo (cpia) do
bloco funcional.
Via comando Acrescentar Objeto e Acrescentar POU, um bloco funcional pode ser adicionado ao
projeto. Para atribu-lo a uma aplicao existente, selecione-o na visualizao dos dispositivos e use o
comando do menu de contexto. Caso contrrio, ele ser adicionado visualizao das POUs.
No dilogo Acrescentar POU, escolha o tipo Bloco Funcional, digite o nome do bloco
(<identificador>) e escolha a linguagem de implementao.
Opes adicionais:
Estender: digite o nome de outro bloco funcional disponvel no projeto, que deve ser a base do
bloco atual (corrente).
Implementar: no suportado.
O editor estar disponvel via boto Abrir, permitindo, na sequncia, a edio da POU.
Declarao:
Sintaxe:
FUNCTION_BLOCK <NOME DO BLOCO FUNCIONAL> | EXTENDS <NOME DO BLOCO
FUNCIONAL>
20
Exemplo:
Declarao (por exemplo, na parte de declarao de um programa) da instncia INSTANCE do bloco
funcional FUB:
INSTANCE: FUB;
As partes de declarao dos blocos funcionais e programas podem conter declaraes de instncias,
no entanto, nas funes, as declaraes de instncias no so permitidas.
Chamando um Bloco Funcional
Instncias de blocos funcionais devem ser declaradas local ou globalmente.
A varivel do bloco funcional pode ser acessada usando-se a sintaxe abaixo.
Sintaxe:
<NOME DA INSTNCIA>.<NOME DA VARIVEL>
Considere:
Exemplo em FBD:
Se a instncia inserida via Assistente de Entrada (<F2>), atravs da opo Inserir com Argumentos
na janela de implementao de uma POU ST ou IL, ela ser automaticamente exibida de acordo com
a sintaxe mostrada a seguir, com todos os seus parmetros, mas no necessariamente deve atribuir
estes parmetros. Para o exemplo acima, a chamada deve aparecer da seguinte forma:
Exemplo de insero via Assistente de Entrada com argumentos:
CMD_TMR(in:=, pt:=, q=>) (* Nenhum parmetro atribudo *)
->
No exemplo acima:
FbB contm todos os dados e mtodos definidos por fbA. Uma instncia de fbB pode agora ser
usada em qualquer contexto onde um bloco funcional do tipo fbA esperado.
FbB pode substituir os mtodos definidos em fbA. Isto significa que fbB pode declarar um
mtodo com o mesmo nome e as mesmas entradas e sadas declaradas em fbA.
No permitido que fbB use as variveis do bloco funcional com o mesmo nome usado em fbA.
Neste caso, o compilador apontar um erro.
Variveis e mtodos de fbA podem ser acessados diretamente dentro do escopo fbB atravs da
palavra-chave SUPER (SUPER^.<mtodo>).
Chamadas de funo virtual possibilitam que a mesma chamada em um cdigo fonte do programa
invoque diferentes mtodos durante a execuo.
De acordo com a norma IEC 61131-3, mtodos como funes normais podem ter sadas adicionais.
Estas devem ser atribudas na chamada do mtodo, conforme a seguinte sintaxe:
<MTODO>(IN1:=<VALOR> |, ATRIBUIES DE ENTRADA ADICIONAIS, OUT1 =>
<VARIVEL DE SADA 1> | OUT2 => <VARIVEL DE SADA 2> | ...VARIVEIS DE
SADA ADICIONAIS)
Isto faz com que a sada do mtodo seja escrita nas variveis de sada declaradas localmente,
conforme definido na chamada.
Exemplo:
Suponha que os blocos funcionais fub1 e fub2 ESTENDEM o bloco funcional fubbase. O mtodo
method1 est includo.
Possvel uso das chamadas de mtodo:
VAR_INPUT
23
Agora, suponha que fubbase do exemplo acima contm dois mtodos, method1 e method2. fub1
inclui method2 mas no method1. method1 chamado, conforme mostrado no exemplo acima, como
segue:
PINST^.METHOD1(); (*Se B TRUE, FUBBASE.METHOD1 chamado, seno
FUB1.METHOD1 chamado*)
A declarao dos componentes da DUT depende do seu tipo, por exemplo, se uma estrutura ou uma
enumerao.
Exemplo:
24
Mtodo
NOTA: Esta funcionalidade somente est disponvel se suportada pela configurao atual.
Assim como na programao orientada a objetos, os Mtodos ( ) podem ser usados para descrever
uma sequncia de instrues. Assim como a funo, o mtodo no uma POU independente, mas
deve ser atribudo a um bloco funcional. Pode ser considerado como uma funo que contm uma
instncia do respectivo bloco funcional.
Inserindo Mtodos
Para atribuir um mtodo a um bloco funcional, selecione-o na rvore das POUs ou Dispositivos. No
menu de contexto, use o comando Acrescentar Objeto/Mtodo. No dilogo Acrescentar Mtodo,
digite o nome, o tipo de retorno e a linguagem de implementao desejados. Os tipos de dados de
retorno podem ser visualizados usando o boto
para abrir o dilogo do Assistente de Entrada. O
editor do mtodo estar disponvel via boto Abrir.
Declarao
Sintaxe:
METHOD <NOME DO MTODO> : <TIPO DE DADO>
VAR_INPUT
X: INT;
END_VAR
Chamadas de Mtodo
Chamadas de mtodo so tambm denominadas chamadas de funo virtual. Veja: Invocao de
Mtodo.
NOTAS:
- Todos dados de um mtodo so temporrios e somente so vlidos durante a sua execuo
(variveis de pilha).
- No corpo de um mtodo so permitidas variveis e o acesso instncia do bloco funcional.
- Ponteiro THIS: o identificador THIS usado para apontar diretamente para a instncia implcita do
bloco funcional disponvel. Observe que, em uma varivel declarada localmente, pode estar
escondida uma varivel do bloco funcional. Ento, na descrio da sintaxe do exemplo mostrado
acima, THIS^.x no se refere entrada x do mtodo, mas sim varivel x do bloco funcional. As
variveis VAR_IN_OUT ou VAR_TEMP do bloco funcional no podem ser acessadas em um
mtodo.
- Mtodos, assim como funes podem ter sadas adicionais. Estas podem ser atribudas durante a
invocao do mtodo.
25
Mtodo Init: um mtodo FB_Init pode ser declarado implcita ou explicitamente. Ele contm o
cdigo de inicializao para o bloco funcional, conforme declarado na sua parte de declarao.
Veja: FB_Init.
Mtodo Reinit: se o mtodo denominado FB_Reinit for declarado para uma instncia de um
bloco funcional, ele ser chamado aps esta ter sido copiada e reinicializar o novo mdulo da
instncia. Veja: FB_Reinit.
Mtodo Exit: se o usurio deseja um mtodo de sada (FB_Exit), por exemplo, para desalocao,
deve declar-lo explicitamente. No h declarao implcita. O mtodo de sada ser chamado
para cada instncia do bloco funcional antes de um novo envio, reset ou durante uma alterao
online para todas as instncias movidas ou apagadas. Veja: FB_Exit.
Propriedades: para os mtodos Set e Get, veja o item Propriedade.
O programador pode, ento, verificar o status da aplicao via pApplicationInfo e definir o que deve
acontecer.
Exemplo:
IF PAPPLICATIONINFO^.STATE=RUNNING THEN <INSTRUES> END_IF
Propriedade
NOTA: Esta funcionalidade somente est disponvel se suportada pela configurao atual.
Uma Propriedade ( ) um tipo de objeto que pode ser inserido em um programa ou bloco
funcional atravs do comando Acrescentar Objeto e aps Propriedade... no menu de contexto. No
dilogo Acrescentar Propriedade, o nome, o tipo de retorno e a linguagem de implementao
desejados devem ser especificados.
Ela contm dois mtodos especiais que sero inseridos automaticamente na rvore de objetos no item
correspondente:
O mtodo Set chamado quando a propriedade escrita, ou seja, o nome da propriedade usado
como entrada.
O mtodo Get chamado quando a propriedade lida, ou seja, o nome da propriedade usado
como sada.
Veja o exemplo onde o bloco funcional FB1 usa uma varivel local MILLI. Esta varivel
determinada pelas propriedades Set e Get:
Cdigo na propriedade Get:
SECONDS := MILLI / 1000;
26
NOTA: A norma IEC no reconhece outras aes que no sejam do Sequenciamento Grfico de
Funes (SFC). Nesta linguagem, as aes so parte essencial e contm instrues a serem
processadas nos passos especficos do grfico.
Funo Externa, Bloco Funcional, Mtodo
O programador no gerar nenhum cdigo para uma funo externa, bloco funcional ou mtodo.
Execute os seguintes passos para criar uma POU externa:
Adicione a POU desejada na janela das POUs do projeto, como se fosse qualquer objeto interno,
e defina as respectivas variveis de entrada e sada.
NOTA: Variveis locais devem ser definidas em blocos funcionais externos , mas no podem ser
definidas em funes externas ou mtodos. Observe que as variveis VAR_STAT no podem ser
usadas no sistema de execuo.
No sistema de execuo, deve ser implementado uma funo equivalente, um bloco funcional ou um
mtodo. Em um envio de programa para cada POU externa, ser pesquisada a POU equivalente no
sistema de execuo. Caso seja encontrada, um link ser gerado.
Lista de Variveis Globais - GVL
Uma Lista de Variveis Globais, a GVL ( ) usada para declarar variveis globais. Se uma GVL
for definida na visualizao das POUs, as variveis estaro disponveis para todo o projeto. Se uma
GVL estiver atribuda a uma determinada aplicao, as variveis sero vlidas dentro desta aplicao.
Uma GVL pode ser adicionada atravs do comando Acrescentar Objeto e Acrescentar Lista de
Variveis Globais. Para atribu-la a uma aplicao existente, escolha o comando no menu de contexto
enquanto uma aplicao selecionada na rvore de dispositivos. Caso contrrio, a nova GVL ser
adicionada visualizao das POUs.
28
29
Lembrar link: O arquivo estar disponvel no projeto somente se ele est disponvel no caminho
definido.
Lembrar link e incluir no projeto: uma cpia do arquivo ser armazenado internamente no
projeto, mas tambm o link para o arquivo externo ser lembrado. Com esta opo for marcada
uma das opes abaixo deve ser escolhida:
o Recarrega o arquivo automaticamente: O arquivo ser atualizado dentro do projeto
assim que ele foi alterado externamente.
o Solicita para recarregar o arquivo: Uma caixa de dilogo ir aparecer assim que o
arquivo foi alterado externamente. Voc pode decidir se o arquivo deve ser
atualizado tambm dentro do projeto.
o Nenhuma ao: O arquivo permanecer inalterada, mesmo quando ele for alterado
externamente.
Incluir no projeto: uma cpia do arquivo ser armazenado no projeto. No haver nenhuma
conexo adicional para o arquivo fora do projeto.
No dilogo ainda existe o boto Exibir Propriedades dos Arquivos..., ele abre o dilogo padro para
as propriedades, mas com uma aba adicional Arquivo Externo, onde as propriedades que foram
definidas na caixa de dilogo Acrescentar Arquivo Externo podem ser visualizadas e modificadas.
POUs para Verificaes Implcitas
Caso o usurio deseje utilizar a funcionalidade de verificao de ARRAYS, limites de intervalo,
divises por zero e ponteiros durante a execuo, POUs especiais podero ser adicionadas
aplicao. Esta funcionalidade est implcita.
Para tanto, o menu Acrescentar Objeto na categoria POUs para Verificaes Implcitas (
apresenta as seguintes funes:
CheckBounds
CheckDivDInt
CheckDivLInt
CheckDivReal
CheckDivLReal
CheckRangeSigned
CheckRangeUnsigned
CheckPointer
Aps ter sido inserida uma POU de verificao, a mesma ser aberta no editor correspondente na
linguagem de implementao selecionada. No editor ST, est disponvel uma implementao padro
adaptvel aos requisitos do usurio.
A opo de insero de uma determinada POU de verificao s est disponvel uma vez. Se todos os
tipos de POU de verificao j tiverem sido adicionados na aplicao, o dilogo Acrescentar Objeto
no mais apresentar a categoria POUs para Verificaes Implcitas.
NOTA: Para manter a funcionalidade de verificao, no modifique a parte de declarao de uma
funo de verificao implcita.
Gerenciamento de Bibliotecas
Bibliotecas podem fornecer funes, blocos funcionais, tipos de dados, variveis globais e at mesmo
visualizaes, que podem ser usadas em um projeto assim como em outras POUs e variveis
definidas diretamente no projeto.
A extenso padro para um arquivo de biblioteca .library.
30
), cuja instalao no
Bibliotecas podem ser gerenciadas no sistema local em um ou vrios repositrios (pastas, locais),
elas no podem ser includas no projeto antes de ter sido instalada em um repositrio no sistema
local. A instalao feita no dilogo Repositrio de Bibliotecas.
Como pr-requisito para a instalao, uma biblioteca deve conter ttulo, verso e nome da
empresa nas suas Informaes do Projeto. Opcionalmente, pode ser definida tambm uma
categoria, o que ser til posteriormente para a classificao destas no gerenciador.
Se a categoria no estiver definida nas Informaes do Projeto, a biblioteca ser
automaticamente considerada como pertencente categoria Miscelnea . Outras categorias
podem ser definidas em um ou mais arquivos xml *.libcat.xml, os quais tambm so carregados
no dilogo Informaes de Projeto para selecionar uma das categorias. Consulte abaixo Criando
Bibliotecas, Codificao, Documentao.
O Library Manager usado para incluir bibliotecas em um projeto. Em um Projeto MasterTool
Padro, o Library Manager est automaticamente adicionado na janela de visualizao dos
Dispositivos ou POUs, atravs do dilogo Acrescentar Objeto. Bibliotecas referenciadas em
outras bibliotecas tambm so exibidas no gerenciador, incluindo as bibliotecas ocultas. Consulte
abaixo: Bibliotecas Referenciadas.
Se o arquivo *.library est disponvel por inteiro, isto , no apenas a sua verso compilada
(*.compiled-library ), as POUs da referida biblioteca podem ser abertas com um duplo clique nas
suas referncias, dentro do gerenciador.
Quando um mdulo da biblioteca chamado por uma aplicao, a pesquisa ser feita em todas as
bibliotecas e repositrios na ordem definida no dilogo Repositrio de Bibliotecas.
Bibliotecas Referenciadas
Basicamente, se houver vrios mdulos ou variveis com o mesmo nome no projeto, o acesso a
eles deve ser nico, caso contrrio, sero gerados erros de compilao. Isto se aplica aos mdulos
de projetos locais ou variveis e tambm aos elementos de software disponveis nas bibliotecas
includas e suas referenciadas. Para conferir exclusividade nestes casos, defina um prefixo para o
nome do mdulo atravs do apropriado contexto da biblioteca.
O contexto padro da biblioteca definido nas propriedades das bibliotecas. Caso no seja
definido explicitamente, o contexto ser igual ao nome da biblioteca. O contexto padro tambm
pode ser especificado no dilogo Propriedades. Aps a incluso da biblioteca no projeto, o
contexto pode ser alterado localmente pelo usurio (no dilogo Propriedades).
Exemplos: suponha que o contexto da biblioteca Lib1 especificado nas propriedades para ser Lib1.
Veja na coluna da direita o uso dos contextos para acesso nico varivel var1 definida nos mdulos
module1 e POU1.
32
Lib1.module1.var1
Dev1.App1.Lib1.module1.var1
module1.var1
POU1.var1
Nas Informaes do Projeto, devem estar especificados um ttulo, uma verso e a empresa. A
alterao do contexto padro pode ser feita, ento, se necessrio. Opcionalmente, recomenda-se
acrescentar uma categoria, pois ela ser til posteriormente para a classificao das bibliotecas no
Library Manager e no Repositrio de Bibliotecas. Se ela for diferente da padro (Miscelnea),
deve ser carregada uma descrio da categoria (arquivo XML *.libcat.xml ou outra biblioteca
que contenha este arquivo de descrio). Caso seja necessrio, pode ser criado um novo arquivo
de descrio da categoria ou um arquivo existente pode ser modificado. A informao das
categorias selecionadas e o arquivo bsico de descrio da categoria sero transferidos para o
projeto local e posteriormente - ao instalar a biblioteca - para o repositrio especfico. A partir
da, as bibliotecas estaro categorizadas no repositrio. Caso outra biblioteca apresente um
arquivo de descrio com o mesmo ID, mas com contedo diferente do arquivo novo, ela ser
vlida no repositrio.
Se a biblioteca incluir outras bibliotecas, atente para o comportamento das bibliotecas
referenciadas quando a principal for includa no projeto. Isto se refere ao tratamento da verso,
contexto, visibilidade e propriedades de acesso (configurados no dilogo propriedades da
biblioteca referenciada). Para que ela possa, posteriormente, referenciar outra (biblioteca
especfica do dispositivo), um espao reservado pode ser usado ao configurar a referncia. Para
que os mdulos da biblioteca possam ser protegidos contra visualizao e acesso, o projeto pode
ser salvo em um formato codificado (<nome do projeto>.compiled-library).
As estruturas de dados de uma biblioteca so internas. Este objetos ficam ocultos e, portanto, no
aparecem no gerenciador, assim como tambm no aparece a funcionalidade Componentes da
lista nem o Assistente de Entrada.
Para que o usurio possa acessar facilmente as informaes sobre um mdulo de biblioteca, um
comentrio pode ser adicionado declarao do parmetro do mdulo. Este comentrio ser
33
34
3. Comandos do Menu
3. Comandos do Menu
Neste captulo sero tratados apenas comandos dos menus que fazem o gerenciamento de bibliotecas,
para consultar comandos de outros menus consulte Comandos de Menu no Manual de Utilizao
MasterTool IEC XE MU299048.
Library Manager
Esta categoria fornece os comandos do editor Library Manager para o tratamento das bibliotecas a
serem usadas no projeto.
Comandos do Gerenciador de Bibliotecas
Fornece os comandos listados abaixo. Eles fazem parte do menu Bibliotecas quando o Library
Manager esta ativo.
Comandos disponveis:
Acrescentar Biblioteca...
Propriedades...
Tentar Recarregar a Biblioteca
Para obter informaes gerais sobre o gerenciamento de bibliotecas no MasterTool IEC XE, consulte
Library Manager.
Acrescentar Biblioteca
Este comando faz parte do menu Bibliotecas e da janela do editor Library Manager.
Utiliza-se este comando para incluir bibliotecas no projeto. Somente podem ser adicionadas
bibliotecas que j esto instaladas no sistema. possvel incluir mltiplas verses de uma biblioteca
ao mesmo tempo dentro de um gerenciador de bibliotecas.
O comando abre o dilogo Acrescentar Biblioteca e apresenta as guias Biblioteca e Espao
Reservado (Espao Reservado disponvel somente com a caracterstica Habilitar Dilogo do
Repositrio selecionada, para mais informaes consulte o item Caractersticas no Manual de
Utilizao MasterTool IEC XE MU299048).
35
3. Comandos do Menu
Subdilogo Biblioteca
36
3. Comandos do Menu
Subdilogo Espao Reservado
3. Comandos do Menu
Isto significa que, em vez de especificar uma biblioteca em particular a ser includa, ser inserido um
espao reservado, o qual, posteriormente, ser substitudo. Quando a <biblioteca_xy> for usada em
outro projeto para um determinado dispositivo, por exemplo, este espao reservado ser substitudo
pelo nome de uma biblioteca definida especificamente pelo dispositivo. Este nome deve ser
especificado no respectivo arquivo de descrio do dispositivo (<biblioteca_xy>) que atribui o nome
do espao reservado ao nome verdadeiro da biblioteca.
Se o gerenciador, por qualquer razo, no estiver atribudo ao dispositivo, o espao reservado ser
substitudo pela biblioteca padro especificada neste dilogo. Isto permite, por exemplo, que a
compilao do projeto da biblioteca seja editada sem erros, mesmo que no haja uma descrio
adequada do dispositivo disponvel no momento.
No campo Nome do Espao Reservado, digita-se qualquer string como um nome para este espao
reservado. Aps, escolhe-se uma biblioteca padro a partir das bibliotecas atualmente instaladas. Isto
deve ser feito conforme a descrio acima para acrescentar uma biblioteca no subdilogo Bibliotecas.
A opo Exibir Todas as Verses (Somente para Usurios Avanados) deve estar ativada para que
sejam exibidas todas as verses das bibliotecas atualmente instaladas.
Aps fechar o dilogo com OK, a biblioteca de espao reservado ser inserida na rvore do
gerenciador. Ao abrir o dilogo Propriedades para o espao reservado da biblioteca, o usurio obter
informaes sobre a biblioteca padro atualmente instalada.
Propriedades
Este comando est disponvel na janela do editor Library Manager.
Ele abre o dilogo Propriedades para a biblioteca atualmente selecionada na janela do gerenciador e
permite algumas configuraes referentes aos espaos reservados, tratamento de verso,
disponibilidade e visibilidade das bibliotecas referenciadas.
Contexto: exibe o contexto atual da biblioteca. Em geral, o contexto de uma biblioteca idntico
ao seu nome, a no ser que outra string tenha sido explicitamente definida nas informaes do
projeto (durante a criao do projeto da biblioteca). possvel editar o contexto a qualquer
momento neste dilogo. Para obter mais informaes sobre contextos de bibliotecas, consulte o
item Editor Library Manager no Manual de Utilizao MasterTool IEC XE MU299048.
Biblioteca padro: (disponvel somente com a caracterstica Habilitar Dilogo do Repositrio
selecionada, consulte o item Caractersticas no Manual de Utilizao MasterTool IEC XE
MU299048) se o espao reservado de uma biblioteca est selecionado no gerenciador, este
campo mostra o nome da biblioteca que deve substituir o espao reservado (se no houver
nenhuma biblioteca do dispositivo disponvel). Consulte acima o item correspondente para obter
mais informaes sobre espaos reservados.
38
3. Comandos do Menu
NOTA: A opo Publicar todos os smbolos IEC no projeto como se esta referncia tivesse sido
includa diretamente somente deve ser ativada se o usurio desejar usar bibliotecas container (sem
mdulos prprios) e incluir outras bibliotecas com o objetivo de compact-las. Esta compactao,
permite, por exemplo, incluir de uma s vez vrias bibliotecas no projeto. Neste caso, entretanto,
desejvel que as bibliotecas especficas estejam no nvel superior do gerenciador de bibliotecas para
que os mdulos possam ser acessados diretamente e o espao reservado da biblioteca container
possa ser deixado de fora.
Tentar Recarregar a Biblioteca
Este comando faz parte do menu Bibliotecas e da janela do editor Library Manager.
Se uma biblioteca includa em um projeto, por alguma razo, no estiver disponvel no caminho
definido na abertura do projeto no programador, ser gerada uma mensagem apropriada. O usurio
deve verificar os erros, disponibilizar a biblioteca corretamente e usar o comando Tentar Recarregar
a Biblioteca (enquanto a biblioteca estiver selecionada no gerenciador). Desta forma, a biblioteca
pode ser recarregada sem a necessidade de sair do projeto.
39
4. Referncia de Programao
4. Referncia de Programao
Declarao
As variveis de um projeto devem ser declaradas manualmente no editor de declarao ou atravs do
dilogo Autodeclarar. Consulte os itens relacionados como, por exemplo, categorias de variveis
(locais, globais, entrada, sada, etc.), inicializao, pragmas, mtodo init, entre outros.
Declarao de Variveis
A declarao de uma varivel pode ser realizada na parte de declarao de uma POU ou via dilogo
Autodeclarar, assim como em uma DUT ou editor GVL.
A classe (ou escopo, no dilogo de declarao) da varivel a ser declarada especificada pelas
palavras-chave no mbito de sua parte de declarao. A declarao de uma varivel comum, por
exemplo, aparece entre as palavras VAR e END_VAR.
VAR_INPUT
VAR_OUTPUT
VAR_IN_OUT
VAR_GLOBAL
VAR_TEMP
VAR_STAT
VAR_EXTERNAL
VAR_CONFIG
40
4. Referncia de Programao
Operador de escopo global: um caminho de instncia iniciando com . abre um escopo global.
Assim, se houver uma varivel local, por exemplo, ivar, com o mesmo nome de uma varivel
global, .ivar est referindo-se varivel global.
O nome de uma lista de variveis globais pode ser usado como um contexto para as variveis
includas. Assim, as variveis podem ser declaradas com o mesmo nome em diferentes listas e
podem ser acessadas precedendo o nome desta lista antes do nome da varivel. Exemplo:
Variveis definidas em uma lista de variveis globais de uma biblioteca includa podem ser
acessadas de acordo com a sintaxe <Contexto da biblioteca>.<Nome da Lista de Variveis
Globais>.<Varivel> . Veja abaixo informaes sobre contextos de bibliotecas. Exemplo:
No caso de uma biblioteca, um contexto tambm definido quando esta for includa atravs do
Library Manager. Assim, um mdulo de biblioteca ou varivel pode se acessado atravs de
<Contexto da biblioteca>. <Nome do mdulo | Nome da varivel>. No caso de bibliotecas aninhadas,
os contextos destas devem ser indicados sucessivamente. Se Lib1 foi referenciado por Lib0, o
mdulo fun, como parte de Lib1 acessado por Lib0.Lib1.fun:
IVAR := LIB0.LIB1.FUN(4, 5);
varivel IVAR no projeto *)
A ativao da caixa Publicar todos os smbolos IEC para o projeto, como se esta referncia tivesse
sido includa ali diretamente, nas propriedades da biblioteca referenciada Lib faz com que o mdulo
fun tambm possa ser acessado diretamente via Lib0.fun.
AT <Endereo>
A varivel pode ser diretamente vinculada a um endereo definido usando a palavra-chave AT.
Nos blocos funcionais, variveis tambm podem ser especificadas com declaraes de endereos
incompletos. Para que cada varivel possa ser usada em uma instncia local, deve haver um item para
ela na configurao de variveis.
Tipo
Tipo de dado vlido, opcionalmente complementado por :=<Inicializao>.
Opcionalmente, podem ser adicionadas instrues de pragma na parte de declarao de um objeto,
para modificar a gerao de cdigo.
NOTA: Atente para a possibilidade de uma declarao automtica. Para entradas mais rpidas das
declaraes, use o modo de atalho.
Recomendaes na Nomeao de Identificadores
Identificadores so definidos na declarao de variveis (nomes das variveis), tipos de dados
definidos pelo usurios e na criao de POUs (funes, blocos funcionais e programas). Alm das
questes usualmente consideradas na definio de um identificador, alguns itens devem ser
observados no intuito de nome-los o mais exclusivamente possvel.
Nomes de Variveis
A nomeao das variveis nas aplicaes, dentro do possvel, deve seguir a notao hngara.
Para cada varivel, deve haver um nome de base, isto , uma descrio breve, porm significativa.
A primeira letra de cada palavra de um nome de base deve ter uma letra maiscula. As demais devem
ser minsculas (exemplo: FileSize).
41
4. Referncia de Programao
Antes do nome de base, so adicionados prefixos em letras minsculas correspondentes ao tipo de
dado da varivel.
Veja, na tabela abaixo, algumas informaes e os prefixos recomendados para os tipos de dados
especficos:
Tipo de dado
Limite inferior
Limite superior
Contedo da
informao
Prefixo
BIT
1 Bit
BOOL
FALSE
TRUE
1 Bit
BYTE
8 Bits
by
WORD
16 Bits
DWORD
32 Bits
dw
LWORD
64 Bits
lw
No para operaes
aritmticas
SINT
-128
127
8 Bits
si
USINT
255
8 Bits
usi
INT
-32.768
32.767
16 Bits
UINT
65.535
16 Bits
ui
DINT
-2.147.483.648
2.147.483.647
32 Bits
di
UDINT
4.294.967.295
32 Bits
udi
63
64 Bits
li
64
64 Bits
uli
REAL
32 Bits
LREAL
64 Bits
lr
63
LINT
-2
2 -1
ULINT
2 -1
STRING
TIME
tim
TIME_OF_DAY
tod
DATE_AND_TIME
dt
DATE
Comentrio
date
ENUM
16 Bit
POINTER
ARRAY
Nas declaraes aninhadas, os prefixos so anexados uns aos outros, na ordem das mesmas.
Exemplo:
pabyTelegramData: POINTER TO ARRAY [0..7] OF BYTE;
Instncias de blocos funcionais e variveis de tipos de dados definidos pelo usurio, assim como um
prefixo, obtm um atalho para o nome do tipo de dado FB (por exemplo: sdo).
42
4. Referncia de Programao
Exemplo:
cansdoReceivedTelegram: CAN_SDOTelegram;
TYPE CAN_SDOTelegram : (* Prefixo: sdo *)
STRUCT
wIndex:WORD;
bySubIndex:BYTE;
byLen:BYTE;
aby: ARRAY [0..3] OF BYTE;
END_STRUCT
END_TYPE
As constantes locais (c) iniciam com o prefixo c, seguido de um sublinhado e do prefixo do tipo e
do nome da varivel.
Exemplo:
VAR CONSTANT
c_uiSyncID: UINT := 16#80;
END_VAR
Para variveis globais (g) e constantes globais (gc), um prefixo adicional sublinhado ser anexado ao
prefixo da biblioteca.
Exemplos:
VAR_GLOBAL
CAN_g_iTest: INT;
END_VAR
VAR_GLOBAL CONSTANT
CAN_gc_dwExample: DWORD;
END_VAR
43
4. Referncia de Programao
Exemplo:
TYPE CAL_Day :(
CAL_MONDAY,
CAL_TUESDAY,
CAL_WEDNESDAY,
CAL_THIRSDAY,
CAL_FRIDAY,
CAL_SATURDAY,
CAL_SUNDAY);
Declarao:
eToday: CAL_Day;
Tipos de Dados Definidos pelo Usurio (DUTs) nas Bibliotecas do MasterTool IEC XE
Tipos de dados definidos pelo usurio (DUTs) nas bibliotecas do MasterTool IEC XE no precisam
de um prefixo de biblioteca, pois os contextos fazem as vezes deste. Os componentes da enumerao
tambm so definidos sem prefixos de biblioteca.
Exemplo (em biblioteca com o contexto CAL):
TYPE Day :(
MONDAY,
TUESDAY,
WEDNESDAY,
THIRSDAY,
FRIDAY,
SATURDAY,
SUNDAY);
Declarao:
eToday: CAL.Day;
Uso na aplicao:
IF eToday = CAL.Day.MONDAY THEN
44
4. Referncia de Programao
Nomes de Visualizao
Deve-se evitar nomear uma visualizao com o mesmo nome de outro objeto no projeto, pois isto
pode causar problemas no caso de alteraes na visualizao.
Inicializao de Variveis
O valor de inicializao padro 0 para todas as declaraes, porm valores de inicializao
definidos pelo usurio podem ser adicionados na declarao de cada varivel e tipo de dado.
A inicializao definida pelo usurio produzida pelo operador de atribuio := e pode ser
qualquer expresso ST vlida. Desta forma, valores constantes, assim como outras variveis ou
funes podem ser usadas para definir o valor de inicializao. O programador deve assegurar que a
varivel usada para a inicializao de outra varivel j tenha sido inicializada.
Exemplos para inicializaes de variveis vlidas:
VAR
var1:INT := 12;
x : INT := 13 + 8;
y : INT := x + fun(4);
END_VAR
Editor de Declarao
O editor de declarao um editor textual ou tabular usado para a declarao de variveis.
Usualmente fornecido em combinao com os editores de linguagem.
45
4. Referncia de Programao
Consulte o captulo sobre o Editor de Declarao no Manual de Utilizao MasterTool IEC XE
MU299048 para obter mais informaes.
Dilogo Autodeclarar
Pode ser definido no dilogo Opes, categoria Editor Textual, que o dilogo Autodeclarar seja
aberto assim que uma string ainda no declarada for inserida na parte de implementao de um editor
e a tecla <ENTER> for pressionada. Este dilogo auxiliar na declarao da varivel.
Este dilogo tambm pode ser explicitamente aberto pelo comando Autodeclarar, disponvel no
menu Editar, ou ainda pressionando as teclas <SHIFT>+<F2>. Se uma varivel declarada j tiver sido
selecionada anteriormente, sua declarao pode ser editada no dilogo.
Modo Atalho
O editor de declarao, assim como outros editores textuais onde so feitas as declaraes, permitem
o modo de atalho.
Este modo ativado quando a linha de uma declarao finalizada com <CTRL>+<ENTER> e permite
o uso de atalhos, ao invs de digitar a declarao completa, por extenso.
Os seguintes atalhos so suportados:
Resultado
B ou BOOL
resulta em BOOL
I ou INT
resulta em INT
R ou REAL
resulta em REAL
S ou string
resulta em STRING
Se nenhum tipo tiver sido estabelecido segundo estas regras, automaticamente o tipo definido
ser BOOL e no o ltimo identificador.
Toda constante, dependendo do tipo da declarao, se tornar uma inicializao ou uma string.
Um endereo (como em %MD12) recebe o atributo AT.
Um texto aps um ponto e vrgula (;) torna-se um comentrio.
Todos outros caracteres na linha so ignorados.
Exemplos:
Atalho
Declarao
A: BOOL;
ABI2
A, B: INT := 2;
ST S 2; string A
ST:STRING(2); (* String A *)
B!
B: BOOL;
4. Referncia de Programao
Sintaxe:
<Identificador> AT <Endereo> : <Tipo de dado>;
A palavra-chave AT deve ser seguida por um endereo vlido. Veja o item Endereo para obter mais
informaes e possveis sobreposies em caso de modo de endereamento de bytes.
Esta declarao permite atribuir um nome especfico a um endereo. Quaisquer alteraes referentes
aos sinais de entrada e sada podem ser feitas apenas em uma nica posio (por exemplo, na
declarao).
O seguinte deve ser observado ao escolher uma varivel para ser atribuda a um endereo:
Variveis que requerem uma entrada no podem ser acessadas por escrita. O compilador
caracteriza esse acesso como um erro.
Declaraes AT somente podem ser usadas com variveis locais ou globais (e no com variveis
de entrada e sada de POUs).
Declaraes AT no devem ser usadas juntamente com VAR RETAIN ou VAR PERSISTENT, a
no ser que exista algum mecanismo no CP utilizado que permita este tipo de operao.
Se declaraes AT forem usadas com estruturas ou membros de blocos funcionais, todas as
instncias acessaro a mesma posio de memria, o que corresponde s variveis estticas nas
linguagens de programao clssicas (linguagem C, por exemplo).
O layout de memria de estruturas tambm determinado pelo dispositivo.
Exemplos:
counter_heat7 AT %QX0.0: BOOL;
lightcabinetimpulse AT %IX7.2: BOOL;
download AT %MX2.2: BOOL;
47
4. Referncia de Programao
Variveis Locais VAR
Entre as palavras-chave VAR e END_VAR, devem ser declaradas todas as variveis locais de uma
POU. Estas variveis no tm conexo externa, ou seja, no podem ser escritas externamente.
Considere a possibilidade de adicionar um atributo VAR.
Exemplo:
VAR
iLoc1:INT; (* 1. Varivel local*)
END_VAR
O valor de retorno da funo fun ser escrito para as variveis localmente declaradas loc1 e loc2, por
exemplo.
Variveis de Entrada e Sada - VAR_IN_OUT
Entre as palavras-chave VAR_IN_OUT e END_VAR, devem ser declaradas todas as variveis que
servem como variveis de entrada e sada para uma POU.
NOTA: Com variveis deste tipo, o valor da varivel transferida alterado (transferido como um
ponteiro, chamada-por-referncia). Isto significa que o valor de entrada para estas variveis no pode
ser uma constante. Por esta razo, mesmo as variveis VAR_IN_OUT de um bloco funcional no
podem ser lidas nem escritas diretamente de fora via <instncia do bloco funcional><varivel de
entrada/sada>.
48
4. Referncia de Programao
Exemplo:
VAR_IN_OUT
iInOut1:INT; (* 1. Varivel de entrada e sada *)
END_VAR
4. Referncia de Programao
VAR_EXTERNAL
iVarExt1:INT; (* Primeira varivel externa *)
END_VAR
Variveis Remanentes
Variveis remanentes podem reter os seus valores durante o perodo de execuo normal do
programa.
A declarao determina o grau de resistncia de uma varivel remanente no caso de reset, envio ou
reinicializao do CP. Principalmente nas aplicaes, ser requisitado uma combinao de ambas as
memrias remanentes.
Veja os seguintes itens:
Variveis Retentivas
Variveis Persistentes
Variveis Retentivas
Variveis declaradas como retentivas sero mantidas dependentes do CP, mas em uma rea separada
de memria. Elas apresentam a palavra-chave RETAIN na sua declarao em uma POU e em uma
lista de variveis globais.
Exemplo:
VAR RETAIN
iRem1 : INT; (* 1. Varivel retentiva*)
END_VAR
Variveis retentivas so identificadas pela palavra-chave RETAIN. Estas variveis mantm seu valor
aps o desligamento do controlador (inesperado ou normal) e no comando online Reset a Quente.
Quando o programa for executado novamente, os valores armazenados sero processados
posteriormente.
Todas outras variveis so novamente inicializadas, tanto com seus valores inicializados, quanto com
suas inicializaes padro.
Ao contrrio das variveis persistentes, as retentivas so reinicializadas em um novo envio do
programa.
Variveis retentivas, entretanto, so reinicializadas em um Reset Origem e, diferentemente das
persistentes, em um Reset a Frio e em um envio da aplicao.
A propriedade Retentiva pode ser combinada com a propriedade Persistente.
NOTAS:
- Se uma varivel local em um programa for declarada como VAR RETAIN, ela ser salva na rea
retentiva (como um varivel retentiva global).
- Se uma varivel local em um bloco funcional for declarada como VAR RETAIN, a instncia
completa do bloco funcional ser salva na rea retentiva (todos os dados da POU), onde somente a
varivel retentiva declarada ser tratada como retentiva.
- Se uma varivel local em uma funo for declarada como VAR RETAIN, ento isto no ter efeito.
A varivel no ser salva na rea retentiva. Se uma varivel local for declarada como persistente em
uma funo, ento a mesma no ter efeito tambm.
50
4. Referncia de Programao
Variveis Persistentes
Variveis persistentes so identificadas pela palavra-chave PERSISTENT (VAR_GLOBAL
PERSISTENT). Elas so reinicializadas somente aps um comando de Reset Origem. Ao contrrio
das variveis retentivas, elas mantm o seu valor aps um envio.
Esse tipo de variveis SOMENTE podem ser declaradas em uma lista de variveis globais especial
do tipo de objeto Variveis Persistentes, atribuda a uma aplicao. Somente pode haver uma nica
lista.
NOTA: Uma declarao com VAR_GLOBAL PERSISTENT tem o mesmo efeito que uma
declarao com VAR_GLOBAL PERSISTENT RETAIN ou VAR_GLOBAL RETAIN
PERSISTENT.
Assim como as variveis retentivas, as persistentes so armazenadas em uma rea de memria
separada.
Exemplo:
VAR GLOBAL PERSISTENT RETAIN
iVarPers1 : DINT; (* 1. Varivel Persistente+Retentiva App1 *)
bVarPers : BOOL; (* 2. Varivel Persistente+Retentiva App1 *)
END_VAR
NOTA: Somente possvel o uso de variveis persistentes globais, a no ser que exista algum
mecanismo no CP utilizado que permita este tipo de operao.
O dispositivo deve fornecer uma rea separada de memria para a lista de variveis persistentes de
cada aplicao.
A cada reenvio da aplicao, a lista de variveis persistentes no CP ser verificada no projeto. A lista
no CP identificada pelo nome da aplicao. Se houver inconsistncias, o usurio dever
reinicializar todas as variveis persistentes da aplicao. Inconsistncias podem ser resultantes de
renomeao ou excluso de outras modificaes na lista de declaraes existentes.
NOTA: Todas as modificaes na parte de declarao da lista de variveis persistentes, assim como
o efeito da reinicializao resultante, devem ser cuidadosamente consideradas.
Novas declaraes somente podem ser adicionadas ao final da lista. Em um envio, elas sero
detectadas como novas e no demandaro uma reinicializao da lista completa.
51
4. Referncia de Programao
Comportamento
VAR
VAR RETAIN
VAR PERSISTENT
VAR RETAIN PERSISTENT
VAR PERSISTENT RETAIN
Reset a Quente
Reset a Frio
Reset Origem
Envio da Aplicao
Alterao Online da
Aplicao
Reinicializar CP
Exemplo:
VAR CONSTANT
c_iCon1:INT:=12; (* 1. Constante*)
END_VAR
Consulte a descrio dos Operandos para obter uma lista das possveis constantes. Veja tambm a
possibilidade de usar constantes tipadas.
Literais Tipados
Para constantes IEC, ser usado o menor tipo de dado possvel. Outros tipos de dados podem ser
obtidos com a ajuda de literais tipados, sem a necessidade de declarar explicitamente as constantes.
Para isto, a constante ser fornecida com um prefixo que determina o tipo.
Sintaxe:
<Tipo>#<Literal>
<Tipo> especifica o tipo de dado desejado (somente o tipo simples
possvel). O tipo deve ser escrito em letras maisculas.
<Literal> especifica a constante. O dado inserido deve adequar-se ao tipo
de dado especificado em <Tipo>.
Exemplo:
iVar1:=DINT#34;
Se a constante no pode ser convertida no tipo desejado sem perda de dados, a seguinte mensagem de
erro exibida:
Literais tipados podem ser usados da mesma forma que as constantes.
52
4. Referncia de Programao
Constantes no Modo Online
As constantes sero indicadas pelo smbolo
antes do valor, na coluna correspondente da janela de
Declarao ou Monitorao no modo online. Neste caso, elas no podem ser acessadas por
foramento ou escrita, por exemplo.
Configurao de Variveis VAR_CONFIG
A configurao de variveis pode ser usada para mapear as variveis dos blocos funcionais na
imagem do processo, isto , nas E/S do dispositivo, sem a necessidade de especificar o endereo
definido na declarao da varivel do bloco funcional. O endereo, neste caso, atribudo de forma
centralizada para todas as instncias do bloco funcional na lista global VAR_CONFIG.
Para realizar esta configurao, atribua endereos incompletos s variveis do bloco funcional
declaradas entre as palavras-chave VAR e END_VAR. Estes endereos so especificados com um
asterisco.
Sintaxe:
<Identificador> AT %<I|Q>* : <Tipo de dado>;
Neste exemplo, so definidas duas variveis locais de E/S: In (%I*) local e Out (%Q*) local.
Assim, a definio final do endereo deve ser feita na lista de variveis globais, na Configurao de
variveis.
Para isto, adicione o objeto Lista de Variveis Globais (GVL) janela de dispositivos, atravs do
comando Acrescentar Objeto. Em seguida, insira as declaraes das variveis da instncia com os
endereos definidos entre as palavras-chave VAR_CONFIG e END_VAR.
As variveis da instncia devem ser especificadas com o caminho da instncia completo, onde as
POUs individuais e os nomes das instncias so separados uns dos outros por pontos. A declarao
deve conter um endereo cuja classe (entrada/sada) corresponda quela do endereo no
completamente definido, especificado (%I*, %Q*) no bloco funcional. O tipo de dado tambm deve
concordar com a declarao no bloco funcional.
Sintaxe:
<Caminho da varivel da instncia> AT %<I|Q><Local> : <Tipo de dado>;
Variveis de configurao cujo caminho da instncia seja invlido pelo fato da mesma no existir so
registradas como erros. Por outro lado, um erro tambm ser reportado se no existir configurao de
endereo definida para uma varivel da instncia atribuda a um endereo incompleto.
Exemplo de configurao de varivel:
Suponha que a seguinte definio para o bloco funcional locio seja determinada em um programa
(veja no exemplo acima).
PROGRAM MainPrg
VAR
locioVar1: locio;
locioVar2: locio;
END_VAR
53
4. Referncia de Programao
A configurao da varivel corrigida teria a seguinte aparncia:
VAR_CONFIG
MainPrg.locioVar1.xLocIn AT %IX1.0 : BOOL;
MainPrg.locioVar1.xLocOut AT %QX0.0 : BOOL;
MainPrg.locioVar2.xLocIn AT %IX1.0 : BOOL;
MainPrg.locioVar2.xLocOut AT %QX0.3 : BOOL;
END_VAR
54
4. Referncia de Programao
Entrada Definida pelo Usurio
No mtodo Init, entradas adicionais podem ser declaradas. Elas devem estar atribudas a uma
instncia de um bloco funcional.
Exemplo de uso do mtodo Init para o bloco funcional serialdevice:
METHOD fb_init : BOOL
VAR_INPUT
bInitRetains : BOOL; (* Inicializao das retentivas*)
bInCopyCode : BOOL; (* Instncia movida para o cdigo copiado *)
nCOMnum : INT; (* Entrada adicional: nmero da interface COM a ser
ouvida*)
END_VAR
FB_Reinit
Se um mtodo chamado FB_reinit for declarado em uma instncia de um bloco funcional, este
mtodo ser chamado quando a instncia for copiada (que o caso, por exemplo, de uma alterao
online aps a modificao da declarao do bloco funcional). O mtodo causar uma reinicializao
do novo mdulo da instncia criado pelo cdigo copiado. Os dados da instncia original so escritos
para a nova instncia aps a cpia e, se o usurio desejar os valores iniciais originais, pode valer-se
da reinicializao. Este mtodo no tem entradas. Considere que, ao contrrio do FB_init, este
mtodo deve ser declarado explicitamente. Se uma reinicializao da implementao do bloco
funcional bsico for desejada, FB_reinit deve ser explicitamente chamado para aquela POU.
O mtodo FB_reinit no tem entradas.
Na sequncia de chamada, em caso de herana, consulte: FB_Exit.
FB_Exit
FB_Exit um mtodo especial para blocos funcionais. Ele deve ser declarado explicitamente (no h
declarao implcita). O mtodo de sada - se estiver presente - chamado para todas as instncias
declaradas dos blocos funcionais antes de um novo envio, em um reset ou durante uma alterao
online para todas as instncias movidas ou excludas.
H somente um parmetro mandatrio para o mtodo de sada.
METHOD fb_exit : BOOL
VAR_INPUT
bInCopyCode : BOOL; // se TRUE, o mtodo de sada chamado para uma instncia copiada aps a
alterao online.
END_VAR
55
4. Referncia de Programao
Alm disto, em caso de herana, a seguinte sequncia de chamada verdadeira (para as POUs usadas
nesta listagem, por exemplo, supe-se SubFB EXTENDS MainFB e SubSubFB EXTENDS SubFB):
fbSubSubFb.FB_Exit(...);
fbSubFb.FB_Exit(...);
fbMainFb.FB_Exit(...);
fbMainFb.FB_Init(...);
fbSubFb.FB_Init(...);
fbSubSubFb.FB_Init(...);
Para FB_reinit:
fbMainFb.FB_reinit(...);
fbSubFb.FB_reinit(...);
fbSubSubFb.FB_Init(...);
Instrues de Pragma
Uma instruo de pragma usada para simular as propriedades de uma ou mais variveis referentes
aos processos de compilao e pr-compilao. Isto significa que um pragma influencia a gerao do
cdigo. Por exemplo, ele pode determinar se uma varivel ser inicializada, monitorada, adicionada
lista de parmetros, tornada invisvel no gerenciador de bibliotecas ou adicionada configurao de
smbolos. Sadas de mensagem durante o processo de compilao podem ser foradas, assim como
podem ser usados pragmas condicionais - definindo como a varivel ser tratada, dependendo de
determinadas condies. Estes pragmas tambm podem ser inseridos como Defines nas propriedades
de compilao de um objeto especfico.
Um pragma pode ser usado em uma linha separada ou com um texto suplementar em uma linha de
implementao ou declarao do editor. Nos editores FBD/LD/IL, use o comando Inserir Rtulo e
substitua o texto. Para definir um rtulo e um pragma, insira primeiro este ltimo e depois o rtulo.
A instruo do pragma fica entre chaves e o uso de letras maisculas/minsculas indiferente.
{ <Texto da instruo> }
A chave que abre vem imediatamente aps o nome da varivel. A abertura e o fechamento das chaves
deve ser na mesma linha.
Dependendo do seu tipo e contedo, o pragma tanto opera na linha na qual est localizado quanto nas
linhas subsequentes e se mantm em operao at que seja finalizado por um pragma apropriado, at
que seja executado com diferentes parmetros ou ainda at que atinja o final do arquivo. Um arquivo
neste contexto uma parte de declarao, implementao, lista de variveis globais ou declarao de
tipo.
Se o compilador no conseguir interpretar a instruo, o pragma inteiro ser tratado como um
comentrio, ignorando-o. Uma mensagem de advertncia ser apresentada neste caso.
Veja os seguintes tipos de pragma:
Pragmas de mensagem
Pragmas de atributo
Pragmas condicionais
Pragma de Mensagem
Pragmas de mensagem podem ser usados para forar a sada de mensagens em uma janela de
Mensagens durante a compilao do projeto.
A instruo de pragma pode ser inserida em uma linha existente ou em uma linha separada no editor
textual de uma POU. Pragmas de mensagem posicionados nas sees atualmente no definidas do
cdigo de implementao no sero considerados quando o projeto for compilado. Sobre isto, veja o
exemplo fornecido com a descrio do Pragma condicional defined (Identificador).
Existem quatro tipos de pragmas de mensagens:
56
4. Referncia de Programao
Pragma
Tipo de mensagem
{text 'string'}
{info 'string'}
{error 'string'}
Erro
NOTA: No caso de mensagens dos tipos Informao, Advertncia e Erro, a posio da fonte da
mensagem - que onde o pragma est localizado em uma POU - pode ser alcanada atravs do
comando Prxima Mensagem. Isto no possvel para o tipo Text.
Exemplo de declarao e implementao no Editor ST:
VAR
ivar : INT; {info 'TODO: deve ter outro nome'}
bvar : BOOL;
arrTest : ARRAY [0..10] OF INT;
i:INT;
END_VAR
arrTest[i] := arrTest[i]+1;
ivar:=ivar+1;
{text 'A parte xy foi compilada completamente.'}
{info 'Isto uma informao.'}
{warning 'Isto uma advertncia.'}
{error 'Isto um erro.'}
Atributo 'displaymode'
Atributo 'global_init_slot'
Atributo 'hide'
Atributo 'hide_all_locals'
Atributo 'Init_Namespace'
Atributo 'init_on_onlchange'
Atributo 'instance-path'
Atributo 'linkalways'
Atributo 'Monitoring'
57
4. Referncia de Programao
Atributo 'no_check'
Atributo 'noinit'
Atributo 'obsolete'
Atributo 'pack_mode'
Atributo 'qualified_only'
Atributo 'reflection'
Atributo 'symbol'
Esta instruo de pragma vlida para a linha atual ou para a subsequente (esta ltima no caso do
cursor estar posicionado em uma linha separada. Consulte o item Pragmas Condicionais).
Um atributo definido pelo usurio pode ser atribudo aos seguintes objetos:
POUs e Aes
Variveis
Tipos
Atributo Displaymode
Com a ajuda do pragma {attribute 'displaymode'}, pode ser definido o modo de exibio de uma
varivel nica. Esta configurao substituir a configurao global para o modo de exibio de todas
as variveis de monitorao, feita atravs dos comandos do submenu Modo de Exibio (disponvel
no menu Comunicao).
O pragma deve ser posicionado na linha acima daquela que contm a declarao das variveis.
Sintaxe:
{attribute displaymode:=<modo de exibio>}
58
4. Referncia de Programao
Para exibio no formato binrio, so possveis as seguintes definies:
{attribute'displaymode':='bin'}
{attribute'displaymode':='binary'}
Exemplo:
VAR
{attribute 'displaymode':='hex'}
dwVar1: DWORD;
END_VAR
Atributo Global_init_slot
O pragma {attribute 'global_init_slot'} aplicado somente em assinaturas. Por padro, a ordem de
inicializao das variveis de uma lista de variveis globais arbitrria. Entretanto, necessrio
definir a ordem para o caso, por exemplo, das variveis de uma lista global estarem referindo-se a
variveis de outra lista. Neste caso, usa-se o pragma para organizar a ordem de inicializao.
Sintaxe:
{attribute 'global_init_slot := '<Valor>'}
O modelo <Valor> deve ser substitudo por um valor inteiro descrevendo a ordem de inicializao da
assinatura. O valor padro 50000. Um valor menor faz com que a inicializao ocorra antes. No
caso de assinaturas com o mesmo valor para o atributo 'global_init_slot', a sequncia de inicializao
destas fica indefinida.
Exemplo:
Suponha que o projeto inclui duas listas de variveis globais (GVL_1 e GVL_2).
4. Referncia de Programao
dessa forma pode-se usar essas variveis normalmente em qualquer POU do projeto. Se o pragma for
retirado da GVL_2 e as variveis da GVL_1 forem utilizadas em alguma POU ser exibido um erro
na compilao do projeto.
Atributo Hide
Com a ajuda do pragma {attribute 'hide'}, possvel evitar que variveis ou at mesmo assinaturas
inteiras sejam exibidas na funcionalidade Listar Componentes, no dilogo Assistente de Entrada ou
na parte de declarao no modo online. Somente a varivel subsequente ao pragma ser oculta.
Sintaxe:
{attribute 'hide'}
Para ocultar todas as variveis locais de uma assinatura, use este atributo.
Exemplo:
O bloco funcional myPOU implementado com o atributo:
FUNCTION_BLOCK myPOU
VAR_INPUT
a:INT;
{attribute 'hide'}
a_invisible: BOOL;
a_visible: BOOL;
END_VAR
VAR_OUTPUT
b:INT;
END_VAR
VAR
END_VAR
Ao atribuir-se um valor de entrada para POU1 (a funo Listar Componentes em POU1 , por
exemplo), na parte de implementao de MainPrg, sero exibidas as variveis A, A_visible e B. A
varivel oculta A_invisible no ser exibida.
Atributos Hide_all_locals
Com a ajuda do pragma {attribute 'hide_all_locals'} possvel evitar que todas as variveis locais de
uma assinatura sejam exibidas na funcionalidade Listar Componentes, no dilogo Assistente de
Entrada. Este atributo tem utilizao idntica ao do atributo hide para cada uma das variveis locais.
Sintaxe:
{attribute 'hide_all_locals'}
Exemplo:
O bloco funcional myPOU implementado com este atributo.
{attribute 'hide_all_locals'}
FUNCTION_BLOCK myPOU
VAR_INPUT
a:INT;
END_VAR
VAR_OUTPUT
b:BOOL;
END_VAR
VAR
60
4. Referncia de Programao
c,d:INT;
END_VAR
Ao atribuir-se um valor de entrada para POU1 (a funo Listar Componentes em POU1, por
exemplo), na parte de implementao de MainPrg, sero exibidas as variveis A e B, mas no as
variveis locais ocultas C ou D.
Atributo Init_Namespace
Uma varivel do tipo STRING ou WSTRING, fornecida com o pragma {attribute 'init_namespace'},
ser inicializada com o contexto atual, ou seja, com o caminho da instncia do bloco funcional em
que est contida esta varivel. Aplicar este pragma pressupe o uso do atributo adicional 'noinit' para
a varivel de string e o atributo 'reflection' para o bloco funcional correspondente.
Sintaxe:
{attribute 'init_namespace'}
Exemplo:
O bloco funcional (POU) fornecido com todos os atributos necessrios.
{attribute 'reflection'}
FUNCTION_BLOCK POU
VAR_OUTPUT
{attribute 'no_init'}
{attribute 'instance-path'}
myStr: STRING;
END_VAR
Atributo Instance-path
O pragma {attribute 'instance-path'} pode ser adicionado a uma varivel do tipo string local que,
consequentemente, ser inicializada com o caminho da rvore de dispositivos da POU a qual esta
varivel de string pertence. Isto pode ser til no caso de mensagens de erro. Aplicar este pragma
pressupe o uso do atributo 'reflection' para a POU correspondente e o atributo adicional 'noinit' para
a varivel de string.
61
4. Referncia de Programao
Sintaxe:
{attribute 'instance-path'}
Exemplo:
Suponha que o bloco funcional abaixo contenha o atributo 'reflection':
{attribute 'reflection'}
FUNCTION_BLOCK POU
VAR
{attribute 'instance-path'}
{attribute 'noinit'}
str: STRING;
END_VAR
A instncia myPOU, tendo sido inicializada com a varivel de string STR, ser atribuda ao caminho
da instncia myPOU da POU (por exemplo, Device.Application.MainPrg.myPOU). Este caminho
ser atribudo varivel myString no programa principal.
NOTA: O tamanho de uma varivel string pode ser definida arbitrariamente (at 255), entretanto,
esta string ser truncada (a partir de seu final) se for atribuda a uma varivel de tipo de dados
menor.
Atributo Linkalways
O pragma {attribute 'linkalways'} permite selecionar as POUs no compilador de forma que elas
sempre sejam includas nas informaes de compilao. Como resultado, os objetos com esta opo
sempre sero compilados e enviados para o CP. Esta opo refere-se somente a POUs e GVLs
localizadas em uma aplicao ou a bibliotecas inseridas nesta. A opo do compilador Vincular
Sempre faz o mesmo.
Sintaxe:
{attribute 'linkalways'}
As POUs marcadas so usadas como base para as variveis selecionveis para a configurao de
smbolos ao usar o editor correspondente.
Exemplo:
A lista de variveis globais GVLMoreSymbols implementada com o uso deste atributo.
{attribute'linkalways'}
VAR_GLOBAL
g_iVar1: INT;
g_iVar2: INT;
END_VAR
Atributo Monitoring
Uma propriedade pode ser monitorada no modo online de um editor ou atravs da janela
Monitorao.
A monitorao pode ser ativada atravs da adio do atributo de pragma de monitorao na linha
acima da definio da propriedade. Desta forma, na visualizao online da POU em uma lista de
62
4. Referncia de Programao
monitorao, o nome, tipo e valor das variveis de propriedade sero exibidos. Portanto, os valores
preparados podem ser inseridos para forar as variveis pertencentes propriedade.
63
4. Referncia de Programao
Exemplo:
{attribute 'no_check'}
PROGRAM MainPrg
VAR
x: DINT (100..200);
y: DINT;
END_VAR
x := y;
Com a POU para verificao implcita CheckRangeSigned, por exemplo, adicionada ao projeto,
execute o cdigo abaixo com o pragma {attribute 'no_check'}, a funo no ser checada nesse caso,
permitindo a varivel x receber qualquer valor.
Atributo No_init
Variveis fornecidas com o pragma {attribute 'no_init'} no so inicializadas implicitamente. O
pragma pertence varivel subsequente declarada.
Sintaxe:
{attribute 'no_init'}
ou
{attribute 'no-init'}
{attribute 'noinit'}
Exemplo:
PROGRAM mainprg
VAR
A : INT;
{attribute 'no_init'}
B : INT;
END_VAR
Se for executado um reset na aplicao associada, a varivel inteira A ser novamente inicializada
implicitamente com 0 e a varivel B manter o valor ao qual est atualmente atribudo.
Atributo Obsolete
Um pragma {attribute 'obsolete'} pode ser adicionado a uma definio de tipo de dado para originar
uma advertncia definida pelo usurio durante a execuo da compilao, se o respectivo tipo de
dado for usado no projeto (estrutura, bloco funcional, etc.). Assim, por exemplo, possvel anunciar
que um determinado tipo de dado no deve mais ser usado.
Diferentemente de um pragma de mensagem, esta advertncia determinada na definio e, assim
sendo, de forma global para todas as instncias do tipo de dado.
Esta instruo de pragma sempre vlida para a linha atual ou - se localizado em uma linha separada
- para a linha subsequente.
Sintaxe:
{attribute 'obsolete' := 'Texto definido pelo usurio'}
Exemplo:
O pragma obsoleto inserido na definio do bloco funcional fb1.
{attribute 'obsolete' := 'Tipo de dado fb1 invlido'}
FUNCTION_BLOCK fb1
VAR_INPUT
i:INT;
END_VAR
...
64
4. Referncia de Programao
Se fb1 for usado como tipo de dado em uma declarao, por exemplo, fbinst: fb1, a seguinte
advertncia ser exibida quando o projeto for compilado: Tipo de dado fb1 invlido.
Atributo Pack_mode
O pragma {attribute 'pack_mode'} define o modo com que uma estrutura de dados empacotada
durante a alocao. O atributo deve ser configurado no topo de uma estrutura de dados e influenciar
o empacotamento da estrutura inteira.
Sintaxe:
{attribute 'pack_mode':= '<Valor>'}
O modelo <Valor> includo em cotas nicas deve ser substitudo por um dos seguintes valores
disponveis:
Valor
Descrio
Uma varivel do tipo de dado myStruct ser instanciada alinhada: se o endereo do seu componente
Enable for 0x0100, por exemplo, ento o componente Counter seguir no endereo 0x0101,
MaxSize, no 0x0103 e no MaxSizeReached no 0x0104. Com 'pack_mode'=2 Counter estar em
0x0102, MaxSize em 0x0104 e MaxSizeReached em 0x0105.
NOTA: O atributo pode tambm ser aplicado a POUs, porm preciso ter cuidado com esta
aplicao devido a possveis ponteiros internos nas mesmas.
Atributo Qualified_only
Aps atribuir o pragma {attribute 'qualified_only'} na parte superior de uma lista de variveis
globais, estas somente podem ser acessadas usando o nome da varivel global, por exemplo,
gvl.g_var. Isto vlido inclusive para as variveis do tipo enumerao e pode ser til para evitar
incompatibilidade de nome nas variveis locais.
Sintaxe:
{attribute 'qualified_only'}
Exemplo:
Suponha a seguinte GVL (lista de variveis globais) com o atributo 'qualified_only':
{attribute 'qualified_only'}
VAR_GLOBAL
iVar:INT;
END_VAR
65
4. Referncia de Programao
Em uma POU MainPrg, por exemplo, esta lista de variveis locais deve ser chamada com o prefixo
GVL:
GVL.iVar:=5;
Atributo Reflection
O pragma {attribute 'reflection'} anexado s assinaturas. Por questes de desempenho, este um
atributo obrigatrio para POUs que apresentam o atributo caminho de instncia.
Sintaxe:
{attribute 'reflection'}
Exemplo:
Veja o exemplo do atributo caminho da instncia (Instance path).
Atributo Symbol
O pragma {attribute 'symbol'} define quais variveis devem ser tratadas no Symbol Configuration, o
que significa que elas sero exportadas como smbolos para uma lista, um arquivo XML (<Nome do
Projeto>.Device.Application.xml) no diretrio do projeto e tambm para um arquivo no visvel para
o usurio e disponvel no dispositivo para acesso externo, por exemplo, por um servidor OPC. As
variveis fornecidas com este atributo sero enviadas para o CP mesmo que no tenham sido
configuradas ou no estejam visveis no editor de configurao de smbolos.
O Symbol Configuration deve estar disponvel como um objeto na rvore de Dispositivos.
Sintaxe:
{attribute 'symbol' := 'none' | 'read' | 'write' | 'readwrite'}
O acesso s permitido em smbolos vindo de programas ou listas de variveis globais. Para acessar
um smbolo, o seu nome deve ser completamente especificado.
A definio do pragma pode ser atribuda a variveis especficas ou a todas as variveis declaradas
em um programa:
Para ser vlido para uma nica varivel, o pragma deve estar posicionado na linha anterior
declarao das variveis.
Para ser vlido para todas as variveis contidas na parte de declarao de um programa, o pragma
deve ser posicionado na primeira linha do editor de declarao. De qualquer forma, tambm neste
caso as configuraes para as variveis especficas devem ser modificadas atravs da adio
explcita de um pragma.
O possvel acesso a um smbolo definido pelo parmetro de pragma 'none', 'read', 'write' ou
'readwrite'. Se nenhum parmetro estiver definido, o padro 'readwrite' ser vlido.
Exemplo:
Com a configurao abaixo, as variveis A e B sero exportadas com acesso de leitura e escrita e a
varivel D ser exportada com acesso de leitura.
{attribute 'symbol' := 'readwrite'}
PROGRAM MAINPRG
VAR
A : INT;
B : INT;
{attribute 'symbol' := 'none'}
C : INT;
{attribute 'symbol' := 'read'}
D : INT;
66
4. Referncia de Programao
END_VAR
Pragmas Condicionais
A linguagem ExST (ST estendido) suporta vrias instrues de pragma condicionais que afetam a
gerao de cdigo nos processos de compilao e pr-compilao.
O cdigo de implementao a ser considerado para estes processos depende de vrios fatores:
NOTA: Uma POU ou uma GVL declarada na rvore de POUs no pode usar a instruo {define...}
declarada em uma aplicao.
Pragma
Descrio
{undefine identifier}
{IF expr}
...
{ELSIF expr}
...
{ELSE}
...
{END_IF}
Descrio
Defined (Identificador)
67
4. Referncia de Programao
{ELSE}
(* Este cdigo processado na POU_2*)
{info 'pdef1 not defined'}
ivar := ivar - SINT#1;
{END_IF}
No exemplo, somente a string de informao pdef1 defined ser
exibida na janela de mensagem quando a POU_1 for chamada,
pois pdef1 est atualmente definida. A mensagem de informao
pdef1 not defined ser exibida caso pdef1 no seja definida,
POU_2.
Defined (variable:nome da
varivel)
Quando aplicado a uma varivel, seu valor ser TRUE se esta for
declarada no escopo atual. Caso contrrio, ser FALSE.
Exemplo:
Pr-requisito: h duas POUs, POU_1 e POU_2. A varivel
g_bTest declarada em POU_2, mas no em POU_1. Ambas
possuem o cdigo abaixo:
{IF defined (variable:g_bTest)}
(* O seguinte cdigo processado somente na POU_2*)
g_bTest := x > 300;
{END_IF}
Defined (type:identificador)
68
4. Referncia de Programao
VAR
END_VAR
Em uma POU existe o cdigo abaixo:
{IF hasattribute (pou: fun1, 'vision')}
(* A seguinte linha de cdigo ser processada*)
ergvar := fun1(ivar);
{END_IF}
{IF hasattribute (pou: fun2, 'vision')}
(* A seguinte linha de cdigo no ser processada*)
ergvar := fun2(ivar);
{END_IF}
Hasattribute (variable:
nome da varivel, 'atributo')
Hastype (variable:nome da
varivel, tipo)
69
4. Referncia de Programao
STRING
WSTRING
DATE_AND_TIME
DATE
TIME_OF_DAY
Exemplo:
Pr-requisito: Em uma POU, com o cdigo abaixo, em um
primeiro momento a varivel g_multitype declarada como
LREAL e em um segundo momento declarada como STRING.
{IF (hastype (variable: g_multitype, LREAL))}
(*A seguinte linha de cdigo somente ser processada quando a
varivel for declarada como LREAL *)
g_multitype := (0.9 + g_multitype) * 1.1;
{ELSIF (hastype (variable: g_multitype, STRING))}
(*A seguinte linha de cdigo somente ser processada quando a
varivel for declarada como STRING *)
g_multitype := this is a multi-talented;
{END_IF}
Hasvalue (define-ident,
string)
NOT operador
Operador OR operador
70
4. Referncia de Programao
(Operador)
Se for inserido um ponto (.) em qualquer lugar onde puder ser inserido um identificador global,
aparecer uma caixa de seleo listando todas as variveis globais disponveis. Escolha um destes
elementos e pressione a tecla <ENTER> para inseri-lo aps o ponto. O elemento tambm pode ser
inserido atravs de um duplo clique na lista.
Inserindo uma instncia de um bloco funcional ou uma varivel de estrutura seguida de um
ponto, aparecer uma caixa de seleo listando todas as variveis de entrada e sada do bloco
funcional correspondente ou os componentes da estrutura. Escolha o elemento desejado e insira-o
pressionando a tecla <ENTER> ou com um duplo clique na lista. Exemplos:
Uma caixa de seleo listando todas as POUs e as variveis globais disponveis no projeto
aparecer quando for inserida uma string e as teclas <CTRL>+<SPACE> forem pressionadas. O
primeiro item da lista, iniciando com a string dada, pode ser selecionado e inserido no programa
atravs da tecla <ENTER>.
Mapeamentos de E/S
Este sub-dilogo dos dispositivos chamado Bus: Mapeamento de E/S, ele serve para configurar um
mapeamento de E/S do CLP. Isto significa que as variveis do projeto, utilizados pelas aplicaes,
so atribudos aos endereos de entradas e sadas do dispositivo.
Geral
Todo o mapeamento de E/S pode ser configurado para o dispositivo atual.
71
4. Referncia de Programao
Um endereo tambm pode ser atribudo a uma varivel atravs de declaraes AT. Nesse caso
considere os seguintes pontos:
Declaraes AT podem ser usadas somente com as variveis locais ou globais, no entanto, no com
variveis de entradas e sadas de POUs.
Para declaraes AT no possvel gerar foramentos para variveis.
Se declaraes AT so usados com estrutura ou bloco funcional, todas as instncias tero acesso ao
mesmo local de memria, o que corresponde a variveis estticas em linguagens de programao
clssicas, como por exemplo C.
Para mais informaes, consulte Declarao AT.
A tela Bus: Mapeamento de E/S apresenta em sua parte inferior os seguintes comandos:
Canais
Varivel: Pode ser mapeada uma varivel para o canal, atravs do Assistente de Entrada, ou
criada uma nova, atravs da edio do campo.
varivel global, ou ser feito um mapeamento para uma j existente ( ), neste caso o endereo
ser exibido riscado e no deve ser utilizado diretamente.
Canal: Nome do canal de entrada ou sada do dispositivo.
Endereo: Endereo do canal, por exemplo: %IW0.
Tipo: Tipo de dado do canal de entrada ou sada, por exemplo BOOL.
Unidade: Unidade do valor do parmetro, por exemplo MS para milissegundos.
Descrio: Texto de descrio para o parmetro.
Valor Atual: valor atual do parmetro, exibido no modo online.
Voc pode modificar e corrigir o campo Endereo de uma sada ou entrada. Para isso selecione a
coluna de endereos e pressione a tecla <ESPAO> para abrir o campo de edio. Agora, modifique o
valor ou deixe sem modificaes e feche o campo de edio atravs da tecla <ENTER>. O campo de
endereo ficar marcado pelo smbolo .
72
4. Referncia de Programao
Tipos de Dados
Para a programao, podem ser usados tipos de dados padro, tipos de dados definidos pelo usurio
ou instncias de blocos funcionais. Cada identificador atribudo a um tipo de dado, que determina
quanto espao de memria ser reservado e quais tipos de valores ele armazena.
Tipos de Dados Padro
Todos os tipos de dados descritos na norma IEC 61131-3 so suportados pelo MasterTool IEC XE.
Veja a seguir:
BOOL / BIT
Tipos de Dados Inteiros
REAL / LREAL
STRING / WSTRING
Tipos de Dado de Tempo
Observe que, alm dos tipos de dados extensivos norma, tambm possvel definir tipos prprios
(tipos de dados definidos pelo usurio).
BOOL
As variveis tipo BOOL podem apresentar os valores TRUE e FALSE. Sero reservados 8 bits de
espao de memria.
Veja tambm: Constantes BOOL.
BIT
Assim como as variveis do tipo BOOL, as variveis tipo BIT podem apresentar valores TRUE e
FALSE. Diferente do tipo BOOL, o tipo BIT ocupa apenas 1 bit de espao de memria. Contudo
para que essa alocao possa ocorrer de forma correta este tipo de dado s pode ser declarado em
Blocos Funcionais ou Estruturas (definidas em objetos do tipo DUT).
Tipos de Dados Inteiros
Veja abaixo uma lista de todos os tipos de dados inteiros disponveis. Cada um dos diferentes tipos
de dados cobre um diferente intervalo de valores. As seguintes limitaes de intervalo aplicam-se aos
tipos de dados inteiros:
Tipo
Limite inferior
Limite superior
Espao de memria
BYTE
255
8 Bits
73
4. Referncia de Programao
WORD
65535
16 Bits
DWORD
4294967295
32 Bits
64
LWORD
2 -1
64 Bits
SINT
-128
127
8 Bits
USINT
255
8 Bits
INT
-32768
32767
16 Bits
UINT
65535
16 Bits
DINT
-2147483648
2147483647
32 Bits
UDINT
4294967295
32 Bits
LINT
-2
2 -1
63
64 Bits
63
64 Bits
ULINT
63
2 -1
74
4. Referncia de Programao
Tipos de Dado de Tempo
Os tipos de dados TIME, TIME_OF_DAY (abreviao TOD), DATE e DATE_AND_TIME
(abreviao DT) so tratados internamente como DWORD.
O tempo dado em milissegundos em TIME e TOD, sendo que, neste ltimo, o tempo inicia em 12
A.M.
O tempo dado em segundos em DATE e DT iniciando em Janeiro 1, 1970 s 12:00 A.M.
Neste contexto, veja tambm neste manual:
UNION
LTIME
WSTRING
Ponteiros
Referncias
UNION
Como uma extenso da norma IEC 61131-3, possvel declarar unies em tipos definidos pelo
usurio.
Em uma unio, todos os componentes tem o mesmo offset, ou seja, todos eles ocupam a mesma
posio de armazenagem. Assim, supondo a definio de unio mostrada no exemplo a seguir, uma
atribuio ao nome .a tambm afetaria o nome .b.
Exemplo:
TYPE name: UNION
a : LREAL;
b : LINT;
END_UNION
END_TYPE
LTIME
Como uma extenso norma IEC 61131-3, LTIME suportado como base de tempo para timers de
alta resoluo. O tamanho de LTIME 64 bits e sua resoluo em nanosegundos.
Sintaxe:
LTIME#<Declarao de tempo>
A declarao de tempo pode incluir unidades de tempo, como as usadas com a constante TIME e,
adicionalmente, microssegundos (us) e nanosegundos (ns), respectivamente.
Exemplo:
LTIME1 := LTIME#1000d15h23m12s34ms2us44ns
4. Referncia de Programao
WSTRING
Este tipo de dado de string uma extenso da norma IEC 61131-3.
Ele diferente do tipo STRING padro (ASCII) porque interpretado no formato Unicode.
Exemplo:
wstr:WSTRING:="Isto uma WString";
Desreferenciar um ponteiro significa obter o valor atualmente armazenado no endereo para o qual
ele est apontando. Um ponteiro pode ser desreferenciado adicionando-se o operador de contedo
^ aps o identificador do ponteiro. Veja pt^ no exemplo abaixo.
O operador de endereo ADR pode ser usado para atribuir o endereo de uma varivel a um ponteiro.
Exemplo:
VAR
pt:POINTER TO INT; (* Declarao do ponteiro pt *)
var_int1:INT := 5; (* Declarao das variveis var_int1 e var_int2 *)
var_int2:INT;
END_VAR
pt := ADR(var_int1); (* Endereo da varint1 atribudo ao ponteiro pt *)
var_int2:= pt^; (* Valor 5 da var_int1 atribudo a var_int2 via
desrefrencia do ponteiro pt; *)
Ponteiros de Funo
Os ponteiros de funo so suportados e substituem o operador INDEXOF. Estes ponteiros podem
ser enviados para bibliotecas externas, porm no possvel chamar um ponteiro de funo em uma
aplicao no sistema de programao. A funo de execuo para registro das funes de chamada de
retorno (funo de biblioteca de sistema) aguarda o ponteiro de funo, e, dependendo da chamada
de retorno para a qual o registro foi requisitado, a respectiva funo ser chamada implicitamente
pelo sistema de tempo de execuo (por exemplo, em STOP). Para habilitar uma chamada de sistema
(sistema de tempo de execuo) a respectiva propriedade deve estar definida para o objeto da funo.
O operador ADR pode ser usado em nomes de funo, programa, blocos funcionais e mtodos. Uma
vez que funes podem mover-se aps uma alterao online, o resultado no o endereo da funo,
mas o endereo de um ponteiro para a funo. Este endereo ser vlido enquanto a funo existir no
dispositivo.
Veja tambm: INDEXOF.
ndices de Acesso para Ponteiros
Como extenso da norma IEC 61131-3, o ndice de acesso [] permitido s variveis do tipo
POINTER, STRING e WSTRING.
4. Referncia de Programao
de acesso tambm executa uma desreferncia no ponteiro. O tipo resultante o tipo de base do
ponteiro. Observe que pint[7] diferente de (pint + 7)^.
Se o ndice de acesso for usado em uma varivel do tipo STRING, o resultado um caractere no
offset index-expr. O resultado do tipo BYTE. Str[i] retornar o i-simo" caractere da string,
assim como um SINT (ASCII).
Se o ndice de acesso for usado em uma varivel do tipo WSTRING, o resultado um caractere
no offset index-expr. O resultado do tipo WORD. Wstr[i] retornar o i-simo" caractere da
string, assim como um INT (Unicode).
Funo CheckPointer
Para verificar acessos a ponteiros durante a execuo, use a funo de verificao implcita
disponvel CheckPointer, chamada antes de cada acesso ao endereo de um ponteiro. Adicione o
objeto POUs para Verificaes Implcitas aplicao usando o dilogo Acrescentar Objeto. Marque
a caixa de verificao referente ao tipo CheckPointer e confirme suas configuraes com o boto
Abrir, onde a funo de verificao ser aberta no editor. A parte de declarao pr-definida e no
pode ser modificada, exceto para adicionar outras variveis locais. Entretanto, ao contrrio de outras
funes de verificao, no h implementao padro de CheckPointer disponvel, a implementao
deixada para o usurio.
A funo CheckPointer deve verificar se o endereo ao qual o ponteiro refere-se est dentro do
intervalo de memria vlido. Alm disto, o alinhamento da rea de memria referenciada deve
adequar-se ao tipo de dado da varivel para a qual o ponteiro aponta. Se ambas as condies forem
preenchidas, CheckPointer deve retornar o ponteiro de entrada inalterado. O tratamento adequado
dos casos de erro de responsabilidade do usurio.
Modelo:
Parte de declarao:
// Cdigo implicitamente gerado: NO EDITAR.
FUNCTION CheckPointer : POINTER TO BYTE
VAR_INPUT
ptToTest : POINTER TO BYTE;
iSize : DINT;
iGran : DINT;
bWrite: BOOL;
END_VAR
Parte de Implementao:
// No h um modo padro de implementao. Preencha o seu prprio cdigo
aqui.
CheckPointer := ptToTest;
77
4. Referncia de Programao
Estas definies so possveis atravs da criao de objetos DUT (Unidades de tipos de dados) na
janela de POUs e na parte de declarao de uma POU.
Observe as recomendaes sobre a nomeao de um objeto para torn-lo o mais exclusivo possvel.
Veja, a seguir, os tipos de dados definidos pelo usurio:
ARRAYS
Estruturas
Enumeraes
Tipos Subrange
Ponteiros
ARRAYS
Campos (ARRAYS) uni, bi e tridimensionais so suportados como tipos de dados elementares. Os
ARRAYS podem ser definidos tanto na parte de declarao de uma POU quanto nas listas de
variveis globais. Observe a possibilidade de usar verificaes de limites.
Sintaxe:
<Nome>:ARRAY [<ll1>..<ul1>,<ll2>..<ul2>,<ll3>..<ul3>] OF <Tipo>
Inicializao de ARRAYS
ATENO:
Os colchetes devem ser includos na parte de inicializao.
Exemplo para a inicializao completa de um ARRAY:
arr1 : ARRAY [1..5] OF INT := [1,2,3,4,5];
arr2 : ARRAY [1..2,3..4] OF INT := [1,3(7)]; (* Abreviao para 1,7,7,7 *)
arr3 : ARRAY [1..2,2..3,3..4] OF INT := [2(0),4(4),2,3];
(* Abreviao para 0,0,4,4,4,4,2,3 *)
Inicializao do ARRAY:
ARRAY[1..3] OF STRUCT1:= [(p1:=1,p2:=10,p3:=4723),(p1:=2,p2:=0,p3:=299),
(p1:=14,p2:=5,p3:=112)];
78
4. Referncia de Programao
Elementos para os quais nenhum valor pr-atribudo so inicializados com o valor inicial padro do
tipo bsico. No exemplo acima, os elementos arr1[3] a arr1[10] so, portanto, inicializados com 0.
Acessando Componentes de ARRAY
Componentes de ARRAY so acessados em uma ARRAY bidimensional usando-se a seguinte
sintaxe:
<Nome>[ndice 1,ndice 2]
Exemplo:
Card_game [9,2]
Check Functions
Para acessar elementos de ARRAY durante a execuo, a funo CheckBounds deve estar disponvel
durante a aplicao. Adicione o objeto POUs para Verificaes Implcitas aplicao atravs do
dilogo Acrescentar Objeto. Selecione a caixa de verificao referente a esta funo e confirme as
configuraes com o boto Abrir. A funo CheckBounds ento ser aberta no editor. A parte de
declarao pr-definida e no pode ser modificada (exceto para a adio de outras variveis locais).
No editor ST, fornecida uma implementao padro da funo passvel de modificao.
Esta funo de verificao trata da violao de limites atravs de um mtodo apropriado (por
exemplo, configurando uma memria de erro detectada ou alterando o ndice). A funo ser
chamada implicitamente assim que a varivel do tipo ARRAY for atribuda.
ATENO:
Para manter a funcionalidade de verificao, no altere a parte de declarao de uma funo de
verificao implcita.
Exemplo de uso da funo CheckBounds:
Abaixo, encontra-se a implementao padro da funo de verificao.
Parte de declarao:
// Cdigo implicitamente gerado: NO EDITAR.
FUNCTION CheckBounds : DINT
VAR_INPUT
index, lower, upper: DINT;
END_VAR
Parte de implementao:
// Cdigo implicitamente gerado: somente uma sugesto de implementao.
IF index < lower THEN
CheckBounds := lower;
ELSIF index > upper THEN
CheckBounds := upper;
ELSE
CheckBounds := index;
END_IF
Enquanto o ndice estiver dentro do intervalo, o valor de retorno ser o ndice em si.
Caso contrrio (violao do intervalo), sero retornados os limites inferior e superior.
No programa, o limite superior do ARRAY A excedido:
79
4. Referncia de Programao
PROGRAM MAINPRG
VAR
a: ARRAY[0..7] OF BOOL;
b: INT:=10;
END_VAR
a[b]:=TRUE;
Neste caso, a chamada implcita da funo CheckBounds antes da atribuio faz com que o valor do
ndice seja alterado de 10 (dez) para o limite superior 7 (sete). Portanto, o valor TRUE ser atribudo
ao elemento A[7] do ARRAY. Esta uma tentativa de, via funo CheckBounds, corrigir a tentativa
de acesso fora do intervalo.
Estruturas
Estruturas so criadas como objetos DUT (Unidade de Tipo de Dado) via dilogo Acrescentar
Objeto.
Elas iniciam com as palavras-chave TYPE e STRUCT e terminam com END_STRUCT e
END_TYPE.
ATENO:
A palavra-chave TYPE, nas declaraes de estrutura, deve ser seguida por um :.
A sintaxe para declaraes de estrutura se d como segue:
TYPE <Nome da estrutura>:
STRUCT
<Declarao de variveis 1>
...
<Declarao de variveis n>
END_STRUCT
END_TYPE
<Nome da estrutura> um tipo reconhecido atravs do projeto e pode ser usado como um tipo de
dado padro.
Estruturas de intertravamento so permitidas. A nica restrio que as variveis no podem ser
atribudas aos endereos (a declarao AT no permitida).
Exemplo para uma definio de estrutura denominada Polygonline:
TYPE Polygonline:
STRUCT
Start:ARRAY [1..2] OF INT;
Point1:ARRAY [1..2] OF INT;
Point2:ARRAY [1..2] OF INT;
Point3:ARRAY [1..2] OF INT;
Point4:ARRAY [1..2] OF INT;
End:ARRAY [1..2] OF INT;
END_STRUCT
END_TYPE
Inicializao de Estruturas
Exemplo de inicializao de uma estrutura:
Poly_1:polygonline := ( Start:=[3,3], Point1:=[5,2], Point2:=[7,3],
Point3:=[8,5], Point4:=[5,7], End := [3,5]);
80
4. Referncia de Programao
Acesso aos Componentes de Estrutura
Os componentes de estrutura podem ser acessados atravs da seguinte sintaxe:
<Nome da estrutura>.<Nome do componente>
Assim, para o exemplo acima mencionado da estrutura Polygonline, o componente Start pode ser
acessado por Poly_1.Start.
Enumeraes
Uma enumerao um tipo de dado definido pelo usurio formado por um nmero determinado de
constantes string. Estas constantes referem-se valores de enumerao.
Valores de enumerao sero reconhecidos globalmente em todas as reas do projeto, mesmo se
estiverem declarados em uma POU.
Uma enumerao criada como um objeto DUT atravs do dilogo Acrescentar Objeto.
ATENO:
No possvel a declarao de enumerao local, exceto com TYPE.
Sintaxe:
TYPE <Identificador>:(<Enum_0> ,<Enum_1>, ...,<Enum_n>) |<Tipo de dado de
base>;
END_TYPE
Uma varivel do tipo <Identificador> pode assumir um dos valores de enumerao <Enum_..> e ser
inicializada com o primeiro. Estes valores so compatveis com todos os nmeros, o que significa
que podem ser executadas operaes com os mesmos, da mesma forma que com as variveis inteiras.
Um nmero x pode ser atribudo varivel. Se os valores de enumerao no forem inicializados
com valores especficos na declarao, a contagem iniciar com 0 (zero). Ao inicializar, assegure-se
de que os valores iniciais esto aumentando nos componentes da linha. A validade do nmero ser
verificada no momento da execuo.
Exemplo:
Definio de duas enumeraes:
TYPE TRAFFIC_SIGNAL: (red, yellow, green:=10); (* O valor inicial para
cada cor vermelho 0, amarelo 1 e verde 10 *)
END_TYPE
Declarao:
TRAFFIC_SIGNAL1 : TRAFFIC_SIGNAL;
4. Referncia de Programao
Uso do valor de enumerao BLUE em uma POU:
Declarao:
colorvar1 : COLORS_1;
colorvar2 : COLORS_2;
Implementao:
(* permitido: *)
colorvar1 := colors_1.blue;
colorvar2 := colors_2.blue;
(* No permitido: *)
colorvar1 := blue;
colorvar2 := blue;
O tipo de dado de base da enumerao (por padro, INT), pode ser especificado.
Exemplo:
O tipo de dado de base para a enumerao BigEnum deve ser DINT:
TYPE BigEnum : (yellow, blue, green:=16#8000) DINT;
END_TYPE
Tipos Subrange
Um tipo subrange um tipo definido pelo usurio, cujo intervalo de valores restrito em relao ao
tipo de dado bsico. Observe a possibilidade de usar verificaes de limites de intervalo implcitas.
A declarao pode ser feita em um objeto DUT, mas tambm uma varivel pode ser diretamente
declarada com um tipo subrange.
Sintaxe para a declarao como um objeto DUT:
TYPE <Nome> : <Inttype> (<ug>..<og>) END_TYPE;
Sintaxe
Descrio
<Nome>
<Inttype>
um dos tipos de dados SINT, USINT, INT, UINT, DINT, UDINT, BYTE, WORD,
DWORD (LINT, ULINT, LWORD).
<ug>
uma constante que deve ser compatvel com o tipo de dado bsico e que define
o limite inferior dos tipos de intervalo. O limite inferior em si est includo neste
intervalo.
<og>
uma constante que deve ser compatvel com o tipo de dado bsico e que define
o limite superior dos tipos de intervalo. O limite superior em si est includo neste
intervalo.
Se, a um tipo subrange, estiver atribudo um valor (na declarao ou implementao) incompatvel
com este intervalo (no exemplo de declarao acima, i=5000), uma mensagem de erro ser exibida.
82
4. Referncia de Programao
Funes de Verificao
Para verificar os limites de intervalo durante o tempo de execuo, as funes CheckRangeSigned ou
CheckRangeUnsigned devem estar disponveis para a aplicao. Para isto, adicione o objeto POUs
para Verificaes Implcitas aplicao via dilogo Acrescentar Objeto. Marque as caixas de
verificao correspondentes aos tipos CheckRangeSigned e/ou CheckRangeUnsigned e confirme com
Abrir. A funo selecionada ser aberta no editor. A parte de declarao pr-definida e no pode ser
modificada, exceto para adicionar outras variveis locais. No editor ST, fornecida uma
implementao padro da funo passvel de modificao.
O propsito desta funo de verificao o tratamento adequado das violaes do subrange (por
exemplo, ao configurar uma memria de erro detectada ou alterar o valor). A funo ser chamada
implicitamente assim que uma varivel do tipo subrange for atribuda.
ATENO:
Para manter a funcionalidade de verificao, no altere a parte de declarao de uma funo de
verificao implcita.
Exemplo:
A atribuio de uma varivel pertencente a um tipo subrange assinado implica em uma chamada
implcita CheckRangeSigned. Na implementao padro da funo, fornecido um valor para o
intervalo conforme segue.
Parte de declarao:
// Cdigo implicitamente gerado: NO EDITAR.
FUNCTION CheckRangeSigned : DINT
VAR_INPUT
value, lower, upper: DINT;
END_VAR
Parte de implementao:
// Cdigo implicitamente gerado: somente uma sugesto de implementao.
IF (value < lower) THEN
CheckRangeSigned := lower;
ELSIF(value > upper) THEN
CheckRangeSigned := upper;
ELSE
CheckRangeSigned := value;
END_IF
Enquanto o valor atribudo estiver no intervalo, a sada da funo o valor em si. Caso contrrio,
correspondentemente violao do intervalo, os limites inferior e superior sero retornados.
A atribuio i:=10*y ser substituda implicitamente por:
i := CheckRangeSigned(10*y, -4095, 4095);
Se y apresentar o valor 1000, por exemplo, 10000:= 10*1000 no ser atribuda a varivel i,
conforme fornecido na implementao original, mas ao limite superior do intervalo, ou seja, 4095 .
O mesmo se aplica funo CheckRangeUnsigned.
NOTA: Se as funes CheckRangeSigned ou CheckRangeUnsigned no estiverem presentes, no
ocorrer verificao de tipo dos tipos subrange durante a execuo. Nesta caso, a varivel i poderia
obter qualquer valor entre 32768 e 32767.
83
4. Referncia de Programao
ATENO:
O uso das funes CheckRangeSigned e CheckRangeUnsigned podem resultar em um lao infinito,
por exemplo, se um tipo subrange for usado como incremento de um lao FOR que no seja
compatvel com o intervalo.
Exemplo de um lao infinito:
VAR
ui : UINT (0..10000);
END_VAR
FOR ui:=0 TO 10000 DO
...
END_FOR
O lao FOR nunca ser deixado, pois a funo de verificao evitar que sejam atribudos valores
maiores que 10000 varivel ui.
Operadores
Operadores IEC e Funes Adicionais Norma
O MasterTool IEC XE suporta todos operadores IEC. Diferentemente das funes padro, estes
operadores so reconhecidos implicitamente no projeto.
Alm dos operadores IEC, tambm os seguintes operadores no prescritos pela norma so
suportados: ANDN, ORN, XORN, INDEXOF, SIZEOF (consulte Operadores Aritmticos), ADR,
BITADR, Operador de Contedo (consulte Operadores de Endereo) e alguns Operadores de
Escopo.
Operadores so usados como funes em uma POU.
NOTA: Em operaes com variveis de ponto flutuante, o resultado depende do dispositivo em uso
no momento.
Veja as seguintes categorias de operadores:
Operadores Aritmticos
Os seguintes operadores, prescritos pela norma IEC61131-3, esto disponveis:
ADD
MUL
SUB
DIV
84
4. Referncia de Programao
MOD
MOVE
SIZEOF
INDEXOF
ADD
Operador IEC: adio de variveis.
Tipos permitidos: BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT,
LINT, ULINT, REAL e LREAL.
Duas variveis TIME podem tambm ser somadas resultando em outra, por exemplo, t#45s + t#50s =
t#1m35s.
Exemplo em IL:
Exemplo em ST:
var1 := 7+2+4+7;
Exemplo em FBD:
MUL
Operador IEC: multiplicao de variveis.
Tipos permitidos: BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT,
LINT, ULINT, REAL e LREAL.
Exemplo em IL:
Exemplo em ST:
var1 := 7*2*4*7;
85
4. Referncia de Programao
Exemplo em FBD:
SUB
Operador IEC: subtrao de uma varivel a partir de outra.
Tipos permitidos: BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT,
LINT, ULINT, REAL e LREAL.
Uma varivel TIME pode ser subtrada de outra varivel TIME, resultando em um terceiro tipo de
varivel TIME. Considere que valores TIME negativos so indefinidos.
Exemplo em IL:
Exemplo em ST:
var1 := 7-2;
Exemplo em FBD:
DIV
Operador IEC: diviso de uma varivel por outra.
Tipos permitidos: BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT,
LINT, ULINT, REAL e LREAL.
Exemplo em IL:
O resultado em Var1 4.
Exemplo em ST:
var1 := 8/2;
Exemplo em FBD:
86
4. Referncia de Programao
NOTA: Observe que a utilizao do operador DIV com tipos de dados inteiros retorna apenas o
quociente da diviso. Caso se queira retornar o resto da diviso o operador a ser utilizado o MOD
descrito a seguir.
Funes Check
Para verificar o valor do divisor, por exemplo, para evitar uma diviso por 0, possvel usar as
funes de verificao CheckDivInt, CheckDivLint, CheckDivReal e CheckDivLReal. Aps as
mesmas terem sido includas na aplicao, cada diviso que ocorrer no cdigo relacionado provocar
uma chamada destas funes. Para inclu-las na aplicao, use o dilogo Acrescentar Objeto . A
seguir, escolha o objeto POUs para Verificaes Implcitas , selecione a caixa de seleo
correspondente e confirme com Abrir. A funo selecionada ser aberta no editor. A parte de
declarao das funes est pr-definida e no deve ser alterada (exceto para adicionar variveis
locais). Uma implementao padro das funes modificveis est disponvel em ST.
Exemplo de implementao padro da funo CheckDivReal:
Parte de declarao:
// Cdigo implicitamente gerado : NO EDITAR.
FUNCTION CheckDivReal : REAL
VAR_INPUT
divisor:REAL;
END_VAR
Parte de implementao:
// Cdigo implicitamente gerado: somente uma sugesto para implementao.
IF divisor = 0 THEN
CheckDivReal:=1;
ELSE
CheckDivReal:=divisor;
END_IF;
O operador DIV usa a sada da funo CheckDivReal como divisor. No exemplo seguinte, uma
diviso por 0 proibida. Assim, o valor 0 do divisor D alterado para 1 (pela CheckDivReal) antes
da execuo da diviso. Portanto, o resultado da diviso 799.
PROGRAM MainPrg
VAR
erg:REAL;
v1:REAL:=799;
d:REAL;
END_VAR
erg:= v1 / d;
MOD
Operador IEC: mdulo da diviso de uma varivel por outra.
Tipos permitidos: BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, UDINT,
LINT e ULINT. O resultado desta funo ser o resto da diviso. O resultado ser um nmero inteiro.
Exemplo em IL:
O resultado em Var1 1.
Exemplo em ST:
var1 := 9 MOD 2;
Exemplo em FBD:
87
4. Referncia de Programao
MOVE
Operador IEC: atribuio de uma varivel outra (varivel) de um tipo apropriado.
Uma vez que MOVE est disponvel como uma caixa nos editores grficos FBD, LD e CFC, ento,
nestes, a funcionalidade EN/EN0 (habilitao) pode tambm ser aplicada em uma atribuio de
varivel.
Exemplo em ST:
ivar2 := MOVE(ivar1); (* O mesmo resultado ser obtido com: ivar2 :=
ivar1; *)
SIZEOF
Este operador aritmtico no est prescrito na norma IEC 61131-3.
Ele pode ser usado para determinar o nmero de bytes requisitado pela varivel x dada.
O operador SIZEOF retorna um valor no atribudo. O tipo do valor de retorno ser adaptado ao
tamanho encontrado da varivel x.
Valor de retorno de SIZEOF(x)
USINT
UINT
UDINT
ULINT
88
4. Referncia de Programao
Exemplo em ST:
VAR
arr1:ARRAY[0..4] OF INT;
Var1:INT;
end_var
Var1 := SIZEOF(arr1); (* d.h.: var1:=USINT#10; *)
Exemplo em IL:
O resultado 10.
INDEXOF
Este operador aritmtico no est prescrito na norma IEC 61131-3.
Execute esta funo para a classificao interna da POU.
Exemplo em ST:
var1 := INDEXOF(POU2);
Operadores de Bitstring
Os seguintes operadores de bitstring, correspondentes norma IEC 61131, esto disponveis:
AND, OR, XOR e NOT.
Operadores de bitstring comparam os bits correspondentes de dois ou mais operandos.
AND
Operador de bitstring IEC: bitwise AND de operandos de bit . Se os bits de entrada forem 1, o bit
resultante ser 1. Caso contrrio, ser 0.
Tipos permitidos: BOOL, BYTE, WORD, DWORD e LWORD.
Exemplo em IL:
Exemplo em FBD:
OR
Operador de bitstring IEC: OR bitwise de operandos de bit. Se no mnimo um dos bits de entrada for
1, o bit resultante ser 1. Caso contrrio, ser 0.
Tipos permitidos: BOOL, BYTE, WORD ou DWORD e LWORD.
89
4. Referncia de Programao
Exemplo em IL:
Exemplo em FBD:
XOR
Operador de bitstring IEC: operao XOR bitwise de operandos de bit. Se apenas um dos bits de
entrada for 1, o bit resultante ser 1. Se ambos ou nenhum forem 1, o bit resultante ser 0.
Tipos permitidos: BOOL, BYTE, WORD, DWORD e LWORD.
NOTA: Observe o comportamento da funo XOR na forma estendida (se houver mais de 2
entradas). As entradas sero verificadas em pares e os resultados especficos sero, ento,
comparados novamente em pares (isto est em conformidade com a norma, mas pode no ser
esperado pelo usurio).
Exemplo em IL:
Exemplo em FBD:
NOT
Operador de bitstring IEC: operao NOT bitwise de um operando de bit. O bit resultante ser 1 se
o bit de entrada correspondente for 0 e vice versa.
Tipos permitidos: BOOL, BYTE, WORD, DWORD e LWORD.
Exemplo em IL:
4. Referncia de Programao
Exemplo em FBD:
Exemplo em FBD:
Exemplo em IL:
91
4. Referncia de Programao
SHR
Operador: deslocamento bitwise direita de um operando.
erg:= SHR (in, n)
Exemplo em FBD:
Exemplo em IL:
ROL
Operador IEC: rotao bitwise de um operando para a esquerda.
erg:= ROL (in, n)
92
4. Referncia de Programao
NOTAS:
- Observe que a quantidade de bits necessria para a operao aritmtica deve ser aquela pretendida
pelo tipo de dado da varivel de entrada. Se a varivel de entrada for uma constante, ser
considerado o menor tipo de dado possvel. O tipo de dado da varivel de sada no tem efeito na
operao aritmtica.
- Veja no exemplo seguinte, em notao hexadecimal, que diferentes resultados podem ser obtidos
para erg_byte e erg_word dependendo do tipo de dado da varivel de entrada (BYTE ou
WORD), embora os valores das variveis de entrada in_byte e in_word sejam os mesmos.
Exemplo em ST:
PROGRAM rol_st
VAR
in_byte : BYTE:=16#45;
in_word : WORD:=16#45;
erg_byte : BYTE;
erg_word : WORD;
n: BYTE :=2;
END_VAR
erg_byte:=ROL(in_byte,n); (* O resultado 16#15 *)
erg_word:=ROL(in_word,n); (* O resultado 16#0114 *)
Exemplo em FBD:
Exemplo em IL:
ROR
Operador IEC: rotao de bitwise de um operando para a direita.
erg = ROR (in, n)
93
4. Referncia de Programao
Exemplo em ST:
PROGRAM ror_st
VAR
in_byte : BYTE:=16#45;
in_word : WORD:=16#45;
erg_byte : BYTE;
erg_word : WORD;
n: BYTE :=2;
END_VAR
erg_byte:=ROR(in_byte,n); (* O resultado 16#51 *)
erg_word:=ROR(in_word,n); (* O resultado 16#4011 *)
Exemplo em FBD:
Exemplo em IL:
Operadores de Seleo
Todas as operaes de seleo podem tambm ser executadas com variveis. Por questes de clareza,
os exemplos so limitados quelas operaes que usam constantes como operadores: SEL, MAX,
MIN, LIMIT e MUX.
SEL
Operador de seleo IEC: seleo binria. G determina se IN0 ou IN1 sero atribudos a OUT.
OUT := SEL(G, IN0, IN1)
OUT := IN0; (*Se G=FALSE*)
OUT := IN1; (*Se G=TRUE*)
O resultado 4.
O resultado 3.
94
4. Referncia de Programao
Exemplo em ST:
Var1:=SEL(TRUE,3,4); (* O resultado 4 *)
Exemplo em FBD:
NOTA: Observe que uma expresso em IN1 ou IN2 no ser processada se IN0 for TRUE.
MAX
Operador de seleo IEC: funo mximo. Retorna o maior dos dois valores.
OUT := MAX(IN0, IN1);
O resultado 90.
Exemplo em ST:
Var1:=MAX(30,40); (* O resultado 40 *)
Var1:=MAX(40,MAX(90,30)); (* O resultado 90 *)
Exemplo em FBD:
MIN
Operador de seleo IEC: funo mnimo. Retorna o menor dos dois valores.
OUT := MIN(IN0, IN1)
O resultado 30.
Exemplo em ST:
Var1:=MIN(90,30); (* O resultado 30 *)
Var1:=MIN(MIN(90,30),40); (* O resultado 30 *)
95
4. Referncia de Programao
Exemplo em FBD:
LIMIT
Operador de seleo IEC: limites.
OUT := LIMIT(Min, IN, Max)
Max e Min representam, respectivamente, os limites superior e inferior para o resultado. Se o valor
IN exceder o limite superior (Max), LIMIT retornar Max. Se IN for inferior a Min, o resultado ser
Min.
IN e OUT podem ser de qualquer tipo de varivel.
Exemplo em IL:
O resultado 80.
Exemplo em ST:
Var1:=LIMIT(30,90,80); (* O resultado 80 *)
Exemplo em FBD:
MUX
Operador de seleo IEC: operador de multiplexao.
OUT := MUX(K, IN0,...,INn)
IN0, ..., INn e OUT podem ser de qualquer tipo de varivel. K deve ser BYTE, WORD, DWORD,
LWORD, SINT, USINT, INT, UINT, DINT, LINT, ULINT ou UDINT. MUX seleciona o valor K
dentre um grupo de valores.
96
4. Referncia de Programao
Exemplo em IL:
O resultado 30.
Exemplo em ST:
Var1 := MUX(0,30,40,50,60,70,80); (* O resultado 30 *)
Exemplo em FBD:
O resultado 30.
NOTA: Uma expresso em outra entrada (que no seja K) no ser processada para otimizar o
tempo de execuo. Somente no modo de simulao todas as expresses sero executadas.
Operadores de Comparao
Os seguintes operadores, compatveis com a norma IEC 61131, esto disponveis:
GT, LT, LE, GE, EQ e NE.
Estes so operadores booleanos, cada qual comparando duas entradas (primeiro e segundo operando).
GT
Operador de comparao IEC: maior que.
Trata-se de um operador booleano que retorna o valor TRUE quando o valor do primeiro operando
for maior que o segundo. Os operandos podem ser de qualquer tipo de dado numrico bsico.
Exemplo em IL:
O resultado FALSE.
Exemplo em ST:
VAR1 := 20 > 30 > 40 > 50 > 60 > 70;
97
4. Referncia de Programao
Exemplo em FBD:
LT
Operador de comparao IEC: menor que.
Trata-se de um operador booleano que retorna o valor TRUE quando o valor do primeiro operando
for menor que o segundo. Os operandos podem ser de qualquer tipo de dado bsico.
Exemplo em IL:
O resultado TRUE.
Exemplo em ST:
VAR1 := 20 < 30;
Exemplo em FBD:
LE
Operador de comparao IEC: menor ou igual a.
Um operador booleano retorna o valor TRUE quando o valor do primeiro operando for menor ou
igual ao segundo. Os operandos podem ser de qualquer tipo de dado numrico bsico.
Exemplo em IL:
O resultado TRUE.
Exemplo em ST:
VAR1 := 20 <= 30;
Exemplo em FBD:
GE
Operador de comparao IEC: maior ou igual a.
Trata-se de um operador booleano que retorna o valor TRUE quando o valor do primeiro operando
for maior ou igual ao valor do segundo. Os operandos podem ser de qualquer tipo de dado numrico
bsico.
98
4. Referncia de Programao
Exemplo em IL:
O resultado TRUE.
Exemplo em ST:
VAR1 := 60 >= 40;
Exemplo em FBD:
EQ
Operador de comparao IEC: igual a.
Trata-se de um operador booleano que retorna o valor TRUE quando os operandos comparados so
iguais. Os operandos podem ser de qualquer tipo de dado numrico bsico.
Exemplo em IL:
O resultado TRUE.
Exemplo em ST:
VAR1 := 40 = 40;
Exemplo em FBD:
NE
Operador de comparao IEC: diferente de.
Trata-se de um operador booleano que retorna o valor TRUE quando os operandos no so iguais. Os
operandos podem ser de qualquer tipo de dado bsico.
Exemplo em IL:
O resultado FALSE.
Exemplo em ST:
VAR1 := 40 <> 40;
Exemplo em FBD:
99
4. Referncia de Programao
Operadores de Endereo
ADR, BITADR e o operador de contedo ^ so operadores de endereos extensivos norma
disponveis no MasterTool IEC XE.
ADR
Este operador de endereo no est prescrito na norma IEC 61131-3.
ADR retorna o endereo de seu argumento em uma DWORD. Este endereo pode ser enviado para
funes, podendo ser tratado como um ponteiro, ou pode ser atribudo a um ponteiro em um projeto.
NOTA: O operador ADR pode ser usado com nomes de funes, programas, blocos funcionais e
mtodos, assim substituindo o operador INDEXOF.
Considere que ponteiros de funo podem ser passados a bibliotecas externas, mas no h
possibilidade de chamar um ponteiro de funo no MasterTool IEC XE. Para habilitar uma chamada
de sistema (sistema de execuo) a respectiva propriedade (categoria Compilar) deve estar definida
para a funo. Consulte Ponteiros de Funo.
Exemplo em ST:
dwVar:=ADR(bVAR);
Exemplo em IL:
NOTA: Aps uma alterao online, podem ocorrer mudanas em relao aos dados em alguns
endereos. Isto deve ser observado ao usar ponteiros em endereos.
BITADR
Este operador de endereo no est prescrito na norma IEC 61131-3.
BITADR retorna o offset do bit no segmento em uma DWORD. Observe que o valor do offset
depende da opo de endereamento de byte nas configuraes do dispositivo estar ativada ou no.
VAR
var1 AT %IX2.3:BOOL;
bitoffset: DWORD;
END_VAR
Exemplo em ST:
bitoffset:=BITADR(var1); (* Resultado: 16#80000013*)
Exemplo em IL:
NOTA: Aps uma alterao online, podem ocorrer mudanas em relao aos dados em alguns
endereos. Isto deve ser observado ao usar ponteiros em endereos.
Operador de Contedo
Este operador de endereo no est prescrito na norma IEC 61131-3. Um ponteiro pode ser
desrefernciado atravs da adio do operador de contedo ^ aps o identificador do ponteiro.
100
4. Referncia de Programao
Exemplo em ST:
pt:POINTER TO INT;
var_int1:INT;
var_int2:INT;
pt := ADR(var_int1);
var_int2:=pt^;
NOTA: Aps uma alterao online, podem ocorrer mudanas em relao aos dados em alguns
endereos. Isto deve ser observado ao usar ponteiros em endereos.
Operador de Chamada
CAL
Operador IEC para chamar um bloco funcional ou um programa.
Use CAL em IL para chamar uma instncia de bloco funcional. As variveis que serviro como
variveis de entrada esto localizadas entre parnteses imediatamente direita do nome da instncia
do bloco funcional.
Exemplo:
Chamando a instncia Inst de um bloco funcional onde as variveis de entrada Par1 e Par2 so 0 e
TRUE, respectivamente.
CAL INST(PAR1 := 0, PAR2 := TRUE)
Observe que nas converses ..._TO_STRING, a string gerada no sentido justificado esquerda. Se
estiver definido que ela deve ser mais curta, o corte deve ser feito do lado direito.
As seguintes converses de tipo so suportadas:
Converses BOOL_TO
Converses TO_BOOL
Converso entre tipos de nmeros inteiros
Converses REAL_TO-/ LREAL_TO
Converses TIME_TO/TIME_OF_DAY
Converses DATE_TO/DT_TO
Converses STRING_TO
TRUNC (converso para DINT)
TRUNC_INT
ANY_NUM_TO_<numeric datatype>
ANY_TO_<any datatype>
Converses BOOL_TO
Operador IEC: converso do tipo BOOL para qualquer outro tipo.
Sintaxe para um operador de converso BOOL_TO:
BOOL_TO_<tipo de dado>
101
4. Referncia de Programao
Para tipos de nmeros: o resultado ser 1, quando o operando for TRUE. Ser 0, quando o
operando for FALSE.
Para tipo STRING: o resultado ser TRUE, quando o operando for TRUE. Ser FALSE quando o
operando for FALSE.
Exemplos em IL:
O resultado 1.
O resultado TRUE.
O resultado T#1ms.
O resultado TOD#00:00:00.001.
O resultado D#1970-01-01.
O resultado DT#1970-01-01-00:00:01.
Exemplos em ST:
i:=BOOL_TO_INT(TRUE);
(* O resultado 1 *)
str:=BOOL_TO_STRING(TRUE);
(* O resultado "TRUE" *)
t:=BOOL_TO_TIME(TRUE);
(* O resultado T#1ms *)
tof:=BOOL_TO_TOD(TRUE);
(* O resultado
TOD#00:00:00.001 *)
dat:=BOOL_TO_DATE(FALSE);
(* O resultado D#1970-0101 *)
dandt:=BOOL_TO_DT(TRUE);
(* O resultado DT#1970-0101-00:00:01 *)
Exemplos em FBD:
O resultado 1.
102
4. Referncia de Programao
O resultado TRUE.
O resultado T#1ms.
O resultado TOD#00:00:00.001.
O resultado D#1970-01-01.
O resultado DT#1970-01-01-00:00:01.
Converses TO_BOOL
Operador IEC: converso de outro tipo de varivel para BOOL.
Sintaxe para um operador de converso TO_BOOL:
<Tipo de dado>_TO_BOOL
O resultado TRUE quando o operando for diferente de 0 (zero). O resultado FALSE quando o
operando for 0 (zero).
O resultado TRUE para variveis do tipo STRING quando o operando for TRUE caso contrrio, o
resultado ser FALSE.
Exemplos em IL:
O resultado TRUE.
O resultado FALSE.
O resultado TRUE.
O resultado TRUE.
103
4. Referncia de Programao
Exemplos em FBD:
O resultado TRUE.
O resultado FALSE.
O resultado TRUE.
O resultado TRUE.
Exemplos em ST:
b :=
BYTE_TO_BOOL(2#11010101);
(* O resultado
TRUE *)
b := INT_TO_BOOL(0);
(* O resultado
FALSE *)
b := TIME_TO_BOOL(T#5ms);
(* O resultado
TRUE *)
b :=
STRING_TO_BOOL(TRUE);
(* O resultado
TRUE *)
Ao executar uma converso de um tipo maior para um menor, h o risco de perder algumas
informaes. Se o nmero a ser convertido exceder o limite do intervalo, os primeiros bytes do
nmero sero ignorados.
Exemplo em ST:
si := INT_TO_SINT(4223); (* O resultado 127 *)
Ao salvar o inteiro 4223 (16#107F representado hexadecimalmente) como uma varivel SINT, o
mesmo aparecer como 127 (16#7F representado hexadecimalmente).
Exemplo em IL:
Exemplo em FBD:
104
4. Referncia de Programao
Converses REAL_TO / LREAL_TO
Operador IEC: converso da varivel tipo REAL ou LREAL para um tipo diferente.
O valor ser arredondado para cima ou para baixo do nmero inteiro mais prximo e convertido em
um novo tipo de varivel. As excees desta regra so os tipos de variveis STRING, BOOL, REAL
e LREAL.
NOTA: Se um REAL ou LREAL for convertido em SINT, USINT, INT, UINT, DINT, UDINT,
LINT ou ULINT e o valor do nmero real estiver fora da faixa de valor daquele inteiro, o resultado
ser indefinido e depender do dispositivo. At mesmo uma exceo possvel neste caso. Para
obter um cdigo independente do dispositivo, a parte que exceder a faixa deve ser tratada atravs da
aplicao. Se o nmero REAL/LREAL estiver dentro da faixa de valor inteiro, a converso
funcionar em todos os dispositivos da mesma forma.
Em uma converso para o tipo STRING, o nmero total de dgitos limitado a 16. Caso o nmero
REAL/LREAL apresente mais dgitos, o dcimo sexto ser arredondado. Se o comprimento da
STRING for curto, esta ser cortada a partir da extremidade direita.
Ao executar uma converso de um tipo maior para um tipo menor, h o risco de perder algumas
informaes.
Exemplo em ST:
i
j
i
j
:=
:=
:=
:=
REAL_TO_INT(1.5);
REAL_TO_INT(1.4);
REAL_TO_INT(-1.5);
REAL_TO_INT(-1.4);
(*
(*
(*
(*
O
O
O
O
resultado
resultado
resultado
resultado
2 *)
1 *)
-2 *)
-1 *)
Exemplo em IL:
O resultado 3.
Exemplo em FBD:
Converses TIME_TO/TIME_OF_DAY
Operador IEC: converso do tipo de varivel TIME ou TIME_OF_DAY para um tipo diferente.
Sintaxe para o operador de converso:
<Tipo de dado TIME>_TO_<tipo de dado>
O tempo ser armazenado internamente em uma DWORD em milissegundos (iniciando com 12:00
A.M. em uma varivel TIME_OF_DAY). Este valor ser, ento, convertido.
A converso de um tipo maior em um menor pode implicar na perda de algumas informaes.
Para o tipo de varivel STRING, o resultado uma constante de tempo.
Exemplos em IL:
O resultado T#12ms.
105
4. Referncia de Programao
O resultado 300000.
O resultado 12.
Exemplos em ST:
str :=TIME_TO_STRING(T#12ms);
(* O resultado
T#12ms *)
dw:=TIME_TO_DWORD(T#5m);
(* O resultado
300000 *)
si:=TOD_TO_SINT(TOD#00:00:00.012);
(* O resultado
12 *)
Exemplos em FBD:
Converses DATE_TO/DT_TO
Operador IEC: converso do tipo de varivel DATE ou DATE_AND_TIME para um tipo diferente.
Sintaxe para o operador de converso:
<Tipo de dado DATE>_TO_<tipo de dado>
O resultado FALSE.
O resultado 29952.
106
4. Referncia de Programao
O resultado 129.
O resultado DT#1998-02-13-14:20.
Exemplos em ST:
b :=DATE_TO_BOOL(D#1970-01-01);
(*O resultado
FALSE*)
i :=DATE_TO_INT(D#1970-01-15);
(*O resultado
29952*)
byt :=DT_TO_BYTE(DT#1970-01-1505:05:05);
(*O resultado
129*)
str:=DT_TO_STRING(DT#1998-02-1314:20);
(*O resultado
DT#1998-02-1314:20*)
Exemplos em FBD:
Converses STRING_TO
Operador IEC: converso do tipo de varivel STRING para um tipo diferente.
A converso trabalha de acordo com o mecanismo de compilao C standard: STRING para INT e, a
seguir, INT para BYTE. O byte maior ser cortado e, assim, somente resultaro valores entre 0-255.
Desta forma, possvel, para a maioria dos processadores, gerar um cdigo timo. A converso pode
ser executada atravs de uma instruo de mquina simples.
Sintaxe para o operador de converso:
STRING_TO_<tipo de dado>
O operando da varivel do tipo STRING deve conter um valor vlido do tipo de varivel do
dispositivo. Caso contrrio, o resultado ser 0.
O resultado TRUE.
O resultado 0.
107
4. Referncia de Programao
O resultado T#117ms.
O resultado 244.
Exemplos em ST:
b :=STRING_TO_BOOL(TRUE);
(* O resultado TRUE
*)
w :=STRING_TO_WORD(abc34);
(* O resultado 0 *)
t
:=STRING_TO_TIME(T#127ms);
(* O resultado
T#127ms *)
bv :=STRING_TO_BYTE(500);
(* O resultado 244
*)
Exemplos em FBD:
O resultado TRUE.
O resultado 0.
O resultado T#127ms.
O resultado 244.
TRUNC
Operador IEC: converso de REAL para DINT. A parte inteira do nmero do valor ser usada.
NOTA: O operador TRUNC converte de REAL para INT, no entanto, TRUNC automaticamente
ser substitudo por TRUNC_INT.
A converso de um tipo maior em um menor pode implicar na perda de algumas informaes.
108
4. Referncia de Programao
Exemplo em IL:
Exemplos em ST:
diVar:=TRUNC(1.9); (* O resultado 1 *)
diVar:=TRUNC(-1.4); (* O resultado -1 *)
TRUNC_INT
Operador IEC: converso de REAL para INT. A parte inteira do valor ser usada.
NOTA: TRUNC_INT corresponde ao operador TRUNC tradicional.
Ao executar uma converso de um tipo maior em um menor, h um risco de perda de informaes.
Exemplo em IL:
Exemplos em ST:
iVar:=TRUNC_INT(1.9); (* O resultado 1 *)
iVar:=TRUNC_INT(-1.4); (* O resultado -1 *)
Converses ANY...TO
Um operador IEC especfico pode ser utilizado na converso de qualquer tipo de dado (mais
especificamente, a partir de um tipo de dado numrico para outro tipo de dado). Os tipos de dados
mais adequados so apresentados nas converses mostradas a seguir:
Sintaxe:
ANY_NUM_TO_<Tipo de dado numrico>
ANY_TO_<Qualquer tipo de dado>
Exemplo:
Converso de uma varivel do tipo REAL para INT:
re : REAL := 1.234;
i : INT := ANY_TO_INT(re); (* O resultado 1 *)
Funes Numricas
Os seguintes operadores numricos IEC esto disponveis:
ABS, SQRT, LN, LOG, EXP, SIN, COS, TAN, ASIN, ACOS, ATAN e EXPT.
ABS
Operador IEC: retorna o valor absoluto de um nmero. ABS(-2) retorna 2.
A entrada e sada podem ser de qualquer tipo de dado numrico bsico.
Exemplo em IL:
O resultado em i 2.
109
4. Referncia de Programao
Exemplo em ST:
i:=ABS(-2);
Exemplo em FBD:
SQRT
Operador IEC: retorna a raiz quadrada de um nmero.
A varivel de entrada pode ser de qualquer tipo de dado numrico bsico. A varivel de sada deve
ser do tipo REAL ou LREAL.
Exemplo em IL:
O resultado em q 4.
Exemplo em ST:
q:=SQRT(16);
Exemplo em FBD:
LN
Operador IEC: retorna o logaritmo natural de um nmero.
A varivel de entrada pode ser de qualquer tipo de dado numrico bsico. A varivel de sada deve
ser do tipo REAL ou LREAL.
Exemplo em IL:
O resultado em q 3,80666.
Exemplo em ST:
q:=LN(45);
Exemplo em FBD:
LOG
Operador IEC: retorna o logaritmo de um nmero na base 10.
A varivel de entrada pode ser de qualquer tipo de dado numrico bsico. A varivel de sada deve
ser do tipo REAL ou LREAL.
Exemplo em IL:
110
4. Referncia de Programao
O resultado em q 2,49762.
Exemplo em ST:
q:=LOG(314.5);
Exemplo em FBD:
EXP
Operador IEC: retorna a funo exponencial.
A varivel de entrada pode ser de qualquer tipo de dado numrico bsico. A varivel de sada deve
ser do tipo REAL ou LREAL.
Exemplo em IL:
O resultado em q 7,389056.
Exemplo em ST:
q:=EXP(2);
Exemplo em FBD:
SIN
Operador IEC: retorna o seno de um nmero.
A varivel de entrada pode ser de qualquer tipo de dado numrico bsico, sendo que este representa
um arco em radianos. A varivel de sada deve ser do tipo REAL ou LREAL.
Exemplo em IL:
O resultado em q 0,479426.
Exemplo em ST:
q:=SIN(0.5);
Exemplo em FBD:
COS
Operador IEC: retorna o cosseno do nmero.
111
4. Referncia de Programao
A varivel de entrada pode ser de qualquer tipo de dado numrico bsico, sendo que este representa
um arco em radianos. A varivel de sada deve ser do tipo REAL ou LREAL.
Exemplo em IL:
O resultado em q 0.877583.
Exemplo em ST:
q:=COS(0.5);
Exemplo em FBD:
TAN
Operador IEC: retorna a tangente de um nmero.
A varivel de entrada pode ser de qualquer tipo de dado numrico bsico, sendo que este representa
um arco em radianos. A varivel de sada deve ser do tipo REAL ou LREAL.
Exemplo em IL:
O resultado em q 0,546303.
Exemplo em ST:
q:=TAN(0.5);
Exemplo em FBD:
ASIN
Operador IEC: retorna o arco seno (funo inversa do seno) de um nmero.
A varivel de entrada pode ser de qualquer tipo de dado numrico bsico. A varivel de sada deve
ser do tipo REAL ou LREAL, sendo que esta representa um arco em radianos.
Exemplo em IL:
O resultado em q 0,523599.
Exemplo em ST:
q:=ASIN(0.5);
Exemplo em FBD:
112
4. Referncia de Programao
ACOS
Operador IEC: retorna o arco cosseno (funo inversa do cosseno) de um nmero.
A varivel de entrada pode ser de qualquer tipo de dado numrico bsico. A varivel de sada deve
ser do tipo REAL ou LREAL, sendo que esta representa um arco em radianos.
Exemplo em IL:
O resultado em q 1,0472.
Exemplo em ST:
q:=ACOS(0.5);
Exemplo em FBD:
ATAN
Operador IEC: retorna o arco tangente (funo inversa da tangente) de um nmero.
A varivel de entrada pode ser de qualquer tipo de dado numrico bsico. A varivel de sada deve
ser do tipo REAL ou LREAL, sendo que esta representa um arco em radianos.
Exemplo em IL:
O resultado em q 0,463648.
Exemplo em ST:
q:=ATAN(0.5);
Exemplo em FBD:
EXPT
Operador IEC: exponenciao de uma varivel com outra varivel.
OUT = IN1IN2;
A varivel de entrada pode ser de qualquer tipo de dado numrico bsico. A varivel de sada deve
ser do tipo REAL ou LREAL.
Exemplo em IL: (* O resultado 49 *)
Exemplo em ST:
var1 := EXPT(7,2);
113
4. Referncia de Programao
Exemplo em FBD:
Se for referenciado o nome de uma varivel declarada em mais de uma lista de variveis globais, sem
haver o nome da lista como um operador precedente, ser gerada uma mensagem de erro.
Contexto de Biblioteca
Operador escopo: extenso da norma IEC 61131-3.
O contexto de biblioteca pode ser usado para, explicitamente, acessar os componentes da biblioteca.
Exemplo: se uma biblioteca includa em um projeto contm um mdulo fun e h tambm uma POU
fun definida localmente no projeto, o contexto da biblioteca pode ser adicionado ao nome do mdulo
para tornar o acesso exclusivo. A sintaxe : <contexto>.<nome do mdulo>, por exemplo: lib.fun.
Por padro, o contexto de uma biblioteca idntico ao nome da mesma. No entanto, possvel
definir outro nome, tanto nas Informaes do Projeto (ao criar um projeto de biblioteca), quanto no
dilogo Propriedades, posteriormente.
Exemplo:
Suponha a funo fun na biblioteca lib e a funo fun declarada no projeto. Por padro, o contexto da
biblioteca nomeado lib:
114
4. Referncia de Programao
res1 := fun(in := 12); // chamada da funo do projeto FUN.
res2 := lib.fun(in := 12); // chamada da funo da biblioteca FUN.
Nome da Enumerao
Operador de escopo: extenso da norma IEC 61131-3.
O nome do tipo das enumeraes pode ser usado para tornar o acesso a uma constante de enumerao
no ambguo. Neste caso, <nome da enumerao>. precede o nome da constante. Assim, possvel
usar a mesma constante em diferentes enumeraes.
Exemplo:
A constante Blue um componente das enumeraes Colors e Feelings.
color := Colors.Blue; // Acesso ao valor de enum Blue no tipo Colors.
feeling := Feelings.Blue; // Acesso ao valor de enum Blue no tipo
Feelings.
Operandos
Os operandos so classificados como segue:
Constantes
Constantes BOOL
As constantes BOOL assumem os valores lgicos TRUE e FALSE.
Veja tambm: BOOL (Tipos de Dados Padro).
Constantes TIME
As constantes TIME so geralmente usadas para operar mdulos de tempo padro. Alm da
constante TIME, cujo tamanho 32 bits e est em conformidade com a norma IEC 61131-3, LTIME
suportada como base de tempo para temporizadores de alta resoluo. LTIME tem o tamanho de 64
bits e resoluo em nanosegundos.
Sintaxe para a constante TIME:
T#<Declarao do tempo>
d: dias
h: horas
m: minutos
s: segundos
ms: milissegundos
115
4. Referncia de Programao
Abaixo, exemplos de utilizao incorreta:
TIME1 := t#5m68s; (* Limite excedido em um componente inferior *)
TIME1 := 15ms; (* Est faltando o T# *)
TIME1 := t#4ms13d; (* Ordem incorreta dos itens *)
Alm das unidades de tempo usadas com a constante TIME (veja acima), a declarao de tempo pode
incluir:
us : microssegundos
ns : nanosegundos
116
4. Referncia de Programao
Constantes DATE_AND_TIME
As constantes DATE e TIME_OF_DAY podem tambm ser combinadas com as constantes
DATE_AND_TIME.
Sintaxe:
dt#<Declarao de data e hora>
(*
(*
(*
(*
nmero
nmero
nmero
nmero
decimal *)
binrio *)
octal *)
hexadecimal *)
Estes valores podem ser dos tipos: BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT,
UDINT, REAL ou LREAL.
No so permitidas converses implcitas de tipos de varivel maiores para menores. Isto significa
que a varivel DINT no pode simplesmente ser usada como varivel INT. Neste caso, deve ser
usada a converso de tipo.
Constantes REAL/LREAL
As constantes REAL e LREAL podem ser utilizadas como fraes decimais e representadas
exponencialmente. Use o formato padro americano, com o ponto decimal.
Exemplo:
7.4
( * em vez de 7,4 * )
1.64e+009 ( * em vez de 1,64e+009 * )
Constantes STRING
Uma string uma sequncia de caracteres. Constantes STRING so precedidas e seguidas por aspas
simples. Tambm possvel inserir espaos em branco e caracteres especiais (UMLAUTS, por
exemplo). Eles sero tratados da mesma forma que outros caracteres. Observe as seguintes
possibilidades de usar o sinal $ em constantes de string:
117
4. Referncia de Programao
Sinal
Resultado
$$
Sinal de dlar
$'
Aspa nica
$L ou $l
Avano de linha
$N ou $n
Nova linha
$P ou $p
Alimentao da pgina
$R ou $r
Quebra de linha
$T ou $t
Tab
Literais Tipados
Basicamente, no uso das constantes IEC, empregado o menor tipo de dado possvel. Para usar outro
tipo de dado, podem ser utilizados os chamados literais tipados, sem a necessidade de declarar as
constantes explicitamente.
Para este propsito, a constante ser fornecida com um prefixo que determina o seu tipo.
Sintaxe:
<TIPO>#<Literal>
<TIPO> especifica o tipo de dado desejado. Itens possveis: BOOL, SINT, USINT, BYTE, INT,
UINT, WORD, DINT, UDINT, DWORD, REAL e LREAL. O tipo deve ser escrito em letras
maisculas.
<Literal> especifica a constante. O dado inserido deve adequar-se ao tipo dado especificado em
<TIPO>.
Exemplo:
var1:=DINT#34;
Ser gerada uma mensagem de erro caso a constante no possa ser convertida para o tipo do
dispositivo sem perda de dados.
Literais tipados podem ser usados em qualquer local onde sejam usadas constantes normais.
Variveis
Variveis podem ser declaradas localmente na parte de declarao de uma POU ou em uma lista de
variveis globais.
Consulte Declarao de Variveis para obter informaes sobre a declarao de uma varivel,
incluindo as regras referentes ao identificador da varivel e seu uso mltiplo.
Variveis podem ser usadas em qualquer local onde o tipo declarado permiti-las.
As variveis disponveis podem ser acessadas atravs do Assistente de Entrada.
Acessando Variveis
Sintaxe:
Para componentes de ARRAYS bi-dimensionais:
<NOME DO ARRAY>[INDICE1, INDICE2]
118
4. Referncia de Programao
Para variveis de estrutura:
<NOME DA ESTRUTURA>.<NOME DA VARIVEL>
Endereando Bits
Bits individuais podem ser acessados em variveis inteiras. Para tal, o ndice do bit a ser endereado
anexado varivel, separado por um ponto. O ndice do bit pode ser dado por qualquer constante.
A indexao baseada em zero.
Sintaxe:
<Nome da varivel>.<ndice de bit>
Exemplo:
a : INT;
b : BOOL;
...
a.2 := b;
Bitaccess:
xxx.enable:=true;(* O terceiro bit na varivel xxx ser configurado para
TRUE *)
119
4. Referncia de Programao
Exemplo 2, acesso a bit em um componente de estrutura inteiro:
Declarao da estrutura stru1:
TYPE stru1 :
STRUCT
bvar:BOOL;
rvar:REAL;
wvar:WORD;
{bitaccess enable 42 'Start drive'}
END_STRUCT
END_TYPE
Declarao na POU:
VAR
x:stru1;
END_VAR
Acesso a bit:
x.wvar.enable:=true;
Isto levar para TRUE o bit 42 na varivel X. Uma vez que bvar tem 8 bits e rvar tem 32 bits, o
acesso a bit ser feito no segundo bit da varivel wvar, que, como resultado, assumir o valor 4.
Endereos
NOTA: Alteraes online podem alterar os contedos nos endereos. Considere isto ao usar
ponteiros em endereos.
Posio da Memria
A posio da memria pode ser acessada por qualquer tamanho suportado.
Por exemplo, o endereo %MD48 enderearia os bytes 192, 193, 194 e 195 na rea de posio da
memria (48 * 4 = 192). A posio do primeiro byte zero. O exemplo abaixo mostra a posio da
memria correspondente, dependendo do tamanho (X: bit, B: byte, W: word, D: dword), para
endereamento IEC.
Exemplo:
Endereos
%MX
96.0 - 96.7
96.8 - 192.15
97.0 - 97.7
97.8 - 97.15
%MB
192
193
194
195
%MW
96
%MD
97
48
4. Referncia de Programao
Sintaxe:
Endereo com bit:
%<Prefixo da rea de memria><Tamanho do prefixo><nmero.nmero>
Descrio
Posio da memria
Descrio
Bit nico
Byte (8 bits)
Descrio
%QX7.5
%IW215
%QB7
Byte de sada 7
%MD48
121
4. Referncia de Programao
Obs.: n = nmero do byte.
DWords/Words
Endereamento
a Byte
D0
W0
D1
W1
Bytes
Endereamento
orientado a Words IEC
D0
W0
W2
W1
W3
X (bits)
Endereamento a
Byte
B0
X0.7
...
X0.0
X0.7
...
X0.0
B1
X1.7
...
X1.0
X1.15
...
X0.8
B2
...
X1.7
...
X1.0
X1.15
...
X1.8
X(n/2).15
...
X(n/2).8
B3
W4
D1
W2
...
Endereamento orientado
a Words IEC
B4
B5
W3
B6
B7
D(n-3)
D2
B8
...
...
...
...
...
...
D(n/4)
W(n-1)
...
W(n/2)
Bn
Xn.7
...
Xn.0
TIME()-Function
Esta funo retorna o tempo (em milissegundos) decorrido desde a inicializao do sistema.
O tipo de dado TIME.
Exemplo em IL:
Exemplo em ST:
tempo:=TIME();
122
Se o cursor estiver posicionado em um texto, este ser exibido em azul e poder ser editado. O
boto
abre o Assistente de Entrada. O texto ??? deve ser substitudo por um identificador
vlido:
Se o cursor estiver posicionado no corpo de um elemento (caixa, entrada, sada, salto, rtulo,
retorno e comentrio), este ser exibido em vermelho e poder ser movido com o mouse:
Se o cursor estiver posicionado em uma conexo de entrada ou sada de um elemento, este ser
exibido em vermelho e pode ser negado ou submetido a um set/reset:
Figura 5-5. Possveis Posies do Cursor e Exemplos de Posies de Entrada e Sada Selecionadas
124
Pino
Representao
Significado
Entrada
Sada
Caixa
Salto
Rtulo
125
Compositor
Seletor
Comentrio
Pino de
Entrada
Pino de
Sada
126
127
130
Editor SFC
O editor SFC est disponvel para objetos de programao na linguagem Sequenciamento Grfico de
Funes (SFC) da norma IEC 61131-3. A linguagem deve ser escolhida no momento em que uma
nova POU adicionada ao projeto via comando Acrescentar Objeto.
O editor SFC um editor grfico. Configuraes gerais referentes ao comportamento e exibio so
feitas no dilogo Opes do Editor SFC.
O editor SFC est disponvel na parte inferior da janela que se abre ao editar uma POU SFC. Na sua
parte superior, aparece o Editor de Declarao.
131
A edio facilitada pelo fato de que cada elemento especfico pode ser selecionado e
organizado individualmente. Durante a edio, no necessariamente deve haver correspondncia
de sintaxe do SFC. Os erros de sintaxe no sero verificados at a execuo do comando Gerar
Cdigo.
H somente um tipo de passo que combina os estilos tradicionais (passos IEC e passos no IEC).
As aes sempre devem ser fornecidas como POUs e sempre so atribudas via propriedades de
elemento de passo.
Macros podem ser usadas para fins de estruturao.
133
Mantenha a tecla <SHIFT> pressionada e, em seguida, clique nos elementos a serem selecionados.
134
Pressione o boto esquerdo do mouse e desenhe um retngulo (linha pontilhada) em volta dos
elementos a serem selecionados.
Use o comando Selecionar Todos (menu Editar).
Editar Textos
Com um clique do mouse em um texto, abre-se um campo de edio. Se uma rea de texto foi
selecionada via teclas de seta, o campo de edio deve ser aberto explicitamente via <ESPAO>.
Editar Aes Associadas
Um clique duplo em um passo (entrada, ativo ou sada) ou ao de transio associada abre a ao
associada no editor correspondente. Por exemplo, d um duplo clique no elemento transio ou no
tringulo indicando uma ao de sada em um elemento de passo.
Recortar, Copiar e Colar Elementos
Selecione o(s) elemento(s) e use o comando Recortar, Copiar ou Colar (menu Editar) ou as teclas
correspondentes.
Observe o seguinte comportamento:
Excluir Elementos
Selecione os elementos e use o comando Excluir ou a tecla <DEL>. Considere:
135
Descrio
Nome
Comentrio
Smbolo
Para cada item SFC, uma memria criada implicitamente com o mesmo
nome do elemento.
Esta opo usada para definir se esta memria deve ser exportada para a
configurao de smbolos e como a mesma deve ser acessada no CP.
Execute um duplo clique no campo valor, selecione-o e use a tecla de espao
para abrir a lista de seleo para escolher uma das opes de acesso.
Nenhuma: o smbolo ser exportado para a configurao de smbolos, mas
no estar acessvel no CP.
Leitura: o smbolo ser exportado para a configurao de smbolos e poder
ser lido no CP.
Escrita: o smbolo ser exportado para a configurao de smbolos e ser
escrito no CP.
Leitura/escrita: combinao de leitura e escrita.
A princpio, nada inserido neste campo, ou seja, o smbolo no exportado
para a configurao de smbolos.
Descrio
Passo inicial
Tempos:
Ativao
mnima
Ativao
mxima
Aes
Entrada de
passo
Passo ativo
Sada do passo
NOTA: Considere a possibilidade de obter informaes sobre o status do passo/ao, timeouts, etc.
atravs das variveis implcitas e memrias SFC apropriadas.
Elementos SFC / Caixa de Ferramentas
Os elementos grficos usados para a programao na janela do editor SFC podem ser inseridos
atravs dos comandos de insero (menu SFC).
136
Passo
Transio
Ao
Ramificao (Alternativa)
Ramificao (Paralela)
Salto
Macro
Transio de Passo
Smbolo:
Um passo representado por uma caixa (contendo o seu nome) conectada s transies precedente e
subsequente atravs de uma linha.
O nome do passo pode ser editado na linha.
A moldura da caixa do passo inicial apresenta linha dupla.
Todo o passo - atravs do comando Passo Inicial ou da respectiva propriedade do passo - pode ser
transformado em um passo inicial. Em outras palavras, pode ser convertido no passo que ser
executado primeiro quando a POU for chamada.
As aes a serem executadas quando o passo est ativo (processado) devem estar associadas (veja
abaixo, Ao).
Passos e transies so basicamente inseridos juntos via comando Inserir Transio de Passo Aps.
NOTAS:
- Somente os tipos de passo IEC esto previstos.
- Nomes de passo devem ser exclusivos no escopo de uma POU principal. Isto deve ser observado
especialmente ao usar aes programadas em SFC.
O nome de um objeto de transio ( ) disponvel na rvore das POUs (o que permite o uso de
vrias transies. Veja, por exemplo t1 na coluna esquerda)
Uma expresso condicional vlida
NOTA: Considere que transies do tipo objeto ou propriedade so indicadas por um pequeno
tringulo no canto superior direito do retngulo.
Ou:
<Condio de transio>; (* por exemplo a=100 *)
).
O comando Acrescentar Objeto est disponvel para adicionar uma ao (POU) em uma POU SFC.
NOTA: Nomes de passo devem ser exclusivos no escopo de uma POU principal. Uma ao no
pode ter o mesmo nome do passo ao qual est atribuda.
Aes IEC
Aes de passo IEC estendidas
140
142
143
144
Nome
Descrio
No-armazenado
Reset
A ao desativada.
Set
Limitado no tempo
Atrasado no tempo
Pulso
SD
Armazenado e
atrasado no tempo
DS
Atrasado e
armazenado
SL
Armazenado e limitado
no tempo
E:
_<Nome da ao>: SFCActionType;
145
Gerao de Smbolo
Nas propriedades do elemento de um passo ou ao, possvel definir se uma definio de smbolo
deve ser adicionada a uma aplicao de smbolo possivelmente criada e enviada (em relao
memria do nome do passo ou da ao). Para tal, selecione o item para o direito de acesso desejado
na coluna Smbolo da visualizao das propriedades do elemento.
NOTA: As memrias descritas acima podem ser usadas para forar um determinado status de valor
para um passo, ou seja, defini-lo como ativo. No entanto, esteja ciente de que isto pode causar
descontrole no SFC.
Tempo Via Variveis TIME
A memria t determina o tempo atual transcorrido desde que o passo se tornou ativo. Isto ocorre
apenas para passos, independentemente do tempo configurado nos atributos de passo (veja abaixo as
consideraes sobre o SFCError).
Para passos:
<nome do passo>.t (<nome do passo>._t no pode ser usado para fins
externos)
146
147
Descrio
SFCInit: BOOL;
SFCReset: BOOL;
SFCError: BOOL;
SFCEnableLimit:
BOOL;
SFCErrorStep: STRING;
SFCErrorPOU: STRING;
SFCQuitError: BOOL;
SFCPause: BOOL;
148
SFCCurrentStep:
STRING;
SFCTip, SFCTipMode:
BOOL;
No caso de acesso de escrita a partir de outra POU, a varivel implcita tambm deve estar declarada
explicitamente como uma varivel VAR_INPUT da POU SFC, ou globalmente, por exemplo, em
uma GVL.
149
Passo ativo: o passo no qual a ao est sendo executada. No modo online, os passos ativos so
exibidos na cor azul.
Passo inicial: no primeiro ciclo aps a POU SFC ter sido chamada, o passo inicial
automaticamente torna-se ativo e a ao do passo associada executada.
Aes IEC: so executadas no mnimo duas vezes (a primeira vez quando so ativadas e a
segunda, no ciclo seguinte, quando so desativadas).
Ramificaes alternativas: se o passo anterior linha horizontal das ramificaes estiver ativo,
ento a primeira transio de cada ramificao especfica ser avaliada, da esquerda para a
direita. A primeira transio esquerda que apresentar o valor TRUE provocar a execuo da
ramificao respectiva, ou seja, o passo subsequente na ramificao se tornar ativo.
Ramificaes paralelas: se a linha dupla no incio de uma ramificao paralela estiver ativa e a
condio de transio precedente apresentar o valor TRUE ento, em todas as ramificaes
paralelas, os passos subsequentes sero ativados. As ramificaes sero processadas
paralelamente. O passo seguinte linha dupla, ao final da ramificao, se tornar ativo quando
todos os passos anteriores estiverem ativos e a condio de transio aps a linha dupla
apresentar o valor TRUE.
Descrio
Reset
Aes de sada de
passo
Aes de entrada de
passo
150
Aes IEC
Verificao de
transio, ativando os
prximos passos
NOTAS:
- Em relao implementao das aes, considere que uma ao pode ser transmitida vrias vezes
em um ciclo por estar associada a mltiplas sequncias. Exemplo: um SFC pode ter duas aes IEC
(A e B), sendo ambas implementadas no SFC e ambas chamando a ao IEC C. Deste modo, as
aes A e B podem estar ativas no mesmo ciclo e, posteriormente, em ambas as aes, a ao C
pode estar ativa. Neste caso, C teria sido chamada duas vezes. Se a mesma ao IEC for usada
simultaneamente em diferentes nveis de um SFC, isto poderia causar efeitos indesejados devido ao
sequenciamento do processamento descrito acima. Por isto, uma mensagem de erro apresentada.
- Considere a possibilidade de usar variveis implcitas para controlar o status dos passos, das aes
e a execuo do grfico.
Editor SFC no Modo Online
No modo online, o editor SFC fornece visualizaes para monitorao, escrita e foramento de
variveis e expresses no controlador. Veja:
Para obter informaes sobre como abrir objetos no modo online, consulte Interface do Usurio
no Modo Online no Manual de Utilizao MasterTool IEC XE MU299048.
A janela do editor de um objeto SFC tambm inclui o Editor de Declarao na parte superior.
Para obter informaes gerais sobre o editor de declarao no modo online, consulte Editor de
Declarao no Modo Online no Manual de Utilizao MasterTool IEC XE MU299048. No
caso de haver variveis implcitas declaradas (memrias SFC) atravs do dilogo de
Configuraes do SFC, estas sero ali adicionadas, porm no sero visualizadas no modo
offline do Editor de Declarao.
Considere tambm a sequncia de processamento dos elementos de um Sequenciamento Grfico
de Funes.
Consulte as informaes sobre as propriedades do objeto, as opes do editor SFC e os padres
SFC para obter informaes sobre as configuraes referentes compilao e exibio online de
elementos SFC e seus atributos.
Considere a possibilidade de usar memrias para monitorar e controlar o processamento de um
SFC.
Monitorao
Passos ativos so exibidos com a cor azul. A exibio dos atributos de passo depende das opes do
editor SFC atualmente configuradas.
151
Texto Estruturado Estendido (ExST) uma extenso da norma IEC 61131-3 especfica do
MasterTool IEC XE para Texto Estruturado (ST). Exemplos: Atribuio como expresso e
operadores Set/Reset.
Expresses
Uma expresso uma construo que retorna um valor aps sua avaliao. Este valor usado nas
instrues.
Expresses so compostas de operadores, operandos e/ou atribuies. Um operando pode ser uma
constante, uma varivel, uma chamada de funo ou outra expresso.
152
Definio
33
Constante
ivar
Varivel
fct(a,b,c)
Chamada de funo
a AND b
Expresso
(x*y) / z
Expresso
real_var2 := int_var;
Atribuio
Smbolo
(expresso)
Chamada de funo
Nome da funo
(lista de parmetros)
Exponenciao
EXPT
Negar
NOT
Complementos
Multiplicar
Dividir
Mdulo
MOD
Somar
Subtrair
Comparar
<,>,<=,>=
Igual a
Diferente de
=
<>
Booleano AND
AND
Booleano XOR
XOR
Booleano OR
OR
Comentrio
IF b := (i = 1) THEN
153
Exemplo
Atribuio
A:=B; CV := CV + 1; C:=SIN(X);
RETURN
RETURN;
IF
D:=B*B;
IF D<0.0 THEN
C:=A;
ELSIF D=0.0 THEN
C:=B;
ELSE
C:=D;
END_IF;
CASE
CASE INT1 OF
1: BOOL1 := TRUE;
2: BOOL2 := TRUE;
ELSE
BOOL1 := FALSE;
BOOL2 := FALSE;
END_CASE;
FOR
J:=101;
FOR I:=1 TO 100 BY 2 DO
IF ARR[I] = 70 THEN
J:=I;
EXIT;
END_IF;
END_FOR;
WHILE
J:=1;
WHILE J<= 100 AND ARR[J] <> 70 DO
J:=J+2;
END_WHILE;
REPEAT
J:=-1;
REPEAT
J:=J+2;
UNTIL J= 101 OR ARR[J] = 70
END_REPEAT;
EXIT
EXIT;
CONTINUE
CONTINUE;
JMP
label: i:=i+1;
JMP label;
Instruo vazia
Aps a execuo desta linha, Var1 representar dez vezes o valor de Var2.
Caractersticas Estendidas
Operadores de atribuio que no fazem parte da norma 61131-3 (ExST)
Operador Set: o valor uma vez definido como TRUE, assim permanecer.
Exemplo:
a S= b;
O operando a assume o valor de b uma vez em TRUE, ele assim permanecer, mesmo se b
tornar-se FALSE novamente.
Operador Reset: uma vez definido como FALSE, o operando assim permanecer.
Exemplo:
a R= b;
Exemplo:
Suponha que um bloco funcional de temporizao (TON) seja chamado com atribuies para os
parmetros IN e PT.
A varivel resultante Q atribuda varivel A. O FB instanciado por TMR:TON;.
A varivel resultante, como em IL, endereada em conformidade com a sintaxe <nome da instncia
FB>.<varivel FB>:
TMR(IN := %IX5, PT := 300);
A:=TMR.Q
Instruo RETURN
A instruo RETURN pode ser usada para sair de uma POU, por exemplo, dependendo de uma
condio.
Sintaxe:
RETURN;
Exemplo:
IF b=TRUE THEN
155
Se b for TRUE, a instruo a:=a+1 no ser executada e a POU ser deixada imediatamente.
Instruo IF
A instruo IF permite verificar uma condio e, dependendo desta, executar instrues.
Sintaxe:
IF <Expresso booleana 1> THEN
<Instrues IF>
{ELSIF <Expresso booleana 2> THEN
<Instrues ELSIF 1>
...
ELSIF <Expresso booleana 2> THEN
<Instrues ELSIF n-1>
ELSE
<Instrues ELSE>}
END_IF;
Neste caso, a varivel HEATING_ON acionada quando a TEMP for menor 17. Caso contrrio,
HEATING_ON ser FALSE.
Instruo CASE
Com as instrues CASE, uma instruo pode combinar vrias instrues condicionadas pela a
mesma varivel de condio, em uma construo especfica.
Sintaxe:
CASE <Var1> OF
<Valor 1>: <Instruo 1>
<Valor 2>: <Instruo 2>
<Valor 3, Valor 4, Valor 5>: <Instruo 3>
<Valor 6 .. Valor 10>: <Instruo 4>
...
<Valor n>: <Instruo n>
ELSE
< instruo ELSE >
END_CASE;
156
Se a varivel em <Var1> apresentar o valor <Valor 1>, ento a instruo <Instruo 1> ser
executada.
Se <Var 1> no apresentar nenhum dos valores indicados, ento a <instruo ELSE> ser
executada.
Se a mesma instruo deve ser executada para muitos valores de variveis, estas escrevem os
valores um aps o outro (separados por vrgulas), condicionando, assim, uma execuo em
comum.
Se uma instruo deve ser executada em um intervalo de valores das variveis, estas escrevem o
valor inicial e o final separados por dois pontos. Assim, determina-se uma condio em comum.
Exemplo:
CASE INT1 OF
1, 5: BOOL1 := TRUE;
BOOL3 := FALSE;
2: BOOL2 := FALSE;
BOOL3 := TRUE;
10..20: BOOL1 := TRUE;
BOOL3:= TRUE;
ELSE
BOOL1 := NOT BOOL1;
BOOL2 := BOOL1 OR BOOL2;
END_CASE;
Lao FOR
O lao FOR permite a repetio de processos.
Sintaxe:
FOR <INT_VAR>:=<VALOR_INICIAL> TO <VALOR_FINAL> {BY <TAMANHO DO PASSO>} DO
<INSTRUES>
END_FOR;
Suponha que valor inicial de Var1 seja 1. Ento, ela ter o valor 32 aps o lao FOR.
NOTA: Se <VALOR_FINAL> for igual ao valor limite do contador <INT_VAR> ( por exemplo
Counter - usado no exemplo mostrado acima declarado como tipo SINT) e se < VALOR_FINAL >
for 127, haver um lao sem fim. Neste caso, < VALOR_FINAL > no deve ser igual ao valor limite
do contador.
A instruo CONTINUE pode ser usada em um lao FOR.
Lao WHILE
O lao WHILE pode ser usado da mesma forma que o FOR, apenas com a diferena de que a
condio de ruptura pode ser qualquer expresso booleana. Em outras palavras: indica-se uma
condio e, quando esta atendida, o lao executado.
157
Os laos WHILE e REPEAT so, de certa forma, mais poderosos que o lao FOR, uma vez que no
precisam saber o nmero de ciclos antes da execuo do lao. Em alguns casos, portanto, somente
possvel trabalhar com estes dois tipos de laos. Se, entretanto, o nmero de ciclos de lao estiver
definido, um lao FOR prefervel, j que este no permite laos infinitos.
A instruo CONTINUE pode ser usada em um lao WHILE.
Lao REPEAT
O lao REPEAT diferente do WHILE, pois a condio de quebra verificada somente aps o lao
ter sido executado. Isto significa que a execuo ocorrer pelo menos uma vez, independentemente
desta condio.
Sintaxe:
REPEAT
<Instrues>
UNTIL <Expresso booleana>
END_REPEAT;
Instruo EXIT
Se a instruo EXIT for utilizada em FOR, WHILE ou lao REPEAT, o lao mais interno ser
finalizado, independentemente da condio definida.
Instruo JMP
A instruo JMP pode ser usada como um salto incondicional para uma linha de cdigo marcada por
um rtulo de salto.
Sintaxe:
<rtulo>:
JMP <rtulo>;
Enquanto a varivel i, inicializada com zero, for menor que 10, a instruo de salto condicional do
exemplo acima provocar repetidos saltos para a linha do programa identificada com LABEL1 e,
portanto, causar um processamento repetido das instrues compreendidas entre o rtulo e a
instruo JMP. Uma vez que estas instrues incluem tambm o incremento da varivel i, pode-se
assegurar que a condio de salto resultar FALSE na nona verificao e que, na sequncia, o fluxo
do programa continuar normalmente.
Esta funcionalidade pode ser alcanada usando laos WHILE ou REPEAT no exemplo. Geralmente,
as instrues de salto podem e devem ser evitadas, pois reduzem a legibilidade do cdigo.
159
Iniciar o comentrio com (* e fech-lo com *). Isto permite comentrios que abranjam uma
ou mais linhas. Exemplo:
(* Isto um comentrio*)
Comentrios de linha nica so uma extenso da norma IEC 61131-3: // denota o incio de um
comentrio que termina no final da linha. Exemplo:
// Este um comentrio.
Neste exemplo, o comentrio que inicia no primeiro parnteses no fechado pelo parnteses
seguinte, apenas pelo ltimo.
Editor ST
O editor ST usado para criar objetos de programao na linguagem IEC Texto Estruturado (ST) e
Texto Estruturado Estendido. Esta ltima inclui algumas extenses norma IEC 61131-3.
O editor ST um editor textual e a sua configurao no dilogo Opes pode ser usada para
configurar o comportamento e aparncia. Ali, se definem as configuraes personalizadas para realce
de cor, nmeros de linha, guias, recuos e outras.
possvel realizar uma seleo de bloco pressionando-se <ALT> ao selecionar a rea de texto
desejada (via mouse).
O editor estar disponvel na parte inferior da janela, que tambm inclui o Editor de Declarao na
parte superior.
Nos casos de erros sintticos durante a edio, mensagens correspondentes sero exibidas na janela
de Mensagem(s) de Pr-Compilao. Uma atualizao desta janela ocorrer a cada vez que o foco da
janela do editor for reajustado (por exemplo posicionando o cursor em outra janela e, em seguida,
retornando janela do editor).
Editor ST no Modo Online
No modo online, o Editor de Texto Estruturado (editor ST) fornece visualizaes para monitorao e
para escrita/foramento das variveis e expresses no controlador. A funcionalidade de depurao
(breakpoints, passo a passo, etc.) est disponvel.
Para informaes sobre como abrir objetos no modo online, consulte o item Interface do Usurio no
Modo Online no Manual de Utilizao MasterTool IEC XE MU299048.
Para informaes sobre como inserir valores preparados para variveis no modo online, consulte o
item Foramento de Variveis.
Observe que a janela do editor de um objeto ST tambm inclui o Editor de Declarao na parte
superior. Para informaes sobre o editor de declarao no modo online, consulte o item Editor de
Declarao no Modo Online no Manual de Utilizao MasterTool IEC XE MU299048.
160
161
Atribuio: no incio da linha. Considere que atribuies, como expresses, no definem outras
posies de breakpoint em uma linha.
No lao FOR, est antes da inicializao do contador, antes do teste do contador e antes de uma
sentena.
{BP} FOR i := 12 TO {BP} x {BP} BY 1 DO
{BP} [sentena 1]
...
{BP} [sentena-2]
END_FOR
REPEAT
162
Exibio do Breakpoint em ST
NOTA: Um breakpoint ser automaticamente definido em todos os mtodos em que puder ser
chamado. Se um mtodo for chamado via um ponteiro em um bloco funcional, os breakpoints sero
configurados no mtodo do bloco funcional e em todos os blocos funcionais derivados que o
subscrevem.
Editor FBD/LD/IL
O editor FBD/LD/IL fornece comandos para trabalhar na linguagens de programao Diagrama de
Blocos Funcionais (FBD), Diagrama Ladder (LD) e Lista de Instrues (IL).
Diagrama de Blocos Funcionais - FBD
O Diagrama de Blocos Funcionais uma linguagem de programao orientada graficamente. Ele
funciona com uma lista de redes, cada qual com uma estrutura grfica de caixas e linhas de conexo
que representam tanto uma expresso lgica quanto aritmtica, uma chamada de um bloco funcional,
um salto ou uma instruo de retorno.
163
Contexto
Descrio
Modificadores
Significado
Exemplo
LD
LD iVar
ST
ST iErg
S bVar1
R bVar1
AND
N,(
AND bVar2
OR
N,(
OR xVar
XOR
N,(
XOR
N,(bVar1,bVar2)
NOT
ADD
ADD (iVar1,iVar2)
SUB
SUB iVar2
MUL
MUL iVar2
DIV
DIV 44
GT
GT 23
GE
GE iVar2
EQ
EQ iVar2
NE
NE iVar1
LE
LE 5
LT
LT cVar1
JMP
CN
JMPN next
CAL
CN
CAL prog1
RET
RET
RET
RETC
RET
CN
RETCN
166
Elementos tambm podem ser diretamente arrastados com o mouse a partir da caixa de
ferramentas para a janela do editor ou de uma posio para outra. Para isto, selecione o elemento
com um clique de mouse, mantenha-o pressionado e arraste o mesmo para a respectiva rede na
visualizao do editor (arrastar e soltar). Assim que a rede tiver sido alcanada, todas as possveis
posies de insero sero indicadas por marcadores verdes. Ao posicionar o cursor em um
destes pontos, o marcador mudar para verde e, soltando o boto, o elemento poder ser ali
posicionado.
Os comandos Recortar, Copiar, Colar e Excluir, por padro disponveis no menu Editar, podem
ser usados para organizar elementos. A cpia tambm pode ser feita via arrastar e soltar,
selecione o elemento na rede com um clique de mouse e pressione a tecla <CTRL> do teclado,
mantendo-os pressionados, arraste o elemento para a posio destino. Assim que a posio for
alcanada (marcador de posio verde), um smbolo de mais ser acrescentado ao smbolo do
cursor. Solte o boto do mouse e insira o elemento.
Para saber as posies possveis do cursor, consulte Posies do Cursor em FBD, LD e IL.
Percorrendo a tabela:
As teclas de seta devem ser usadas para saltar para a posio do cursor (anterior e posterior) e
entre as redes.
A tecla <TAB> deve ser usada para saltar para a posio do cursor (anterior e posterior) dentro da
rede.
As teclas <CTRL>+<HOME> rolam para o incio do documento e marcam a primeira rede.
As teclas <CTRL>+END> rolam para o fim do documento e marcam a ltima rede.
A tecla <PAGEUP> rola uma tela para cima e marca o retngulo superior (mais acima).
A tecla <PAGEDOWN> rola uma tela para baixo e marca o retngulo superior (mais acima).
167
Um elemento (rede) pode ser selecionado clicando-se na respectiva posio do cursor ou usandose as teclas de setas ou de tabulao.
A seleo de vrios elementos no-adjacentes e redes pode ser feita mantendo estes elementos
pressionados ao selecionar os elementos desejados, um aps o outro.
No editor LD, a seleo de vrios elementos adjacentes ou redes pode ser feita mantendo-se
simultaneamente pressionadas as teclas <SHIFT> e os dois contatos que determinam o incio e o
fim da seo de rede desejada, essa forma de seleo no se aplica a elementos do tipo bobina.
Para recortar (copiar) e colar uma seo de uma rede, basta manter simultaneamente pressionadas
as teclas <CTRL> e os dois contatos que definem as bordas desta seo. Desta forma, os
elementos entre eles sero automaticamente considerados.
Contm
Descrio
Operador
Operando
Endereo
Comentrio
de smbolo
Comentrio
de operando
169
Exemplo em IL:
170
Operandos Complexos
Para usar um operando complexo, digita-se um parnteses de abertura, usa-se as linhas seguintes para
os componentes do operando especfico e, abaixo destes, em uma linha separada, digita-se o
parnteses de fechamento.
Exemplo em IL para rotacionar uma string em 1 caractere a cada ciclo:
Chamadas de Funo
Digite o nome da funo no campo do operador. O primeiro parmetro de entrada deve ser fornecido
como um operando em uma operao LD anterior. Se houver parmetros adicionais, o prximo deve
ser fornecido na mesma linha que o nome da funo. Os demais tambm podem ser adicionados
nesta linha, separados por vrgulas, ou nas linhas subsequentes.
O valor de retorno da funo ser armazenado no acumulador, mas observe a seguinte restrio em
relao norma IEC: no possvel realizar uma chamada de funo com mltiplos valores de
retorno. Somente um valor pode ser usado para se obter uma operao bem sucedida.
Exemplo: foi chamada a funo GeomAverage, que apresenta trs parmetros de entrada. O primeiro
parmetro fornecido por X7 na operao precedente. O segundo, 25, dado antes do nome da
funo. O terceiro parmetro dado pela varivel TVAR, tanto na mesma linha quanto na
subsequente. O valor de retorno atribudo varivel AVE.
Exemplo para chamada da funo GEOMAVERAGE em ST:
AVE := GEOMAVERAGE(X7, 25, TVAR);
Exemplo para chamada da funo GEOMAVERAGE em IL:
171
Chamada de Mtodo
Deve ser realizada conforme uma chamada de funo. O nome da instncia com o nome do mtodo
anexado deve ser digitado na primeira coluna (operador).
Exemplo de chamada do mtodo Home em IL:
Salto
Um salto programado com JMP na primeira coluna (operador) e com o nome do rtulo na segunda
(operando). O rtulo deve ser definido na rede destino, no campo rtulo. Observe que a lista de
declarao anterior ao salto incondicional deve ser encerrada com um dos seguintes comandos: ST,
STN, S, R, CAL, RET ou outra JMP. O mesmo no ocorre com o salto condicional: este
programado por JMPC na primeira coluna (operador). A execuo do salto depende do valor
172
Em cada entrada:
173
A posio do cursor mais a direita na rede ou em qualquer outro lugar desta alm das outras
posies possveis. Isto selecionar toda a rede:
Em cada contato:
Em cada bobina:
174
175
177
178
180
181
183
184
A ao selecionada ser transmitida aps a execuo do comando Forar Valores, por padro, no
menu Comunicao, ou atravs da tecla <F7>.
Breakpoint e Posies de Parada
As possveis posies que podem ser definidas para um breakpoint (posies de parada) para fins de
depurao, basicamente, so aquelas onde o valor das variveis podem mudar (declaraes), aquelas
onde o fluxo do programa se ramifica, ou aquelas onde outra POU chamada. As posies so:
Em toda a rede que faz com que o breakpoint seja aplicado primeira posio possvel dentro da
rede.
Em uma caixa com declarao. No possvel, portanto, em caixas como ADD e DIV. Veja a
nota abaixo.
Em uma atribuio.
Ao final de uma POU, no ponto de retorno ao elemento de chamada. No modo online,
automaticamente ser exibida para este fim uma rede vazia, a qual, em vez de um nmero de
rede, identificada por RET.
186
NOTA: Um breakpoint ser configurado automaticamente em todos os mtodos em que puder ser
chamado. Se um mtodo for chamado via ponteiro em um bloco funcional, os breakpoints sero
configurados no mtodo do bloco funcional e em todos os blocos funcionais derivados que estejam
subscrevendo-o.
187
6. Bibliotecas
6. Bibliotecas
A biblioteca standard.library j vem instalada por padro. Ela contm todas as funes e blocos
funcionais necessrios em conformidade com a norma IEC61131-3, assim como com as POUs para o
programador IEC.
Algumas bibliotecas adicionais so necessrias, dependendo das vrias funcionalidades do
programador. Estas bibliotecas so usadas implicitamente e, por padro, so includas
automaticamente no projeto. O usurio no precisa trabalhar com elas explicitamente.
No Manual de Utilizao MasterTool IEC XE MU299048, veja tambm Instalar Bibliotecas e
Editor Library Manager.
A Biblioteca Standard.library
A biblioteca standard.library , por padro, fornecida com o programador MasterTool IEC XE.
Esta biblioteca contm todas as funes e blocos funcionais solicitados que correspondem norma
IEC 61131-3, tais como POUs padro para um programador IEC. A diferena entre uma funo
padro e um operador que este implicitamente reconhecido pelo programador enquanto aqueles
devem ser vinculados ao projeto (standard.library).
Funes de String
LEN
Fornecido pela standard.library.
Funo do tipo STRING, retorna o comprimento de uma string.
Entrada: STR: STRING, string a ser analisada.
Valor de retorno: INT, comprimento da string (nmero de caracteres).
Exemplo em IL:
O resultado 4.
Exemplo em FBD:
Exemplo em ST:
VarINT1 := LEN ('SUSI');
LEFT
Fornecido pela standard.library.
Funo do tipo STRING. Retorna a string inicial da esquerda para uma determinada string.
Entradas:
STR: STRING; string a ser analisada.
SIZE: INT; comprimento da string inicial da esquerda (nmero de caracteres).
Valor de retorno: STRING; string inicial.
188
6. Bibliotecas
LEFT (STR, SIZE): retorna a quantidade de caracteres definida por SIZE, a partir da esquerda, na
string STR.
Exemplo em IL:
O resultado SUS.
Exemplo em FBD:
Exemplo em ST:
VarSTRING1 := LEFT ('SUSI',3);
RIGHT
Fornecido pela standard.library.
Funo do tipo STRING. Retorna a string inicial da direita, para uma determinada string.
Entradas:
STR: STRING; string a ser analisada.
SIZE: INT; nmero de caracteres a ser contado a partir da direita na string STR.
Valor de retorno:
STRING; string inicial direita.
RIGHT (STR, SIZE): retorna a quantidade de caracteres definida por SIZE, a partir da direita, na
string STR.
Exemplo em IL:
O resultado USI.
Exemplo em FBD:
Exemplo em ST:
VarSTRING1 := RIGHT ('SUSI',3);
MID
Fornecido pela standard.library.
Funo do tipo STRING, retorna uma parte da string.
Entradas:
STR: STRING; string a ser analisada.
LEN: INT; comprimento da string parcial (nmero de caracteres).
189
6. Bibliotecas
POS: INT; posio de incio para a string parcial (nmero de caracteres contados a partir da esquerda
de STR).
Valor de retorno: STRING, string parcial.
MID (STR, LEN, POS) significa: recuperar os caracteres (definidos por LEN) da string STR
iniciando com o caractere na posio POS.
Exemplo em IL:
O resultado US.
Exemplo em FBD:
Exemplo em ST:
VarSTRING1 := MID ('SUSI',2,2);
CONCAT
Fornecido pela standard.library.
Funo do tipo STRING que executa uma concatenao (combinao) de duas strings.
Entradas: STR1, STR2: STRING; strings a serem concatenadas.
Valor de retorno: STRING, string concatenada.
CONCAT(STR1,STR2) significa combinar STR1 e STR2 em uma string nica STR1STR2.
Exemplo em IL:
Exemplo em ST:
VarSTRING1 := CONCAT ('SUSI','WILLI');
INSERT
Fornecido pela standard.library.
Esta funo, do tipo STRING, insere uma string em outra, em um ponto determinado.
Entradas:
STR1: STRING; string na qual STR2 deve ser inserida.
190
6. Bibliotecas
STR2: STRING; string a ser inserida em STR1.
POS: INT; posio em STR1 onde STR2 deve ser inserida, nmero de caracteres, contados a partir
da esquerda.
Valor de retorno: STRING, string resultante.
INSERT (STR1, STR2, POS) significa: inserir STR2 em STR1 aps a posio POS.
Exemplo em IL:
O resultado 'SUXYSI'.
Exemplo em FBD:
Exemplo em ST:
VarSTRING1 := INSERT ('SUSI','XY',2);
DELETE
Fornecido pela standard.library.
Esta funo, do tipo STRING, exclui uma parte de uma string maior em uma determinada posio.
Entradas:
STR: STRING; string da qual uma parte deve ser excluda.
LEN: INT; comprimento da string parcial a ser excluda (nmero de caracteres).
POS: INT; posio na STR onde deve iniciar a excluso dos caracteres (LEN), contando a partir da
esquerda.
Valor de retorno: STRING, a string remanescente aps a excluso.
DELETE (STR, L, P) significa: excluir L caracteres da STR, comeando com o caractere na posio
P.
Exemplo em IL:
Exemplo em ST:
Var1 := DELETE ('SUXYSI',2,3);
191
6. Bibliotecas
REPLACE
Fornecido pela standard.library.
Funo do tipo STRING, que substitui uma string parcial de uma string maior por outra string.
Entradas:
STR1: STRING, string a partir da qual uma parte deve ser substituda pela string STR2.
STR2: STRING, string que deve substituir uma parte de STR1.
L: INT, comprimento da string parcial em STR1 que deve ser substituda.
P: INT, posio onde STR2 deve ser inserida no local dos L caracteres existentes.
Valor de retorno: STRING, string resultante.
REPLACE (STR1, STR2, L, P) significa: substituir L caracteres de STR1 por STR2, comeando com
o caractere na posio P.
Exemplo em IL:
O resultado SKYSI.
Exemplo em FBD:
Exemplo em ST:
VarSTRING1 := REPLACE ('SUXYSI','K',2,2);
FIND
Fornecido pela standard.library.
Esta funo, do tipo INT, procura a posio de uma parte da string.
Entradas:
STR1: STRING, string na qual a posio STR2 ser procurada.
STR2: STRING, string cuja posio deve ser procurada em STR1.
Valor de retorno: INT, posio inicial de STR2 na STR1. Ser 0 se a posio de STR2 no for
encontrada em STR1.
FIND (STR1, STR2) significa: encontrar a posio do primeiro caractere onde STR2 aparece na
STR1 pela primeira vez. Se STR2 no for encontrada em STR1, ento a funo retornar 0.
192
6. Bibliotecas
Exemplo em IL:
O resultado ser 4.
Exemplo em FBD:
Exemplo em ST:
arINT1 := FIND ('abcdef','de');
Exemplo em IL:
Exemplo em FBD:
Exemplo em ST:
SRInst(SET1:= VarBOOL1 , RESET:=VarBOOL2 );
VarBOOL3 := SRInst.Q1 ;
RS
Fornecido pela standard.library.
193
6. Bibliotecas
Bloco funcional biestvel.
Entradas:
SET: BOOL;
RESET1: BOOL;
Sadas:
Q1 : BOOL.;
Q1 = RS (SET, RESET1):
Q1 = NOT RESET1 AND (Q1 OR SET)
Exemplo de declarao:
RSInst : RS;
Exemplo em IL:
Exemplo em FBD:
Exemplo em ST:
RSInst(SET:= VarBOOL1 , RESET1:=VarBOOL2 );
VarBOOL3 := RSInst.Q1;
Disparador
R_TRIG
Fornecido pela standard.library.
Bloco funcional que detecta uma borda de subida.
Entradas:
CLK: BOOL; sinal booleano de entrada a ser verificado para a borda de subida.
Sadas:
Q: BOOL; torna-se TRUE se ocorrer uma borda de subida em CLK.
A sada Q e uma varivel booleana de ajuda interna M permanecero FALSE enquanto a varivel de
entrada CLK retornar FALSE. Assim que CLK retornar TRUE, Q primeiro retornar TRUE e M ser
configurada TRUE. Isto significa que cada vez que a funo for chamada, Q primeiramente ser
configurada para TRUE e ento retornar FALSE, aps uma borda de subida em CLK.
Exemplo de declarao:
RTRIGInst : R_TRIG;
194
6. Bibliotecas
Exemplo em IL:
Exemplo em FBD:
Exemplo em ST:
RTRIGInst(CLK:= VarBOOL1);
VarBOOL2 := RTRIGInst.Q;
F_TRIG
Fornecido pela standard.library.
Este bloco funcional detecta uma borda de descida.
Entradas: CLK: BOOL; sinal booleano de entrada a ser verificado (borda de descida).
Sadas: Q: BOOL; torna-se TRUE se ocorrer uma borda de descida em CLK.
A sada Q e uma varivel booleana de ajuda interna M permanecero FALSE enquanto a varivel de
entrada CLK retornar TRUE. Assim que CLK retornar FALSE, Q primeiro retornar TRUE e M ser
configurada para TRUE. Isto significa que cada vez que a funo for chamada, Q primeiramente ser
configurada para TRUE e ento retornar FALSE, aps uma borda de descida em CLK.
Exemplo de declarao:
FTRIGInst : F_TRIG;
Exemplo em IL:
Exemplo em FBD:
Exemplo em ST:
FTRIGInst(CLK:= VarBOOL1);
VarBOOL2 := FTRIGInst.Q;
Contador
CTU
Fornecido pela standard.library.
Bloco funcional que atua como um incrementador.
195
6. Bibliotecas
Entradas:
CU: BOOL; uma borda de subida nesta entrada inicia o incremento de CV.
RESET: BOOL; se TRUE, CV ir para 0.
PV: WORD; limite superior para o incremento de CV.
NOTA: O tipo de dado WORD, usado para PV no MasterTool IEC XE, no corresponde norma
IEC, a qual determina o tipo de dado INT para este.
Sadas:
Q: BOOL; torna-se TRUE assim que CV alcanar o limite determinado por PV.
CV: WORD; incrementado at que alcance PV.
Exemplo de Declarao:
CTUInst : CTU;
Exemplo em IL:
Exemplo em FBD:
Exemplo em ST:
CTUInst(CU := VarBOOL1, RESET := VarBOOL2 , PV := VarWORD1);
VarBOOL3 := CTUInst.Q;
VarWORD2 := CTUInst.CV;
CTD
Fornecido pela standard.library.
Bloco funcional que atua como um decrementador.
Entradas:
CD: BOOL; uma borda de subida nesta entrada inicia a decrementao de CV.
LOAD: BOOL; se TRUE, CV igualar o limite superior determinado por PV.
PV: WORD; limite superior, ou seja, valor inicial para decrementao de CV.
NOTA: O tipo de dado WORD, usado para PV no MasterTool IEC XE, no corresponde norma
IEC, a qual determina o tipo de dado INT para este.
Sadas:
Q: BOOL; torna-se TRUE assim que CV for 0.
CV: WORD; decrementado em 1, iniciando com PV at que 0 seja alcanado.
196
6. Bibliotecas
Exemplo de declarao:
CTDInst : CTD;
Exemplo em IL:
Exemplo em FBD:
Exemplo em ST:
CTDInst(CD := VarBOOL1, LOAD := VarBOOL2 , PV := VarWORD1);
VarBOOL3 := CTDInst.Q;
VarWORD2 := CTDInst.CV;
CTUD
Fornecido pela standard.library.
Bloco funcional que atua como incrementador e decrementador.
Entradas:
CU: BOOL; se ocorrer uma borda de subida em CU, a incrementao de CV ser iniciada.
CD: BOOL; se ocorrer uma borda de subida em CD, a decrementao de CV ser iniciada.
RESET: BOOL; se TRUE, CV ser zerado.
LOAD: BOOL; se TRUE, CV ser configurado para o valor de PV.
PV: WORD; limite superior para incremento ou decremento de CV.
NOTA: O tipo de dado WORD, usado para PV no MasterTool IEC XE, no corresponde norma
IEC, a qual determina o tipo de dado INT para este.
Sadas:
QU: BOOL; retorna TRUE quando CV for incrementado em um valor >= PV.
QD: BOOL; retorna TRUE quando CV for decrementado at 0.
CV: WORD; incrementado ou decrementado.
Exemplo de declarao:
CTUDInst : CUTD;
197
6. Bibliotecas
Exemplo em IL:
Exemplo em FBD:
Exemplo em ST:
CTUDInst(CU := VarBOOL1, CD := VarBOOL2, RESET := VarBOOL3, LOAD :=
VarBOOL4, PV := VarWORD1);
VarBOOL5 := CTUDInst.QU;
VarBOOL6 := CTUDInst.QD;
VarINT1 := CTUDInst.CV;
Temporizador
TP
Fornecido pela standard.library.
Bloco funcional temporizador, funcionando como disparador. O tempo contado at que um
determinado limite seja atingido. Durante a contagem, a varivel de pulso TRUE, caso contrrio,
FALSE.
Entradas:
IN: BOOL; com uma borda de subida, a contagem do tempo em ET ser iniciada.
PT: TIME; limite superior do tempo.
Sadas:
Q: BOOL; TRUE enquanto o tempo estiver sendo contado em ET (pulso).
ET: TIME; estado atual do tempo.
TP(IN, PT, Q, ET):
Se IN for FALSE, Q ser FALSE e ET ser 0.
Assim que IN tornar-se TRUE, o tempo comear a ser contado em milissegundos em ET at que seu
valor seja igual a PT (e a partir de ento, permanecer constante).
Q ser TRUE quando IN for TRUE e ET for igual ou menor que PT. Caso contrrio, ser FALSE.
Q retorna um sinal para o perodo de tempo dado em PT.
198
6. Bibliotecas
Exemplo em IL:
Exemplo em FBD:
Exemplo em ST:
TPInst(IN := VarBOOL1, PT:= T#5s);
VarBOOL2 :=TPInst.Q;
TON
Fornecido pela standard.library.
Bloco funcional de tempo que implementa um retardo na energizao. Quando a entrada tornar-se
TRUE, transcorrer um tempo at que a sada torne-se TRUE.
Entradas:
IN: BOOL; borda de subida inicia a contagem ET.
PT: TIME; limite superior para contagem ET (tempo de atraso).
Sadas:
Q: BOOL; gera uma borda de subida assim que ET tiver atingido o limite superior PV (tempo de
retardo esgotado).
ET: estado atual do tempo de retardo.
TON (IN, PT, Q, ET):
Se IN for FALSE, Q ser FALSE e ET ser 0.
Assim que IN tornar-se TRUE, o tempo comear a ser contado em milissegundos em ET at que seu
valor seja igual a PT (e, a partir de ento, permanecer constante).
Q ser TRUE quando IN for TRUE e ET for igual a PT. Caso contrrio, ser FALSE.
199
6. Bibliotecas
Assim, haver uma borda de subida em Q quando o tempo indicado em PT (em milissegundos) tiver
se esgotado.
Exemplo em IL:
Exemplo em FBD:
Exemplo em ST:
TONInst(IN := VarBOOL1, PT:= T#5s);
TOF
Fornecido pela standard.library.
Bloco funcional de tempo que implementa um retardo na desenergizao. Quando a entrada for
alterada de TRUE para FALSE (borda de descida), transcorrer certo tempo at que a sada v para
FALSE.
Entradas:
IN: BOOL; borda de descida inicia a contagem ET.
PT: TIME; limite superior para contagem ET (tempo de atraso).
Sadas:
Q: BOOL; gera uma borda de descida assim que ET tiver atingido o limite superior PV (tempo de
retardo esgotado).
ET: estado atual do tempo de retardo.
TOF (IN, PT, Q, ET):
Se IN for TRUE, as duas sadas sero TRUE e 0, respectivamente.
200
6. Bibliotecas
Assim que IN tornar-se FALSE, o tempo comear a ser contado em ET, em milissegundos, at que
seu valor seja igual a PT (e, a partir da, permanecer constante).
Q ser FALSE quando IN for FALSE e ET for igual a PT. Caso contrrio, ser TRUE.
Assim, haver uma borda de descida em Q quando o tempo indicado em PT (em milissegundos) tiver
se esgotado.
Exemplo em IL:
Exemplo em FBD:
Exemplo em ST:
TOFInst(IN := VarBOOL1, PT:= T#5s);
VarBOOL2 :=TOFInst.Q;
RTC
Fornecido pela standard.library.
O bloco funcional de tempo RunTime Clock retorna a data e a hora atual, iniciando em um
determinado horrio.
Entradas:
EN: BOOL; a contagem do tempo em CDT inicia em uma borda de subida.
PDT: DATE_AND_TIME; data e hora a partir dos quais a contagem deve iniciar.
Sadas:
Q: BOOL; TRUE enquanto CDT estiver incrementando.
CDT: DATE_AND_TIME; estado atual da data e hora do contador.
VarBOOL2:= RTC (EN, PDT, Q, CDT):
201
6. Bibliotecas
Quando EN FALSE, as variveis de sada Q e CDT so, respectivamente, FALSE e DT#1970-0101-00:00:00.
Assim que EN tornar-se TRUE (borda de subida) e assim permanecer, o tempo dado por PDT ser
definido (contado em segundos) e retornado em CDT. Assim que EN for para FALSE, CDT ir para
o valor inicial DT#1970-01-01-00:00:00.
Exemplo de declarao:
RTCInst : RTC;
Exemplo em IL:
Exemplo em FBD:
Exemplo em ST:
RTC(EN:=VarBOOL1, PDT:=DT#2006-03-30-14:00:00, Q=>VarBOOL2,
CDT=>VarTimeCur);
A Biblioteca UTIL.library
Esta biblioteca contm uma coleo adicional de vrios blocos que podem ser usados para converso
BCD, funes bit/byte, funes matemticas auxiliares como controlador, geradores de sinal e
manipuladores de funo e tambm para processamento de valores anlogos.
Converso BCD
Fornecido pela util.library.
Um byte no formato BCD contm inteiros entre 0 e 99. Quatro bits so usados para cada casa
decimal. A dcima casa decimal armazenada nos bits 4-7. Assim, o formato BCD similar
representao hexadecimal, com apenas uma diferena: em um byte BCD, somente podem ser
armazenados valores entre 0 e 99 e, no byte hexadecimal, de 0 a FF.
Exemplo:
Suponha que o inteiro 51 deve ser convertido para o formato BCD. Cinco em binrio 0101 e
um 0001, o que torna o byte BCD 01010001 (e corresponde ao valor $51=81).
BCD_TO _INT
Fornecido pela util.library.
Esta funo converte um byte em formato BCD em um valor INT.
O valor de entrada da funo do tipo BYTE e a sada do tipo INT.
Nas converses cujo formato no BCD, a sada -1.
Exemplos em ST:
i:=BCD_TO_INT(73); (* Resultado 49 *)
k:=BCD_TO_INT(151); (* Resultado 97 *)
202
6. Bibliotecas
l:=BCD_TO_INT(15); (* Sada -1, pois no est no formato BCD *)
INT_TO_BCD
Fornecido pela util.library.
Esta funo converte um valor INTEIRO em um byte no formato BCD.
O valor de entrada da funo do tipo INT e a sada do tipo BYTE.
O nmero 255 ser gerado quando um valor INTEIRO, que no pode ser convertido para o formato
BCD, for considerado.
Exemplos em ST:
i:=INT_TO_BCD(49); (* Resultado 73 *)
k:= INT_TO_BCD(97); (* Resultado 151 *)
l:= INT_TO_BCD(100); (* Erro! Sada: 255 *)
Funes BIT/BYTE
Extract
Fornecido pela util.library.
As entradas desta funo so DWORD X e BYTE N. A sada um valor BOOL com o contedo do
ensimo bit da entrada X, onde a funo inicia a contagem a partir do bit zero.
Exemplos em ST:
FLAG:=EXTRACT(X:=81, N:=4);
1010001, ento o quarto bit
FLAG:=EXTRACT(X:=33, N:=0);
100001, ento o bit '0' 1
Pack
Fornecido pela util.library.
Esta funo retorna oito bits de entrada do tipo BOOL (B0, B1, ..., B7) como um BYTE.
O bloco funcional UNPACK est relacionado a esta funo. Veja mais detalhes e exemplos em
Unpack.
Putbit
Fornecido pela util.library.
As entradas desta funo so DWORD X, BYTE N e um valor booleano B.
PUTBIT configura o ensimo bit da entrada X no valor B, onde a funo inicia a contagem a partir
do bit zero.
Exemplo em ST:
A:=38; (* Binrio 100110 *)
B:=PUTBIT(A,4,TRUE); (* Resultado : 54 = 2#110110 *)
C:=PUTBIT(A,1,FALSE); (* Resultado : 36 = 2#100100 *)
Unpack
Fornecido pela util.library.
UNPACK converte a entrada B do tipo BYTE em oito variveis de sada (B0,...,B7 do tipo BOOL).
o oposto de PACK.
203
6. Bibliotecas
204
6. Bibliotecas
205
6. Bibliotecas
Variveis de Entrada
Varivel
Tipo de dado
Descrio
IN
REAL
Valor de entrada
IN_MIN
REAL
IN_MAX
REAL
OUT_MIN
REAL
OUT_MAX
REAL
Tipo de dado
Descrio
OUT
REAL
Valor da sada
ERROR
BOOL
6. Bibliotecas
Exemplo:
Um sensor de temperatura fornece valores em Volts numa escala de 0 a 10 V. Quando este sensor
estiver conectado a uma entrada analgica de um mdulo NX6000 o valor equivalente ao mnimo da
escala 0 e o valor mximo da escala 30000. Estes valores podem ser editados na aba Parmetros
de Entrada do mdulo NX6000, sendo que a faixa de 0 a 30000 corresponde aos valores padro.
Caso se queira converter os valores desta faixa para valores de temperatura em graus centgrados
possvel fazer isso apenas alterando a constante de incio e fim de faixa no prprio mdulo. No caso
em que o mnimo corresponda a 0 C e o mximo a 100 C, as constantes utilizadas seriam 0 para o
mnimo e 100 para o mximo. Neste caso a varivel convertida seria do tipo INT sem apresentar
preciso menor que 1 C.
Para fazer esta converso sem perda de preciso possvel converter o valor lido do sensor de
temperatura no formato INT e converte-lo para um valor do tipo REAL sem perda de preciso. Neste
caso, primeiro convertido o valor de INT para REAL usando a funo INT_TO_REAL. O resultado
desta converso deve ser passado como entrada para LIN_TRAFO (entrada IN). Os limites de
entrada so definidos pelas entradas do bloco IN_MIN=0 e IN_MAX=30000. O intervalo dos valores
da sada (C) definido pelos limites OUT_MIN=0 e OUT_MAX=100. O valor convertido da sada
ser apresentado em graus centigrados (sada OUT) sem perda de preciso da leitura analgica.
STATISTICS_REAL
Fornecido pela util.library.
207
6. Bibliotecas
Este bloco funcional corresponde a STATISTICS_INT, porm a entrada IN do tipo REAL, como as
sadas MN, MX, AVG.
VARIANCE
Fornecida pela util.library.
VARIANCE calcula a varincia dos valores inseridos.
A entrada IN do tipo REAL; RESET do tipo BOOL e a sada OUT tambm do tipo REAL.
O reset de VARIANCE ocorre quando RESET=TRUE.
O desvio padro pode ser facilmente calculado como a raiz quadrada de VARIANCE.
Controllers
PD
A biblioteca util.library fornece o bloco funcional controlador PD.
Exemplo do bloco PD em FBD:
Tipo de dado
Descrio
ACTUAL
REAL
SET_POINT
REAL
KP
REAL
TV
REAL
Y_MANUAL
REAL
Y_OFFSET
REAL
Y_MIN, Y_MAX
REAL
MANUAL
BOOL
RESET
BOOL
208
6. Bibliotecas
Sadas do Bloco Funcional
Varivel
Tipo de dado
Descrio
REAL
LIMITS_ACTIVE
BOOL
Diferentemente do controlador PD, este bloco funcional contm outra entrada, TN, do tipo REAL,
para ajustar o tempo em segundos (por exemplo, 0,5 para 500 milissegundos).
Entradas do Bloco Funcional
Varivel
Tipo de dado
Descrio
ACTUAL
REAL
SET_POINT
REAL
KP
REAL
209
6. Bibliotecas
TN
REAL
TV
REAL
Y_MANUAL
REAL
Y_OFFSET
REAL
Y_MIN, Y_MAX
REAL
MANUAL
BOOL
RESET
BOOL
Tipo de dado
Descrio
REAL
LIMITS_ACTIVE
BOOL
OVERFLOW
BOOL
210
6. Bibliotecas
NOTA: A Altus recomenda a utilizao do bloco funcional PID disponvel na biblioteca NextoPID e
descrita neste manual. O bloco funcional PID da biblioteca NextoPID possui parmetros avanados
para permitem um melhor ajuste do controle. As duas bibliotecas no podem ser utilizadas ao
mesmo tempo.
PID_FIXCYCLE
Fornecido pela util.library.
Este bloco funcional corresponde ao controlador PID com a exceo de que o tempo de ciclo no
medido automaticamente por uma funo interna, mas definido por ciclo de entrada (em segundos).
Exemplo de PID_FIXCYCLE em FBD:
Geradores de Sinal
BLINK
Fornecido pela util.library.
O bloco funcional BLINK gera um sinal pulsante. A entrada consiste de ENABLE (do tipo BOOL),
TIMELOW e TIMEHIGH (ambas do tipo TIME). A sada OUT do tipo BOOL.
Se ENABLE for configurado para TRUE, BLINK passa a definir a sada para TRUE, pelo perodo de
tempo TIMEHIGH e, posteriormente, a defini-la para FALSE, pelo perodo de tempo TIMELOW.
Quando ENABLE for para FALSE, a sada OUT no ser alterada, ou seja, no sero mais gerados
pulsos. Caso o usurio deseje que OUT seja FALSE, ele deve usar OUT AND ENABLE na sada,
quando ENABLE for para FALSE (acrescentar uma caixa AND com o parmetro ENABLE).
Exemplo de BLINK em CFC:
6. Bibliotecas
FREQ_MEASURE
Fornecido pela util.library.
Este bloco funcional mede a frequncia mdia (Hz) de um sinal de entrada digital. possvel
especificar de quantos perodos deve ser realizada a mdia. Um perodo o tempo entre duas bordas
de subida do sinal de entrada.
Exemplo de FREQ_MEASURE em FBD:
Variveis de Entrada
Varivel
Tipo de dado
Descrio
IN
BOOL
Sinal de entrada
PERIODS
INT
RESET
BOOL
Tipo de dado
Descrio
OUT
REAL
Frequncia resultante em Hz
VALID
BOOL
212
6. Bibliotecas
213
6. Bibliotecas
214
6. Bibliotecas
215
6. Bibliotecas
RAMP_INT
Fornecido pela util.library.
RAMP_INT serve para limitar a ascendncia ou descendncia da funo de entrada.
A entrada consiste de trs valores INT: IN (a entrada de funo), ASCEND e DESCEND (o mximo
de aumento ou diminuio por um intervalo de tempo determinado, definido por TIMEBASE do tipo
TIME). Configurar RESET para TRUE faz com que RAMP_INT seja inicializada.
A sada OUT do tipo INT contm o valor da funo limitado ascendente e descendente.
Quando TIMEBASE est configurado para t#0s, ASCEND e DESCEND no esto relacionados ao
intervalo de tempo e permanecem os mesmos.
Exemplo de RAMP_INT em CFC:
RAMP_REAL
Fornecido pela util.library.
As funes RAMP_REAL, so iguais RAMP_INT, com a simples diferena de que as entradas IN,
ASCEND, DESCEND e a sada OUT so do tipo REAL.
Processamento de Valores Analgicos
HYSTERESIS
Fornecido pela util.library.
Exemplo de HYSTERESIS em FBD:
216
6. Bibliotecas
A entrada deste bloco funcional consiste de trs valores INT (IN, HIGH e LOW). A sada OUT do
tipo BOOL.
Se IN estiver abaixo do valor limite LOW, OUT torna-se TRUE. Se IN exceder o limite superior
HIGH, a sada ser FALSE.
Se IN cair abaixo do limite LOW, OUT se tornar TRUE. A sada continuar sendo FALSE at que
IN mais uma vez caia abaixo de LOW e, assim, OUT torne-se TRUE novamente.
217
6. Bibliotecas
A Biblioteca NextoPID.library
PID
O bloco funcional PID utilizado para controlar um processo real. O bloco est presente na
biblioteca NextoPID, a qual deve ser adicionada ao projeto.
A partir de uma varivel de processo (PV) e do setpoint (SP) o bloco funcional calcula a varivel
manipulada (MV) para o processo controlado. Este valor calculado periodicamente, levando em
considerao os fatores proporcional, integral e derivativo programados. Trata-se de um algoritmo de
controle PID tipo ISA onde o ganho proporcional o ganho do controlador, aplicado tanto ao erro
como s parcelas integral e derivativa do controlador.
O bloco funcional pode ser representado pelo diagrama bsico da Figura 6-16.
218
6. Bibliotecas
A Figura 6-18 apresenta um diagrama de blocos de um exemplo de PID FB controlando um processo
real. Tambm so apresentadas funes que auxiliam as quais o usurio deve colocar no sua
aplicao (Converso MV para AO e Converso AI para PV).
AO := REAL_TO_INT (MV);
AO := REAL_TO_INT (MV * 30000 / 100);
NOTA: Existem alguns parmetros do PID (descritos a seguir) que impem valores mximo e
mnimo para MV. Eles so chamados de MaxMV e MinMV respectivamente. Substituindo MV nas
expresses dos exemplos anteriores por MaxMV e MinMV deve gerar valores na faixa de operao
de AO (e.g.: 0 .. 30000). necessrio verificar isso para evitar problemas de overflow.
219
6. Bibliotecas
Exemplo do bloco PID em FBD:
Parmetros de entrada
Tipo
Descrio
SP
REAL
Setpoint.
A unidade e o intervalo devem ser os mesmos que o PV, pois
as duas variveis podem ser comparadas.
PV
REAL
Varivel de processo.
A unidade e o intervalo devem ser os mesmos que o SP, pois
as duas variveis podem ser comparadas.
Gp
REAL
Td
REAL
Ti
REAL
BIAS
REAL
ManualMV
REAL
MaxVarMV
REAL
MaxMV
REAL
MinMV
REAL
DeadBand
REAL
Tempo morto.
Mnimo valor de erro que ir causar a correo de MV em modo
automtico, ou seja, pequenos erros (menores que DeadBand)
no causaro alteraes na varivel manipulada.
MaxPV
REAL
REAL
MinPV
220
6. Bibliotecas
SampleTime
REAL
Tempo de amostragem.
Define o perodo de chamada do bloco PID, em segundos,
podendo variar de 0,001 s 1000 s. Esse parmetro
desconsiderado se o MeasureST for verdadeiro.
EnableP
BOOL
EnableD
BOOL
EnableI
BOOL
DerivPV
BOOL
Manual
BOOL
Direct
BOOL
MeasureST
BOOL
Restart
BOOL
IntegralAction
REAL
Tipo
Descrio
MV
REAL
Varivel manipulada.
EffST
REAL
Eff3ST
REAL
MaxEffST
REAL
MinEffST
REAL
UINT
ErrorCode
221
6. Bibliotecas
PID_REAL
O bloco funcional PID_REAL implementa um algoritmo semelhante ao bloco PID desta biblioteca.
Contudo este bloco testa os valores de entrada PV e SP e o valor MV para verificar se esto dentro da
faixa especificada. Caso estejam fora da faixa, o clculo do algoritmo continua sendo executado mas
gerado um cdigo de erro na sada ErrorCode. Alm disso se a varivel MV estiver saturada, uma
das sadas de Overflow ou Underflow sero ligadas.
Esta funo tambm no possui a varivel VAR_IN_OUT IntegralAction.
Exemplo do bloco PID_REAL em FBD:
Parmetros de entrada
Tipo
Descrio
SP
REAL
Setpoint.
A unidade e o intervalo devem ser os mesmos que o PV, pois
as duas variveis podem ser comparadas.
PV
REAL
Varivel de processo.
A unidade e o intervalo devem ser os mesmos que o SP, pois
as duas variveis podem ser comparadas.
Gp
REAL
Ti
REAL
Td
REAL
BIAS
REAL
ManualMV
REAL
MaxVarMV
REAL
MaxMV
REAL
MinMV
REAL
DeadBand
REAL
Tempo morto.
Mnimo valor de erro que ir causar a correo de MV em modo
automtico, ou seja, pequenos erros (menores que DeadBand)
no causaro alteraes na varivel manipulada.
222
6. Bibliotecas
REAL
REAL
SampleTime
REAL
Tempo de amostragem.
Define o perodo de chamada do bloco PID, em segundos,
podendo variar de 0,001 s 1000 s. Esse parmetro
desconsiderado se o MeasureST for verdadeiro.
EnableP
BOOL
EnableD
BOOL
EnableI
BOOL
DerivPV
BOOL
Manual
BOOL
Direct
BOOL
MeasureST
BOOL
Restart
BOOL
MaxPV
MinPV
Tipo
Descrio
MV
REAL
Varivel manipulada.
Overflow
BOOL
Undeflow
BOOL
EffST
REAL
Eff3ST
REAL
MaxEffST
REAL
MinEffST
REAL
UINT
ErrorCode
223
6. Bibliotecas
8: MaxVarMV < 0
9: DeadBand < 0
10: SampleTime < 0,001 s ou SampleTime > 1000 s (com
MeasureST = falso)
11: SP > MaxPV
12: SP < MinPV
Parmetros de entrada
Tipo
Descrio
SP
INT
Setpoint.
A unidade e o intervalo devem ser os mesmos que o PV, pois
as duas variveis podem ser comparadas.
PV
INT
Varivel de processo.
A unidade e o intervalo devem ser os mesmos que o SP, pois
as duas variveis podem ser comparadas.
Gp
INT
Ti
REAL
Td
REAL
BIAS
INT
ManualMV
INT
MaxVarMV
INT
MaxMV
INT
224
6. Bibliotecas
Caso o valor calculado seja maior do que o configurado, o MV
ser igual ao MaxMV.
INT
INT
Tempo morto.
Mnimo valor de erro que ir causar a correo de MV em modo
automtico, ou seja, pequenos erros (menores que DeadBand)
no causaro alteraes na varivel manipulada.
INT
MinPV
INT
SampleTime
REAL
Tempo de amostragem.
Define o perodo de chamada do bloco PID, em segundos,
podendo variar de 0,001 s 1000 s. Esse parmetro
desconsiderado se o MeasureST for verdadeiro.
EnableP
BOOL
EnableD
BOOL
EnableI
BOOL
DerivPV
BOOL
Manual
BOOL
Direct
BOOL
MeasureST
BOOL
Restart
BOOL
MinMV
DeadBand
MaxPV
Tipo
Descrio
MV
INT
Varivel manipulada.
Overflow
BOOL
Undeflow
BOOL
EffST
REAL
Eff3ST
REAL
MaxEffST
REAL
MinEffST
REAL
ErrorCode
UINT
225
6. Bibliotecas
Restart. Abaixo, segue a descrio dos erros:
0: sem erro
1: MaxMV < MinMV
2: MaxPV < MinPV
3: PV > MaxPV
4: PV < MinPV
5: Ti < 0,001 s (com ao integral habilitada)
6: Td < 0 s (com ao derivativa habilitada)
7: Gp 0
8: MaxVarMV < 0
9: DeadBand < 0
10: SampleTime < 0,001 s ou SampleTime > 1000 s (com
MeasureST = falso)
11: SP > MaxPV
12: SP < MinPV
226
6. Bibliotecas
63,212% do valor final. Outro modo traar a primeira derivada da curva da resposta ao degrau, a
constante de tempo aquela onde esta reta cruza o valor final da resposta do sistema.
Uma vez definida a constante de tempo, basta definir o intervalo de amostragem da ordem de um
dcimo deste valor.
importante lembrar que na Srie Nexto a atualizao das entradas e sadas ocorre na mesma ordem
de tempo de um ciclo do CP. Sempre que o tempo de ciclo do CP for maior que o tempo de
amostragem aconselha-se o uso das funes REFRESH_INPUT e REFRESH_OUTPUT.
Feedforward/Bias
Atravs do operando memria utilizado para feedforward/bias possvel injetar alguma varivel do
sistema na sada do controlador e/ou aplicar um deslocamento na mesma.
O objetivo do feedforward medir os principais distrbios do processo e calcular a mudana
necessria na varivel de atuao para compens-los antes que estes causem alteraes na varivel
controlada.
Pode-se citar como exemplo, um sistema onde a varivel a ser controlada a temperatura de uma
mistura quente. Numa determinada fase do processo necessrio derramar gua fria nesta mistura.
Sem o feedforward, seria necessrio esperar a gua fria mudar o estado da mistura para ento o
controlador gerar a ao corretiva. Utilizando o feedforward, um valor associado temperatura da
gua fria seria injetado na sada do controlador, fazendo com que este tome uma ao corretiva antes
mesmo da gua fria comear a alterar o estado da mistura quente, agilizando a resposta do
controlador.
O bias utilizado sempre que se deseja aplicar algum deslocamento sobre a sada do controlador.
Controle em Cascata
Provavelmente o controle em cascata uma das tcnicas de controle avanado mais utilizadas na
prtica. composto por pelo menos duas malhas de controle. A Figura 6-20 mostra um controlador
em cascata com duas malhas.
227
6. Bibliotecas
Qualquer distrbio que afete o controlador escravo detectado e compensado por este
controlador antes de afetar a varivel controlada pelo controlador mestre.
Aumento da controlabilidade do sistema. No caso do controle de temperatura pela injeo de
vapor, a resposta do sistema melhorada devido ao controlador de vazo aumentando a
controlabilidade do lao principal.
No linearidades de um lao interno so manipuladas dentro deste lao e no percebidos pelo
lao externo. No exemplo anterior, as variaes de presso so compensadas pelo controlador
escravo e o controlador mestre enxerga apenas uma relao linear entre a vlvula e a temperatura.
Consideraes Importantes
Para se utilizar controladores em cascata deve-se tomar os seguintes cuidados:
Como o ponto de ajuste dos controladores escravos manipulado conforme a sada dos
controladores mestres, podero ocorrer variaes bruscas no erro do controlador escravo. Se os
controladores escravos estiverem com a ao derivativa agindo em funo do erro surgiro aes
derivativas com grandes valores. Portanto aconselha-se utilizar os controladores escravos com a
ao derivativa em funo da varivel medida.
Controlador escravo deve ser rpido o suficiente para eliminar os distrbios de seu lao antes que
estes afetem o lao do controlador mestre.
228
6. Bibliotecas
Para determinar as constantes do controlador basta aplicar os valores de GPc e Tc nas frmulas da
Tabela 6-15.
229
6. Bibliotecas
Constantes
Proporcional (P)
GP = 0,5.GPc
GP = 0,45.GPc
Ti = Tc/1,2
Gp = 0,75.GPc
Ti = Tc/1,6
Td = Tc / 10
K: Ganho esttico do processo. Definido como a razo entre uma variao de PV e uma variao
de MV, ou seja, K = PV/MV.
Tm: Tempo morto, definido como o tempo entre o incio de uma variao na sada MV (t0) e o
incio da reao do sistema.
T: Constante de tempo do sistema, definido como o tempo que a varivel medida leva para
excursionar 63,212% de seu valor final.
Alm disso, o mtodo requer dois parmetros adicionais, que no so caractersticas do processo em
si, e devem ser informados pelo usurio:
Tr: Tempo de resposta desejado aps a sintonia do lao. Trata-se de uma caracterstica
interessante, pois atravs deste parmetro o usurio pode informar um requisito de performance
do lao controlado.
dt: Tempo de amostragem em segundos, isto , o perodo de chamada do bloco funcional PID e
atualizao da entrada PV e sada MV. A constante dt simboliza um tempo morto adicional, que
deve ser somado a Tm. Na prtica, soma-se dt/2 ao valor de Tm, pois este o tempo morto mdio
inserido.
O tempo de resposta Tr pode ser comparado com uma constante de tempo do lao fechado, conforme
ilustra a Figura 6-24.
230
6. Bibliotecas
231
6. Bibliotecas
Atravs da Figura 6-25 pode-se obter todas as constantes necessrias para a determinao dos
parmetros do controlador. O ganho esttico do processo obtido atravs da razo entre a variao
da varivel medida e a variao da varivel de atuao, ou seja:
K = _PV2 PV1_
MV2 MV1
O tempo morto, Tm, o tempo entre o momento de aplicao do degrau em MV (t0) e o incio da
resposta do sistema.
A constante de tempo do sistema, T, o tempo entre o incio da reao do sistema e 63,212% do
valor final de PV (PV), isto :
0,63212 = _PV PV1_
PV2 PV1
A partir das constantes do sistema, K, Tm e T, pode-se obter os parmetros do controlador utilizando
as frmulas da tabela abaixo.
Tipo de Controlador
Constantes
GP = _______T_________
K * (Tr + Tm + dt/2)
Ti = T
Td = Tm/2 + dt/4
232
6. Bibliotecas
A correo de escalas ilustrada a partir de um exemplo descrito a seguir.
Considere um sistema de ar condicionado onde o mdulo de entrada analgica est lendo um resistor
PTC (coeficiente trmico positivo) e o mdulo de sada analgica gera uma tenso de 0 a 10V para
atuar sobre a vlvula responsvel pela circulao da gua que resfria o ar insuflado.
O mdulo de entrada trabalha com uma faixa de 0 a 30000, porm a faixa til de 6634 a 8706 com
o seguinte significado:
EA0 = 6634 = 0% = 884,6 (corresponde a mnima temperatura que pode ser medida)
EA1 = 8706 = 100% = 1160,9 (corresponde a mxima temperatura que pode ser medida)
O mdulo de sada utiliza a mesma faixa de 0 a 30000 sem restries e com o seguinte significado:
Supondo que o ganho GP% foi previamente determinado, o ganho GP pode ser calculado pela
seguinte equao:
GP = GP% * R
Onde:
R = _SA1 SA0_
EA1 EA0
Para o exemplo anterior:
R = __3000 0__ = 14,478
8706 - 6634
Esta razo R uma constante que, quando multiplicada pelo ganho proporcional do controlador,
compensa as diferenas entre as faixas de entrada e sada sem a necessidade de uma normalizao
direta.
Exemplo de Aplicao
Nesta seo, ser mostrado um exemplo prtico de utilizao do bloco funcional PID, abrangendo
diversas fases do projeto do processo e do seu sistema de controle.
Descrio do Processo
O processo exemplo tem como objetivo o fornecimento de gua aquecida, com temperatura
controlada, para um consumidor. O aquecimento ser feito atravs de um queimador de gs, sendo
controlado a partir da variao de vazo de gs atravs de uma vlvula.
A Figura 6-26 ilustra este processo.
233
6. Bibliotecas
Assume-se que a gua que chega ao ponto de aquecimento sobre o queimador tem temperatura
fixa, de 30 C.
Assume-se que a vazo de gua constante.
A seguir define-se algumas caractersticas deste processo e dos elementos utilizados:
A gua aquecida deve ter sua temperatura programvel entre 50 C e 80 C.
O transmissor de temperatura TT tem sada de 4 a 20 mA, e se comporta de forma linear, de tal
maneira que 4 mA correspondem a 30 C e 20 mA correspondem a 130 C.
Assume-se que, para aumentar em 10 C a temperatura da gua, necessrio injetar 1 m/h de
gs. Este comportamento linear.
A vlvula de gs se fecha com 4 mA, injetando 0 m/h de gs. Por outro lado, com 20 mA, ela
injeta 8 m/h de gs.
234
6. Bibliotecas
Ponto de Ajuste
A varivel SP deve ser utilizado para programar a temperatura desejada, entre 50 C e 80 C.
Como esta varivel deve ser comparada com PV, ela deve ter a mesma faixa numrica de PV, ou
seja:
SP = 0 ---> 30 C
SP = 30000 ---> 130 C
Ou para restringir a faixa entre 50 C e 80 C:
SP = 6000 ---> 50 C
SP = 15000 ---> 80 C
Bloco diagrama Geral e Valores Limites
A Figura 6-27 mostra um bloco diagrama geral do sistema (controlador + processo), onde dentro do
controlador mostra-se o bloco funcional PID. Observar que SP, PV e MV so variveis do
controlador.
235
6. Bibliotecas
Tr: Ou tempo de resposta desejado. Neste exemplo, ser arbitrado em 10 segundos (um tero da
constante de tempo em malha aberta).
dt: Ou tempo de ciclo do bloco funcional PID. Conforme comentado anteriormente, este tempo
deve ser 10 vezes menor do que a constante de tempo em malha aberta, ou ainda menor.
Portanto, o valor deve ser menor que 3 segundos. Selecionou-se dt = 1 segundo.
6. Bibliotecas
LibRecipeHandler
Esta biblioteca permite manipular receitas no CP.
ATENO:
Para o correto funcionamento desta biblioteca uma biblioteca de sistema utilizada. Esta biblioteca
adicionada ao projeto quando o objeto Recipe Manager for adicionado. Caso ele no seja adicionado
ser exibida uma mensagem de erro de compilao se a LibRecipeHandler for utilizada.
WriteRecipe
Esta funo permite escrever valores de uma receita carregada dentro de um objeto RecipeDefinition
para as variveis da aplicao que est sendo executada em um CP. Os parmetros de entrada desta
funo esto descritos na Tabela 6-17.
Parmetros de entrada
Tipo
Descrio
sRecipeDefinitionName
STRING
STRING
sRecipeName
Valor
Descrio
ERROR_OK
16#0
16#4003
16#4004
16#4006
ERROR_RECIPE_NOT_FOUND
ERROR_RECIPE_DEFINITON_NOT_FOUND
ERROR_NO_RECIPE_MANAGER_SET
6. Bibliotecas
mRET :RECIPE_RETURN_VALUES;
boolStartProcess : BOOL;
END_VAR
mRET := WriteRecipe(SDef,SName);
IF mRET <> RECIPE_RETURN_VALUES.ERROR_OK THEN
boolStartProcess:= FALSE;
ELSE
boolStartProcess := TRUE;
END_IF;
238
7. Glossrio
7. Glossrio
Algoritmo
rvore
Barramento
Bit
Breakpoint
Broadcast
Byte
CAN
Controlador
programvel
CP
Diagnstico
Download
E/S
Tambm chamado de CP. Equipamento que realiza controle sob o comando de um programa aplicativo.
composto de uma UCP, uma fonte de alimentao e uma estrutura de E/S.
Veja controlador programvel.
Procedimento utilizado para detectar e isolar falhas. tambm o conjunto de dados usados para tal
determinao, que serve para a anlise e correo de problemas.
Carga de programa ou configurao no CP.
Veja entrada/sada.
Entrada/sada
Escravo
Equipamento ligado a uma rede de comunicao que s transmite dados se for solicitado por outro
equipamento denominado mestre.
Gateway
Equipamento ou software para a conexo de duas redes de comunicao com diferentes protocolos.
Hardware
IEC 61131
Interface
Interrupo
kbytes
Linguagem de
programao
Dispositivo que adapta eltrica e/ou logicamente a transferncia de sinais entre dois equipamentos.
Evento com atendimento prioritrio que temporariamente suspende a execuo de um programa e
desvia para uma rotina de atendimento especfica
Unidade representativa de quantidade de memria (kB). Representa 1024 bytes.
Um conjunto de regras e convenes utilizado para a elaborao de um programa.
Login
Menu
Conjunto de opes disponveis e exibidas por um programa no vdeo e que podem ser selecionadas
pelo usurio a fim de ativar ou executar uma determinada tarefa.
Menu de Contexto
Mestre
Mdulo (referindo-se a
hardware)
Operandos
PC
POU
Programa aplicativo
Protocolo
RAM
Rede de comunicao
Reset
RUN
Set
Software
STOP
239
7. Glossrio
Token
Tooltip
UCP
Sigla para unidade central de processamento. Controla o fluxo de informaes, interpreta e exec uta as
instrues do programa e monitora os dispositivos do sistema.
UCP ativa
Em um sistema redundante, a UCP ativa realiza o controle do sistema, lendo os valores dos pontos de
entrada, executando o programa aplicativo e acionando os valores das sadas.
Word
XML
Zoom
240