Você está na página 1de 242

Manual de Programao

IEC 61131
Rev. D 09/2015
Cd. Doc.: MP399048

Condies Gerais de Fornecimento


Nenhuma parte deste documento pode ser copiada ou reproduzida sem o consentimento prvio e por
escrito da Altus Sistemas de Automao S.A., que se reserva o direito de efetuar alteraes sem
prvio comunicado.
Conforme o Cdigo de Defesa do Consumidor vigente no Brasil, informamos a seguir, aos clientes
que utilizam nossos produtos, aspectos relacionados com a segurana de pessoas e instalaes.
Os equipamentos de automao industrial fabricados pela Altus so robustos e confiveis devido ao
rgido controle de qualidade a que so submetidos. No entanto, equipamentos eletrnicos de controle
industrial (controladores programveis, comandos numricos, etc.) podem causar danos s mquinas
ou processos por eles controlados em caso de defeito em suas partes e peas ou de erros de
programao ou instalao, podendo inclusive colocar em risco vidas humanas.
O usurio deve analisar as possveis consequncias destes defeitos e providenciar instalaes
adicionais externas de segurana que, em caso de necessidade, sirvam para preservar a segurana do
sistema, principalmente nos casos da instalao inicial e de testes.
Os equipamentos fabricados pela Altus no trazem riscos ambientais diretos, no emitindo nenhum
tipo de poluente durante sua utilizao. No entanto, no que se refere ao descarte dos equipamentos,
importante salientar que quaisquer componentes eletrnicos incorporados em produtos contm
materiais nocivos natureza quando descartados de forma inadequada. Recomenda-se, portanto, que
quando da inutilizao deste tipo de produto, o mesmo seja encaminhado para usinas de reciclagem
que deem o devido tratamento para os resduos.
imprescindvel a leitura completa dos manuais e/ou caractersticas tcnicas do produto antes da
instalao ou utilizao do mesmo.
A Altus garante os seus equipamentos conforme descrito nas Condies Gerais de Fornecimento,
anexada s propostas comerciais.
A Altus garante que seus equipamentos funcionam de acordo com as descries contidas
explicitamente nos manuais e/ou caractersticas tcnicas, no garantindo a satisfao de algum tipo
particular de aplicao dos equipamentos.
A Altus desconsiderar qualquer outra garantia direta ou implcita, principalmente quando se tratar
de fornecimento de terceiros.
Pedidos de informaes adicionais sobre o fornecimento e/ou caractersticas dos equipamentos e
servios Altus devem ser feitos por escrito. A Altus no se responsabiliza por informaes fornecidas
sobre seus equipamentos sem registro formal.

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.

Documentos Relacionados a este Manual


Para obter informaes adicionais sobre o MasterTool IEC XE, podem ser consultados outros
documentos especficos alm deste. Estes documentos encontram-se disponveis na sua ltima
reviso em www.altus.com.br.

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

Nexto Series Features and Configuration

Ingls

CT114000

Srie Nexto Caractersticas e Configuraes

Portugus

CS114000

Serie Nexto Especificaciones y Configuraciones

Espanhol

CE114100

CPUs Nexto Series Features and Configuration

Ingls

CT114100

UCPs Srie Nexto Caractersticas e Configuraes

Portugus

CS114100

UCPs Serie Nexto Especificaciones y Configuraciones

Espanhol

CE103705

MasterTool IEC XE Features and Configuration

Ingls

CT103705

MasterTool IEC XE Caractersticas e Configuraes

Portugus

CS103705

MasterTool IEC XE Especificaciones y Configuraciones

Espanhol

MU214600

Nexto Series User Manual

Ingls

MU214000

Manual de Utilizao Srie Nexto

Portugus

MU214300

Manual Del Usuario Serie Nexto

Espanhol

MU214605

Nexto Sries CPUs User Manual

Ingls

MU214100

Manual de Utilizao UCPs Srie Nexto

Portugus

MU214305

Manual del Usuario UCPs Serie Nexto

Espanhol

MU299609

MasterTool IEC XE User Manual

Ingls

MU299048

Manual de Utilizao MasterTool IEC XE

Portugus

MU299800

Manual del Usuario MasterTool IEC XE

Espanhol

MU399609

IEC 61131 Programming Manual

Ingls

MU399048

Manual de Programao IEC 61131

Portugus

MU399800

Manual de Programacin IEC 61131

Espanhol

Tabela 1-1. Documentao de Suporte

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:

os modelos dos equipamentos utilizados e a configurao do sistema instalado


o nmero de srie da UCP
a reviso do equipamento e a verso do software executivo, constantes na etiqueta afixada na
lateral do produto
as informaes sobre o modo de operao da UCP, obtidas atravs do programador MasterTool
o contedo do programa aplicativo (mdulos), obtido atravs do programador MasterTool
a verso do programador utilizado

Mensagens de Advertncia Utilizadas neste Manual


Neste manual, as mensagens de advertncia apresentaro os seguintes formatos e significados:
PERIGO:
Relatam causas potenciais, que se no observadas, levam a danos integridade fsica e sade,
patrimnio, meio ambiente e perda da produo.
CUIDADO:
Relatam detalhes de configurao, aplicao e instalao que devem ser seguidos para evitar
condies que possam levar a falha do sistema e suas consequncias relacionadas.
ATENO:
Indicam detalhes importantes de configurao, aplicao ou instalao para obteno da mxima
performance operacional do sistema.

2. Conceitos e Componentes Bsicos

2. Conceitos e Componentes Bsicos


Introduo
O MasterTool IEC XE um software programador de CP independente de dispositivo. A sua
compatibilidade com a IEC 61131-3 permite suporte a todas as linguagens de programao definidas
na norma.

Conceitos Bsicos
Considere os seguintes conceitos bsicos que caracterizam a programao via MasterTool IEC XE:

Orientao a objetos: a orientao a objetos contemplada pela disponibilidade das


caractersticas e dos elementos de programao associados, pelo tratamento da estrutura e pela
forma como o projeto organizado.
Estrutura do programador baseada em componentes: a funcionalidade disponvel na
interface do usurio (editores, menus) depende dos componentes utilizados. Existem
componentes essenciais e opcionais.
A organizao do projeto tambm determinada pela orientao ao objeto: um projeto do
MasterTool IEC XE contm um programa de CP composto de vrios objetos de programao e
tambm da definio dos "recursos" necessrios para executar as instncias do programa
(aplicao) nos sistemas dos dispositivos definidos (dispositivos, CPs). Assim sendo, existem
dois tipos de objetos em um projeto:
o Objetos de programao: os objetos de programao (POUs) que podem ser instanciados no
projeto (em todas as aplicaes definidas no mesmo) devem ser gerenciados na janela das
POUs. Alguns exemplos destes objetos de programao so: programas, funes, blocos
funcionais, mtodos, aes, definies de tipos de dados, entre outros. O instanciamento
feito ao chamar uma POU de programa atravs de uma tarefa atribuda aplicao. Os objetos
de programao gerenciados na janela de dispositivos (atribudos diretamente a uma
aplicao) no podem ser instanciados por outra aplicao inserida abaixo.
o Objetos de recurso: estes so objetos de dispositivos, aplicaes, configuraes de tarefas e
so gerenciados na rvore de dispositivos ou no editor grfico, dependendo do tipo do
dispositivo. Ao inserir objetos, o hardware a ser controlado deve ser mapeado de acordo com
determinadas regras.

Gerao de cdigo: a gerao de cdigo feita atravs de compiladores integrados e otimizao


do cdigo de mquina versus tempos de execuo.
Transferncia de dados entre o MasterTool IEC XE e o dispositivo (controlador): esta
operao feita via gateway (componente) e um sistema de execuo.
Interface padro e profissional: configuraes pr-definidas oferecem a possibilidade de
escolher entre uma interface de usurio padro (seleo reduzida de configuraes com menor
complexidade) ou um ambiente profissional, o qual suporta todas as configuraes. A escolha
entre estas opes feita quando o programador inicializado aps a primeira instalao no
sistema, porm possvel alterar esta opo posteriormente, assim como se pode tambm adotar
uma customizao definida pelo usurio. Para conhecer mais detalhes sobre as diferenas
especficas entre as verses padro e profissional, consulte Caractersticas no Manual de
Utilizao MasterTool IEC XE MU299048.

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

2. Conceitos e Componentes Bsicos


Aplicaes vinculadas a dispositivos como instncias de objetos de programao independentes.
Tipos de Dados Especiais

UNION
LTIME
Referncias
Enumeraes: tipos de dados bsicos podem ser especificados
DI: DINT := DINT#16#FFFFFFFF

Operadores e Variveis Especiais

Operadores de escopo: contextos estendidos


Ponteiros de funo: substituindo o operador INSTANCE_OF
Mtodo Init: substituindo o operador INI
Mtodo Exit
Variveis de sada em funes e chamadas de mtodos
VAR_TEMP/VAR_STAT/VAR_RETAIN/ VAR_PERSISTENT
Expresses arbitrrias para inicializao de variveis
Atribuio como expresso
Acesso de ndice com ponteiros e strings

Conceito de Gerenciamento de Usurio e Direitos de Acesso

Contas de usurios, grupos de usurios, direitos especficos de grupos para acesso e aes em
objetos especficos

Caractersticas em Editores

Editor ST: recursos de edio, quebra de linha, autocompletar, monitorao e atribuio


SET/RESET na linha
Editores FBD, LD e IL reversveis e programveis em um editor combinado
Editor IL como editor de tabela
Editores FBD, LD e IL: possibilidade de alterao da sada principal em caixas com vrias sadas
Editores FBD, LD e IL sem atualizao automtica dos parmetros da caixa
Editores FBD, LD e IL: ramificaes e redes dentro de redes
Editor SFC: somente um tipo de passo, macros, seleo mltipla de elementos independentes,
sem verificao sinttica durante a edio e declarao automtica de variveis sinalizadoras

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

Menus, barra de ferramentas e uso de teclado


Possibilidade de incluir componentes especficos do usurio
Configurao do CP e configurao de tarefas integradas na rvore de dispositivos
Suporte a UNICODE
Comentrios de linha
Co-de-Guarda
Seleo mltipla na rvore de objetos do projeto
Ajuda online integrada na interface do usurio
Compilao condicional
Breakpoints condicionais
10

2. Conceitos e Componentes Bsicos

Depurao: passo para o cursor e retorno chamada anterior


Driver de barramento de campo em conformidade com a norma IEC 61131-3
Configurao do CP e de smbolos disponveis na aplicao
Alocao livre de memria de cdigo e dados
Cada objeto pode ser especificado como interno ou externo (link posterior no sistema de
execuo)
Notas de pr-compilao referentes a erros sintticos

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

O software MasterTool IEC XE disponibiliza um template, denominado Projeto MasterTool Padro,


o qual deve ser selecionado pelo usurio como modelo na criao de um projeto. A nova aplicao
ser desenvolvida conforme um determinado perfil, tambm escolhido pelo usurio, adotando as
regras, caractersticas e padres pr-definidos. Cada perfil de projeto define nomes padronizados para
tarefas e programas.
Para garantir a compatibilidade de um projeto a um determinado perfil ao longo do desenvolvimento,
so utilizadas duas abordagens:

O MasterTool IEC XE somente permite a criao de projetos baseados em um template,


selecionando ao mesmo tempo o perfil a ser utilizado.
Na gerao de cdigo, o MasterTool IEC XE realiza a verificao de todas as regras definidas
para o perfil vlido para o projeto.

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

2. Conceitos e Componentes Bsicos


Cada dispositivo representa um hardware especfico (destino). Exemplos: controlador, mdulos de
E/S, monitor.
Cada dispositivo definido por uma descrio e deve ser instalado no sistema local para que possa
ser inserido na rvore de Dispositivos. O arquivo de descrio define as propriedades referentes
configurao, programao e possveis conexes com outros dispositivos.
Na rvore de Dispositivos so gerenciados os objetos necessrios para executar uma aplicao no
dispositivo (controlador, CP), incluindo aplicao, configurao de tarefas e tarefas. Entretanto,
objetos de programao especficos (POUs, listas de variveis globais e gerenciador de bibliotecas)
podem - em vez de serem gerenciados como unidades instanciveis globais de projeto na janela das
POUs - serem gerenciados SOMENTE na rvore de Dispositivos e, neste caso, estarem disponveis
apenas na sua aplicao ou nas suas aplicaes secundrias.

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.

) define uma ou vrias tarefas para controlar o processamento de um

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

2. Conceitos e Componentes Bsicos


Todas as tarefas compartilham o mesmo mapa de processo, pois um mapa para cada tarefa
prejudicaria a performance. Entretanto, o mapa do processo sempre consiste de apenas uma tarefa.
Assim, ao criar um projeto, o usurio deve explicitamente observar que, em caso de conflitos, os
dados de entrada sero copiados para a rea de salvamento (o mesmo ocorre com as sadas). Por
exemplo, mdulos da biblioteca SysSem podem ser usados para resolver problemas de
sincronizao.
Ao acessar outros objetos globais (variveis globais, mdulos), podem ocorrer problemas de
consistncia, se o tamanho dos objetos excederem a capacidade do processador (estruturas ou
ARRAYS formando uma unidade lgica). Neste caso, os mdulos da biblioteca SysSem tambm
podem ser usados para resolver os problemas.

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.

Gerao de Cdigo e Alterao Online


Gerao de Cdigo e Informaes de Compilao
O cdigo fonte no ser gerado at que o projeto da aplicao seja enviado para o dispositivo (CP ou
dispositivo de simulao). A cada envio, as informaes de compilao contendo o cdigo e a ID de
referncia da aplicao carregada sero armazenadas em um diretrio do projeto em um arquivo
<nome do projeto>.<nome do dispositivo>.<ID da aplicao>.compileinfo. As informaes de
compilao sero apagadas quando os comandos Limpar e Limpar Tudo forem executados.
Alteraes Online
Dependendo da alterao no projeto em execuo no controlador, apenas os objetos modificados
sero carregados para o mesmo.
ATENO:
Alteraes online modificam o programa aplicativo em execuo e no provocam a reinicializao
do mesmo. Certifique-se de que o novo cdigo da aplicao no afetar o comportamento esperado
do sistema. Dependendo do controlador, podem ocorrer danos nas mquinas ou nas suas partes,
assim como pode haver risco sade e vida das pessoas.

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

2. Conceitos e Componentes Bsicos


de inicializao. O comando Criar Aplicao de Inicializao tambm permite salvar esta aplicao
em um arquivo no modo offline.
Mtodo de Envio/Login de Projetos Sem Diferena de Projetos
Afim de garantir que o usurio no ter problemas ao enviar projetos iguais e logar em UCPs em
execuo a partir de diferentes estaes, podem ser executados os seguintes passos aps o envio de
um projeto:

No dilogo Arquivos Adicionais (menu Projeto, Configurao do Projeto, Download de Cdigo


Fonte e boto Arquivos Adicionais) marcar a opo Realizar download dos arquivos de
informaes.
Fechar todos dilogos clicando em OK.
Executar o comando Download do Cdigo Fonte (menu Arquivo).
No dilogo Selecionar Dispositivo, que ser aberto, escolher a UCP em que o projeto foi enviado.
Fechar o dilogo clicando em OK, aguardar o download do projeto.

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:

Executar o comando Carregar Cdigo Fonte (menu Arquivo).


No dilogo Selecionar Dispositivo, que ser aberto, escolher a UCP em que o projeto foi enviado.
Fechar o dilogo clicando em OK, aguarde o carregamento do projeto.
No dilogo Arquivo de Projeto, que ser aberto ao fim do processo de carregamento, escolher o
local para extrao e clicar no boto Extrair.
O projeto ser aberto e o comando de Login pode ser executado na UCP correspondente.

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.

Linguagens de Programao Suportadas


Todas as linguagens de programao mencionadas na norma IEC 61131 so suportadas atravs de
editores especialmente adaptados.

14

2. Conceitos e Componentes Bsicos

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

O MasterTool IEC XE fornece adicionalmente um editor para programao em CFC, denominado


Editor CFC para Grfico Funcional Contnuo. Este, entretanto, no faz parte da norma IEC.

Unidades de Organizao de Programas


O termo POU utilizado basicamente para todos os objetos usados para criar um programa do CP, e
significa Unidade de Organizao de Programa.
POUs gerenciadas na Visualizao das POUs no so especficas do dispositivo, mas devem ser
instanciadas para uso em um dispositivo (aplicao). Para tanto, POUs de programa devem ser
chamadas por uma tarefa da respectiva aplicao.
As POUs inseridas na rvore de Dispositivos explicitamente em uma aplicao SOMENTE so
gerenciadas na Visualizao dos Dispositivos, ou seja, podem ser instanciadas apenas por aplicaes
recuadas abaixo desta aplicao (aplicao secundria). Para obter mais informaes, veja as
informaes sobre rvore de Dispositivos e Aplicao no Manual de Utilizao MasterTool IEC
XE MU299048.
No entanto, POU tambm o nome de uma determinada subcategoria destes objetos no menu
Acrescentar Objeto, que a compreende programas, blocos funcionais e funes.
Assim sendo, uma POU - Unidade de Organizao de Programa, em geral, uma unidade de
programao, um objeto gerenciado atravs de dispositivos no especficos (na janela das POUs) e
especficos (na janela dos Dispositivos) e que pode ser visualizado e editado em uma janela do editor.
Uma POU pode ser uma funo, bloco funcional, mtodo, ao, DUT ou ainda um arquivo externo
de qualquer formato.
Considere a possibilidade de configurar determinadas propriedades (como por exemplo, condies de
compilao, etc.) da POU.
Por padro, os seguintes tipos de POU podem ser usados:

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

Alm da Unidade de Organizao de Programa, existem os Dispositivos, os quais so usados para


executar o programa (recurso, aplicao, configurao de tarefa, etc.). Estes ltimos so gerenciados
na visualizao dos Dispositivos.
POU
Uma POU uma Unidade de Organizao de Programa do tipo Programa, Funo ou Bloco
Funcional.
Para acrescentar uma POU ( ), selecione o item correspondente na janela POUs ou Dispositivos
(uma aplicao, por exemplo), use o comando Acrescentar Objeto no menu de contexto e selecione
15

2. Conceitos e Componentes Bsicos


POU no submenu que aparecer. O dilogo Acrescentar POU abrir para que se configure o seu
nome, tipo e linguagem de implementao. No caso dos blocos funcionais, opcionalmente podem ser
definidas as propriedades ESTENDER e IMPLEMENTAR. No caso das funes, o tipo de retorno
tambm deve ser especificado. Veja os respectivos itens em Programa, Funo e Bloco Funcional.

Figura 2-1. Dilogo Acrescentar POU


Dependendo do tipo, a POU pode ser complementada por mtodos, propriedades, aes e transies.
Para tal, tambm utilizado o comando Acrescentar Objeto.
A ordem hierrquica de processamento das instncias da POU de uma aplicao depende da
configurao especfica do dispositivo (pilha de chamadas).
Cada POU consiste de uma parte de declarao e uma parte de implementao. O corpo escrito em
uma das linguagens de programao disponveis, que so IL, ST, SFC, FBD, LD ou CFC.
O MasterTool IEC XE suporta todas as POUs descritas pela norma IEC 61131-3. Para usar estas
POUs no projeto, deve-se incluir a biblioteca standard.library. Os projetos criados a partir do modelo
Projeto MasterTool Padro j possuem esta biblioteca carregada.
NOTA: Em alguns exemplos deste manual o cdigo esta declarado sequencialmente, mas para sua
utilizao o mesmo deve ser separado, a parte superior do editor da linguagem de programao para
declaraes e a parte inferior do editor deve ser utilizada para a implementaes.
Chamando POUs
POUs podem chamar outras POUs, mas no so permitidas recorrncias.
Quando uma POU atribuda a uma aplicao chama outra POU apenas pelo seu nome (sem nenhum
contexto adicionado), adotada a seguinte ordem de busca:
16

2. Conceitos e Componentes Bsicos


1. Aplicao atual
2. Gerenciador de bibliotecas da aplicao atual
3. Visualizao das POUs
4. Gerenciador de bibliotecas na visualizao das POUs
Se uma POU com o nome especificado na chamada estiver disponvel em uma biblioteca do
gerenciador de bibliotecas e estiver como um objeto na visualizao das POUs, no haver sintaxe
para cham-las explicitamente apenas usando o seu nome na visualizao das POUs. Neste caso, o
usurio deve mover a referida biblioteca do gerenciador da aplicao para o gerenciador da
visualizao das POUs. Isso permitir a chamada da POU apenas pelo seu nome. Por outro lado, para
chamar aquela da biblioteca, deve-se utilizar o contexto da referida biblioteca.
Consulte tambm o item POUs para Verificaes Implcitas.
Programa
Um programa uma POU que retorna um ou vrios valores durante a operao. Todos os valores so
mantidos desde a ltima vez que o programa foi executado at a prxima execuo.
Uma POU de programa pode ser adicionada ao projeto via comando Acrescentar Objeto. Para
atribuir o programa a uma aplicao existente, selecione-a na visualizao dos Dispositivos e use o
comando a partir do menu de contexto, caso contrrio, a POU ser adicionada visualizao das
POUs. No dilogo Acrescentar POU, escolha Programa, digite um nome para ele e defina a
linguagem desejada. Aps confirmar as configuraes via boto Abrir, a janela do editor para o novo
programa ser aberta para que se possa iniciar a sua edio.
Sintaxe para declarar um programa:
PROGRAM <NOME DO PROGRAMA>

Abaixo do nome, seguem as declaraes de variveis de entrada, sada e variveis de programa.


Opcionalmente, tambm podem ser declaradas variveis de acesso.

Figura 2-2. Exemplo de Programa

17

2. Conceitos e Componentes Bsicos


Chamada de Programas
Um programa pode ser chamado por outra POU, mas a chamada de programa no permitida em
uma funo. Tambm no existem instncias de programas.
Se uma POU chamou um programa e se os valores deste foram alterados, estas alteraes sero
mantidas at que o programa seja chamado novamente (mesmo que seja chamado em outra POU).
Note que isto diferente de chamar um bloco funcional, onde somente os valores na instncia
fornecida so alterados. Assim, estas alteraes s tm efeito quando a mesma instncia for chamada
novamente.
Os parmetros de entrada e/ou sada no curso de uma chamada de programa podem ser definidos nos
editores de linguagem textual (ST, por exemplo), atribuindo-se valores a eles aps o nome do
programa entre parnteses. Para parmetros de entrada, esta atribuio ocorre usando ":=", assim
como com a inicializao das variveis na posio de declarao. Para parmetros de sada, deve ser
usado "=>". Veja o exemplo abaixo.
Se o programa for inserido via Assistente de Entrada com a opo Inserir com argumentos na janela
de implementao de um editor de linguagem textual, ele ser exibido automaticamente de acordo
com esta sintaxe para todos os parmetros (embora estes no necessariamente tenham que ser
atribudos).
Exemplo para chamada de programa em IL:

Atribuindo os parmetros (utilizando Assistente de Entrada com opo Com argumentos marcada):

Exemplo em ST:
PRGEXAMPLE();
ERG := PRGEXAMPLE.OUT_VAR;

Atribuindo os parmetros (Assistente de Entrada com opo Com argumentos):


PRGEXAMPLE (IN_VAR:=33, OUT_VAR=>ERG);

NOTA: Os parnteses so obrigatrios.


Exemplo em FBD:

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

2. Conceitos e Componentes Bsicos


retorno (<tipo de dados>) para a nova funo e escolha a linguagem de implementao desejada. O
editor estar disponvel via boto Abrir, permitindo, na sequncia, a edio da POU.
Declarao:
A declarao da funo inicia com a palavra-chave FUNCTION. Devem ser definidos um nome e um
tipo de dados.
Sintaxe:
FUNCTION <NOME DA FUNO> : <TIPO DE DADOS>

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:

Em chamadas de funo, no possvel misturar atribuies de parmetros explcitos com implcitos.


Isto permite alterar a ordem das atribuies dos parmetros de entrada.
19

2. Conceitos e Componentes Bsicos


Exemplo:
FUN(FORMAL1 := ACTUAL1, ACTUAL2); // -> Mensagem de erro.
FUN(FORMAL2 := ACTUAL2, FORMAL1 := ACTUAL1); // Mesma semntica que:
FUN(FORMAL1 := ACTUAL1, FORMAL2 := ACTUAL2);

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>

A sintaxe acima seguida pela declarao das variveis.


NOTA: FUNCTION BLOCK no uma palavra-chave alternativa vlida.
Exemplo:
O FBexample, mostrado na figura a seguir, apresenta duas variveis de entrada e duas de sada, out1
e out2. Out1 a soma das duas entradas, out2 o resultado de uma comparao de igualdade.
Exemplo de um Bloco Funcional em ST:

20

2. Conceitos e Componentes Bsicos


FUNCTION_BLOCK FBEXAMPLE
VAR_INPUT
INP1:INT;
INP2:INT;
END_VAR
VAR_OUTPUT
OUT1:INT;
OUT2:BOOL;
END_VAR
OUT1:=INP1+INP2;
OUT2:= INP1=INP2;

Instncia de Bloco Funcional


Blocos funcionais so sempre chamados atravs de uma instncia, a qual uma reproduo (cpia)
de um bloco funcional.
Cada instncia tem o seu prprio identificador (nome da instncia) e uma estrutura de dados
contendo entradas, sadas e variveis internas.
Assim como as variveis, as instncias so declaradas local ou globalmente e, por meio delas, o
nome do bloco funcional indicado como o tipo de dado de um identificador.
Sintaxe para declarao de uma instncia de bloco funcional:
<identificador>:<nome do bloco FUNCIONAL>;

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:

Somente as variveis de entrada e sada de um bloco funcional podem ser acessadas


externamente a uma instncia do bloco funcional. Suas variveis internas no so acessveis.
O acesso a uma instncia do bloco funcional limitado POU na qual ela foi declarada, a menos
que tenha sido declarada globalmente.
Na chamada da instncia, os valores desejados podem ser atribudos aos parmetros dos blocos
funcionais.
As variveis de entrada e sada (VAR_IN_OUT) de um bloco funcional so passadas como
ponteiros.
No SFC, as chamadas de blocos funcionais somente podem ocorrer em aes associadas aos
passos.
O nome da instncia do bloco funcional pode ser usado como um parmetro de entrada para uma
funo ou outro bloco funcional.
Todos os valores de um bloco funcional ficam retidos at o prximo processamento do mesmo,
portanto, as chamadas de blocos funcionais nem sempre retornam os mesmos valores de sada,
mesmo que tenham sido utilizados os mesmos argumentos.
21

2. Conceitos e Componentes Bsicos


NOTA: Se no mnimo uma das variveis do bloco funcional for retentiva, a instncia total
armazenada na rea de dados retentivos.
Abaixo, encontram-se exemplos para acessar variveis de blocos funcionais.
Suponha que o bloco funcional fb tem uma varivel de entrada in1 do tipo INT. Veja a chamada
desta varivel a partir do programa prog.
Declarao e implementao em ST:
PROGRAM PROG
VAR
INST1:FB;
RES:INT;
END_VAR
INST1.IN1:=22; (* fb chamado e a varivel in1 assume o valor 22 *)
INST1(); (* fb chamado, isto necessrio para o acesso varivel de
sada mostrado a seguir *)
RES:=FBINST.OUTL; (* Varivel de sada do fb lida *)

Exemplo em FBD:

Atribuindo Parmetros na Chamada


Nas linguagens textuais IL e ST, os parmetros de entrada/sada podem ser configurados
imediatamente na chamada de um bloco funcional. Os valores podem ser atribudos aos parmetros
entre parnteses aps o nome da instncia do bloco funcional. Para parmetros de entrada, esta
atribuio ocorre usando :=, assim como ocorre com a inicializao das variveis na declarao.
Para parmetros de sada, deve ser usado => .
Veja um exemplo de chamada com atribuies, onde um bloco funcional de temporizao (instncia
CMD_TMR) chamado com atribuies para os parmetros IN e PT. A varivel resultante Q
atribuda varivel A com o nome da instncia do bloco funcional, seguido de um ponto e do nome
da varivel:
CMD_TMR(IN := %IX5.0, PT := 300);
A:=CMD_TMR.Q

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

CMD_TMR(in:=bvar, pt:=t#200ms, q=>bres); (* Parmetros atribudos *)


Extenso de um Bloco Funcional
A programao orientada ao objeto permite a derivao de um bloco funcional a partir de outro.
Desta forma, as propriedades de um bloco funcional podem ser estendidas a outro.
A extenso feita usando-se a palavra-chave EXTENDS na declarao do bloco funcional.
possvel escolher a opo EXTENDS ao acrescentar o bloco ao projeto atravs do dilogo
Acrescentar Objeto.
Sintaxe:
22

2. Conceitos e Componentes Bsicos


FUNCTION_BLOCK <nome do bloco funcional> EXTENDS <nome do bloco funcional>

A declarao das variveis ento realizada na sequncia.


Exemplo de definio do bloco funcional fbA:
FUNCTION_BLOCK fbA
VAR_INPUT
x:int;
...

Definio do bloco funcional fbB:


FUNCTION_BLOCK fbB EXTENDS fbA
VAR_INPUT
ivar:int;
...

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

NOTA: No so permitidas heranas mltiplas. Ou seja, no possvel estender mais do que um


bloco de funo.
Invocao de Mtodo
A programao orientada ao objeto, quando aplicada em blocos funcionais, alm da opo
ESTENDER, permite o uso de herana. Ela requer invocaes dinmicas de mtodo, conhecidas
como chamadas de funo virtual.
Para obter maiores informaes, consulte o item Mtodo.
Chamadas de funo virtual precisam de mais tempo que as chamadas de funo normais e so
usadas quando:

Uma chamada realizada atravs de um ponteiro para um bloco funcional (pfub^.method)


Um mtodo chama outro mtodo do mesmo bloco funcional

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

2. Conceitos e Componentes Bsicos


B : BOOL;
END_VAR
VAR
PINST : POINTER TO FUBBASE;
INSTBASE : FUBBASE;
INST1 : FUB1;
INST2 : FUB2;
END_VAR
IF B THEN
PINST := ADR(INSTBASE);
ELSE
PINST := ADR(INST1);
END_IF
PINST^.METHOD1(); (* Se B TRUE, FUBBASE.METHOD1 chamado, seno
FUB1.METHOD1 chamado *)

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

Chamada via ponteiros - Implementao de method1:


METHOD METHOD1 : BOOL
VAR_INPUT
END_VAR
METHOD1 := METHOD2();

Chamando fubbase.method1 via ponteiros, ocorre:

Se o ponteiro for do tipo fubbase, fubbase.method2 ser chamado


Se o ponteiro for do tipo fub1, fub1.method2 ser chamado

Unidades de Tipo de Dados


Alm dos tipos de dados padro, o usurio pode utilizar tipos criados por ele. Tipos de estruturas,
enumerao e referncias podem ser criados como Unidades de Tipos de Dados (DUT) em um editor
DUT.
Uma DUT ( ) pode ser adicionada ao projeto atravs do comando Acrescentar Objeto. Para
atribu-la a uma aplicao existente, selecione a aplicao na rvore de Dispositivos. Caso contrrio,
a DUT ser adicionada rvore das POUs. No dilogo Acrescentar DUT, digite um nome para ela
(nova unidade de tipos de dados) e escolha o tipo desejado de Estrutura, Enumerao, Pseudnimo
ou Unio.
No caso do tipo Estrutura, possvel utilizar o princpio da herana como suporte programao
orientada ao objeto. Opcionalmente, pode ser especificado que uma DUT estenda-se outra DUT
que esteja definida no projeto. Isto significa que as definies da DUT estendida sero
automaticamente vlidas dentro da DUT atual. Para este propsito, ativa-se a opo Estender e
digita-se o nome da outra DUT.
Aps confirmar a configurao, pressione o boto Abrir. O editor da nova DUT estar disponvel e
pode-se iniciar a edio.
Sintaxe para declarao de uma DUT:
TYPE <IDENTIFICADOR> : <DECLARAO DOS COMPONENTES DA DUT>
END_TYPE

A declarao dos componentes da DUT depende do seu tipo, por exemplo, se uma estrutura ou uma
enumerao.
Exemplo:
24

2. Conceitos e Componentes Bsicos


Veja nas duas DUTs abaixo, estruturas de definio struct1 e struct, sendo que struct2 estende
struct1, o que significa que se pode usar struct2.A na implementao para acessar a varivel A.
TYPE STRUCT1 :
STRUCT
A:INT;
B:BOOL;
END_STRUCT
END_TYPE
TYPE STRUCT2 EXTENDS STRUCT1 :
STRUCT
C:DWORD;
D:STRING;
END_STRUCT
END_TYPE

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

2. Conceitos e Componentes Bsicos


Mtodos Especiais para um Bloco Funcional

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.

Chamada de Mtodo (Aplicao Interrompida)


No arquivo de descrio do dispositivo, pode-se definir que um determinado mtodo seja sempre
chamado ciclicamente por uma determinada instncia do bloco funcional (ou de um mdulo de
biblioteca). Se este mtodo contiver os parmetros de entrada abaixo, ele ser processado tambm
quando a aplicao corrente ativa no estiver em execuo:
VAR_INPUT
PTASKINFO : POINTER TO DWORD;
PAPPLICATIONINFO: POINTER TO _IMPLICIT_APPLICATION_INFO;
END_VAR

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;

Cdigo na propriedade Set:


MILLI := SECONDS * 1000;

26

2. Conceitos e Componentes Bsicos


A propriedade do bloco funcional pode ser escrita (mtodo Set), por exemplo, por fbinst.seconds :=
22; (fbinst a instncia de FB1) ou pode ser lida (mtodo Get), por exemplo, por testvar :=
fbinst.seconds;.

Figura 2-3. Propriedade Segundos Acrescentada ao Bloco Funcional fb


Propriedades podem ter variveis locais adicionais, porm no tem entradas adicionais e diferentemente da funo ou mtodo - no tem sadas adicionais.
Monitorando uma Propriedade
As propriedades podem ser monitoradas no modo online com a ajuda da Monitorao Online ou da
Lista de Monitorao. Para monitorar uma propriedade, necessrio adicionar o pragma {attribute
'monitoring':='variable'} no topo da sua definio.
Ao
Aes ( ) podem ser definidas e atribudas a blocos funcionais e programas atravs do comando
Acrescentar Objeto. A ao uma implementao adicional que pode ser criada em uma linguagem
diferente da implementao bsica. A cada ao, referenciado um nome.
Uma ao manipula os dados do bloco funcional ou programa ao qual ela pertence. Ela utiliza as
variveis de entrada/sada e variveis locais definidas nessas POUs e, por isso, no contm
declaraes prprias.

Figura 2-4. Ao em um Bloco Funcional


Neste exemplo, cada chamada do bloco funcional FB1 incrementar ou decrementar a varivel de
sada Out , dependendo do valor da varivel de entrada In. Chamando a ao Reset deste bloco
funcional, a varivel de sada Out ser zerada. escrito na mesma varivel Out nos dois casos.
Pode-se adicionar uma ao via comando Acrescentar Objeto/Ao, quando o respectivo programa
ou bloco funcional for selecionado na rvore dos Dispositivos ou das POUs. No dilogo Acrescentar
Ao, defina o nome da ao e a linguagem de implementao desejada.
Chamando uma Ao
Uma ao chamada com:
27

2. Conceitos e Componentes Bsicos


<NOME_PROGRAMA>.<NOME_AO> OU <NOME_INSTNCIA>.<NOME_AO>.

Observe as particularidades da notao em FBD (exemplo abaixo).


Para chamar uma ao dentro do seu prprio bloco (dentro do programa ou bloco funcional ao qual
pertence), basta referenciar o nome da ao.
Exemplos para a chamada da ao descrita acima a partir de outra POU:
Declarao para todos os exemplos:
PROGRAM MAINPRG
VAR
INST : COUNTER;
END_VAR

Chamada da ao Reset em outra POU programada em IL:


CAL INST.RESET(IN := FALSE)
LD INST.OUT
ST ERG

Chamada da ao Reset em outra POU programada em ST:


INST.RESET(IN := FALSE);
ERG := INST.OUT;

Chamada da ao Reset em outra POU programada em FBD:

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

2. Conceitos e Componentes Bsicos


O editor GVL usado para editar uma Lista de Variveis Globais.
Se o dispositivo suportar a funcionalidade de rede, as variveis contidas em uma GVL podem ser
configuradas para estarem disponveis como variveis de rede, isto , para uma troca de dados via
broadcast com outros dispositivos na rede. Para tanto, as propriedades de rede apropriadas devem
estar configuradas para a GVL.
Considere que as variveis declaradas nas GVLs sempre so inicializadas antes das variveis locais
das POUs.
Variveis Persistentes
O objeto representa uma lista de variveis globais contendo apenas as variveis persistentes da
aplicao, e pode ser atribudo a uma aplicao atravs da insero do mesmo na rvore de
dispositivos via comando Acrescentar Objeto.
Variveis remanentes so reinicializadas somente em um Reset Origem. Para informaes adicionais,
consulte o item Variveis Remanentes.
A lista de variveis persistentes editada no editor GVL e VAR_GLOBAL PERSISTENT RETAIN
aparece na primeira linha.

Figura 2-5. Lista de Variveis Persistentes


Arquivo Externo
Qualquer arquivo externo (com qualquer extenso) pode ser adicionado ao projeto na janela das
POUs atravs do comando Acrescentar Objeto, opo Arquivo Externo. O dilogo Acrescentar
Arquivo Externo ser aberto.
Pressione o boto
para navegar para um arquivo, o caminho que ser inserido no campo
Caminho do arquivo. No campo Nome automaticamente o nome do arquivo escolhido ser inserido

29

2. Conceitos e Componentes Bsicos


sem extenso. Voc pode editar este campo para definir um outro nome para o arquivo dentro do
projeto.
Seguintes opes podem ser selecionadas em relao ao arquivo externo.

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

2. Conceitos e Componentes Bsicos


O gerenciamento das bibliotecas em um projeto feito no Library Manager (
sistema feita previamente no dilogo do Repositrio de Bibliotecas.

), cuja instalao no

NOTA: O dilogo Repositrio de Bibliotecas s est disponvel se as caractersticas pr-definidas


escolhidas pelo usurio for Profissional ou se a opo Habilitar Dilogo de Repositrio estiver
habilitado. Para mais informaes sobre caractersticas, consulte Caractersticas no Manual de
Utilizao MasterTool IEC XE MU299048.
As funes do projeto para pesquisa local/global e substituio tambm so aplicveis s bibliotecas
includas.
Consulte informaes gerais sobre:

Instalao e incluso no projeto


Bibliotecas referenciadas
Verses de bibliotecas
Acesso exclusivo aos mdulos de bibliotecas ou variveis
Criando bibliotecas no MasterTool IEC XE, codificao e documentao
Mdulos de biblioteca internos e externos

Instalao e Incluso no Projeto

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

As bibliotecas podem incluir outras bibliotecas referenciadas (aninhamento). Ao acrescentar uma


biblioteca que inclua outras no gerenciador, as bibliotecas referenciadas sero acrescentadas
automaticamente.
O comportamento que a biblioteca referenciada apresentar ao ser inserida em um projeto com
sua biblioteca principal pode ser definido nas suas Propriedades.
A visibilidade da biblioteca referenciada no Library Manager pode ser desativada. Elas passam a
ter o status de bibliotecas ocultas.
Bibliotecas do tipo container so aquelas sem mdulos prprios e que apenas referenciam outras
bibliotecas. A biblioteca container possibilita criar um projeto com vrias bibliotecas includas ao
mesmo tempo. O acesso aos seus mdulos pode ser simplificado tornando a biblioteca de nvel
superior (topo), pois isto permite omitir o contexto desta biblioteca no caminho do acesso. Para
31

2. Conceitos e Componentes Bsicos


tanto, basta ativar o boto Publicar... , mas esta opo somente deve ser ativada na biblioteca
container e deve ser gerenciada com muito cuidado.
Verses de Biblioteca

O sistema permite a instalao de vrias verses da mesma biblioteca.


Nos projetos com mltiplas verses de bibliotecas, a escolha de qual ser usada na aplicao
segue o seguinte critrio:
o No mesmo nvel dentro do mesmo gerenciador, a escolha da verso (uma determinada ou a
mais recente), depender das propriedades da biblioteca.
o Em nveis diferentes dentro do mesmo gerenciador (bibliotecas referenciadas), o acesso nico
aos mdulos da biblioteca ou s variveis ser possvel acrescentando-se o contexto adequado
(veja no pargrafo a seguir).

Acesso nico aos Mdulos da Biblioteca ou s Variveis

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

2. Conceitos e Componentes Bsicos

Varivel var1 est disponvel nos


seguintes locais...

Acesso a var1 usando o caminho do


contexto apropriado

Na biblioteca Lib1 no Gerenciador de


bibliotecas global na janela das POUs.

Lib1.module1.var1

Na biblioteca Lib1 no Gerenciador de


bibliotecas na Aplicao App1 do Dispositivo
Dev1 na janela dos dispositivos.

Dev1.App1.Lib1.module1.var1

Na biblioteca Lib1 includa em F_Lib no


Gerenciador de bibliotecas global na janela
das POUs.

Por padro (a opo Publicar... nas


Propriedades da biblioteca est desativada):
F_Lib.Lib1.module1.var1
Se a opo Publicar... estivesse ativada,
module1 seria tratado com um componente
de uma biblioteca de nvel superior. Assim, o
acesso somente seria possvel atravs de
Lib1.module1.var1 ou module1.var1 . Neste
exemplo, entretanto, isto poderia provocar
erros de compilao, j que o caminho de
acesso no exclusivo, veja (1) e (4).

No objeto module1 definido na janela das


POUs.

module1.var1

No objeto POU1 definido na janela das


POUs.

POU1.var1

Tabela 2-1. Acesso nico aos Mdulos da Biblioteca ou s Variveis


Criando Bibliotecas, Codificao, Documentao
Um projeto do MasterTool IEC XE pode ser salvo como uma biblioteca (<nome do projeto>.library)
e, opcionalmente, pode ser instalado no Repositrio de Bibliotecas do Sistema. Nos projetos de
biblioteca, somente sero considerados os objetos gerenciados na janela das POUs. Para estes
projetos, recomendado escolher o modelo Biblioteca Vazia no dilogo Novo Projeto. Observe o que
segue:

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

2. Conceitos e Componentes Bsicos

exibido posteriormente quando a biblioteca for includa no projeto, na guia Documentao do


Gerenciador de Bibliotecas.
Os comandos a seguir esto disponveis por padro no menu Arquivo para salvar um projeto de
biblioteca:
o Salvar Projeto Como...
o Salvar Projeto Como Biblioteca Compilada
o Salvar Projeto e Instalar no Repositrio de Bibliotecas

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

Figura 3-1. Dilogo Acrescentar Biblioteca (Todas as Verses)


Aqui, todas as bibliotecas atualmente instaladas no sistema sero listadas. A exibio pode ser
filtrada definindo-se uma determinada Empresa a partir da lista de seleo. A opo Todas as
Empresas listar todas as bibliotecas disponveis.
Se a opo Agrupar por Categoria estiver ativada, as bibliotecas da empresa atualmente definida
sero listadas de acordo com as categorias disponveis, caso contrrio, a lista estar em ordem
alfabtica. Se esta opo for escolhida, as categorias aparecero sob a forma de ns e as bibliotecas
ou categorias adicionais sero exibidas abaixo destes ns (em relao categoria atualmente
selecionada).
O usurio, ento, escolhe a biblioteca desejada. Se a opo Exibir Todas as Verses (Somente para
Usurios Avanados) estiver ativada, todas as verses instaladas desta biblioteca aparecero recuadas
sob ela.
Alm dos identificadores explcitos da verso, est disponvel um * , sinal que significa ltima
verso. Assim, possvel escolher uma entre as verses. Por padro, entretanto, esta opo est
desativada e somente a ltima verso exibida. Tambm possvel realizar uma multiseleo de
bibliotecas: basta manter a tecla <SHIFT> pressionada ao mesmo tempo em que se realiza a seleo
das mesmas.
Aps a confirmao da seleo (via OK), as bibliotecas so adicionadas lista na janela do Library
Manager.
Para incluir uma biblioteca ainda no instalada no sistema local, usa-se o boto Repositrio de
Bibliotecas, o qual abre o dilogo que permite realizar a instalao.
NOTA: O dilogo Repositrio de Bibliotecas s est disponvel se as caractersticas pr-definidas
escolhidas pelo usurio for Profissional ou se a opo Habilitar Dilogo de Repositrio estiver
habilitado. Para mais informaes sobre caractersticas, consulte Caractersticas no Manual de
Utilizao MasterTool IEC XE MU299048.

36

3. Comandos do Menu
Subdilogo Espao Reservado

Figura 3-2. Dilogo Acrescentar Biblioteca, Espao Reservado

NOTA: Espao Reservado s est disponvel se as caractersticas pr-definidas escolhidas pelo


usurio for Profissional ou se a opo Habilitar Dilogo de Repositrio estiver habilitado. Para mais
informaes sobre caractersticas, consulte Caractersticas no Manual de Utilizao MasterTool
IEC XE MU299048.
A guia Espao Reservado usada nos dois casos seguintes:

Criao de um projeto independente de dispositivo


Criao de um projeto de biblioteca <library_xy>, que referencia outra biblioteca destinada a ser
especfica do dispositivo

Espao Reservado no Projeto


Para que um projeto seja compatvel com vrios dispositivos intercambiveis, as bibliotecas
especficas dos dispositivos devem ser includas no gerenciador de bibliotecas do projeto atravs de
espaos reservados.
Assim que o dispositivo for especificado, os espaos reservados sero selecionados de acordo com a
descrio deste dispositivo. Mesmo se no houver uma descrio de dispositivo disponvel, os
espaos reservados permitiro que o projeto passe por uma verificao sinttica.
Para incluir uma biblioteca no gerenciador atravs de um espao reservado, esta deve ser selecionada
no campo Biblioteca Padro. Assim possvel catalogar as bibliotecas propostas de acordo com a
empresa fornecedora.
Alm disto, o nome do espao reservado deve ser inserido no campo de edio associado. Para
garantir a correta insero do nome, usa-se a lista de seleo que oferece todos os nomes dos espaos
reservados atualmente definidos nas descries dos dispositivos.
Espao Reservado no Projeto da Biblioteca
Se o projeto estiver baseado em outras bibliotecas que no as especficas do dispositivo, estas
devero ser includas atravs de espaos reservados.
37

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.

Figura 3-3. Dilogo Propriedades para Bibliotecas

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

Verso: (disponvel somente com a caracterstica Habilitar Dilogo do Repositrio selecionada,


consulte o item Caractersticas no Manual de Utilizao MasterTool IEC XE MU299048)
define-se qual verso da biblioteca deve ser usada no projeto:
o Verso especfica: ser usada exatamente a verso digitada (a partir da lista de seleo).
o Verso mais recente sempre: ser usada sempre a verso mais recente encontrada no
repositrio de bibliotecas, ou seja, os mdulos atualmente usados podem ser alterados caso
seja disponibilizada uma verso mais nova.

Visibilidade: (disponvel somente com a caracterstica Habilitar Dilogo do Repositrio


selecionada, consulte o item Caractersticas no Manual de Utilizao MasterTool IEC XE
MU299048) estas configuraes so importantes quando a biblioteca includa (referenciada por
outra biblioteca). Por padro esta opo no est ativa:
o Publicar todos os smbolos IEC no projeto como se esta referncia tivesse sido includa
diretamente: enquanto esta opo estiver desativada, os componentes da biblioteca atual - se
referenciada por outra - podero ser acessados exclusivamente atravs do caminho adequado
do espao reservado (composto dos espaos reservados da biblioteca principal e do seu
prprio espao reservado, alm dos mdulos e do identificador da varivel).
o Ocultar esta referncia na rvore de dependncia: se esta opo estiver ativada, a
biblioteca atual no ser exibida quando a biblioteca principal for includa no projeto. Isto
permite incluir bibliotecas ocultas, mas recomendado que o usurio tenha cuidado ao usar
esta opo, pois em caso de mensagens de erro, pode haver dificuldade em localizar a
biblioteca original.

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

As palavras-chave do tipo da varivel devem estar complementadas pelas palavras-chave de atributo,


como por exemplo RETAIN (VAR_INPUT RETAIN).
A declarao de uma varivel deve atender a determinadas regras.
Sintaxe:
<IDENTIFICADOR> {AT <ENDEREO>}:<TIPO> {:=<INICIALIZAO>};

As partes entre chaves ({}) so opcionais.


O identificador o nome da varivel. Os itens listados a seguir, em cada caso, devem ser
considerados ao definir um identificador. Veja o item Recomendaes na Nomeao de
Identificadores.

Ele no deve conter espaos nem caracteres especiais


Ele no diferencia maisculas e minsculas, o que significa que VAR1, Var e var1 so todas a
mesma varivel
O caractere sublinhado (por exemplo, A_BCD e AB_CD so considerados diferentes
identificadores), porm um identificador no deve conter mais de um sublinhado por linha
O comprimento do identificador (identificao) ilimitado
As regras abaixo se referem ao mltiplo uso de identificadores

Uso Mltiplo de Identificadores (Contextos)


Um identificador no deve ser usado duplamente no modo local e no pode ser idntico a uma
palavra-chave.
Globalmente, um identificador pode ser usado mais de uma vez. Assim, uma varivel local pode ter o
mesmo nome de uma varivel global. Em uma POU, neste caso, a varivel local ter prioridade.
Uma varivel definida em uma lista de variveis globais pode ter o mesmo nome de uma varivel
definida em outra lista de variveis globais. Neste contexto, observe as extenses da norma IEC
61131-3:

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:

GLOBLIST1.IVAR := GLOBLIST2.IVAR; (* IVAR da GLOBLIST2 copiado para IVAR


na GLOBLIST1 *)

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:

GLOBLIST1.IVAR := LIB1.GLOBLIST1.IVAR (* IVAR da GLOBLIST1 na biblioteca


LIB1 copiada para IVAR na GLOBLIST1 *)

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

(* valor de retorno de FUN copiado para a

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

Bit string, no para


operaes aritmticas

WORD

16 Bits

Bit string, no para


operaes aritmticas

DWORD

32 Bits

dw

Bit string, no para


operaes aritmticas

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

Tabela 4-1. Tipos de Dados


Nota:
x: Especificamente para variveis Booleanas, o prefixo escolhido o x (para diferenciar de BYTE
e para adaptar-se percepo do programador IEC). Veja endereamento %IX0.0.
Exemplos:
bySubIndex: BYTE;
sFileName: STRING;
udiCounter: UDINT;

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

Nomes de Variveis nas Bibliotecas do MasterTool IEC XE


Basicamente, veja acima Nomes de Variveis, com a seguinte exceo: variveis globais e
constantes no precisam de um prefixo de biblioteca, pois os contextos fazem as vezes do prefixo.
Exemplo:
g_iTest: INT; (* Declarao *)
CAN.g_iTest (* Implementao: chamada em um programa aplicativo *)

Tipos de Dados Definidos pelo Usurio (DUT)


Estrutura: o nome de cada tipo de dado de estrutura consiste em um prefixo de biblioteca (exemplo:
COM), um sublinhado e uma breve descrio da estrutura (exemplo: SDOTELEGRAM). O prefixo
associado para as variveis usadas desta estrutura devem vir diretamente aps a vrgula.
Exemplo:
TYPE COM_SDOTelegram : (* Prefixo: sdo *)
STRUCT
wIndex:WORD;
bySubIndex:BYTE;
byLen:BYTE;
abyData: ARRAY [0..3] OF BYTE;
END_STRUCT
END_TYPE

As enumeraes iniciam com o prefixo da biblioteca (exemplo: CAL), seguido de um sublinhado e


do identificador em letras maisculas.
ENUMs devem ser definidos com os valores INT corretos.

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

Funes, Blocos Funcionais, Programas (POU) e Aes


Os nomes das funes, blocos funcionais e programas consistem no prefixo da biblioteca (exemplo:
COM), um sublinhado e um breve nome (exemplo: SENDTELEGRAM) da POU. Assim como com
as variveis, sempre a primeira letra do nome da POU maiscula e as demais, minsculas.
Recomenda-se que o nome da POU seja composto de um verbo e um substantivo.
Exemplo:
FUNCTION_BLOCK Com_SendTelegram (* Prefixo: comst *)
Na parte de declarao, deve ser fornecida uma breve descrio da POU como um comentrio.
Posteriormente, em todas as entradas e sadas tambm deve haver comentrios. No caso de blocos
funcionais, o prefixo associado para configurar a instncia deve vir diretamente aps o nome.
As aes no tm prefixo. Somente as aes que devem ser chamadas apenas internamente, ou seja,
pela POU em si, iniciam com prv_.
POUs nas Bibliotecas do MasterTool IEC XE
Os nomes de POU nas bibliotecas do MasterTool IEC XE no precisam de um prefixo de biblioteca,
pois os contextos fazem as vezes deste. Para criar nomes de mtodo, as mesmas regras aplicam-se
para aes. As possveis entradas de um mtodo devem estar comentadas para sua documentao.
Tambm uma breve descrio do mtodo deve ser adicionada a esta declarao.

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;

(* Varivel inteira com valor


inicial 12*)

x : INT := 13 + 8;

(* Valor inicial definido por


uma expresso com constantes *)

y : INT := x + fun(4);

(* Valor inicial definido por


uma expresso contendo uma
chamada de funo. Neste caso,
atente para a ordem *)

z : POINTER TO INT := ADR(y);

(* No descrito pela norma IEC


61131-3: valores iniciais
definidos por uma funo de
endereo. Neste caso, o
ponteiro no ser inicializado
durante uma alterao online!
*)

END_VAR

Consulte os itens: ARRAYS, Estruturas, Tipos Subrange e Expresses Arbitrrias para


Inicializao de Variveis.
NOTA: As variveis das listas de variveis globais so sempre inicializadas antes das variveis
locais de uma POU.
Expresses Arbitrrias para Inicializao de Variveis
Uma varivel pode ser inicializada com qualquer expresso ST vlida. possvel acessar outras
variveis externas ao escopo, assim como tambm possvel chamar funes. No entanto, o
programador deve certificar-se de que a varivel usada para inicializao de outra varivel j foi
inicializada.
Exemplos para inicializaes de variveis vlidas:
VAR
x : INT := 13 + 8;
y : INT := x + fun(4);
z : POINTER TO INT := ADR(y);(* Cuidado: o ponteiro no ser inicializado
na alterao online! *)
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:

Todos identificadores de uma linha, incluindo o ltimo, se tornaro identificadores de variveis


declaradas.
O tipo de declarao determinado pelo ltimo identificador da linha. Neste contexto, aplica-se o
seguinte:
Identificador

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

Tabela 4-2. Tipo de Declarao

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

X %MD12 R 5; Nmero real

X AT %MD12: REAL := 5.0;(* Nmero real *)

B!

B: BOOL;

Tabela 4-3. Exemplos de Atalhos


Declarao AT
Para vincular uma varivel de projeto diretamente a um endereo definido, este pode ser inserido na
declarao AT da varivel. A atribuio de uma varivel a um endereo tambm pode ser feita no
dilogo de mapeamento de um dispositivo na configurao do CP (rvore de dispositivos).
46

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;

NOTA: Se variveis booleanas so atribudas a um Byte ou endereos WORD / DWORD, elas


ocupam um byte com TRUE ou FALSE e no somente o primeiro bit aps o offset.
Palavras-chave
Palavras-chave so escritas em letras maisculas em todos os editores.
As seguintes strings so consideradas palavras-chave, isto , no podem ser usadas como
identificadores para variveis ou POUs:
ABS, ACOS, ACTION (somente no formato Exportar), ADD, ADR, AND, ARRAY, ASIN, AT,
ATAN, BITADR, BOOL, BY,BYTE, CAL, CALC, CALCN, CASE, CONSTANT, COS, DATE,
DINT, DIV, DO, DT, DWORD, ELSE, ELSIF, END_ACTION (somente no formato Exportar),
END_CASE, END_FOR, END_FUNCTION (somente no formato Exportar),
END_FUNCTION_BLOCK (somente no formato Exportar), END_IF, END_PROGRAM (somente
no formato Exportar), END_REPEAT, END_STRUCT, END_TYPE, END_VAR, END_WHILE,
EQ, EXIT, EXP, EXPT, FALSE, FOR, FUNCTION, FUNCTION_BLOCK, GE, GT, IF, INDEXOF,
INT, JMP, JMPC, JMPCN, LD, LDN, LE, LINT, LN, LOG, LREAL, LT, LTIME, LWORD, MAX,
MIN, MOD, MOVE, MUL, MUX, NE, NOT, OF, OR, PARAMS, PERSISTENT, POINTER,
PROGRAM, R, REFERENCE, READ_ONLY, READ_WRITE, REAL, REPEAT, RET, RETAIN,
RETC, RETCN, RETURN, ROL, ROR, S, SEL, SHL, SHR, SIN, SINT, SIZEOF, SUPER, SQRT,
ST, STN, STRING, STRUCT, SUPER, SUB, TAN, THEN, TIME, TO, TOD, TRUE, TRUNC,
TYPE, UDINT, UINT, ULINT, UNTIL, USINT, VAR, VAR_ACCESS, (usadas eventualmente,
dependendo do hardware), VAR_CONFIG, VAR_EXTERNAL, VAR_GLOBAL, VAR_IN_OUT,
VAR_INPUT, VAR_OUTPUT, VAR_STAT, VAR_TEMP, WHILE, WORD, WSTRING e XOR.
Adicionalmente, todos os operadores de converso listados no Assistente de Entrada so tratados
como palavras-chave.

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

Variveis de Entrada - VAR_INPUT


Entre as palavras-chave VAR_INPUT e END_VAR, devem ser declaradas todas as variveis que
servem como variveis de entrada para uma POU. Isto significa que, na posio da chamada, o valor
das variveis pode ser especificado na mesma.
Considere a possibilidade de adicionar um atributo VAR_INPUT.
Exemplo:
VAR_INPUT
iIn1:INT (* 1. Varivel de entrada *)
END_VAR

Variveis de Sada - VAR_OUTPUT


Entre as palavras-chave VAR_OUTPUT e END_VAR, todas as variveis que servem como variveis
de sada de uma POU devem ser declaradas. Isto significa que estes valores so retornados pela POU
chamada. Ali, elas podem ser respondidas e usadas posteriormente.
Considere a possibilidade de adicionar um atributo VAR_OUTPUT.
Exemplo:
VAR_OUTPUT
iOut1:INT; (* 1. Varivel de sada *)
END_VAR

Variveis de Sada em Funes e Mtodos


De acordo com a IEC 61131-3 verso 2, funes (e mtodos) podem ter sadas adicionais. Estas
devem ser atribudas na chamada da funo da seguinte forma:
fun(iIn1 := 1, iIn2 := 2, iOut1 => iLoc1, iOut2 => iLoc2);

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

Variveis Globais - VAR_GLOBAL


Variveis normais, constantes, externas ou variveis remanentes so conhecidas atravs do projeto e
podem ser declaradas como variveis globais.
NOTAS:
Uma varivel definida localmente em uma POU com o mesmo nome de uma varivel global tem
prioridade na POU. As variveis globais sempre sero inicializadas antes das variveis locais das
POUs.
As variveis devem ser declaradas localmente entre as palavras-chave VAR_GLOBAL e
END_VAR. Considere a possibilidade de adicionar um atributo VAR_GLOBAL .
Uma varivel reconhecida como global pelo ponto precedente, por exemplo: .iGlobVar1.
Para informaes detalhadas sobre o mltiplo uso dos nomes das variveis, operador de escopo
global . e contextos, consulte Operador de Escopo Global.
Use a lista de variveis globais (GVLs) para estruturar e tratar variveis globais em um projeto. Uma
GVL pode ser adicionada via comando Acrescentar Objeto.
Variveis Temporrias - VAR_TEMP
Este item uma extenso da norma IEC 61131-3.
Declaraes VAR_TEMP somente so possveis em programas e blocos funcionais. Estas variveis
tambm so acessveis em um corpo de programa ou bloco funcional. Variveis declaradas
VAR_TEMP so (re)inicializadas toda vez que a POU chamada.
As variveis devem ser declaradas localmente entre as palavras-chave VAR_TEMP e END_VAR.
Variveis Estticas - VAR-STAT
Este item uma extenso da norma IEC 61131-3.
Pode-se usar variveis estticas em blocos funcionais, mtodos e funes. Elas devem ser declaradas
localmente entre as palavras-chave VAR_STAT e END_VAR e sero inicializadas na primeira
chamada da respectiva POU.
Variveis estticas somente so acessadas no escopo no qual so declaradas (como uma varivel
esttica em C), porm, como so globais, no perdem seu valor aps a POU ser finalizar a execuo
de uma chamada. Em uma funo, por exemplo, elas podem ser usadas como contador para o nmero
de chamadas da mesma.
Considere a possibilidade de adicionar um atributo VAR_STAT.
Variveis Externas VAR_EXTERNAL
So variveis globais importadas para uma POU.
Elas devem ser declaradas localmente entre as palavras-chave VAR_EXTERNAL e END_VAR e na
lista de variveis globais. A declarao deve corresponder exatamente declarao global. Se a
varivel global no existir, uma mensagem de erro ser exibida.
NOTA: No MasterTool IEC XE, no necessrio definir as variveis como externas. Esta palavrachave fornecida para manter a compatibilidade com a norma IEC 61131-3.
Exemplo:
49

4. Referncia de Programao
VAR_EXTERNAL
iVarExt1:INT; (* Primeira varivel externa *)
END_VAR

Atributo Palavras-chave para Tipos de Variveis


As palavras-chave de atributo listadas abaixo podem ser adicionadas declarao do tipo das
variveis para especificar o escopo:

RETAIN: Veja Variveis Remanentes do tipo RETAIN


PERSISTENT: Veja Variveis Remanentes do tipo PERSISTENT
CONSTANT: Veja Constantes

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

Legenda do comportamento: valor mantido (x) e valor inicializado (-).


Situao

Comportamento

Aps comando online

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

Tabela 4-4. Comportamento de Variveis Remanentes


Constantes
Constantes so identificadas pela palavra-chave CONSTANT e podem ser declaradas local ou
globalmente.
Sintaxe:
VAR CONSTANT
<Identificador>:<Tipo> := <Inicializao>;
END_VAR

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

Exemplo de uso de endereos no completamente definidos:


FUNCTION_BLOCK locio
VAR
xLocIn AT %I*: BOOL := TRUE;
xLocOut AT %Q*: BOOL;
END_VAR

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

NOTA: Alteraes nas E/S diretamente mapeadas so imediatamente exibidas na imagem do


processo, onde as alteraes nas variveis mapeadas via VAR_CONFIG no so exibidas antes do
final da tarefa considerada.
Declarao e Inicializao de Tipos de Dados Definidos pelo Usurio
Alm dos tipos de dados padro, podem ser usados tipos definidos pelo usurio.
Para obter mais informaes sobre a declarao e inicializao, consulte Tipos de Dados e Tipos de
Dados Definidos pelo Usurio.
Mtodos FB_Init e FB_Reinit
FB_Init
O mtodo FB_Init substitui o operador INI. Trata-se de um mtodo especial para blocos funcionais
que pode ser declarado explicitamente, mas que tambm est disponvel implicitamente. Assim, em
qualquer caso, ele pode ser acessado pelo bloco funcional.
Este mtodo contm o cdigo de inicializao do bloco funcional conforme declarado na parte de
declarao deste. Se este mtodo for declarado explicitamente, o cdigo de inicializao implcito
ser inserido neste mtodo. O programador pode adicionar outros cdigos de inicializao.
NOTA: Quando a execuo alcanar o cdigo de inicializao definido pelo usurio, o bloco
funcional estar completamente inicializado via cdigo de inicializao implcita.
O mtodo Init chamado aps o envio para cada instncia declarada.
ATENO:
Na alterao online, os valores anteriores substituiro os valores de inicializao.
Na sequncia de chamada, em caso de herana, consulte: FB_Exit.
Considere tambm a possibilidade de definir um mtodo de instncia de bloco funcional a ser
chamado automaticamente aps a inicializao via FB_init: atributo call_after_init.
Interface do Mtodo Iniciar
METHOD fb_init : BOOL
VAR_INPUT
bInitRetains : BOOL; // Se TRUE, as variveis retentivas sero
inicializadas (a quente / a frio).
bInCopyCode : BOOL; // Se TRUE, a instncia ser movida para o cdigo
copiado posteriormente(alterao online).
END_VAR

O valor de retorno no interpretado.


NOTA: Considere o uso de um mtodo de sada e a ordem de execuo resultante. Veja: FB_Exit.

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

Exemplo de declarao do bloco funcional serialdevice:


COM1 : serialdevice(nCOMnum:=1);
COM0 : serialdevice(nCOMnum:=0);

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

Considere tambm o mtodo FB_init e a seguinte ordem de execuo.

Mtodo de sada - sada da antiga instncia: old_inst.fb_exit(bInCopyCode := TRUE)


Mtodo de inicializao - inicializao da nova instncia: new_inst.fb_init(bInitRetains :=
FALSE, bInCopyCode := TRUE)
Copiar valores de blocos funcionais (copiar cdigo): copy_fub(&old_inst, &new_inst)

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

Texto: a string especificada ser exibida.

{info 'string'}

Informao: a string especificada ser exibida.

{warning digit 'string'}

Advertncia : a string especificada ser exibida.


Diferentemente de um Pragma obsoleto tipo de dado global, esta
advertncia explicitamente definida para a posio local.

{error 'string'}

Erro

: a string especificada ser exibida.

Tabela 4-5. Tipos de Pragmas de Mensagem

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

Figura 4-1. Sada na Janela de Mensagens


Pragma de Atributo
Pragmas de atributo podem ser atribudos a uma assinatura para influenciar a compilao e a prcompilao, isto , a gerao de cdigo.
Existem pragmas definidos pelos usurios que podem ser usados em combinao com pragmas
condicionais e tambm existem os pragmas de atributo pr-definidos como padres.

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'

Atributos Definidos pelo Usurio


Atributos de pragmas podem ser atribudos a POUs, declaraes de tipo ou variveis e podem ser
definidos por usurios arbitrrios ou atravs de uma aplicao. Estes atributos podem ser
selecionados antes da compilao por meio de pragmas condicionais.
Sintaxe:
{attribute 'atributo'}

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

Exemplo de POUs e aes:


Atributo 'displaymode' para a varivel dwVar1:
VAR
{attribute 'displaymode':='hex'}
dwVar1: DWORD;
END_VAR

Exemplo para variveis:


Atributo 'DoCount', definido em Operadores de Compilao Condicional, para a varivel ivar
adicionado:
PROGRAM MAINPRG
VAR
{attribute 'DoCount'}
ivar:INT;
bvar:BOOL;
END_VAR

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

Para exibio no formato decimal:


{attribute'displaymode':='dec'}
{attribute'displaymode':='decimal'}

Para exibio no formato hexadecimal:


{attribute'displaymode':='hex'}
{attribute'displaymode':='hexadecimal'}

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

Figura 4-2. Listas de Variveis Globais


As variveis B e C so membros da lista de variveis globais GVL_1, seus valores iniciais dependem
da varivel A.
VAR_GLOBAL
B : INT:=A+1;
C : INT:=A-1;
END_VAR

A varivel global A membro da lista de variveis globais GVL_2.


{attribute 'global_init_slot' := '300'}
VAR_GLOBAL
A : INT:=1000;
END_VAR

Configurando-se o atributo global_init_slot da GVL_2 para 300 (menor valor na ordem de


inicializao), assegura-se que a expresso A + 1 esteja definida quando da inicializao de B e C,
59

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

No programa principal, so definidas duas instncias deste bloco funcional:


PROGRAM mainprg
VAR
POU1, POU2: myPOU;
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

No programa principal, so definidas duas instncias deste bloco funcional:


PROGRAM MainPrg
VAR
POU1, POU2: myPOU;
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

No programa principal MainPrg, est definida a instncia fb do bloco funcional (POU).


PROGRAM MAINPRG
VAR
fb:POU;
newString: STRING;
END_VAR
newString:=fb.myStr;

A varivel myStr ser inicializada com o contexto atual, por exemplo,


Device.Application.MainPrg.fb. Este valor ser atribudo newString no programa principal.
Atributo Init_on_onlchange
O pragma {attribute 'init_on_onlchange'}, quando anexado a uma varivel faz com que esta seja
inicializada a cada alterao online.
Sintaxe:
{attribute 'init_on_onlchange'}

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

Uma instncia do bloco funcional chamada no programa MainPrg:


PROGRAM MAINPRG
VAR
myPOU:POU;
myString: STRING;
END_VAR
myPOU();
myString:=myPOU.str;

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.

Figura 4-3. Exemplo de Propriedade Preparada para Varivel de Monitorao

Figura 4-4. Exemplo de Visualizao de Monitorao


Existem duas maneiras de monitorar o valor atual das variveis de propriedade. Para o uso
especfico, considere qual atributo melhor se adequa para obter o valor desejado. Isto depender de
quais operaes nas variveis so implementadas na propriedade.
Pragma { attribute 'monitoring':= 'variable'}
Pragma {attribute 'monitoring':='call'}
No primeiro caso ({ attribute 'monitoring':= 'variable'}), uma varivel implcita criada para a
propriedade, que obter o valor da propriedade atual sempre que a aplicao chamar os mtodos Set
ou Get. O valor desta varivel implcita ser monitorado.
No segundo caso ({attribute 'monitoring':='call'}), o atributo pode ser usado para propriedades que
retornam tipos de dados simples ou ponteiros (no para tipos estruturados).
O valor a ser monitorado recuperado diretamente atravs da chamada da propriedade, ou seja, o
servio de monitorao do sistema de execuo chama o mtodo Get. Considere que, se quaisquer
operaes nas variveis forem implementadas na propriedade, o valor ainda poder ser alterado.
Atributo No_check
O pragma {attribute 'no_check'} adicionado com a finalidade de suprimir a chamada de quaisquer
POUs para Verificaes Implcitas. As funes de verificao podem influenciar a performance e,
por isto, razovel aplicar este atributo no inicio de POUs j aprovadas ou que so chamadas com
frequncia.
Sintaxe:
{attribute 'no_check'}

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

alinhado, isto , no haver intervalos de memria.

1-byte-alinhado (idntico ao alinhado).

2-byte-alinhado, isto , o tamanho mximo de um intervalo de memria 1 byte.

4-byte-alinhado, isto , o tamanho mximo de um intervalo de memria 3 bytes.

8-byte-alinhado, isto , o tamanho mximo de um intervalo de memria 7 bytes.

Tabela 4-6. Atributo Pack_mode


Exemplo:
{attribute 'pack_mode':= '1'}
TYPE myStruct:
STRUCT
Enable: BOOL;
Counter: INT;
MaxSize: BOOL;
MaxSizeReached: BOOL;
END_STRUCT
END_TYPE

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;

A seguinte chamada incompleta da varivel resultar em erros de compilao:


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:

se um determinado tipo de dado ou varivel est declarado


se um tipo ou varivel apresenta um determinado atributo
se uma varivel apresenta um determinado tipo de dado
se uma determinada POU ou tarefa est disponvel e parte da rvore de chamadas

NOTA: Uma POU ou uma GVL declarada na rvore de POUs no pode usar a instruo {define...}
declarada em uma aplicao.
Pragma

Descrio

{define identifier string}

Durante o pr-processamento, todas as instncias subsequentes do


identificador sero substitudas pela sequncia de tokens se a string
destes no estiver vazia (o que permitido e definido). O
identificador permanece definido e no escopo at o final do objeto ou
at que seja indefinido pela diretiva {undefine}. Veja abaixo o
exemplo Compilao condicional.

{undefine identifier}

A definio do identificador de pr-processamento ({define}, veja


acima) ser removida e o identificador se tornar indefinido . Se o
identificador especificado no estiver definido atualmente, este
pragma ser ignorado.

{IF expr}
...
{ELSIF expr}
...
{ELSE}
...
{END_IF}

Estes so pragmas para compilao condicional. As expresses


especificadas expr devem ser uma constante no perodo de
compilao. Elas so avaliadas na ordem em que aparecem, at que
uma das expresses seja avaliada em um valor diferente de zero. O
texto associado diretiva bem sucedida ser pr-processado e
compilado normalmente; os outros sero ignorados. A ordem das
sees determinada, porm as sees elsif e else so opcionais e
as sees elsif podem aparecer arbitrariamente com frequncia.
Na constante expr, vrios operadores de compilao condicional
podem ser usados (veja abaixo).

Tabela 4-7. Pragmas Condicionais


Operadores de Compilao Condicional
Na expresso constante expr de um pragma de compilao condicional ({if} ou {elsif}), podem ser
usados vrios operadores, os quais podem no estar definidos ou redefinidos via {undefine} ou
{define}, respectivamente. Estas expresses, assim como a definio feita em {define}, podem
tambm ser usadas em Definies do Compilador no dilogo Propriedades de um objeto.
Os seguintes operadores so suportados:
Sintaxe

Descrio

Defined (Identificador)

Quando aplicado a um identificador, seu valor ser TRUE se este


identificador for definido com uma instruo {define} e esta no for
revertida atravs de {undefine}. Caso contrrio, o valor ser
FALSE.
Exemplo:
Pr-requisito: h duas POUs. A varivel pdef1 definida pela
instruo {define} na POU_1, mas no em POU_2. Ambas
possuem o cdigo abaixo:
{IF defined (pdef1)}
(* Este cdigo processado na POU_1*)
{info 'pdef1 defined'}
ivar := ivar + SINT#1;

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)

Quando aplicado a um identificador de tipo, seu valor ser TRUE


se o tipo com este nome especfico foi declarado. Caso contrrio,
ser FALSE.
Exemplo: Em um primeiro momento declare o tipo de dado DUT
no projeto, em um segundo momento no declare, veja a
diferena na varivel booleana bDutDefined.
{IF defined (type:DUT)}
(* A seguinte linha de cdigo somente ser processada se houver
o tipo declarado *)
bDutDefined := TRUE;
{END_IF}

Defined (pou:nome da POU)

Quando aplicado a um nome de POU, seu valor ser TRUE se a


POU ou uma ao com este nome especfico foram declaradas.
Caso contrrio, ser FALSE.
Exemplo:
Pr-requisito: Em um cenrio a POU CheckBounds foi adicionado
ao projeto e em outra situao no. Em uma POU existe o cdigo
abaixo:
{IF defined (pou:CheckBounds)}
(* A seguinte linha de cdigo somente ser processada no cenrio
em que h a POU CheckBounds *)
arrTest[CheckBounds(0,i,10)] := arrTest[CheckBounds(0,i,10)] + 1;
{ELSE}
(* A seguinte linha de cdigo somente ser processada no cenrio
em que no h a POU CheckBounds *)
arrTest[i] := arrTest[i]+1;
{END_IF}

Hasattribute (pou: nome da


POU, 'atributo')

Quando aplicado a uma POU, seu valor ser TRUE se este


determinado atributo for especificado na primeira linha da parte de
declarao das POUs.
Exemplo:
Pr-requisito: h dois blocos funcionais, fun1 e fun2. Em fun1,
adicionalmente, h o atributo 'vision'.
Definio de fun1:
{attribute 'vision'}
FUNCTION fun1 : INT
VAR_INPUT
i : INT;
END_VAR
VAR
END_VAR
Definio de fun2:
FUNCTION fun1 : INT
VAR_INPUT
i : INT;
END_VAR

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

Quando aplicado a uma varivel, seu valor ser TRUE se este


determinado atributo for especificado via instruo {attribute} na
linha anterior declarao da varivel.
Exemplo:
Pr-requisito: h duas POUs, POU_1 e POU_2. A varivel
g_globalIn usada em ambas POUs, porm em POU_1
adicionalmente h o atributo 'DoCount'.
Declarao de g_globalInt em POU_1 :
VAR_GLOBAL
{attribute 'DoCount'}
g_globalInt : INT;
g_multiType : STRING;
END_VAR
Declarao de g_globalInt em POU_2 :
VAR_GLOBAL
g_globalInt : INT;
g_multiType : STRING;
END_VAR
{IF hasattribute (variable: g_globalInt, 'DoCount')}
(* A seguinte linha de cdigo somente ser processada em
POU_1, pois ali a varivel "g_globalInt" apresenta o atributo
'DoCount' *)
g_globalInt := g_globalInt + 1;
{END_IF}

Hastype (variable:nome da
varivel, tipo)

Quando aplicado a uma varivel, seu valor ser TRUE se esta


determinada varivel apresentar o tipo especificado. Caso
contrrio, ser FALSE.
ANY
ANY_DERIVED
ANY_ELEMENTARY
ANY_MAGNITUDE
ANY_BIT
ANY_STRING
ANY_DATE
ANY_NUM
ANY_REAL
ANY_INT
LREAL
REAL
LINT
DINT
INT
SINT
ULINT
UDINT
UINT
USINT
TIME
LWORD
DWORD
WORD
BYTE
BOOL

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)

Se "define" (define-ident) estiver configurado e apresentar o valor


especificado (string), ento seu valor ser TRUE. Caso contrrio,
ser FALSE.
Exemplo:
Pr-requisito: a varivel test usada em uma POU. Em um
primeiro momento ela tem o valor "1" em um segundo momento
tem o valor "2".
{IF hasvalue(test,'1')}
(* A seguinte linha de cdigo somente ser processada quando a
varivel "test" apresenta o valor "1" *)
x := x + 1;
{ELSIF hasvalue(test,'2')}
(* A seguinte linha de cdigo somente ser processada quando a
varivel "test" apresenta o valor "2" *)
x := x + 2;
{END_IF}

NOT operador

Inverte o valor do operador.


Exemplo:
Pr-requisito: Em um cenrio a funo CheckBounds foi
adicionado ao projeto e em outra situao no, a POU MainPrg
existe em ambos os casos. Em uma POU existe o cdigo abaixo:
{IF defined (pou: MainPrg) AND NOT (defined (pou:
CheckBounds))}
(* A seguinte linha de cdigo somente ser executada no cenrio
em que no h a funo CheckBounds. *)
bAndNotTest := TRUE;
{END_IF}

Operador AND operador

Ser TRUE se ambos operadores forem TRUE.


Exemplo:
Pr-requisito: Em um cenrio a funo CheckBounds foi
adicionado ao projeto e em outra situao no, a POU MainPrg
existe em ambos os casos. Em uma POU existe o cdigo abaixo:
{IF defined (pou: MAINPRG) AND (defined (pou: CheckBounds))}
(* A seguinte linha de cdigo somente ser processada no
primeiro cenrio, pois somente ali MainPrg e CheckBounds esto
definidos*)
bAndTest := TRUE;
{END_IF}

Operador OR operador

Ser TRUE se um dos operadores for TRUE.


Exemplo:
Pr-requisito: Em um cenrio a funo CheckBounds foi
adicionado ao projeto e em outra situao no, a POU MainPrg
existe em ambos os casos. Em uma POU existe o cdigo abaixo:
{IF defined (pou: MAINPRG) OR (defined (pou: CheckBounds))}
(* A seguinte linha de cdigo ser processada nos dois cenrios,
pois ambos contm no mnimo uma das POUs *)
bOrTest := TRUE;
{END_IF}

70

4. Referncia de Programao
(Operador)

Aplica "()" no operador.

Tabela 4-8. Sintaxe de Defined


Funcionalidade Listar Componentes
A norma IEC 61131-3 d suporte a entradas de texto. As funcionalidades de Listar Componentes
(menu Ferramentas, Opes, SmartCoding) auxiliam na insero de um identificador correto.

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:

Figura 4-5. Listar Componentes (Componentes de uma Estrutura)

Figura 4-6. Listar Componentes (Componentes de um Bloco Funcional)

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:

Resetar Mapeamento: Este boto reseta as configuraes de mapeamento para os padres


definidos pelo arquivo de descrio de dispositivo.
Sempre atualizar variveis: Se esta opo for ativada, todas as variveis sero atualizadas em
cada ciclo da tarefa, no importa se eles so usados, ou se eles so mapeados para uma entrada ou
sada.

Canais

Figura 4-7. Janela de Canais

Varivel: Pode ser mapeada uma varivel para o canal, atravs do Assistente de Entrada, ou
criada uma nova, atravs da edio do campo.

Mapeamento: Indica se a varivel ser nova (

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.

), ser declarada internamente como uma

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

Figura 4-8. Exemplo de Endereo Manualmente Modificado


S possvel modificar o endereo de entrada ou de sada inteira, no os seus subelementos. Assim,
se uma entrada ou sada est representado na tabela de mapeamento com qualquer subrvore, apenas
o campo de endereo mais alto pode ser editado.
Se voc quiser remover a fixao do valor, reabra a edio do campo Endereo, exclua o valor e
feche com <ENTER>. O endereo e os endereos seguintes sero definido de volta para os valores que
tinham antes da modificao manual, e o smbolo
ser removido.
NOTA: Em projetos criados a partir do modelo Projeto MasterTool Padro, os canais dos
dispositivos sero modificados pelo MasterTool IEC XE com o objetivo de manter uma melhor
distribuio e organizao de canais. Portanto, eles aparecero com o smbolo .

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

Tabela 4-9. Tipos de Dados Inteiros


Como resultado, quando tipos maiores so convertidos em menores, informaes podem ser
perdidas.
Veja tambm: Constantes Numricas.
REAL/LREAL
REAL e LREAL so os chamados tipos de ponto flutuante. Eles so utilizados para representar
nmeros racionais. 32 bits de espao de memria so reservados para REAL e 64 para LREAL.
Intervalo de valores para REAL: 1.401298e-45 a 3.402823466e+38.
Intervalo de valores para LREAL: 2.2250738585072014e-308 a 1.7976931348623157e+308.
NOTAS:
- O suporte ao tipo de dado LREAL depende do dispositivo. Consulte a documentao
correspondente para verificar se o tipo LREAL de 64 bits persiste ou se ser convertido para REAL
durante a compilao (possivelmente com perda de informaes).
- Se um tipo de dado REAL ou LREAL for convertido em SINT, USINT, INT, UINT, DINT,
UDINT, LINT ou ULINT e o valor do nmero real estiver fora do intervalo de valor daquele inteiro,
o resultado ser indefinido e depender do dispositivo. At uma exceo possvel neste caso. Para
obter um cdigo independente do dispositivo, gerencie qualquer excesso de limite da faixa pela
aplicao. Se o nmero REAL/LREAL estiver na faixa de valor do inteiro, a converso funcionar
em todos os sistemas da mesma forma.
Veja tambm: Constantes REAL/LREAL.
STRING
Uma varivel do tipo STRING pode conter qualquer sequncia de caracteres. O item tamanho, na
declarao, determina quanto espao de memria deve ser reservado para a varivel. Trata-se do
nmero de caracteres de uma string e pode ser posicionado entre parnteses ou colchetes. Se no for
especificado tamanho, ser usado o tamanho padro de 80 caracteres.
O comprimento da string, basicamente, no limitado no MasterTool IEC XE, mas as funes de
string somente podem processar strings de 1 a 255 caracteres. Se uma varivel for inicializada com
uma string muito longa para os tipos de dados das variveis, a string ser truncada da direita para a
esquerda.
Exemplo de uma declarao de string com 35 caracteres:
str:STRING(35):='Isto uma String';

Veja tambm: WSTRING e Constantes STRING.

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:

LTIME (disponvel tambm como um tipo de dado de tempo de 32 bits)


Constantes TIME
Constantes DATE
Constantes DATE_AND_TIME
Constantes TIME_OF_DAY

Extenses da Norma IEC 1131-3


Tipos de Dados Adicionais Norma
Alm dos tipos de dados em conformidade com a IEC 61131-3, h tambm alguns tipos extensivos a
norma, disponveis implicitamente no MasterTool IEC XE:

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

Compare com Constantes TIME (tamanho 32 bits e resoluo em milissegundos).


75

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

Veja tambm: STRING e Constantes STRING (Operandos).


Ponteiros
Como uma extenso da norma IEC 61131-3, possvel usar ponteiros.
Ponteiros salvam os endereos das variveis, programas, blocos funcionais, mtodos e funes
durante a execuo de um programa aplicativo. Um ponteiro pode apontar para qualquer objeto e tipo
de dado, inclusive os definidos pelo usurio. Observe a possibilidade de usar uma funo de
verificao de ponteiro implcita.
Sintaxe:
<Identificador>: POINTER TO <Tipo de dado | Bloco funcional | Programa |
Mtodo | Funo>;

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.

Pint[i] retornar o tipo de dado de base.


O ndice de acesso para ponteiros aritmtico: se o ndice de acesso for usado em uma varivel
do tipo ponteiro, o offset ser calculado por: pint[i] = (pint + i * SIZEOF(base type))^. O ndice
76

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;

Ao ser chamada, a funo apresenta os seguintes parmetros de entrada:

ptToTest: endereo de destino do ponteiro.


iSize: tamanho da varivel referenciada. O tipo de dado de iSize deve ser inteiro e compatvel e
deve cobrir o tamanho de dados potenciais mximo armazenados no endereo do ponteiro.
iGran: granularidade do acesso, ou seja, o maior tipo de dado no estruturado usado na varivel
referenciada. O tipo de dado de iGran deve ser inteiro e compatvel.
bWrite: tipo do acesso (TRUE= acesso de escrita, FALSE= acesso de leitura). O tipo de dado de
bWrite deve ser BOOL.
Valor de retorno: endereo usado para desrefernciar o ponteiro (passado no primeiro parmetro
de entrada).

Tipos de Dados Definidos pelo Usurio


Alm dos tipos de dados padronizados, o usurio pode definir tipos de dados especiais em um
projeto.

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>

ll1, ll2 e ll3 identificam o limite inferior do intervalo.


ul1, ul2 e ul3 identificam o limite superior.
Os valores do intervalo devem ser inteiros.
Exemplo:
Card_game: ARRAY [1..13, 1..4] OF INT;

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

Exemplo de inicializao de um ARRAY de uma estrutura:


Definio da estrutura:
TYPE STRUCT1
STRUCT
p1:int;
p2:int;
p3:dword;
END_STRUCT
END_TYPE

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)];

Exemplo de inicializao parcial de um ARRAY:


arr1 : ARRAY [1..10] OF INT := [1,2];

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

Ao ser chamada, a funo apresenta os seguintes parmetros de entrada:

Index: ndice do elemento do campo


Lower: limite inferior do intervalo
Upper: limite superior do intervalo

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]);

Inicializaes com variveis no so possveis. Veja um exemplo da inicializao de um ARRAY de


uma estrutura em ARRAYS.

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;

Uso do valor de enumerao TRAFFIC_SIGNAL em uma POU:


TRAFFIC_SIGNAL1:=0; (* O valor do sinal de trnsito vermelho*)

Extenses Norma IEC 61131-3


O tipo enumerao pode ser usado (como um operador de escopo) para tornar no ambguo o acesso
a uma constante de enumerao.
Assim, possvel usar a mesma constante em diferentes enumeraes.
Exemplo:
Definio de duas enumeraes:
TYPE COLORS_1: (red, blue);
END_TYPE
TYPE COLORS_2: (green, blue, yellow);
END_TYPE
81

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>

Deve ser um identificador IEC vlido.

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

Tabela 4-10. Tipos Subrange


Exemplos:
TYPE
SubInt : INT (-4095..4095);
END_TYPE

Declarao direta de uma varivel com um tipo subrange:


VAR
i : INT (-4095..4095);
ui : UINT (0..10000);
END_VAR

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

Ao ser chamada, a funo apresenta os seguintes parmetros de entrada:

Value: o valor a ser atribudo ao tipo de intervalo


Lower: o limite inferior do intervalo
Upper: o limite superior do intervalo

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 de atribuio: :=, MOVE


Operadores aritmticos
Operadores de bitstring
Operadores de deslocamento de bits
Operadores de seleo
Operadores de comparao
Operadores de endereo
Operadores de chamada
Funes de converso de tipo
Funes numricas
Operadores adicionais norma IEC
Operadores de escopo adicionais norma IEC

Operadores Aritmticos
Os seguintes operadores, prescritos pela norma IEC61131-3, esto disponveis:

ADD
MUL
SUB
DIV
84

4. Referncia de Programao

MOD
MOVE

Alm destes, h tambm dois outros operadores extensivos norma:

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:

NOTA: Observe que diferentes dispositivos podem apresentar diferentes comportamentos em


relao diviso por zero.

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.

Figura 4-9. Exemplo em CFC em Combinao com EN/EN0


Somente se en_i for TRUE, var1 ser atribuda a var2.
Exemplo em IL:

Resultado: var2 obtm o valor de var1.


O mesmo resultado ser obtido conforme o exemplo abaixo:

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)

Tipo de dado da constante implicitamente


usada para o tamanho encontrado

0 <= size of x < 256

USINT

256 <= size of x < 65536

UINT

65536 <= size of x < 4294967296

UDINT

4294967296 <= size of x

ULINT

Tabela 4-11. Operador SIZEOF

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:

O resultado em Var1 2#1000_0010.


Exemplo em ST:
VAR
Var1:BYTE;
END_VAR
var1 := 2#1001_0011 AND 2#1000_1010;

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:

O resultado em var1 (do tipo BYTE) 2#1001_1011.


Exemplo em ST:
Var1 := 2#1001_0011 OR 2#1000_1010;

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:

O resultado em var1 (do tipo BYTE) 2#0001_1001.


Exemplo em ST:
Var1 := 2#1001_0011 XOR 2#1000_1010;

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:

O resultado em var1 (do tipo BYTE) 2#0110_1100.


Exemplo em ST:
Var1 := NOT 2#1001_0011;
90

4. Referncia de Programao
Exemplo em FBD:

Operadores de Deslocamento de Bits


Os seguintes operadores de deslocamento de bits, correspondentes norma IEC 61131, esto
disponveis:
SHL, SHR, ROL e ROR.
SHL
Operador IEC: deslocamento bitwise de um operando esquerda.
erg:= SHL (in, n)

in: operando a ser deslocado para a esquerda.


n: nmero de bits pelos quais in deslocado para a esquerda.
Se n exceder o tamanho do tipo de dado, os operandos do tipo BYTE, WORD, DWORD e LWORD
sero preenchidos com zeros. Os operandos de tipos de dados atribudos, como por exemplo INT,
sofrero um deslocamento aritmtico, ou seja, eles sero preenchidos com o valor do bit mais acima.
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 shl_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:=SHL(in_byte,n); (* O resultado 16#14 *)
erg_word:=SHL(in_word,n); (* O resultado 16#0114 *)

Exemplo em FBD:

Exemplo em IL:

91

4. Referncia de Programao
SHR
Operador: deslocamento bitwise direita de um operando.
erg:= SHR (in, n)

in: operando a ser deslocado para a direita.


n: nmero de bits pelos quais in deslocado para a direita.
Se n exceder o tamanho do tipo de dado, os operandos do tipo BYTE, WORD, DWORD e LWORD
sero preenchidos com zeros. Os operandos de tipos de dados atribudos, como por exemplo INT,
obtero um deslocamento aritmtico, ou seja, eles sero preenchidos com o valor do prximo bit.
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 o seguinte exemplo, em notao hexadecimal, para verificar os resultados da operao
aritmtica dependendo do tipo da varivel de entrada (BYTE ou WORD).
Exemplo em ST:
PROGRAM shr_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:=SHR(in_byte,n); (* O resultado 16#11 *)
erg_word:=SHR(in_word,n); (* O resultado 16#0011 *)

Exemplo em FBD:

Exemplo em IL:

ROL
Operador IEC: rotao bitwise de um operando para a esquerda.
erg:= ROL (in, n)

Tipos de dados permitidos: BYTE, WORD, DWORD e LWORD.


In ser deslocado uma posio de bit para a esquerda n vezes, enquanto o bit que est mais a
esquerda ser reinserido a partir da direita.

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)

Tipos de dados permitidos: BYTE, WORD, DWORD e LWORD.


In ser deslocado uma posio de bit para a direita n vezes, enquanto o bit que est mais a esquerda
ser reinserido a partir da esquerda.
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.

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

Tipos de dados permitidos:


IN0, IN1 e OUT: Qualquer Tipo;
G: BOOL;
Exemplo em IL:

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

IN0, IN1 e OUT podem ser de qualquer tipo de varivel.


Exemplo em IL:

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)

IN0, IN1 e OUT podem ser de qualquer tipo de varivel.


Exemplo em IL:

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)

Que pode ser escrito como:


OUT := MIN (MAX (IN, Min), 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)

Que pode ser escrito como:


OUT := INK;

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)

Funes de Converso de Tipo


A converso de um tipo maior em um menor (por exemplo de INT para BYTE ou de DINT para
WORD) proibida. Pode-se, basicamente, converter qualquer tipo elementar em outro tipo
elementar.
Sintaxe:
<elem.Typ1>_TO_<elem.Typ2>

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

Converso entre Tipos de Nmeros Inteiros


Converso de um tipo de nmero inteiro em outro tipo.
Sintaxe para o operador de converso:
<Tipo de dado INT>_TO_<tipo de dado INT>

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>

A data ser armazenada internamente em uma DWORD, em segundos, a partir de 1 de Janeiro de


1970. Este valor ser, ento, convertido.
Ao executar uma converso de um tipo maior para um menor, h o risco de perder algumas
informaes.
Para variveis do tipo STRING, o resultado uma constante de data.
Exemplos em IL:

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:

Operadores Adicionais Norma IEC


Operadores de Escopo Adicionais Norma IEC
Alm dos operadores IEC, h vrias possibilidades de precisar o acesso a variveis ou mdulos se o
nome destes for usado vrias vezes no escopo de um projeto. Para definir o respectivo contexto, os
seguintes operadores de escopo podem ser usados:

. (operador de escopo global)


<nome da lista de variveis globais>
<nome de biblioteca>
<nome de enumerao>

Operador de Escopo Global


Operador de escopo: extenso da norma IEC 61131-3.
Um caminho de instncia iniciando com . abre um escopo global (contexto). Assim, se houver uma
varivel local e uma global com o mesmo nome <nome da varivel>, .<nome da varivel> estar
referindo-se varivel global.
Nome da Lista de Variveis Globais
Operador de escopo: extenso da norma IEC 61131-3.
O nome de uma lista de variveis globais pode ser usado como contexto para as variveis constantes
desta lista. Assim, possvel declarar variveis com nomes idnticos em diferentes listas e,
precedendo o nome da varivel por <nome da lista de variveis globais>.<nome da varivel
global>, possvel acessar aquela desejada.
Exemplo:
As listas de variveis globais globlist1 e globlist2 contm uma varivel chamada varx. Na linha
seguinte, varx da globlist2 copiada para varx na globlist1:
globlist1.varx := globlist2.varx; (* Nesta linha de cdigo *)

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 (BOOL, TIME, DATE, TIME_OF_DAY, DATE_AND_TIME, nmero,


REAL/LREAL, STRING, Literais tipados)
Variveis
Endereos
Funes

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>

Em vez de T#, tambm possvel usar t#, time# e TIME#.


A declarao de tempo pode incluir as unidades de tempo descritas abaixo. Elas devem ser usadas na
sequncia a seguir, porm no necessrio utilizar todas elas:

d: dias
h: horas
m: minutos
s: segundos
ms: milissegundos

Exemplos de constantes TIME corretas em uma atribuio ST:


TIME1 := T#14ms;
TIME1 := T#100S12ms; (* O componente mais alto pode exceder este limite *)
TIME1 := t#12h34m15s;

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

Sintaxe para a constante LTIME:


LTIME#<Declarao do tempo>

Alm das unidades de tempo usadas com a constante TIME (veja acima), a declarao de tempo pode
incluir:

us : microssegundos
ns : nanosegundos

Exemplos de constantes LTIME corretas em uma atribuio ST:


LTIME1 := LTIME#1000d15h23m12s34ms2us44ns
LTIME1 := LTIME#3445343m3424732874823ns

Veja tambm: Tipos de Dado de Tempo.


Constantes DATE
Estas constantes podem ser usadas para inserir datas.
Sintaxe:
d#<Declarao de data>

Alm de d#, podem ser usados tambm D#, date# e DATE#.


A declarao da data deve ser inserida no formato <ano-ms-dia>.
Valores DATE so tratados internamente como DWORD, contendo o intervalo de tempo em
segundos desde 01.01.1970, 00:00 h.
Exemplos:
DATE#1996-05-06
d#1972-03-29

Veja tambm: Tipos de Dado de Tempo.


Constantes TIME_OF_DAY
Este tipo de constante utilizada para armazenar a hora do dia.
Sintaxe:
tod#<Declarao do tempo>

Em vez de tod#, tambm podem ser usados: TOD#, time_of_day# e TIME_OF_DAY#.


A declarao de tempo deve ser inserida no formato <hora:minuto:segundo>.
Segundos podem ser inseridos como nmeros reais, ou seja, fraes de um segundo podem ser
especificadas.
Valores TIME_OF_DAY so tratados internamente como valores DWORD contendo o intervalo de
tempo em milissegundos desde as 00:00 h.
Exemplos:
TIME_OF_DAY#15:36:30.123
tod#00:00:00

Veja tambm: Tipos de Dado de Tempo.

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>

Alm de dt#, podem ser usados tambm DT#, date_and_time# e DATE_AND_TIME#.


A declarao da data e hora deve ser inserida no formato <ano-ms-dia-hora:minuto:segundo>.
Segundos podem ser inseridos como nmeros reais, ou seja, fraes de um segundo tambm podem
ser especificadas.
Valores DATE_AND_TIME so tratados internamente como DWORD contendo o intervalo de
tempo em segundos desde 01.01.1970, 00:00 h.
Exemplos:
DATE_AND_TIME#1996-05-06-15:36:30
dt#1972-03-29-00:00:00

Veja tambm: Tipos de Dado de Tempo.


Constantes Numricas
Valores numricos podem assumir valores binrios, octais, decimais e hexadecimais.
Se um valor inteiro no for um nmero decimal, a base deve ser seguida pelo sinal (#) na frente da
constante inteira.
Os valores para os nmeros 10-15 (hexadecimais) sero representados pelas letras A-F.
Pode-se incluir um sublinhado no nmero.
Exemplos:
14
2#1001_0011
8#67
16#A

(*
(*
(*
(*

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

$<dois nmeros hexadecimais>

Representao hexadecimal do cdigo do caractere de 8 bits

$$

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

Tabela 4-12. Possibilidades de Uso para o Sinal $


Exemplos:
' Abby and Craig '
':-)'
'costs ($$)'

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>

Para blocos funcionais e variveis de programa:


<NOME DO BLOCO FUNCIONAL>.<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;

O terceiro bit da varivel A ser configurado para o valor da varivel B.


Se o ndice for maior que o tamanho do bit de uma varivel, a seguinte mensagem de erro ser
apresentada: ndice '<n>' fora do intervalo vlido para a varivel '<var>'!
O endereamento de bit possvel com os seguintes tipos de varivel: SINT, INT, DINT, USINT,
UINT, UDINT, BYTE, WORD, DWORD.
Se o tipo da varivel no permitir o acesso a bit, a seguinte mensagem de erro ser gerada: Tipo de
dado invlido '<type>' para indexao direta.
Um acesso a bit no deve ser atribudo uma varivel VAR_IN_OUT.
Acesso a Bit Via Constante Global
Se foi declarada uma constante global definindo a indexao do bit, esta constante pode ser usada
para um acesso a bit.
Abaixo, se encontram exemplos para um acesso a bit via uma constante global em uma varivel e em
uma varivel do tipo estrutura.
Declarao em Listas de Variveis Globais
A varivel Enable define qual bit deve ser acessado:
VAR_GLOBAL CONSTANT
enable:int:=2;
END_VAR

Exemplo 1, acesso a bit em uma varivel inteira:


Declarao na POU:
VAR
xxx:int;
END_VAR

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

Tabela 4-13. Exemplos Posies de Memria


Palavras, bytes e at mesmo bits podem ser acessados da mesma forma: o endereo %MX96.0
permite o acesso ao primeiro bit na word 96 (bits so geralmente salvos como words especiais).
Consulte Endereo para obter mais informaes sobre endereamento.
NOTA: Alteraes online podem alterar os contedos nos endereos. Considere isto ao usar
ponteiros em endereos.
Endereo
Ao especificar um endereo, a posio de memria e o tamanho so indicados por uma sequncia de
caracteres especiais.
120

4. Referncia de Programao
Sintaxe:
Endereo com bit:
%<Prefixo da rea de memria><Tamanho do prefixo><nmero.nmero>

Endereo sem bit:


%<Prefixo da rea de memria><Tamanho do prefixo><nmero>
Tipo

Descrio

Entrada (entradas fsicas via driver de entrada, "sensores")

Sada (sadas fsicas via driver de sada, "atuadores").

Posio da memria

Tabela 4-14. Prefixos da rea de Memria Suportados


Tipo

Descrio

Bit nico

Byte (8 bits)

Word (16 bits)

Double Word (32 bits)

Tabela 4-15. Prefixos de Tamanho Suportados


Exemplos:
Exemplo

Descrio

%QX7.5

Bit de sada 7.5

%IW215

Word de entrada 215

%QB7

Byte de sada 7

%MD48

Double Word na posio de memria 48

ivar AT %IW0 : WORD;

Exemplo de uma declarao de varivel incluindo uma atribuio de


endereo.

Tabela 4-16. Exemplos de Endereamento


Para atribuir um endereo vlido em uma aplicao, primeiramente necessrio conhecer a posio
adequada da memria na imagem do processo, ou seja, a rea de memria a ser usada: Entrada (I),
Sada (Q) ou Memria (M), conforme mencionado acima. A seguir, especifique o tamanho desejado:
bit, byte, word e dword (veja acima: X, B, W, D).
A configurao atual do dispositivo e as definies (estrutura de hardware, descrio do dispositivo,
configuraes de E/S) tm um papel decisivo no endereamento. Considere especialmente as
diferenas na interpretao dos endereos entre dispositivos usando Modo de Endereamento de Byte
ou aquelas usando o Modo de Endereamento IEC orientado Word. Assim, dependendo do
tamanho e do modo de endereamento, clulas diferentes de memria podem ser endereadas pela
mesma definio de endereo.
Na Tabela 4-17, veja uma comparao entre o endereamento de byte e o endereamento IEC
orientado word para bits, bytes, palavras e palavras duplas. Visualize ainda as reas de
sobreposio de memria no caso do modo de endereamento de byte.
Em relao notao, considere que, para endereos de bit, o modo de endereamento sempre
orientado word, ou seja, a posio antes do ponto corresponde ao nmero da word e a posio aps
o nome representa o nmero do bit.

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

Tabela 4-17. Comparao Endereamento Byte X Word (D,W,B,X)


Sobreposio dos intervalos de memria em caso de modo de endereamento de byte:
D0 contm B0 - B3. W0 contm B0 e B1. W1 contm B1 e B2. W2 contm B2 e B3. Para acessar a
rea fora da sobreposio, W1, D1, D2 e D3 no devem ser usados para endereamento.
NOTAS:
- Valores booleanos sero distribudos por byte, se nenhum endereo de bit nico for explicitamente
especificado. Exemplo: uma alterao no valor de varbool1 AT %QW0 afeta o intervalo de QX0.0 a
QX0.7.
- Alteraes online podem alterar os contedos nos endereos. Considere isto ao usar ponteiros em
endereos.
Funes
Em ST, uma chamada de funo pode tambm funcionar como um operando.
Exemplo:
Result := Fct(7) + 3;

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

5. Editores das Linguagens de Programao

5. Editores das Linguagens de Programao


Editor CFC
O editor CFC est disponvel para objetos de programao na linguagem Grfico Funcional Contnuo
(CFC), que uma extenso das linguagens de programao IEC 61131-3. Selecione a linguagem ao
adicionar um novo objeto POU via comando Acrescentar Objeto no projeto.
O editor CFC um editor grfico.
O editor estar disponvel na parte inferior da janela que se abre quando o objeto POU CFC aberto.
Na sua parte superior, a janela mostra o Editor de Declarao.

Figura 5-1. Editor CFC


O editor CFC, ao contrrio dos editores de rede, permite o livre posicionamento dos elementos,
possibilitando a insero de caminhos de realimentao. A sequncia de processamento
determinada por uma lista contendo todos os elementos atualmente inseridos, a qual pode ser
modificada.
Os seguintes elementos esto disponveis na Caixa de Ferramentas para insero: caixa (operadores,
funes, blocos funcionais e programas), entrada, sada, comentrio, rtulo, salto, compositor,
seletor, retorno e pinos de entrada/sada.
As linhas de entrada e sada dos elementos podem ser conectadas atravs do mouse (arraste da
conexo). O curso desta linha ser criado automaticamente, seguindo o menor caminho possvel. As
linhas de conexo sero automaticamente ajustadas assim que os elementos forem movidos. Veja
tambm: Inserir e Organizar Elementos neste captulo.
A dimenso da janela do editor pode ser alterada atravs do zoom: use o boto
no canto inferior
direito da janela e escolha uma das opes disponveis. Tambm possvel selecionar o item
e
abrir um dilogo para digitar o fator desejado.
Os comandos para trabalhar no Editor CFC podem ser chamados atravs do menu de contexto ou do
menu CFC (disponvel assim que este editor for aberto).
Linguagem Grfico Funcional Contnuo - CFC
O Grfico Funcional Contnuo, uma extenso da norma IEC 61131-3, e consiste em uma linguagem
de programao grfica baseada no Diagrama de Blocos Funcionais. Entretanto, diferentemente do
FBD, no so utilizadas redes, mas sim o livre posicionamento de elementos grficos, permitindo,
por exemplo, laos de realimentao.
Para criar objetos de programao CFC no MasterTool IEC XE, consulte o Editor CFC.
123

5. Editores das Linguagens de Programao

Figura 5-2. Exemplo de uma Rede CFC


Posies do Cursor no CFC
Em um programa CFC, as posies possveis do cursor so indicadas, por padro, por um sombreado
cinza quando o mesmo posicionado sobre os elementos.
Assim que o usurio clicar em uma rea sombreada (antes de soltar o mouse), a mesma mudar para
a cor vermelha. Ao soltar o boto, o cursor estar posicionado nesta rea e o respectivo elemento ou
texto selecionado sero exibidos em vermelho.
H trs categorias de posies de cursor. Veja, na Figura 5-3, Figura 5-4 e Figura 5-5, as
possibilidades indicadas por uma rea sombreada em cinza.

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:

Figura 5-3. Possveis Posies do Cursor e Dois Exemplos de Textos Selecionados

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:

Figura 5-4. Possveis Posies do Cursor e Exemplo de um Corpo Selecionado

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

5. Editores das Linguagens de Programao


Elementos CFC / Caixa de Ferramentas
Os elementos grficos disponveis para programao na janela do editor CFC so fornecidos por uma
Caixa de Ferramentas. Ela pode ser aberta em uma janela de visualizao atravs do comando
correspondente no menu Visualizar.

Figura 5-6. Caixa de Ferramentas CFC, Padro


O elemento desejado pode ser selecionado na Caixa de Ferramentas e inserido na janela do editor
arrastando e soltando.
Alm dos elementos de programao, no topo da lista da Caixa de Ferramentas encontra-se o item
. Enquanto este item estiver selecionado, o cursor transforma-se em uma seta e, com ela,
possvel selecionar os elementos na janela do editor para posicion-los e edit-los.
Elementos:
Smbolo

Pino

Representao

Significado

Entrada

O texto "???" pode ser selecionado e substitudo


por uma constante. O dilogo Assistente de
Entrada serve para selecionar um identificador
vlido para a entrada.

Sada

O texto "???" pode ser selecionado e substitudo


por uma constante. O dilogo Assistente de
Entrada serve para selecionar um identificador
vlido para a sada.

Caixa

Uma caixa pode ser usada para representar


operadores, funes, blocos funcionais e
programas. O texto "???" pode ser selecionado e
substitudo pelos objetos acima citados (usando
o Assistente de Entrada). Caso um bloco
funcional seja inserido, outro texto "???" ser
exibido acima da caixa e deve ser substitudo
pelo nome da instncia do bloco funcional. Caso
uma caixa existente seja substituda por outra
(alterando o nome) e a nova tenha um nmero
diferente de pinos de entradas ou sada, estes
pinos sofrero uma adaptao. Caso alguns
pinos devam ser excludos, o inferior ser
removido primeiro.

Salto

O salto usado para indicar em qual posio a


execuo do programa deve continuar. A posio
definida por um rtulo. Substitua o texto "???"
pelo nome do rtulo.

Rtulo

Um rtulo marca a posio para qual o programa

125

5. Editores das Linguagens de Programao


saltar (veja acima Salto).
Retorno

No modo online, um rtulo de RETORNO


automaticamente inserido para marcar o final da
POU. Observe que, no modo online, o elemento
RETURN automaticamente inserido na primeira
coluna e aps o ltimo elemento no editor. No
passo a passo, ele automaticamente salta para
esta posio antes que a execuo saia da POU.

Compositor

Um compositor usado para tratar uma entrada


de caixa do tipo estrutura. O compositor exibe os
componentes da estrutura e os disponibiliza para
o programador no CFC. Para tal, nomeie o
compositor da mesma forma que a referida
estrutura (substituindo "???" pelo nome) e
conecte-o caixa em vez de usar uma Entrada.

Seletor

Um seletor, ao contrrio do compositor, usado


para tratar uma sada de caixa do tipo estrutura.
O seletor exibe os componentes da estrutura e
os disponibiliza para o programador no CFC.
Para tal, nomeie o seletor da mesma forma que a
referida estrutura (substituindo "???" pelo nome)
e conecte-o caixa em vez de usar uma Sada.

Comentrio

Use este elemento para incluir comentrios no


grfico. Selecione o texto do espao reservado e
substitua-o pelo texto desejado. Uma nova linha
pode ser includa no comentrio pressionando
<Ctrl> + <Enter>.

Pino de
Entrada

Dependendo do tipo de caixa, uma entrada


adicional pode ser adicionada. Para tanto,
selecione a caixa na rede CFC e desenhe nela o
pino de entrada.

Pino de
Sada

Dependendo do tipo de caixa, uma sada


adicional pode ser adicionada. Para tanto,
selecione a caixa na rede CFC e desenhe nela o
pino de sada.

Tabela 5-1. Elementos na Janela do Editor


Exemplo do elemento Compositor:
Suponha um programa CFC cfc_prog, lido com uma instncia do bloco funcional fubblo1, que
apresenta a varivel de entrada struvar do tipo estrutura. Usando o Compositor, os componentes da
estrutura podem ser acessados.

126

5. Editores das Linguagens de Programao


Definio de estrutura stru1:
TYPE stru1 :
STRUCT
ivar:INT;
strvar:STRING:='hallo';
END_STRUCT
END_TYPE

Bloco funcional fublo1, declarao e implementao:


FUNCTION_BLOCK fublo1
VAR_INPUT
struvar:STRU1;
END_VAR
VAR_OUTPUT
fbout_i:INT;
fbout_str:STRING;
END_VAR
VAR
fbvar:STRING:='world';
END_VAR
fbout_i:=struvar.ivar+2;
fbout_str:=CONCAT (struvar.strvar,fbvar);

Programa cfc_prog, declarao e implementao:


PROGRAM cfc_prog
VAR
intvar: INT;
stringvar: STRING;
fbinst: fublo1;
erg1: INT;
erg2: STRING;
END_VAR

Figura 5-7. Exemplo Compositor


Exemplo do elemento Seletor: suponha um programa CFC cfc_prog, lido com uma instncia do
bloco funcional fubblo2, que apresenta a varivel de sada fbout do tipo estrutura stru1. Usando o
Seletor, os componentes da estrutura podem ser acessados.
Definio da estrutura stru1:
TYPE stru1 :
STRUCT
ivar:INT;
strvar:STRING:='hallo';
END_STRUCT
END_TYPE

127

5. Editores das Linguagens de Programao


Bloco funcional fublo2, declarao e implementao:
FUNCTION_BLOCK fublo2
VAR_INPUT CONSTANT
fbin1:INT;
fbin2:DWORD:=24354333;
fbin3:STRING:='hallo';
END_VAR
VAR_INPUT
fbin : INT;
END_VAR
VAR_OUTPUT
fbout : stru1;
fbout2:DWORD;
END_VAR
VAR
fbvar:INT;
fbvar2:STRING;
END_VAR

Programa cfc_prog, declarao e implementao:


VAR
intvar: INT;
stringvar: STRING;
fbinst: fublo1;
erg1: INT;
erg2: STRING;
fbinst2: fublo2;
END_VAR

Figura 5-8. Exemplo Seletor


Inserir e Organizar Elementos
Os elementos disponveis para programao no editor CFC so fornecidos em uma Caixa de
Ferramentas que, est disponvel em uma janela assim que o editor CFC for aberto.
O dilogo Opes do Editor CFC define as configuraes gerais para se trabalhar neste editor.
Inserindo
Para inserir um elemento, selecione-o na Caixa de Ferramentas que com um clique do mouse,
mantenha o boto pressionado e posicione-o no local desejado na janela do editor. Durante o
posicionamento, o cursor ser exibido como uma seta com um retngulo e um sinal de mais. Ao
soltar o boto, o elemento ser inserido.
Selecionando
Para selecionar um elemento inserido visando outras aes (editar ou reorganizar), verifique as
possveis posies do cursor para corpos de elemento, entradas/sadas e texto. Com um clique do
mouse no corpo dos elementos, os mesmos so selecionados e exibidos na cor vermelha. Mantendo
128

5. Editores das Linguagens de Programao


pressionada a tecla <SHIFT> outros elementos podem ser selecionados ao mesmo tempo. possvel,
tambm, pressionar o boto esquerdo do mouse e desenhar um retngulo pontilhado em volta dos
elementos a serem selecionados. Ao soltar o boto, a seleo ser indicada. Atravs do comando
Selecionar Todos, disponvel no menu de contexto, todos os elementos so selecionados de uma vez
s.
Usando as teclas de seta, pode-se alterar a seleo entre os elementos selecionveis. A sequncia
depende da ordem de execuo dos elementos, indicada por seus nmeros.
Quando um pino de entrada for selecionado e as teclas <CTRL>+<SETA ESQUERDA> forem
pressionadas simultaneamente, a sada correspondente ser selecionada tambm. Quando um pino de
sada for selecionado e as teclas <CTRL>+<SETA ESQUERDA> forem pressionadas simultaneamente,
as sadas correspondentes sero selecionadas tambm.
Substituindo Caixas
Para substituir um elemento caixa, substitua o identificador atualmente inserido pelo identificador do
novo elemento desejado. Se aplicvel, o nmero dos pinos de entrada e sada sero adaptados devido
definio das POUs e, assim, algumas atribuies existentes podem ser removidas.
Movendo
Para mover um elemento, selecione o seu corpo com um clique do mouse e arraste-o at a posio
desejada (mantendo o boto pressionado). Ento, solte o boto e posicione o elemento. Os comandos
Recortar e Colar tambm podem ser utilizados para esta ao.
Conectando
As conexes entre as entradas e sadas de elementos podem ser desenhadas com o mouse. A menor
conexo possvel ser criada considerando os outros elementos e conexes. A cor verde clara no
curso das linhas de conexo indica que os elementos esto posicionados um sobre os outros.
Copiando
Para copiar um elemento, selecione-o e use os comandos Copiar e Colar.
Editando
Aps inserir um elemento, a parte do texto representado por ???. Para substituir este sinais pelo
texto desejado (nome da POU, do rtulo, da instncia, comentrio...) selecione o texto com um clique
do mouse para entrar em um campo de edio. O boto tambm estar disponvel para abrir o
Assistente de Entrada.
Excluindo
Um elemento pode ser excludo atravs do comando Excluir, disponvel no menu de contexto ou
atravs da tecla <DEL>.
Ordem de Execuo, Nmeros de Elemento
A sequncia na qual os elementos em uma rede CFC so executados no modo online indicada por
nmeros no canto superior direito dos elementos caixa, sada, salto e retorno. O processamento inicia
no elemento de nmero mais baixo (0). A ordem de execuo pode ser modificada atravs dos
comandos disponveis no submenu Ordem de Execuo no menu CFC.
Ao adicionar um elemento, o nmero ser definido automaticamente de acordo com a sequncia
topolgica (da esquerda para a direita e de cima para baixo). Os novos elementos recebem o nmero
do seu sucessor se a sequncia j foi alterada e todos os nmeros mais altos so aumentados em um.
O nmero de um elemento permanece constante quando este movido.
A sequncia influencia o resultado e, em alguns casos, deve ser alterada.
129

5. Editores das Linguagens de Programao

Figura 5-9. Exemplo de Nmeros de Elemento


Alterando o Tamanho da Planilha de Trabalho
Para obter mais espao no entorno de um grfico CFC na janela de um editor, o tamanho da rea de
trabalho (planilha de trabalho) pode ser alterado. Isto pode ser feito selecionando e arrastando todos
os elementos com o mouse, ou atravs dos comandos Recortar e Colar (veja acima o item
Movendo).
Para poupar tempo (no caso de grficos maiores), outra opo utilizar o dilogo de configuraes
de dimenses especiais. Consulte o item Editar Planilha de Trabalho no Manual de Utilizao
MasterTool IEC XE MU299048.
Editor CFC no Modo Online
No modo online, o editor CFC fornece visualizaes para monitorao, escrita e foramento das
variveis e expresses no controlador. A funcionalidade Depurao (breakpoints, passo a passo, etc.)
est disponvel.
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 em um objeto CFC tambm inclui o Editor de Declarao na parte superior. Para
obter informaes sobre o editor de declarao no modo online, consulte Editor de Declarao no
Modo Online no Manual de Utilizao MasterTool IEC XE MU299048.
Monitorao
Os valores atuais so exibidos em pequenas janelas de monitorao em cada varivel (monitorao
em linha).

Figura 5-10. Visualizao Online de um Objeto de Programa MAINPRG


Na visualizao online de uma POU do tipo bloco funcional, os valores no sero visualizados nas
janelas de monitorao na parte de implementao, porm o <Valor da expresso> e os campos de
monitorao em linha exibiro trs pontos de interrogao.

130

5. Editores das Linguagens de Programao


Posies de Breakpoint no Editor CFC
As posies de breakpoint possveis, basicamente, so aquelas da POU na qual os valores das
variveis podem mudar, ou na qual o programa se ramifica ou outra POU chamada. As posies
possveis so mostradas na Figura 5-11.

Figura 5-11. Posies de Breakpoint no Editor CFC


NOTA: Nos mtodos, um breakpoint ser configurado automaticamente 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 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

5. Editores das Linguagens de Programao

Figura 5-12. Editor SFC


Os elementos usados em um diagrama SFC encontram-se disponibilizados assim que o editor SFC
for ativado. Eles so organizados em uma sequncia de passos conectados por transies. Veja
tambm: Trabalhando no Editor SFC neste captulo.
As propriedades dos passos podem ser editadas na caixa Propriedades. Neste campo so definidos os
tempos de ativao (mnimo e mximo) para cada passo.
Variveis implcitas podem ser acessadas para controlar o processamento de um SFC (por exemplo,
status de passo, anlise de timeout, reset e outros).
Os comandos para trabalhar no editor SFC podem ser chamados a partir do menu de contexto ou do
menu SFC .
No editor SFC:

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.

Sequenciamento Grfico de Funes - SFC


O Sequenciamento Grfico de Funes (SFC) uma linguagem grfica orientada que permite
descrever a ordem cronolgica de aes determinadas em um programa. Estas aes esto
disponveis como objetos de programao separados, escritos em qualquer linguagem de
programao disponvel. Em um SFC, elas so atribudas a elementos de passo e a sequncia de
processamento controlada por elementos de transio. Para obter uma descrio detalhada sobre
como os passos sero processados no modo online, consulte o item Sequncia de Processamento no
SFC neste captulo.
132

5. Editores das Linguagens de Programao

Figura 5-13. Exemplo para uma Sequncia de Passos em um Mdulo SFC


Posies do Cursor no SFC
As posies possveis do cursor em um diagrama SFC no editor SFC so indicadas, por padro, por
um sombreado cinza ao passar o cursor sobre os elementos.
H duas categorias de posies de cursor: textos e corpos de elemento. Veja as posies possveis
indicadas pela rea sombreada nos prximos captulos.
Textos

Figura 5-14. Posies Possveis do Cursor, Textos


Ao clicar em uma posio de texto do cursor o texto poder ser editado.

Figura 5-15. Seleo do Nome da Ao para Edio

133

5. Editores das Linguagens de Programao


Corpos de Elemento

Figura 5-16. Posies Possveis do Cursor, Corpos de Elemento


Ao clicar em uma rea sombreada, o elemento ser selecionado. Ele adquire uma moldura pontilhada
e exibido em sombreado vermelho (para selecionar vrios elementos, veja abaixo Trabalhando no
Editor SFC).

Figura 5-17. Elemento de Passo Selecionado


Trabalhando no Editor SFC
A princpio, uma nova POU SFC contm um passo inicial e uma transio subsequente. Para saber
como adicionar outros elementos, como organiz-los e edit-los, veja as informaes a seguir.
Para verificar as posies possveis do cursor, veja o item acima.
possvel navegar , isto , pular para o prximo elemento ou para o elemento anterior no grfico,
usando as teclas de seta.
Inserir Elementos
Os elementos SFC especficos podem ser inseridos atravs dos respectivos comandos (por padro,
disponveis no menu SFC). Consulte o item Posies do Cursor no SFC para obter um
detalhamento. Um clique duplo em um passo, transio ou ao j inseridos, que ainda no tenham
sido referenciados no projeto, abrir um dilogo para atribuio.
Selecionar Elementos
Um elemento e um campo de texto podem ser selecionados por um clique do mouse em uma posio
possvel do cursor. A seleo pode ser estendida aos elementos adjacentes usando as teclas de seta. O
elemento ser alterado para a cor vermelha. Consulte exemplos no item Posies do Cursor no SFC.
Passos e transies podem ser selecionados, movidos (recortar, copiar, colar) ou excludos
separadamente.
Para selecionar vrios elementos, siga as instrues abaixo.

Mantenha a tecla <SHIFT> pressionada e, em seguida, clique nos elementos a serem selecionados.
134

5. Editores das Linguagens de Programao

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:

Ao copiar um ou vrios elementos, o contedo da rea de transferncia ser inserido antes da


posio atualmente selecionada. Se no houver nada selecionado no momento, os elementos
sero anexados ao final do grfico atualmente carregado.
Se uma ramificao for colada e o elemento atualmente selecionado tambm for uma
ramificao, as ramificaes copiadas sero inseridas esquerda daquelas j existentes.
Ao colar uma ao (lista) em um passo atualmente selecionado, as aes sero adicionadas no
incio da lista de aes do passo ou ento, uma lista de ao para o passo ser criada.
Elementos incompatveis ao recortar/copiar: se uma ao associada (lista) e um elemento
adicional, que no o passo ao qual a ao (lista) pertence, forem selecionados, uma caixa de
mensagem aparecer: A seleo atual contm elementos incompatveis. Os dados no sero
levados para a rea de transferncia.. A seleo no ser armazenada e no ser possvel collos ou copi-los em outro lugar.
Elementos incompatveis ao colar: se o elemento atualmente selecionado no for um passo ou
outra associao, ao tentar colar uma ao (lista), uma caixa de erro aparecer: O contedo atual
da rea de transferncia no pode ser colado na seleo atual.. A mesma mensagem aparecer ao
tentar colar um elemento como um passo, ramificao ou transio quando uma ao associada
(lista) estiver selecionada no momento.

Excluir Elementos
Selecione os elementos e use o comando Excluir ou a tecla <DEL>. Considere:

Excluir um passo exclui tambm a lista de aes associada.


Excluir o passo inicial automaticamente define que o passo seguinte ser o inicial. A opo Passo
Inicial ser ativada nas propriedades deste passo.
Excluir a linha horizontal que precede uma rea ramificada exclui todas as ramificaes.
Excluir todos os elementos especficos de uma ramificao exclui a ramificao.

Propriedades do Elemento SFC


As propriedades de um elemento SFC podem ser visualizadas e editadas na janela aberta via
comando Propriedades do Elemento (no menu Visualizar).
As propriedades que sero exibidas dependem do elemento atualmente selecionado. As propriedades
so dispostas em grupos, os quais so abertos ou fechados atravs dos sinais de mais e menos,
respectivamente.

135

5. Editores das Linguagens de Programao


Na guia Visualizar das opes do Editor SFC (menu Ferramentas, Opes), definido quais
propriedades devem ser exibidas ao lado do elemento no grfico SFC.
Veja a seguir todas as propriedades possveis.
Comum:
Propriedade

Descrio

Nome

Nome do elemento, a princpio: <elemento><nmero de execuo>.


Exemplo: Step0 (nome do passo), Step1, branch0 (nome da ramificao), etc.

Comentrio

Comentrio do elemento (string de texto), por exemplo "Zerar o contador".


Quebras de linha podem ser inseridas via <Ctrl>+<Enter>.

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.

Tabela 5-2. Descrio das Propriedades Comuns


Especfico:
Propriedade

Descrio

Passo inicial

Esta ao sempre est ativada nas propriedades do passo inicial


atual.
A princpio, ele est ativado para o primeiro passo em um SFC e desativado
para outros passos. Ao ativar esta opo em outro passo, desative-o no
passo anterior para evitar um erro de compilao.

Tempos:

Atente para a possibilidade de detectar timeouts em passos utilizando a


memria SFCError.

Ativao
mnima

Tempo de processamento mnimo do passo. Valores permitidos: tempo de


acordo com a sintaxe IEC (por exemplo t#8s) ou varivel TIME; o padro
t#0s.

Ativao
mxima

Tempo de processamento mximo do passo. Valores permitidos: tempo de


acordo com a sintaxe IEC (por exemplo t#8s) ou varivel TIME; o padro
t#0s.

Aes

Define as aes a serem executadas quando o passo estiver ativo. Veja a


descrio da sequncia de processamento.

Entrada de
passo

Esta ao ser executada aps o passo ter sido ativado.

Passo ativo

Esta ao ser executada quando o passo estiver ativo e as eventuais aes


de entrada j tiverem sido processadas.

Sada do passo

Esta ao ser executada no ciclo subsequente aps um passo ter sido


desativado.

Tabela 5-3. Descrio das Propriedades Especficas

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

5. Editores das Linguagens de Programao


Consulte tambm o item Trabalhando no Editor SFC.
Os seguintes elementos esto disponveis e so descritos a seguir:

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.

Figura 5-18. Passo e Subsequente Transio

Figura 5-19. Passo Inicial e Subsequente Transio


Transio
Uma transio representada por um pequeno retngulo conectado ao antecessor e ao sucessor dos
passos por uma linha. Ela fornece a condio na qual o passo seguinte se tornar ativo (assim que a
condio for TRUE).
Por padro, automaticamente inserida uma transio trans<n>, onde n o nmero de execuo.
O nome padro deve ser modificado por um nome vlido, seja ele:
137

5. Editores das Linguagens de Programao

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.

Figura 5-20. Transio na rvore das POUs

Figura 5-21. Exemplos de Transio

Figura 5-22. Transio ou Propriedade Indicados por um Tringulo


Uma condio de transio deve ter os valores TRUE ou FALSE. Assim sendo, ela consiste em uma
varivel booleana, um endereo booleano, uma constante booleana ou uma srie de instrues com
um resultado booleano. No entanto, uma transio no pode conter programas, blocos funcionais ou
atribuies.
138

5. Editores das Linguagens de Programao


Uma condio de transio tratada como uma chamada de mtodo. Ela ser inserida de acordo com
as sintaxe:
<Nome da transio>:=<condio da condio>; (* por exemplo trans1:=
a=100 *)

Ou:
<Condio de transio>; (* por exemplo a=100 *)

Veja tambm t1 na coluna esquerda.


No modo online, o passo subsequente apenas pode tornar-se ativo se a transio precedente tornar-se
TRUE.
Ao
Smbolo:
Uma ao pode conter uma srie de instrues escritas em uma das linguagens de programao
vlidas. Ela atribuda a um passo e, no modo online, ser processada de acordo com a sequncia de
processamento definida.
Cada ao a ser usada em passos SFC deve estar disponvel como uma POU vlida na POU SFC e no
projeto (

).

O comando Acrescentar Objeto est disponvel para adicionar uma ao (POU) em uma POU SFC.

Figura 5-23. Aes na rvore de POUs

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.

Figura 5-24. Exemplo de uma Ao Escrita em ST


Existem os seguintes tipos de aes:

Aes IEC
Aes de passo IEC estendidas

Ao de Passo em Conformidade com a IEC (Ao IEC)


Esta ao est de acordo com a norma IEC 61131-3 e ser processada de acordo com seu qualificador
na primeira vez que o passo tornar-se ativo e, uma segunda vez, quando o mesmo for desativado. No
caso de haver vrias aes atribudas a um passo (lista de aes) elas sero executadas de cima para
baixo.
Diferentes qualificadores podem ser usados para aes de passo IEC (ao contrrio de uma ao de
passo normal).
139

5. Editores das Linguagens de Programao


Outra diferena para a ao de passo normal que cada ao de passo IEC possui uma memria de
controle que permite garantir que, mesmo que a ao seja chamada por outro passo, ela ser
executada somente uma vez. Nas aes de passo normais no h garantia em relao a isto.
Uma ao de passo IEC representada por uma caixa bipartida, conectada direita de um passo via
uma linha de conexo. No lado esquerdo, exibido o qualificador da ao e, no direito, o nome da
ao. Ambos podem ser editados na linha.
Aes de passo IEC so associadas a um passo via comando Inserir Associao de Ao Aps. Uma
ou mais aes podem ser associadas a um passo. A posio da nova ao depende da posio atual do
cursor e do comando. As aes devem estar disponveis no projeto e so inseridas com um nome de
ao nico (por exemplo, MainPrg.a1).

Figura 5-25. Lista de Aes IEC Associadas a um Passo


Cada caixa de ao mostra, na primeira coluna, o qualificador e, na segunda, o nome da ao.
Aes de Passo IEC Estendidas
Estas aes so uma extenso da norma IEC, anteriormente conhecidas como aes de passo. As
aes devem estar disponveis como objetos no SFC. Os nomes das aes devem ser exclusivos.
Ao de Entrada de Passo
Este tipo de ao de passo ser processado assim que o passo tornar-se ativo e antes da ao de passo
ativo.
A ao associada a um passo via uma entrada no campo Entrada de Passo das propriedades do
passo. representada por um E no canto inferior esquerdo da caixa de passo.
Ao de Passo Ativo
Este tipo de ao de passo ser processado quando o passo tornar-se ativo e aps uma possvel ao
de entrada de passo ter sido processada. No entanto, ao contrrio de uma ao de passo IEC, ela no
executada mais de uma vez quando desativada e no pode ter qualificadores atribudos.
A ao associada a um passo via uma entrada no campo Passo Ativo das propriedades do passo.
representada por um pequeno tringulo no canto superior direito da caixa do passo.
Ao de Sada de Passo
Uma ao de sada ser executada uma vez quando o passo for desativado. Observe, entretanto, que
esta execuo no ser feita no mesmo ciclo, mas no comeo no ciclo subsequente.
A ao associada a um passo via uma entrada no campo Sada de Passo nas propriedades do passo.
representada por um X no canto inferior direito da caixa de passo.

140

5. Editores das Linguagens de Programao

Figura 5-26. Aes de Passo IEC Estendidas


As aes de Passo Ativo, Entrada de Passo e Sada de Passo so definidas nas propriedades do
passo.

Figura 5-27. Aes de Passo Ativo


Ramificaes
Um sequenciamento grfico de funes pode divergir, isto , a linha de processamento pode ser
ramificada em duas ou mais linhas (ramificaes). Ramificaes paralelas sero processadas
paralelamente (ambas de uma s vez). As ramificaes alternativas dependero da condio da
transio antecessora. Cada ramificao em um grfico precedida por uma linha horizontal dupla
(paralela) ou simples (alternativa) e tambm finalizada por uma linha do mesmo tipo ou por um
salto.
Ramificao Paralela
Smbolo:
A ramificao paralela deve iniciar e terminar com um passo. As ramificaes paralelas podem
conter ramificaes alternativas ou outras paralelas.
As linhas horizontais antes e aps a rea ramificada so duplas.
Processamento no modo online: se a transio precedente (t2 na Figura 5-28) for TRUE, os primeiros
passos de todas as ramificaes paralelas se tornaro ativos. As ramificaes paralelas sero
141

5. Editores das Linguagens de Programao


processadas paralelamente uma outra antes da transio subsequente (t3 na Figura 5-28) ser
considerada.
Uma ramificao paralela inserida via comando Inserir Ramificao Direita no passo atualmente
selecionado.
As ramificaes paralelas e alternativas podem ser transformadas atravs dos comandos Paralela e
Alternativa. Isto pode ser til durante a programao.
Um rtulo de ramificao automaticamente adicionado linha horizontal que precede a ramificao
denominada Ramificao<n> , onde n o nmero de execuo, iniciando em zero. Este rtulo pode
ser especificado ao definir um destino para o salto.

Figura 5-28. Ramificao Paralela


Ramificao Alternativa
Smbolo:
Uma ramificao alternativa deve iniciar e terminar com uma transio. As ramificaes alternativas
podem conter ramificaes paralelas ou outras alternativas.
As linhas horizontais antes e aps a rea ramificada so simples.
Se o passo que precede a linha alternativa de incio estiver ativo, ento a primeira transio de cada
ramificao alternativa ser avaliada da esquerda para a direita. A primeira transio a partir da
esquerda que apresentar o valor TRUE ser aberta, e os passos seguintes sero ativados.
Ramificaes alternativas so inseridas via comando Inserir Ramificao Direita quando a
transio estiver selecionada.
As linhas horizontais antes e aps a rea ramificada so simples.
Observe que as ramificaes paralelas e alternativas podem ser convertidas atravs dos comandos
Paralela e Alternativa. Isto pode ser til durante a programao.

142

5. Editores das Linguagens de Programao

Figura 5-29. Ramificao Alternativa


Salto
Smbolo:
Um salto representado por uma linha de conexo vertical com uma seta horizontal e pelo nome do
destino do salto.
Um salto define o prximo passo a ser processado assim que a transio precedente for TRUE. Saltos
podem ser necessrios porque as linhas de processamento no devem cruzar ou retornar para cima.
Alm do salto padro no final do grfico, um salto somente pode ser usado no final de uma
ramificao. Ele inserido via comando Inserir Salto Aps quando a ltima transio da ramificao
estiver selecionada.
O destino do salto especificado pela string de texto associada, que pode ser editada na linha. Pode
ser o nome de um passo ou o rtulo de uma ramificao paralela.

Figura 5-30. Salto


Macro
Smbolo:

143

5. Editores das Linguagens de Programao

Figura 5-31. Visualizao Principal do Editor SFC

Figura 5-32. Visualizao do Editor da Macro para a Macro 1


Uma macro representada por uma caixa com moldura em negrito contendo o nome da mesma.
Ela inclui uma parte do grfico SFC que no visvel no editor principal.
O fluxo do processo no influenciado pelo uso de macros, pois apenas uma maneira de esconder
algumas partes do programa, por exemplo, para simplificar a exibio.
Uma caixa de macro inserida pelo comando Inserir Macro (ou Inserir Macro Aps). O nome da
macro pode ser editado na linha.
Para abrir o editor da macro, execute um clique duplo na sua caixa ou use o comando Zoom na
macro. Desta forma, possvel editar, assim como na visualizao do editor principal, e entrar na
seo desejada do grfico SFC. Para sair, use o comando Zoom fora da macro.
A linha de ttulo do editor da macro sempre mostra o caminho da macro no SFC atual.

Figura 5-33. Linha de Ttulo do Editor da Macro


Qualificador
Para configurar como as aes devem estar associadas aos passos IEC, so inseridos nelas alguns
qualificadores no campo correspondente.

144

5. Editores das Linguagens de Programao


Estes qualificadores so tratados pelo bloco funcional SFCActionControl da IecSfc.library, o qual
automaticamente includo em um projeto atravs das funcionalidades do SFC.
So eles:
Qualificador

Nome

Descrio

No-armazenado

A ao est ativa enquanto o passo estiver ativo.

Reset

A ao desativada.

Set

A ao inicia quando o passo se torna ativo e assim


continua at que esta seja desativada.

Limitado no tempo

A ao inicia quando o passo se torna ativo e assim


continua at que este seja desativado, ou at que um
tempo determinado tenha transcorrido.

Atrasado no tempo

Um temporizador por atraso inicia quando o passo se


torna ativo. Se este se mantiver ativo aps o atraso, a
ao inicia e continua at que o passo seja
desativado.

Pulso

A ao inicia quando o passo se torna ativo/inativo e


executada uma vez.

SD

Armazenado e
atrasado no tempo

A ao inicia aps o tempo de atraso e se mantm at


o reset.

DS

Atrasado e
armazenado

Se o passo ainda est ativo aps o tempo de atraso


especificado, a ao inicia e continua at que haja o
reset.

SL

Armazenado e limitado
no tempo

A ao inicia quando o passo se torna ativo e continua


durante o tempo especificado ou at que haja um
reset.

Tabela 5-4. Qualificadores


Os qualificadores L, D, SD, DS e SL precisam de um valor de tempo no formato da constante TIME.
NOTA: Aps a desativao de uma ao IEC, a mesma ser executada ainda mais uma vez. Isto
significa que cada ao executada, no mnimo, duas vezes.
Variveis Implcitas - Memrias SFC
Cada passo SFC e ao IEC fornece variveis implicitamente geradas para monitorar os seus status
durante a execuo. As variveis tambm podem ser definidas para monitorar e controlar a execuo
de um SFC (timeouts, reset, modo auxiliar). Estas variveis tambm so geradas implicitamente pelo
uso do objeto SFC.
Basicamente, para cada passo e ao IEC, gerada uma varivel implcita. Exemplo: uma instncia
de estrutura denominada step1 e um passo tambm denominado step1. Nas propriedades do
elemento, possvel definir se uma definio de smbolo deve ser exportada para a configurao de
smbolos (para esta memria) e como este smbolo deve ser acessado no CP.
Os tipos de dados para as variveis implcitas so definidos na biblioteca IecSFC.library. Esta ser
automaticamente includa no projeto assim que um objeto SFC for adicionado.
Status de Passo e Ao e Tempo de Passo
Basicamente, para cada passo e para cada ao IEC, criada uma varivel de estrutura implcita dos
tipos SFCStepType e SFCActionType. Os componentes de estrutura (memrias) descrevem o status
de um passo e ao ou o tempo de processamento de um passo ativo.
A sintaxe para a declarao da varivel implicitamente criada :
<Nome do passo>: SFCStepType;

E:
_<Nome da ao>: SFCActionType;

145

5. Editores das Linguagens de Programao


NOTA: As aes sempre so precedidas por um sublinhado.
Memrias booleanas para estados de passos:

<nome do passo>.x: mostra o status de ativao atual


<nome do passo>._x: mostra o status de ativao para o prximo ciclo

Se <nome do passo>.x = TRUE, o passo ser executado no ciclo atual.


Se <nome do passo>._x = TRUE e <nome do passo>.x = FALSE, o passo ser executado no ciclo
seguinte, ou seja, <nome do passo>._x ser copiado para <nome do passo>.x no incio de um ciclo.
Memrias booleanas para estados de aes:

_<nome da ao>.x TRUE, se a ao executada


_<nome da ao>._x TRUE, se a ao est ativa

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)

Para aes: as variveis de tempo implcitas no so usadas.


Controle de Execuo SFC (Timeouts, Reset, Modo Auxiliar)
Algumas variveis implicitamente disponveis, tambm denominadas memrias SFC podem ser
usadas para controlar a operao de um SFC, por exemplo, para indicar overflows de tempo ou
habilitar o modo auxiliar para trocar transies.
Para acessar estas memrias e coloc-las em funcionamento, elas devem ser declaradas e ativadas.
Isto deve ser feito no dilogo de Configuraes SFC (subdilogo do dilogo Propriedades do
objeto). A declarao manual s necessria para habilitar o acesso de escrita a partir de outra POU
(veja abaixo, Acessando Memrias). Entretanto, neste caso, considere: ao declarar a memria
globalmente, a opo Declarar, no dilogo das Configuraes SFC, deve estar desativada para no
obter uma memria local implicitamente declarada (que ento seria usada, em vez da global). As
configuraes SFC para uma POU SFC, inicialmente, so determinadas pelas definies atualmente
configuradas no dilogo Opes SFC.
Observe que a declarao de uma varivel de memria feita somente atravs do dilogo
Configuraes SFC somente ser visvel na visualizao online da POU SFC.
Exemplo do uso do SFCError: h uma POU SFC nomeada sfc1 contendo um passo s2, com limites
de tempo definidos nos atributos de passo. Veja os atributos exibidos na Figura 5-34.

146

5. Editores das Linguagens de Programao


Se, por alguma razo, o passo s2 permanece ativo por um tempo maior que o permitido por suas
propriedades (overflow de tempo), uma memria SFC, a qual pode ser lida pela aplicao, pode ser
definida.
Para permitir este acesso, declare a memria no dilogo Configuraes SFC. Para tal, selecione sfc1
na janela Dispositivos e POUs e escolha o comando Propriedades a partir do menu de contexto. Abra
o subdilogo Configuraes SFC e, na guia Memrias, marque as colunas Declarar e Usar para a
memria SFCError. Escolher somente Declarar deixaria a varivel visvel na visualizao online da
parte de declarao de sfc1, porm isto no teria nenhuma funo.

Figura 5-34. Configuraes SFC


Leia o SFCError no SFC, por exemplo, em uma ao via SFCError, ou a partir de outra POU via
sfc1.SFCError.

Figura 5-35. Acessando SFCError


SFCError se tornar TRUE assim que ocorrer um timeout em sfc2.

147

5. Editores das Linguagens de Programao

Figura 5-36. Visualizao Online do SFC sfc1


As seguintes variveis implcitas (memrias) podem ser usadas. Para tanto, elas devem estar
declaradas e ativadas nas Configuraes SFC:
Varivel

Descrio

SFCInit: BOOL;

Se a varivel for TRUE, o sequenciamento grfico de funo ser


configurado para o passo inicial. Todos os passos, aes e outras
memrias SFC sero inicializados. O passo inicial permanecer ativo,
mas no ser executado enquanto a varivel for TRUE. SFCInit deve
ser redefinida para FALSE para retomar o processamento normal.

SFCReset: BOOL;

Esta varivel comporta-se de maneira similar a SFCInit.


Diferentemente desta, no entanto, outros processamentos ocorrem
aps a inicializao do passo inicial. Assim, neste caso por exemplo,
poderia ser feita uma atribuio FALSE na memria SFCReset no
passo inicial.

SFCError: BOOL;

Assim que ocorrer um timeout em um dos passos no SFC, a varivel


ser TRUE. Pr-requisito: SFCEnableLimit deve ser TRUE. Observe
que qualquer outro timeout no poder ser registrado at que
SFCError seja FALSE. SFCError deve ser definida para usar a outra
memria de controle de tempo (SFCErrorStep, SFCErrorPOU e
SFCQuitError).

SFCEnableLimit:
BOOL;

Esta varivel pode ser usada para a ativao explcita (TRUE) e


desativao (FALSE) do controle de tempo nos passos via SFCError.
Isto significa que, se esta varivel for declarada e ativada
(Configuraes SFC), ento ela deve ser configurada para TRUE para
o funcionamento de SFCError. Caso contrrio, quaisquer timeouts dos
passos no sero registrados. Isto pode ser interessante durante as
inicializaes ou na operao manual. Se a varivel no est definida,
SFCError funcionar automaticamente. Naturalmente, como prrequisito, SFCError deve estar definida.

SFCErrorStep: STRING;

Esta varivel armazena o nome de um passo no qual um timeout foi


registrado pelo SFCError.timeout. Pr-requisito: SFCError deve estar
definida.

SFCErrorPOU: STRING;

Esta varivel armazena o nome da POU SFC na qual ocorreu um


timeout. Pr-requisito: SFCError deve estar definida.

SFCQuitError: BOOL;

Enquanto esta varivel for TRUE, a execuo do diagrama SFC


interrompida e a varivel SFCError ser FALSE. Assim que esta se
tornar FALSE, todos os estados de tempo atuais nos passos ativos
sero FALSE. Pr-requisito: SFCError deve estar definida.

SFCPause: BOOL;

Enquanto esta varivel for TRUE, a execuo do diagrama SFC


interrompida.

148

5. Editores das Linguagens de Programao


SFCTrans: BOOL;

Esta varivel torna-se TRUE assim que houver uma transio.

SFCCurrentStep:
STRING;

Esta varivel armazena o nome do passo atualmente ativo,


independentemente da monitorao do tempo. Em caso de
sequncias simultneas, o nome do passo direita ser registrado.

SFCTip, SFCTipMode:
BOOL;

Estas variveis permitem o modo "inching" no grfico atual. Quando


este modo foi ativado pelo SFCTipMode=TRUE, somente ser
possvel pular para o prximo passo configurando SFCTip=TRUE
(borda de subida). Enquanto SFCTipMode for configurado para
FALSE, ser possvel pular pelas transies.

Tabela 5-5. Variveis Implcitas


Um timeout foi detectado no passo s1 no objeto POU do SFC pela memria SFCError.

Figura 5-37. Exemplo de Algumas Memrias SFCerror no Modo Online do Editor


Acessando Memrias
Para habilitar o acesso s memrias para o controle da execuo SFC (timeouts, reset, modo
auxiliar), as variveis de memria devem ser declaradas e ativadas conforme descrito acima
(Controle de execuo SFC).
Sintaxe para acesso:

A partir de uma ao ou transio na POU SFC: <nome do passo>.<flag> e _<nome da


ao>.<flag>. Exemplos: status:=step1._x; checkerror:=SFCerror
A partir de outra POU : <SFC POU>.<nome do passo>.<flag> e <SFC POU>_<nome da
ao>.<flag>. Exemplos: status:=SFC_prog.step1._x; checkerror:=SFC_prog.SFCerror;

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

5. Editores das Linguagens de Programao


Exemplo:
Declarao local:
PROGRAM SFC_prog
VAR_INPUT
SFCinit:BOOL;
END_VAR

Ou declarao global em uma GVL:


VAR_GLOBAL
SFCinit:BOOL;
END_VAR

Acessando a memria no MainPrg:


PROGRAM MainPrg
VAR
setinit: BOOL;
END_VAR
SFC_prog.SFCinit:=setinit; //acesso de escrita em SFCinit no SFC_prog.

Sequncia de Processamento no SFC


No modo online, os tipos de ao especficos sero processados de acordo com uma sequncia
definida (veja na Tabela 5-6).
Primeiramente, observe a terminologia:

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.

Ordem de processamento de elementos em uma sequncia:


Item

Descrio

Reset

Todas as memrias de controle das aes IEC so resetadas (exceto


as memrias das aes IEC chamadas nas prprias aes).

Aes de sada de
passo

Todos os passos so verificados na ordem do sequenciamento grfico


(de cima para baixo e da esquerda para a direita) para determinar se o
requisito para a execuo da ao de sada de passo foi fornecido e se
ser executada. Uma ao de sada ser executada se o passo for
desativado, ou seja, sua entrada e suas aes de passo foram
executados durante o ltimo ciclo, e se a transio para o passo
seguinte for TRUE.

Aes de entrada de
passo

Todos os passos so testados na ordem do sequenciamento para


determinar se o requisito para a execuo da ao de entrada de
passo foi fornecido e, se este for o caso, se esta ser executada. Uma
ao de entrada ser executada se o passo precedente transio for
TRUE e, assim, o passo tiver sido ativado.

150

5. Editores das Linguagens de Programao


Verificao de timeout,
Aes ativas de passo

Para todos os passos, na ordem do sequenciamento.

Aes IEC

As Aes IEC usadas no sequenciamento so executadas em ordem


alfabtica. Isto feito em duas etapas na lista de aes.
Primeiramente, so executadas todas as aes IEC desativadas no
ciclo atual e, em seguida, todas as aes IEC ativas.

Verificao de
transio, ativando os
prximos passos

Transies so avaliadas: se o passo no ciclo atual estava ativo e a


transio seguinte retornar TRUE (e, se aplicvel, o tempo ativo
mnimo j tiver transcorrido), ento o passo seguinte ser ativado.

Tabela 5-6. Ordem de Processamento de Elementos em uma Sequncia

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

5. Editores das Linguagens de Programao

Figura 5-38. Visualizao Online de um Objeto do Tipo Programa SFC_prog

Texto Estruturado (ST) / Texto Estruturado Estendido (ExST)


Texto estruturado uma linguagem de programao textual de alto nvel, similar a PASCAL ou C. O
cdigo de programa composto de expresses e instrues. Ao contrrio da IL (Lista de Instrues),
inmeras construes podem ser usadas para laos de programao, permitindo, assim, o
desenvolvimento de complexos algoritmos.
Exemplo:
IF value < 7 THEN
WHILE value < 8 DO
value:=value+1;
END_WHILE;
END_IF;

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

5. Editores das Linguagens de Programao


Exemplos:
Expresso

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

Tabela 5-7. Expresses


Avaliao de Expresses
A avaliao da expresso ocorre atravs do processamento dos operadores, de acordo com certas
regras de ligao. O operador com a ligao mais forte processado primeiro, seguido pelo segundo
mais forte e assim por diante, at que todos os operadores tenham sido processados.
Operadores com a mesma fora de ligao so processados da esquerda para a direita.
Abaixo apresentada uma tabela de operadores ST na ordem de sua fora de ligao, da mais forte
para a mais fraca.
Operao

Smbolo

Colocar entre parnteses

(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

Tabela 5-8. Operadores ST


Atribuio como Expresso
Como extenso da norma IEC 61131-3 (ExST), o MasterTool IEC XE permite que atribuies sejam
usadas como expresses.
Exemplos:
Expresses

Comentrio

int_var1 := int_var2 := int_var3 + 9;

Atribuio do resultado de uma expresso para


int_var2 e int_var1

real_var1 := real_var2 := int_var;

Atribuies corretas, real_var1 e real_var2


assumiro o valor de int_var

int_var := real_var1 := int_var;

Isto levar a uma mensagem de erro devido


no correspondncia dos tipos real e int

IF b := (i = 1) THEN

Atribuio errada, pois est sendo usado o

153

5. Editores das Linguagens de Programao


i := i + 1;
END_IF

operador de atribuio para comparar duas


expresses.

Tabela 5-9. Atribuies Usadas como Expresses


Instrues
Instrues definem as aes a serem realizadas nas expresses. As seguintes instrues podem ser
usadas em ST.
Tipo de instruo

Exemplo

Atribuio

A:=B; CV := CV + 1; C:=SIN(X);

Chamando um bloco funcional e


uso da sada FB

CMD_TMR(IN := %IX5, PT := 300);


A:=CMD_TMR.Q

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

Tabela 5-10. Instrues


Operador de Atribuio
esquerda de uma atribuio, deve haver um operando (varivel, endereo) ao qual o valor da
expresso do lado direito atribudo usando o operador de atribuio :=.
Veja tambm o operador MOVE, que apresenta a mesma funo.
154

5. Editores das Linguagens de Programao


Exemplo:
Var1 := Var2 * 10;

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;

O operando a configurado para FALSE quando b= TRUE.


NOTA:
No caso de uma atribuio mltipla, todas as atribuies Set e Reset referem-se ao ltimo membro
da atribuio. Exemplo: a S= b R= fun1(par1,par2);
Neste caso, b assume o valor da sada de fun1, Mas a no assume o valor de b, e sim o valor
configurado da sada fun1.
Uma atribuio pode ser usada como uma expresso.
Chamando Blocos Funcionais em ST
Um bloco funcional (FB) chamado, na linguagem Texto Estruturado, de acordo com a sintaxe
abaixo:
<nome da instncia do FB>(varivel de entrada FB:=<valor ou endereo>|,
<outra varivel de entrada FB:=<valor ou endereo>|...outras variveis de
entrada FB);

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

5. Editores das Linguagens de Programao


RETURN;
END_IF;
a:=a+1;

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;

A parte entre chaves opcional.


Se a <Expresso booleana 1> retornar TRUE, ento somente as <Instrues IF> sero executadas (as
outras instrues no).
Caso contrrio, as expresses booleanas, comeando com a <Expresso booleana 2>, so avaliadas
uma aps a outra at que uma das expresses retorne TRUE. Assim, somente aquelas instrues aps
esta expresso booleana e antes de ELSE ou ELSIF sero avaliadas.
Se nenhuma das expresses booleanas retornar TRUE, ento somente as <Instrues ELSE> sero
avaliadas.
Exemplo:
IF temp<17 THEN
heating_on := TRUE;
ELSE
heating_on := FALSE;
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;

Uma instruo CASE processada de acordo com o seguinte modelo:

156

5. Editores das Linguagens de Programao

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;

<INSTRUES> ser executado enquanto o contador <INT_VAR> no for maior que


<VALOR_FINAL>. Isto ser verificado antes que <INSTRUES> seja executado, de forma que
nunca haver uma execuo se esta condio no for atendida.
Quando <ISNTRUES> executado, <INT_VAR> incrementado pelo <TAMANHO DO
PASSO> (o qual pode ter qualquer valor inteiro). Se este no existir, o valor ser configurado para 1.
O lao tambm ser finalizado quando <INT_VAR> se tornar maior do que <VALOR_FINAL>.
Exemplo:
FOR Counter:=1 TO 5 BY 1 DO
Var1:=Var1*2;
END_FOR;
Erg:=Var1;

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

5. Editores das Linguagens de Programao


Sintaxe:
WHILE <Expresso booleana> DO
<Instrues>
END_WHILE;

<INSTRUES> ser executado repetidamente enquanto <EXPRESSO BOLEANA> retornar


TRUE. Se <EXPRESSO BOLEANA> for FALSE na primeira avaliao, ento <INSTRUES>
no ser executado. Se <EXPRESSO BOLEANA> nunca assumir o valor FALSE, ento
<INSTRUES> ser repetido indefinidamente, fazendo a aplicao travar, e por consequncia,
causar a entrada em co-de-guarda em funo do estouro deste parmetro configurado na tarefa
correspondente.
NOTA: O programador deve certificar-se de que no foi gerado um lao infinito. Esta verificao
feita alterando-se a condio na parte de instrues do lao, por exemplo, incrementando um
contador para cima ou para baixo e usando-o como condio.
Exemplo:
WHILE Counter<>0 DO
Var1 := Var1*2;
Counter := Counter-1;
END_WHILE

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;

<INSTRUES> executado at que <EXPRESSO BOLEANA> retorne TRUE.


Se a <EXPRESSO BOLEANA> retornar TRUE na primeira execuo, ento <INSTRUES>
ser executado apenas uma vez. Se a <EXPRESSO BOLEANA> no assumir nunca o valor TRUE,
ento <INSTRUES> ser repetido indefinidamente, fazendo a aplicao travar e por consequncia
causando a entrada em co-de-guarda em funo do estouro deste parmetro configurado na tarefa
correspondente.
NOTA: O programador deve certificar-se de que no foi gerado nenhum lao infinito. Esta
verificao feita alterando-se a condio na parte de instrues do lao, por exemplo,
incrementando um contador para cima ou para baixo e usando-o como condio.
Exemplo:
REPEAT
Var1 := Var1*2;
Counter := Counter-1;
UNTIL
Counter=0
158

5. Editores das Linguagens de Programao


END_REPEAT:

A instruo CONTINUE pode ser usada em um lao REPEAT.


Instruo CONTINUE
Como uma extenso da norma IEC 61131-3 (ExST), a instruo CONTINUE suportada em FOR,
WHILE e laos REPEAT.
CONTINUE faz com que a execuo continue no prximo ciclo de lao.
Exemplo:
FOR Counter:=1 TO 5 BY 1 DO
INT1:= INT1/2;
IF INT1=0 THEN
CONTINUE; (* Para evitar a diviso por zero *)
END_IF
Var1:=Var1/INT1; (* Somente ser executada, se INT1 no for "0" *)
END_FOR;
Erg:=Var1;

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

<RTULO> um identificador qualquer, porm nico, localizado no incio de uma linha do


programa. A instruo JMP deve ser seguida pela indicao do destino do salto (deve ser igual ao
rtulo pr-definido). Quando a instruo JMP avaliada, ocorre um salto no processamento para a
linha rotulada no programa.
NOTA: O programador deve evitar a criao de laos infinitos, por exemplo, submetendo o salto a
uma condio IF.
Exemplo:
i:=0;
label1: i:=i+1;
(*Instrues*)
IF (i<10) THEN
JMP label1;
END_IF

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

5. Editores das Linguagens de Programao


Comentrios em ST
H duas formas de se escrever comentrios em um objeto de texto estruturado.

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.

Os comentrios podem estar localizados em qualquer lugar, nas partes de declarao ou


implementao do editor ST.
Comentrios aninhados: comentrios podem estar localizados em outros comentrios.
Exemplo:
(*
a:=inst.out; (* verificao *)
b:=b+1;
*)

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

5. Editores das Linguagens de Programao


Monitorao
Se a monitorao em linha no for explicitamente desativada no dilogo Opes, pequenas janelas de
monitorao sero exibidas em cada varivel, mostrando o valor atual destas (monitorao em linha).

Figura 5-39. Visualizao Online de um Objeto do Tipo Programa (MainPrg)


Em uma visualizao online de uma POU do tipo bloco funcional, os valores no sero visualizados
e, em vez deles, o termo <Valor da expresso> ser exibido na coluna Valor. Os campos de
monitorao em linha na parte de implementao exibiro trs pontos de interrogao cada.

Figura 5-40. Visualizao Online do Bloco Funcional FB1


Foramento de Variveis
Alm da possibilidade de inserir um valor preparado para uma varivel na declarao de qualquer
editor, o editor ST permite clicar na caixa de monitorao de uma varivel na parte de
implementao (no modo online), onde o valor preparado pode ser inserido (Figura 5-41).

161

5. Editores das Linguagens de Programao

Figura 5-41. Dilogo Preparar Valor


Neste dilogo, encontram-se a Expresso (nome da varivel seguido pelo caminho na rvore de
dispositivos), seu Tipo e Valor Atual. Ativando o item correspondente, escolha uma das opes:

Preparar um novo valor para a prxima operao de escrita ou foramento


Remover preparao com um valor
Liberar o foramento sem modificar o valor
Liberar o foramento e restaurar a varivel para o valor anterior a este

Os valores selecionados sero atribudos na execuo do comando Forar Valores (menu


Comunicao), ou pressionando <F7>.
Posies de Breakpoint no Editor ST
Basicamente, um breakpoint localiza-se nas posies de uma POU nas quais os valores das variveis
podem mudar, ou nas quais o fluxo do programa estende-se e outra POU chamada. Nas seguintes
descries, {BP} indica uma possvel posio de breakpoint.

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

Lao WHILE: est antes do teste da condio e antes de uma sentena

{BP} WHILE i < 12 DO


{BP} [sentena 1]
...
{BP} [sentena-1]
END_WHILE

Lao REPEAT: est antes do teste da condio e antes de uma sentena

REPEAT
162

5. Editores das Linguagens de Programao


{BP} [sentena 1]
...
{BP} [sentena n-1]
{BP} UNTIL i >= 12
END_REPEAT

Chamada de um programa ou bloco funcional: localiza-se no incio da linha


Ao final de uma POU: no passo a passo, esta posio tambm ser alcanada aps uma instruo
RETURN

Exibio do Breakpoint em ST

Figura 5-42. Breakpoint no Modo Online

Figura 5-43. Breakpoint Desabilitado

Figura 5-44. Parada de Programa em um Breakpoint

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

5. Editores das Linguagens de Programao

Figura 5-45. Redes de Diagrama de Blocos Funcionais


Diagrama Ladder - LD
O Diagrama Ladder uma linguagem de programao grfica similar estrutura de um circuito
eltrico.
O Diagrama Ladder adequado para construir intertravamentos lgicos, mas pode tambm criar
redes como no FBD. Portanto, o LD bastante til para controlar a chamada de outras POUs.
Ele consiste de uma srie de redes, sendo cada uma delas limitada a sua direita e esquerda por linhas
de corrente verticais (barras de energia). Uma rede contm um diagrama de circuito formado por
contatos, bobinas, opcionalmente POUs adicionais (caixas) e por linhas conectoras. No lado esquerdo
h uma srie de contatos que transmitem a condio ON ou OFF da esquerda para a direita (o que
corresponde aos valores booleanos TRUE e FALSE). Para cada contato, atribuda uma varivel
Booleana.
No caso de contatos normalmente abertos, se esta varivel for TRUE, a condio ser transmitida da
esquerda para a direita ao longo da linha conectora. Por outro lado se esta varivel for FALSE, a
condio transmitida para a direita ser sempre OFF.
No caso de contatos normalmente fechados, se esta varivel for TRUE, a condio transmitida para a
direita ser sempre OFF. No entanto no caso em que a varivel for FALSE, a condio ser
transmitida da esquerda para a direita ao longo da linha conectora.

Figura 5-46. Rede LD


Lista de Instrues - IL
A Lista de Instrues similar a linguagem de programao Assembly, em conformidade a IEC
61131-3.
Esta linguagem suporta programaes baseadas em um acumulador. Todos operadores IEC 61131-3
so permitidos, assim como as vrias entradas/sadas, negaes, comentrios, sadas set/reset e saltos
incondicionais/condicionais.
Cada instruo, fundamentalmente, baseada no carregamento de valores no acumulador atravs do
uso do operador LD. Em seguida, a operao executada com o primeiro parmetro retirado do
164

5. Editores das Linguagens de Programao


acumulador. O resultado da operao novamente disponibilizado no acumulador, a partir de onde o
usurio deve armazen-lo com a instruo ST.
Para programar execues condicionais ou laos, a IL suporta tanto operadores de comparao (EQ,
GT, LT, GE, LE, NE), quanto saltos. Estes ltimos podem ser incondicionais (JMP) ou condicionais
(JMPC/JMPCN). Para saltos condicionais, o valor do acumulador verificado em TRUE ou FALSE.
Uma lista de instrues (IL) consiste de uma srie de instrues. Cada instruo inicia em uma nova
linha e contm um operador. Dependendo do tipo da operao, ela pode conter tambm um ou mais
operandos separados por vrgulas. O operador deve ser estendido por um modificador.
Na linha anterior instruo, pode haver uma marca de identificao (rtulo) seguida de dois pontos,
por exemplo ml: no exemplo mostrado abaixo. Um rtulo pode ser o destino de uma instruo de
salto, por exemplo JMPC next no exemplo mostrado abaixo.
Um comentrio deve ser posicionado como o ltimo elemento de uma linha.
Linhas vazias podem ser inseridas entre instrues.

Figura 5-47. Exemplo de Programa IL no Editor Tabular IL


O editor IL um editor tabular integrado ao editor FBD/LD/IL.
Modificadores e Operadores em IL
Os seguintes modificadores podem ser usados em uma Lista de Instrues:
Modificador

Contexto

Descrio

Com JMP, CAL, RET

A instruo somente ser executada se o


resultado da expresso anterior for TRUE.

Com JMPC, CALC, RETC

A instruo somente ser executada se o


resultado da expresso anterior for FALSE.

Em qualquer outro caso

Negao do operando (no do acumulador).

Tabela 5-11. Modificadores


A Tabela 5-12 apresenta quais operadores podem ser usados em combinao com os modificadores
especificados.
O acumulador sempre armazena o valor atual resultante a partir da operao anterior.
165

5. Editores das Linguagens de Programao


Operador

Modificadores

Significado

Exemplo

LD

Carrega o valor (negado) do operando


para o acumulador.

LD iVar

ST

Armazena o contedo (negado) do


acumulador para o operando.

ST iErg

Leva o operando (tipo BOOL) para TRUE


quando o contedo do acumulador for
TRUE.

S bVar1

Leva o operando (tipo BOOL) para FALSE


quando o contedo do acumulador for
TRUE.

R bVar1

AND

N,(

AND bit a bit do acumulador e do


operando (negado).

AND bVar2

OR

N,(

OR bit a bit do acumulador e do operando


(negado).

OR xVar

XOR

N,(

OR EXCLUSIVO bit a bit do acumulador e


do operando (negado).

XOR
N,(bVar1,bVar2)

NOT

Negao bit a bit do contedo do


acumulador.

ADD

Soma do acumulador e operando. O


resultado copiado para o acumulador.

ADD (iVar1,iVar2)

SUB

Subtrao do acumulador e operando. O


resultado copiado para o acumulador.

SUB iVar2

MUL

Multiplicao do acumulador e operando.


O resultado copiado para o acumulador.

MUL iVar2

DIV

Diviso do acumulador e operando. O


resultado copiado para o acumulador.

DIV 44

GT

Verifica se o acumulador maior que (>)


o operando. O resultado (BOOL)
copiado para o acumulador.

GT 23

GE

Verifica se o acumulador maior ou igual


(>=) ao operando. O resultado (BOOL)
copiado para o acumulador.

GE iVar2

EQ

Verifica se o acumulador igual (=) ao


operando. O resultado (BOOL) copiado
para o acumulador.

EQ iVar2

NE

Verifica se o acumulador diferente (<>)


do operando. O resultado (BOOL)
copiado para o acumulador.

NE iVar1

LE

Verifica se o acumulador menor ou igual


(<=) ao operando. O resultado (BOOL)
copiado para o acumulador.

LE 5

LT

Verifica se o acumulador menor (<) que


o operando. O resultado (BOOL)
copiado para o acumulador.

LT cVar1

JMP

CN

Salto incondicional para o rtulo.

JMPN next

CAL

CN

Chamada (Condicional) de PROGRAMA


ou BLOCO FUNCIONAL (se o
acumulador for TRUE).

CAL prog1

Retorno antecipado da POU e do salto


para a POU onde ocorreu a chamada.

RET

RET
RET

Condicional - se o acumulador for TRUE...


Retorno antecipado da POU e do salto
para a POU onde ocorreu a chamada.

RETC

RET

CN

Condicional - se o acumulador for


FALSE... Retorno antecipado da POU e
do salto para a POU onde ocorreu a
chamada.

RETCN

Avalia a operao de referncia

Tabela 5-12. Operadores e Modificadores


Consulte o item Operadores.

166

5. Editores das Linguagens de Programao


Para obter informaes sobre o uso e tratamento de operandos mltiplos, operandos complexos,
funo/mtodo/bloco funcional/programao, chamadas e saltos, veja o item Trabalhando na
Visualizao do Editor IL.

Figura 5-48. Programa IL com Uso de Operadores


Trabalhando na Visualizao dos Editores FBD e LD
Redes so as unidades bsicas da programao FBD e LD. Cada rede contm uma estrutura que
exibe uma expresso lgica ou aritmtica, uma POU (funo, programa, chamada de bloco funcional,
etc.), um salto ou uma instruo de retorno.
Ao criar um novo objeto, a janela do editor automaticamente contm uma rede vazia.
Consulte as configuraes gerais do editor no dilogo Opes, guia Editores FBD, LD e IL.
Quando o cursor est posicionado sob nome de uma varivel ou parmetro de caixa, ele exibe uma
tooltip que indica o respectivo tipo e, no caso de instncias de blocos funcionais, o valor de
inicializao. Para os operadores IEC SEL, LIMIT, MUX, uma breve descrio das entradas ser
exibida. Se definido, tambm sero exibidos o endereo e comentrio do smbolo, assim como o
comentrio do operando (entre aspas na segunda linha).
Inserindo e organizando elementos:

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

5. Editores das Linguagens de Programao


Selecionando:

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.

Figura 5-49. Janela do Editor FBD

Figura 5-50. Janela do Editor LD


Para obter informaes sobre as linguagens, consulte:

Diagrama de Blocos Funcionais - FBD


Diagrama Ladder - LD
168

5. Editores das Linguagens de Programao


Trabalhando na Visualizao do Editor IL
O editor IL (Lista de Instrues) um editor tabular, diferentemente do editor textual puro usado no
MasterTool IEC. A estrutura de rede dos programas FBD ou LD tambm representada em um
programa IL. Basicamente, uma rede suficiente em um programa IL, porm, considerando a troca
entre FBD, LD e IL, tambm possvel usar redes para estruturar um programa IL.
Verifique as configuraes gerais do editor no dilogo Opes, guia Editores FBD, LD e IL.
Para informaes sobre variveis ou parmetros de caixas consulte Trabalhando na Visualizao
dos Editores FBD e LD.
Inserindo e organizando elementos:
Os comandos para trabalhar neste editor esto disponveis no menu FBD/LD/IL, que sempre o mais
importante no menu de contexto.
Cada unidade de programao (elemento) inserida na posio atual do cursor atravs do comando
Inserir (disponvel no menu FBD/LD/IL).
Os comandos Recortar, Copiar, Colar e Excluir por padro esto disponveis no menu Editar e
podem ser usados para organizar os elementos. Considere as posies possveis do cursor.
Veja a seguir como o editor tabular estruturado e como possvel navegar por ele utilizando
operandos complexos, chamadas e saltos.
Estrutura do Editor Tabular IL
Cada linha do programa escrita em uma linha da tabela estruturada nas seguintes colunas:
Coluna

Contm

Descrio

Operador

Este campo contm o operador IL (LD, ST, CAL, AND, OR etc.) ou um


nome de funo.
No caso de uma chamada de bloco funcional, so especificados os
respectivos parmetros. Neste caso, devem ser inseridos os campos
Prefixo ":=" ou "=>".

Operando

Este campo contm exatamente um operando ou um rtulo de salto.


Se for necessrio mais de um operando (operadores
mltiplos/extensveis "AND, A, B, C" ou chamadas de funo com
vrios parmetros), estes devem ser escritos em uma das linhas
seguintes onde o campo do operador deve ser deixado vazio. Neste
caso, acrescente um parmetro separado por vrgulas. No caso de um
bloco funcional, programa ou chamada de ao, deve ser
acrescentada uma correta abertura e/ou fechamento de parnteses.

Endereo

Este campo contm o endereo do operando, conforme definido na


parte de declarao. O campo no pode ser editado e pode ser
habilitado ou desabilitado atravs da opo Mostrar Endereo do
Smbolo.

Comentrio
de smbolo

Este campo contm o comentrio, conforme definido para o operando


na parte de declarao. O campo no pode ser editado e pode ser
habilitado ou desabilitado atravs da opo Mostrar Endereo do
Smbolo.

Comentrio
de operando

Este campo contm o comentrio para a linha atual. editvel e pode


ser habilitado ou desabilitado atravs da opo Mostrar Endereo do
Smbolo.

Tabela 5-13. Estrutura do Editor Tabular

169

5. Editores das Linguagens de Programao

Figura 5-51. Editor Tabular IL


Percorrendo a tabela:

Teclas <> e <>: possibilitam o deslocamento para os campos superior e inferior


respectivamente.
<TAB>: movimenta-se para o campo direita.
<SHIFT> + <TAB>: movimenta-se na linha para o campo esquerda.
<SPACE>: abre o campo atualmente selecionado. Pode ser aberto com dois cliques no mouse. Se
aplicvel, o Assistente de Entrada pode ser disponibilizado atravs do boto
. O campo aberto
pode ser fechado com <ENTER> ou <ESC>, confirmando ou cancelando as escolhas feitas,
respectivamente.
<CTRL> + <ENTER>: insere uma nova linha abaixo da atual.
<DELETE>: exclui a linha atual, ou seja, onde o campo foi selecionado.
Recortar, Copiar, Colar: para copiar uma ou mais linhas, selecione no mnimo uma e use o
comando correspondente. Para recortar uma linha, use o comando Recortar. O comando Colar
insere a linha previamente copiada/recortada antes do campo selecionado. Se no houver campo
selecionado, a linha ser colada ao final da rede.
<CTRL> + <HOME>: rola para o incio do documento e marcam a primeira rede.
<CTRL> + <END> : rola para o fim do documento e marcam a ltima rede.
<PAGEUP>: rola uma tela para cima e marca o retngulo superior (mais acima).
<PAGEDOWN>: rola uma tela para baixo e marca o retngulo superior (mais acima).

Mltiplos Operandos (Operadores Extensveis)


Se o mesmo operador for usado com vrios operandos, dois caminhos de programao so possveis:

Os operandos so inseridos em linhas subsequentes, separados por vrgulas.

Exemplo em IL:

A instruo repetida nas linhas subsequentes.

170

5. Editores das Linguagens de Programao


Exemplo em IL:

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:

Chamadas de Blocos Funcionais e Chamadas de Programa


Use os operadores CAL ou CALC. Insira o nome da instncia do bloco funcional e do programa no
campo do operando (segunda coluna), seguido pelo parntese de abertura. Digite os parmetros de
entrada em cada uma das seguintes linhas:

171

5. Editores das Linguagens de Programao


Primeira coluna: operador (nome do parmetro) e:

:= para parmetros de entrada


=> para parmetros de sada

Segunda coluna: operando (parmetro atual) e:

, se seguido de outros parmetros


) aps o ltimo parmetro
() no caso de chamadas sem parmetros

Exemplo de chamada da POUToCAll com dois parmetros de entrada e dois de sada:

No necessrio usar todos parmetros de um bloco funcional ou programa.


NOTA: Como uma restrio da norma IEC, expresses complexas no podem ser usadas. Elas
devem ser atribudas entrada do bloco funcional ou programa antes da chamada de instruo.
Chamada de Ao
Deve ser realizada conforme um bloco funcional ou chamada de programa. O nome da ao deve ser
anexado ao nome da instncia ou do programa.
Exemplo de chamada da ao ResetAction em IL:

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

5. Editores das Linguagens de Programao


carregado. Exemplo em IL de uma instruo de salto condicional, se bCallRestAction for TRUE, o
programa deve pular para a rede rotulada com Cont:

Posies do Cursor em FBD, LD e IL


Editor IL
Este um editor textual, estruturado sob a forma de tabela. Cada clula uma posio possvel do
cursor. Consulte: Trabalhando na Visualizao do Editor IL.
Editores FBD e LD
Estes so editores grficos. Os seguintes exemplos mostram as posies possveis do cursor: texto,
entrada, sada, caixa, contato, bobina, linha entre elementos, subrede e rede. Aes como recortar,
copiar, colar, excluir e outros comandos especficos do editor referem-se posio atual do cursor e
ao elemento selecionado. Consulte: Trabalhando na Visualizao dos Editores FBD e LD.
No FBD, basicamente, h um retngulo pontilhado em volta do respectivo elemento indicando a
posio atual do cursor e, adicionalmente, os textos e caixas adquirem um sombreado azul e
vermelho respectivamente.
Nas bobinas LD os contatos tornam-se vermelhos assim que o cursor nelas posicionado.
A posio do cursor determina quais elementos esto disponveis no menu de contexto para serem
inseridos.
Posies possveis do cursor:
Nos campos de texto: na figura da esquerda, as posies possveis do cursor esto marcadas com uma
moldura vermelha. A figura da direita mostra uma caixa com o cursor posicionado no campo AND.
Observe a possibilidade de digitar endereos em vez de nomes de variveis (desde que configurados
adequadamente no dilogo Opes, guia Editores FBD, LD e IL.

Figura 5-52. Campos de Texto

Em cada entrada:

Figura 5-53. Entradas

Em cada operador, funo ou bloco funcional:

Figura 5-54. Operador, Funo ou Bloco Funcional

173

5. Editores das Linguagens de Programao

Sadas, se uma atribuio ou um salto vier logo em seguida:

Figura 5-55. Sada

Imediatamente antes do pontilhado na atribuio, salto ou instruo de retorno:

Figura 5-56. Antes do Pontilhado

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:

Figura 5-57. Posio do Cursor a Direita na Rede

O pontilhado diretamente a frente de uma atribuio:

Figura 5-58. Posio a Frente da Atribuio

Em cada contato:

Figura 5-59. Contato

Em cada bobina:

Figura 5-60. Bobina

174

5. Editores das Linguagens de Programao

A linha de conexo entre contatos e bobinas:

Figura 5-61. Posio na Linha de Conexo

Em uma ramificao ou subrede:

Figura 5-62. Ramificao ou Subrede


Menu FBD/LD/IL
Quando o cursor est localizado na janela do editor FBD/LD/IL, o menu deste est disponvel na
barra do menu e fornece os comandos para programao na visualizao do editor atualmente
configurado.

Figura 5-63. Menu FBD/LD/IL na Visualizao do Editor FBD


Para obter uma descrio dos comandos, consulte Comandos do Editor FBD/LD/IL no Manual de
Utilizao MasterTool IEC XE MU299048.

175

5. Editores das Linguagens de Programao


Elementos
Caixa de Ferramentas FBD/LD/IL
O editor FBD/LD/IL fornece uma caixa de ferramentas com elementos de programao a serem
inseridos na janela do editor (arrastar e soltar). Por padro, esta caixa de ferramentas pode ser aberta
via comando Caixa de Ferramentas no menu Visualizar.
Os elementos que estaro disponveis para insero dependem da visualizao do editor atualmente
ativo (veja a respectiva descrio dos comandos Inserir). Os elementos so classificados em
categorias: Geral (elementos gerais como Rede, Atribuio, etc.), Operadores Booleanos,
Operadores Matemticos, Outros Operadores (SEL, MUX, LIMIT e MOVE), Blocos Funcionais
(R_TRIG, F_TRIG, RS, SR, TON, TOF, CTD e CTU), Elementos Ladder e POUs (definidas pelo
usurio).
A categoria POUs lista todas as POUs definidas pelo usurio, como o objeto FBD/LD/IL atualmente
aberto no editor. A lista ser atualizada automaticamente quando POUs forem adicionadas ou
removidas da aplicao.
As pastas da categoria podem ser abertas atravs de um clique na respectiva categoria. Veja na
Figura 5-64: a categoria Geral est aberta, e as outras esto fechadas, ela mostra um exemplo para
insero de uma atribuio (atravs de arrastar e soltar a partir da caixa de ferramentas). Neste caso,
somente est aberta na caixa de ferramentas a seo Geral.

Figura 5-64. Insero A Partir da Caixa de Ferramentas


Para inserir um elemento no editor, selecione-o na caixa de ferramentas com um clique de mouse e,
arrastando e soltando, traga-o para a janela do editor. As posies possveis de insero so indicadas
por marcadores de posio, que aparecem enquanto o elemento est sendo desenhado na janela do
editor (mantendo-se o mouse pressionado). A posio mais prxima possvel se tornar verde. Ao
soltar o boto do mouse, o elemento ser inserido nesta posio (verde).
Se um elemento caixa foi desenhado em uma caixa j existente, a nova substituir a antiga; se
entradas e sadas j tiverem sido atribudas, estas sero mantidas conforme definido.
Rede
A rede a unidade bsica de um programa FBD ou LD. Nestes editores, as redes so organizadas em
uma lista vertical. Cada rede apresenta, em seu lado esquerdo, um nmero de rede serial e sua
estrutura consiste tanto de uma expresso lgica ou aritmtica quanto de um programa, funo,
chamada de bloco funcional, salto ou instruo de retorno.
O editor IL, devido base comum com FBD e LD, tambm usa o elemento rede. Se um objeto foi
inicialmente programado em FBD ou LD e depois convertido para IL, as redes ainda estaro
presentes no programa IL, e vice-versa. Se o usurio iniciar a programao de um objeto em IL, ele
176

5. Editores das Linguagens de Programao


precisar, no mnimo, de 1 elemento rede que contenha todas instrues (embora tambm seja
possvel usar outras redes para estruturar um programa, por exemplo, se considerar uma converso
para FBD ou LD).
A uma rede, podem ser opcionalmente atribudos um ttulo, um comentrio e um rtulo:
A disponibilidade dos campos ttulo e comentrio pode ser ativada ou desativada no dilogo Opes,
guia Editores FBD, LD e IL. Se a opo estiver ativada, o campo de edio do ttulo pode ser aberto
com um clique de mouse na rede, diretamente abaixo da borda superior. Para inserir um comentrio,
abra o campo de edio correspondente abaixo do ttulo. O comentrio pode apresentar vrias linhas.
Quebras de linha so inseridas via <ENTER> e a entrada do texto do comentrio encerrada
com<CTRL>+<ENTER>.
Para acrescentar um rtulo, o qual pode ser endereado por um salto, usa-se o comando Inserir
Rtulo. Os rtulos so exibidos abaixo dos campos ttulo e comentrio e, caso estes no estejam
disponveis, diretamente abaixo da borda superior de uma rede.

Figura 5-65. Posies do Ttulo, Comentrio e Rtulo em uma Rede


As redes podem ser configuradas em estado de comentrio, o que faz com que a rede no seja
processada, mas exibida e tratada como um comentrio.
Os comandos padro para Copiar, Recortar, Inserir e Excluir podem ser aplicados a uma rede
selecionada.
NOTA: Quando o clique do mouse executado em um ttulo, comentrio ou rtulo, somente estes
sero selecionados (no a rede inteira). Assim sendo, a execuo dos comandos padro no tem
influncia na rede em si.
Para inserir uma rede, usa-se o comando Inserir Rede ou arrasta-se a mesma a partir da caixa de
ferramentas. Toda rede (incluindo seus elementos) pode ser copiada ou movida ao ser arrastada e
solta no editor.
Considere a possibilidade de criar subredes atravs da insero de ramificaes.
Rede RET
No modo online, automaticamente uma rede vazia adicional exibida abaixo das redes existentes e
identificada por RET (em vez do nmero da rede). Ela representa a posio na qual a execuo
retornar POU de chamada e fornecer uma possvel posio de parada.
Atribuio em FBD/LD/IL
Dependendo da posio escolhida no FBD ou LD, uma atribuio ser inserida na entrada
selecionada, na sada selecionada ou ao final da rede. Em uma rede LD, uma atribuio ser exibida
como uma bobina.
Alternativamente, possvel arrastar o elemento a partir da Caixa de Ferramentas ou copi-lo/movlo arrastando-o e soltando-o na visualizao do editor.

177

5. Editores das Linguagens de Programao


Aps a insero, a string de texto ??? pode ser substituda pelo nome da varivel a ser atribuda.
Para isto, pode ser usado o Assistente de Entrada (atravs do boto
).
Em IL, uma atribuio programada via instrues LD e ST. Neste contexto, veja tambm:
Modificadores e Operadores em IL neste captulo.
Salto
Dependendo da posio selecionada no FBD ou LD, o salto ser inserido diretamente frente da
entrada selecionada, diretamente depois de sada selecionada ou ao final da rede. Alternativamente, o
salto pode ser arrastado a partir da Caixa de Ferramentas ou copiado/movido e solto no editor.
Aps a insero, a string ??? automaticamente inserida pode ser substituda pelo rtulo ao qual o
salto deve ser atribudo.
Na IL, o salto inserido via instruo JMP.
Rtulo
Cada FBD/LD ou rede IL apresenta, abaixo do campo de comentrio de rede, um campo de entrada
de texto para definir um rtulo (comando Inserir Rtulo). O rtulo um identificador opcional para a
rede e pode ser endereado ao se definir o salto. Ele pode consistir de qualquer sequncia de
caracteres.

Figura 5-66. Posio do Rtulo em uma Rede


Consulte o dilogo Opes, guia Editores FBD, LD e IL para definir a exibio do comentrio e o
ttulo.
Caixas em FBD/LD/IL
Uma caixa em uma rede FBD, LD ou IL um elemento complexo e pode representar funes
adicionais, como por exemplo, Temporizadores, Contadores, Operaes Aritmticas ou tambm
programas, funes e blocos funcionais IEC.
Uma caixa pode ter entradas e sadas e ser fornecida por uma biblioteca de sistema ou programada
pelo usurio. Entretanto, no mnimo uma entrada e uma sada devem ser atribudas a valores
booleanos.
Se for fornecida com o respectivo mdulo, e se a opo Mostrar cone da Caixa estiver ativada, um
cone ser exibido na mesma.
Uso em FBD, LD
Uma caixa pode ser posicionada na parte esquerda de uma rede LD (como um contato) e em uma
rede FBD atravs dos comandos Inserir Caixa e Inserir Caixa Vazia. Alternativamente, ela pode ser
inserida a partir da Caixa de Ferramentas ou copiada/movida, arrastando-a e soltando-a na
visualizao do editor. Para obter mais detalhes, consulte o item Inserir Caixa no Manual de
Utilizao MasterTool IEC XE MU299048.

178

5. Editores das Linguagens de Programao


Uso em IL
Em um programa IL, ser inserida uma instruo CAL com parmetros para representar um elemento
caixa.
Na implementao atual, os parmetros da caixa (entradas, sadas) podem ser atualizados sem que a
caixa tenha que ser reinserida atravs do comando Atualizar Parmetros (no caso da interface da
caixa ter sido alterada).
Instruo RETURN em FBD/LD/IL
Com uma instruo RETURN, a execuo da POU FBD, LD ou IL pode ser desviada.
Nas redes FBD ou LD, a instruo pode ser posicionada em paralelo ou ao final dos elementos
anteriores. Se a entrada de RETURN for TRUE, o processamento da POU ser imediatamente
abortado.
Para inserir o retorno, usa-se o comando Inserir Retorno. Alternativamente, possvel arrastar o
elemento a partir da Caixa de Ferramentas, copiar ou mover o mesmo a partir de outra posio no
editor.

Figura 5-67. Elemento RETURN


Em IL, usada a instruo RET.
Ramificao/Bobina Suspensa em FBD/LD/IL
FBD, LD
Nas redes FBD e LD, uma ramificao e uma bobina suspensa respectivamente dividem a linha de
processamento a partir da posio atual do cursor. Esta linha seguir em duas subredes, as quais so
executadas uma aps a outra, de cima para baixo. Cada subrede adquire uma ramificao adicional,
permitindo, assim, mltiplas ramificaes em uma rede.
Cada subrede adquire um marcador prprio (simbolizado por um pequeno retngulo) que pode ser
selecionado para executar aes neste brao da ramificao.

Figura 5-68. Marcadores e Ramificaes


Na rede FBD, uma ramificao inserida via comando Inserir Ramificao. Outra forma possvel
arrast-la a partir da Caixa de Ferramentas. Para verificar as posies passveis de insero, consulte
Inserir Ramificao no Manual de Utilizao MasterTool IEC XE MU299048.
179

5. Editores das Linguagens de Programao


NOTA: Recortar e Colar no pode ser realizado em subredes.
Veja o exemplo mostrado na Figura 5-69: uma ramificao foi inserida na sada da caixa SUB.
Assim, foram criadas duas subredes, cada qual selecionvel pelo seu prprio marcador. Em seguida
uma caixa ADD foi adicionada em cada subrede.

Figura 5-69. Insero de Ramificao em FBD


Para excluir uma subrede, primeiramente remova todos os seus elementos (todos aqueles
posicionados direita do marcador da subrede). A seguir, selecione o marcador e use o comando
Excluir (<DEL>). Veja na Figura 5-70: o elemento OR de 3 entradas deve ser excludo antes de
selecionar e excluir o marcador da subrede inferior.

Figura 5-70. Excluir Ramificao e Subrede


Execuo no modo online:
As ramificaes especficas sero executadas da esquerda para a direita e de cima para baixo.
IL (Lista de Instrues)
Em uma rede IL, a ramificao e a bobina suspensa so representadas por uma ordem apropriada de
instrues. Neste contexto, consulte Modificadores e Operadores em IL.
Contato
Este um elemento LD.
Cada rede LD contm um ou mais contatos na esquerda. Estes contatos so representados por duas
linhas paralelas:

180

5. Editores das Linguagens de Programao

Figura 5-71. Contato


Contatos passam da condio ON (TRUE) ou OFF (FALSE) da esquerda para a direita.
Uma varivel booleana atribuda a cada contato. Se esta varivel for TRUE, primeiramente a
condio transmitida da esquerda para a direita, e a seguir para uma bobina no lado direito da rede.
Caso contrrio, a conexo da direita recebe o valor FALSE.
Mltiplos contatos podem ser conectados tanto em srie quanto em paralelo. No caso de dois
contatos paralelos, pelo menos um deles deve transmitir o valor TRUE para que a ramificao
paralela transmita o valor TRUE. No caso de contatos conectados em srie, todos os contatos devem
transmitir a condio TRUE para que o ltimo contato transmita a condio TRUE.
Assim, o comportamento e posicionamento dos contatos anlogo aos circuitos eltricos em srie e
paralelo.
Um contato tambm pode ser negado (barra no smbolo do contato):

Figura 5-72. Contato Negado


Um contato negado transmite a condio de entrada (TRUE ou FALSE) somente se a varivel
booleana atribuda for FALSE. Observe que a caixa de ferramentas fornece diretamente elementos de
contatos negados.
Um contato pode ser inserido em uma rede LD atravs dos comandos Inserir Contato, Inserir
Contato ( Direita), Inserir Contato Paralelo (Acima) ou Inserir Contato Paralelo (Abaixo), os
quais, por padro, fazem parte do menu FBD/LD/IL. Alternativamente, o elemento pode ser inserido
via arrastar e soltar a partir da Caixa de Ferramentas ou a partir de outra posio no editor.
FBD, IL
Se o usurio estiver trabalhando na visualizao das redes FBD ou IL, o comando no estar
disponvel, porm contatos e bobinas de uma rede LD podem ser representados pelos elementos FBD
e pelas instrues IL correspondentes.
Bobina
Este um elemento LD.
Do lado direito de uma rede LD, pode haver um nmero indeterminado de bobinas, as quais so
representadas por parnteses:

Figura 5-73. Bobina


Elas podem ser organizadas somente em paralelo. Uma bobina transmite o valor das conexes da
esquerda para a direita e copia os mesmos para uma varivel Booleana apropriada. Na linha de
entrada, podem estar presentes os valores ON (TRUE) ou OFF (FALSE). Contatos e bobinas tambm
podem ser negados (barra no smbolo da bobina):

181

5. Editores das Linguagens de Programao

Figura 5-74. Bobina Negada


Neste caso, o valor negado do sinal de entrada ser copiado para a varivel booleana apropriada.
Desta forma, um contato negado somente ser conectado se o valor booleano apropriado for FALSE.
Uma bobina pode ser inserida em uma rede atravs do comando Inserir Atribuio, o qual, por
padro, faz parte do menu FBD/LD. Alternativamente, o elemento pode ser inserido via arrastar e
soltar a partir da Caixa de Ferramentas (elementos Ladder) ou a partir de outra posio no editor.
Veja tambm: Bobinas Set/Reset.
FBD, IL
Se o usurio estiver trabalhando na visualizao das redes FBD ou IL o comando no estar
disponvel, porm contatos e bobinas de uma rede LD podem ser representados pelos elementos FBD
e instrues IL correspondentes.
Set/Reset em FBD/LD/IL
FBD, LD
Uma sada booleana em FBD, ou correspondentemente, uma bobina LD, pode ser definida como Set
ou Reset. Para alternar estes estados, usam-se os comandos Set/Reset, respectivamente, a partir do
menu de contexto quando a sada estiver selecionada. A sada e a bobina sero marcadas com S ou R.
Set: se o valor TRUE configurado em uma sada ou bobina Set, estas se tornaro TRUE e assim
permanecero. Este valor no pode ser sobrescrito nesta posio enquanto a aplicao estiver sendo
executada.
Reset: se o valor TRUE configurado em uma sada ou bobina Reset, estas se tornaro FALSE e
assim permanecero. Este valor no pode ser sobrescrito nesta posio enquanto a aplicao estiver
sendo executada.

Figura 5-75. Sada Set em FBD


Veja tambm: Bobinas Set/Reset.
IL
Em IL, os operadores S e R so usados para submeter um operando a set ou reset.
Bobinas Set/Reset
Atravs de smbolos, as bobinas podem ser definidas como do tipo Set ou Reset. A bobina Set
indicada por (S) e no permite sobrescrever o valor TRUE na varivel booleana apropriada. Isto
significa que a varivel, uma vez definida como TRUE, permanece TRUE.
A bobina Reset indicada pelo smbolo (R) e no permite sobrescrever o valor FALSE na varivel
booleana apropriada. Isto significa que a varivel, uma vez definida como FALSE, permanece
FALSE.
No editor LD, bobinas Set e Reset podem ser diretamente inseridas via arrastar e soltar a partir da
Caixa de Ferramentas, categoria Elementos Ladder.
182

5. Editores das Linguagens de Programao

Figura 5-76. Bobinas Set e Reset


Editores FBD/LD/IL no Modo Online
No modo online, o editor FBD/LD/IL fornece visualizaes para a monitorao, escrita e foramento
das variveis e expresses no controlador. A funcionalidade de depurao (breakpoints, passo a passo
etc.) tambm est disponvel.
Para informaes sobre como abrir objetos no modo online, consulte Interface do Usurio no Modo
Online no Manual de Utilizao MasterTool IEC XE MU299048.
Observe que a janela do editor de um objeto FBD, LD ou IL tambm inclui o Editor de Declarao
na parte superior. Neste contexto, veja tambm: Editor de Declarao no Modo Online no Manual
de Utilizao MasterTool IEC XE MU299048.
Monitorao
Se a monitorao em linha no estiver explicitamente desativada no dilogo Opes, ela ser
complementada nos editores FBD ou LD por uma pequena janela de monitorao em cada varivel, e
tambm por uma coluna de monitorao adicional mostrando os valores atuais (monitorao em
linha). Este ainda o caso para entradas e sadas de blocos funcionais no atribudos.
A janela de monitorao de uma varivel mostra um pequeno tringulo vermelho no canto superior
esquerdo. Se a varivel atual estiver forada, preparada para escrita ou foramento, ser indicado um
tringulo azul na parte inferior esquerda. Na Figura 5-77 um exemplo de uma varivel atualmente
forada e preparada para liberar o foramento.

Figura 5-77. Varivel Forada e Preparada para Liberar o Foramento

183

5. Editores das Linguagens de Programao

Figura 5-78. Visualizao Online de um Programa FBD

Figura 5-79. Visualizao Online de um Programa IL


Na visualizao online, as redes Ladder apresentam conexes animadas: conexes com valor TRUE
so exibidas em negrito azul e as de valor FALSE em negrito preto. As conexes com valor
desconhecido ou com valor analgico so exibidas em preto padro.

184

5. Editores das Linguagens de Programao


NOTA: Os valores das conexes so calculados a partir dos valores de monitorao. No um fluxo
de energia real.

Figura 5-80. Visualizao Online de um Programa LD


Observe a visualizao online de uma POU do tipo bloco funcional: na parte de implementao, no
sero visualizados valores nas janelas de monitorao, e sim o <Valor da expresso>. Os campos de
monitorao em linha na parte de implementao apresentaro trs pontos de interrogao em cada
um.
Foramento/Escrita de Variveis
No modo online, possvel preparar um valor para foramento ou escrita de uma varivel tanto no
editor de declarao quanto na parte de implementao. Na parte de implementao, com um clique
de mouse na varivel, o seguinte dilogo se abrir:

Figura 5-81. Dilogo Preparar Valor


Neste dilogo, encontra-se o nome da varivel complementado pelo seu caminho na rvore de
dispositivos (Expresso), seu Tipo e seu Valor Atual. Ativando o item correspondente, o usurio
escolhe o que deseja:

Preparar um novo valor para a prxima operao de escrita ou foramento


Remover a preparao com um valor
185

5. Editores das Linguagens de Programao

Liberar o foramento sem modificar o valor


Liberar o foramento e restaurar a varivel para o valor anterior a este

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.

NOTA: No possvel configurar um breakpoint diretamente na primeira caixa de uma rede.


Entretanto, se um breakpoint estiver configurado na rede inteira, a posio de parada ser
automaticamente aplicada primeira caixa.
Consulte a lista de seleo no dilogo de breakpoint para verificar todas as posies possveis.
Uma rede contendo qualquer posio de breakpoint ativa marcada com um smbolo de breakpoint
(crculo vermelho) direita do nmero da rede e por um fundo com um retngulo sombreado em
vermelho (para a primeira posio de breakpoint possvel dentro da rede). Posies de breakpoint
desativadas so indicadas por um crculo vermelho no preenchido (Figura 5-83).

Figura 5-82. Breakpoint Configurado e Alcanado

Figura 5-83. Breakpoint Desativado

186

5. Editores das Linguagens de Programao


Assim que uma posio de breakpoint for alcanada durante o passo a passo ou processamento do
programa, uma seta amarela ser exibida no smbolo do breakpoint e uma rea sombreada em
vermelho se tornar amarela.
A posio de parada alcanada indicada por um sombreado amarelo e a posio no alcanada
indicada por um sombreado vermelho:

Figura 5-84. Posio de Parada Exibidas em FBD

Figura 5-85. Posies de Parada Exibidas em IL

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:

O resultado ser SUSIWILLI.


Exemplo em FBD:

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:

O resultado ser SUSI.


Exemplo em FBD:

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');

Blocos Funcionais Biestveis


SR
Fornecido pela standard.library.
Bloco funcional que implementa biestveis dominantes.
Entradas:
SET1: BOOL;
RESET: BOOL;
Sadas:
Q1 : BOOL;
Q1 = SR (SET1, RESET):
Q1 = (NOT RESET AND Q1) OR SET1
Exemplo de declarao:
SRInst : SR;

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

Figura 6-1. Exibio Grfica da Sequncia de Tempo TP


Exemplo de declarao:
TPInst : TP;

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.

Figura 6-2. Exibio Grfica do Comportamento de TON em Funo do Tempo


Exemplo de declarao:
TONInst : TON;

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.

Figura 6-3. Exibio Grfica do Comportamento de TOF em Funo do Tempo


Exemplo de declarao:
TOFInst : TOF;

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

(* Resultado : TRUE, porque 81 em binrio


1 *)
(* Resultado : TRUE, porque 33 em binrio
*)

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

Figura 6-4. Exemplo em FBD - Sada


Funo Matemtica Auxiliar
Derivative
Fornecido pela util.library.
Este bloco funcional determina, aproximadamente, a derivao local. No uso de IN, o valor da
funo devolvido como uma varivel REAL.
TM contm o tempo decorrido em milissegundos em uma DWORD.
Atravs de uma entrada TRUE em RESET, o bloco funcional pode ser reinicializado.
A sada OUT do tipo REAL.
Para obter o melhor resultado possvel, DERIVATIVE realiza um arredondamento (usando os quatro
ltimos valores) para reduzir ao mximo os eventuais erros produzidos por falta de acuracidade nos
parmetros.
Exemplo em FBD:

204

6. Bibliotecas

Figura 6-5. Comportamento do FB DERIVATIVE


Integral
Fornecido pela util.library.
Este bloco funcional determina, de forma aproximada, a integral da funo.
De forma anloga DERIVATIVE, o valor da funo devolvido com uma varivel REAL atravs
do uso de IN.
TM contm o tempo transcorrido em milissegundos em uma DWORD.
Se RESET for TRUE, o bloco funcional pode ser reiniciado.
A sada OUT do tipo REAL.
A integral aproximada por duas funes de passo. A mdia destas retorna a integral aproximada.
Exemplo em FBD:

205

6. Bibliotecas

Figura 6-6. Comportamento do FB INTEGRAL


Lin_TRAFO
Este bloco funcional (util.library) transforma um valor REAL localizado em um intervalo delimitado
por um valor superior e inferior, em um valor REAL localizado em outro intervalo, igualmente
definido por um limite superior e inferior. A equao (IN - IN_MIN) : (IN_MAX - IN) = (OUT OUT_MIN) : (OUT_MAX - OUT) a base da converso.
Exemplo em FBD:

Variveis de Entrada
Varivel

Tipo de dado

Descrio

IN

REAL

Valor de entrada

IN_MIN

REAL

Limite inferior do intervalo de valor da entrada

IN_MAX

REAL

Limite superior do intervalo de valor da entrada

OUT_MIN

REAL

Limite inferior do intervalo de valor da sada

OUT_MAX

REAL

Limite superior do intervalo de valor de sada

Tabela 6-1. Variveis de Entrada (LIN_TRAFO)


Variveis de Sada
Varivel

Tipo de dado

Descrio

OUT

REAL

Valor da sada

ERROR

BOOL

Erro: TRUE, se IN_MIN = IN_MAX, ou se IN estiver fora do


intervalo de valores da entrada especificada.

Tabela 6-2. Variveis de Sada (LIN_TRAFO)


206

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.

Figura 6-7. Exemplo em FBD do bloco LIN_TRAFO


A Figura 6-7 apresenta um exemplo de converso de uma leitura de entrada de tenso de um mdulo
analgico para um valor do tipo REAL na escala de 0 a 100 C.
Assim, uma entrada de 4,67 Vdc resultaria em um valor de entrada de 14000 correspondente a uma
temperatura de 46,67 C representada em uma varivel do tipo REAL.
STATISTICS-INT
Fornecido pela util.library.
Este bloco funcional calcula alguns valores estatsticos padronizados.
A entrada IN do tipo INT. Todos os valores so inicializados quando a entrada booleana RESET
TRUE.
A sadas MN e MX contm os valores mnimo e mximo de IN, respectivamente. AVG descreve a
mdia, ou seja o valor esperado de IN. A trs sadas so do tipo INT.
Exemplo de STATISTICS_INT em FBD:

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:

Entradas do Bloco Funcional


Varivel

Tipo de dado

Descrio

ACTUAL

REAL

Valor atual da varivel controlada.

SET_POINT

REAL

Valor desejado, varivel de comando.

KP

REAL

Coeficiente de proporcionalidade, ganho de unidade da


parte P.

TV

REAL

Tempo de ao derivativa, ganho de unidade da parte D em


segundos, por exemplo, "0,5" para 500 milissegundos.

Y_MANUAL

REAL

Define o valor da sada Y em caso da varivel MANUAL =


TRUE.

Y_OFFSET

REAL

Offset para a varivel Y manipulada.

Y_MIN, Y_MAX

REAL

Limites superior e inferior para a varivel Y manipulada. Se


Y exceder estes limites, a sada LIMITS_ACTIVE ser
definida para TRUE e Y ser mantido neste intervalo
determinado. Este controle somente funcionar se Y_MIN <
Y_MAX.

MANUAL

BOOL

Se TRUE, a operao manual ser ativa, ou seja, o valor


manipulado ser definido por Y_MANUAL.

RESET

BOOL

TRUE causa um reset no controlador. Durante a


reinicializao, Y = Y_OFFSET.

Tabela 6-3. Variveis de Entrada (PD)

208

6. Bibliotecas
Sadas do Bloco Funcional
Varivel

Tipo de dado

Descrio

REAL

Valor manipulado, calculado pelo bloco funcional.

LIMITS_ACTIVE

BOOL

TRUE indica que Y excedeu os limites determinados


(Y_MIN, Y_MAX).

Tabela 6-4. Variveis de Sada (PD)


Y _OFFSET, Y_MIN e Y_MAX so usadas para a transformao da varivel manipulada em um
intervalo determinado.
MANUAL pode ser usado para ligar e desligar a operao manual. RESET serve para resetar o
controlador.
Na operao normal (MANUAL, RESET e LIMITS_ACTIVE = FALSE) o controlador calcula o
erro do controlador (e) como a diferena de SET_POINT ACTUAL e gera a derivada em relao
ao tempo de/dt. Estes valores so armazenados internamente.
A sada, ou seja, a varivel Y manipulada, calculada da seguinte forma: Y = KP (D + TV dD/dt)
+ Y_OFFSET onde D=SET_POINT-ACTUAL.
Assim, alm da parte P, tambm a alterao atual do erro do controlador (parte D) influencia a
varivel manipulada.
Adicionalmente, Y est limitado a um intervalo determinado por Y_MIN e Y_MAX. Se Y exceder
estes limites, LIMITS_ACTIVE se tornar TRUE. Para no haver limitao na varivel manipulada,
Y_MIN e Y_MAX devem estar configurados para 0.
Enquanto MANUAL=TRUE, Y_MANUAL ser escrita em Y.
Um controlador P pode ser facilmente criado configurando-se TV=0.
PID
A biblioteca util.library fornece o bloco funcional controlador PID.
Exemplo do bloco PID em FBD:

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

Valor atual da varivel controlada.

SET_POINT

REAL

Valor desejado (varivel de comando).

KP

REAL

Coeficiente de proporcionalidade, ganho de unidade da


parte P.

209

6. Bibliotecas
TN

REAL

Tempo de reset, ganho de unidade recproco da parte I.


Tempo dado em segundos, por exemplo "0,5" para 500
milissegundos.

TV

REAL

Tempo de ao derivativa, ganho de unidade da parte D em


segundos, por exemplo, "0,5" para 500 milissegundos.

Y_MANUAL

REAL

Define o valor da sada Y em caso da varivel MANUAL =


TRUE.

Y_OFFSET

REAL

Offset para a varivel Y manipulada.

Y_MIN, Y_MAX

REAL

Limites superior e inferior para a varivel Y manipulada. Se


Y exceder estes limites, a sada LIMITS_ACTIVE ser
definida para TRUE e Y ser mantido neste intervalo
determinado. Este controle somente funcionar se Y_MIN <
Y_MAX.

MANUAL

BOOL

Se TRUE, a operao manual ser ativada, ou seja, o valor


manipulado ser definido por Y_MANUAL.

RESET

BOOL

TRUE causa um reset no controlador. Durante a


reinicializao, Y = Y_OFFSET.

Tabela 6-5. Variveis de Entrada (PID)


Sadas do Bloco Funcional
Varivel

Tipo de dado

Descrio

REAL

Valor manipulado, calculado pelo bloco funcional.

LIMITS_ACTIVE

BOOL

TRUE indica que Y excedeu os limites determinados


(Y_MIN, Y_MAX).

OVERFLOW

BOOL

TRUE indica um overflow.

Tabela 6-6. Variveis de Sada (PID)


Y_OFFSET, Y_MIN e Y_MAX servem para a transformao da varivel manipulada em um
intervalo determinado.
MANUAL pode ser usada para alterar para a operao manual. RESET pode ser usado para
reinicializar o controlador.
Na operao normal (MANUAL = RESET = LIMITS_ACTIVE = FALSE), o controlador calcula o
erro do controlador (e) como a diferena de SET_POINT ACTUAL e gera a derivada em relao
ao tempo de/dt. Estes valores so armazenados internamente.
A sada, isto , a varivel Y manipulada, diferentemente do controlador PD, contm uma parte
integral adicional e calculada da seguinte forma: Y = KP ( + 1/TN edt + TV /t) +
Y_OFFSET.
Assim, alm da parte P, tambm a alterao atual do erro do controlador (parte D) e o seu histrico
(parte I) influenciam a varivel manipulada.
O controlador PID pode ser facilmente convertido para um controlador PI definindo-se TV=0.
Devido parte integral adicional, um overflow pode advir da parametrizao incorreta do controlador
se a integral do erro D vier a divergir. Portanto, por questes de segurana, uma sada booleana
chamada OVERFLOW est presente (neste caso, com o valor TRUE). Isto somente acontecer se o
sistema de controle for instvel devido parametrizao incorreta. Ao mesmo tempo, o controlador
ser suspenso e somente ser ativado novamente atravs da reinicializao.
NOTA: Enquanto a limitao para a varivel manipulada (Y_MIN e Y_MAX) estiver ativa, a parte
integral ser adaptada (o histrico dos valores de entrada afetando automaticamente o valor de sada
limitado). Se este comportamento no for o desejado, desligue a limitao no controlador PID
(Y_MIN>=Y_MAX) e, em vez disto, aplique o operador LIMIT (norma IEC) no valor Y da sada.

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:

Figura 6-8. Resultado da Sada do Bloco BLINK


211

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

Nmero de perodos, ou seja, quantidade de intervalos de


tempo entre as bordas de subida atravs dos quais a
frequncia mdia do sinal de entrada deve ser calculada.
Valores possveis: 1 a 10.

RESET

BOOL

Reset de todos os parmetros a 0

Tabela 6-7. Variveis de Entrada (FREQ_MEASURE)


Variveis de Sada
Varivel

Tipo de dado

Descrio

OUT

REAL

Frequncia resultante em Hz

VALID

BOOL

FALSE at que a primeira medida tenha sido finalizada, ou se


o perodo > 3*OUT (indicando que algo est errado com as
entradas).

Tabela 6-8. Variveis de Sada (FREQ_MEASURE)


GEN
Fornecido pela util.library.
A funo GEN gera funes peridicas tpicas.
Exemplo de GEN em CFC:

MODE descreve a funo a ser gerada, onde os valores de enumerao TRIANGLE e


TRIANGLE_POS retornam duas funes triangulares, SAWTOOTH_RISE (dente de serra
ascendente), SAWTOOTH_FALL (dente de serra descendente), RECTANGLE (sinal retangular),
SINE e COSINE (seno e cosseno):

212

6. Bibliotecas

Figura 6-9. Tringulos

Figura 6-10. Dentes de Serra

213

6. Bibliotecas

Figura 6-11. Seno/Cosseno

Figura 6-12. Retngulo


BASE define se o perodo do ciclo est realmente relacionado a um tempo definido (BASE=TRUE)
ou se est relacionado a um nmero especfico de ciclos, ou seja, o nmero de chamadas do bloco
funcional (BASE=FALSE).
PERIOD ou CYCLES define o perodo do ciclo correspondente.
AMPLITUDE define a amplitude da funo a ser gerada.
O gerador da funo vai para 0 assim que RESET=TRUE.
Manipuladores de Funo
CHARCURVE
Fornecido pela util.library.
Este bloco funcional serve para representar valores, pea por pea, em uma funo linear.
Exemplo de CHARCURVE em FBD:

214

6. Bibliotecas

IN, do tipo INT, alimentado com o valor a ser manipulado.


N, do tipo BYTE, designa o nmero de pontos que definem a funo da apresentao.
P, do tipo ARRAY P[0..10] OF POINT, que uma estrutura baseada em dois valores INT (X e Y),
determina esta curva caracterstica.
OUT, do tipo INT, contm o valor manipulado.
ERR, do tipo BYTE, indica um erro.
Os pontos P[0]..P[N-1] em ARRAY devem ser classificados de acordo com seus valores de X. Caso
contrrio, ERR receber o valor 1. Se a entrada IN no estiver entre P[0].X e P[N-1].X, ERR=2 e
OUT conter o valor de limite correspondente P[0]. Y ou P[N-1].Y.
Se N estiver fora dos valores permitidos (entre 2 e 11), ento ERR=4.
Exemplo em ST:
Primeiramente, ARRAY P deve estar definido no cabealho:
VAR
...
CHARACTERISTIC_LINE:CHARCURVE;
KL:ARRAY[0..10] OF POINT:=[(X:=0,Y:=0),(X:=250,Y:=50),
(X:=500,Y:=150),(X:=750,Y:=400),7((X:=1000,Y:=1000))];
COUNTER:INT;
...
END_VAR

A seguir, alimenta-se CHARCURVE com, por exemplo, um valor constantemente incrementado:


COUNTER:=COUNTER+10;
CHARACTERISTIC_LINE(IN:=COUNTER,N:=5,P:=KL);

Figura 6-13. Ilustrao das Curvas Resultantes

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:

Figura 6-14. Comportamento RAMP_INT

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.

Figura 6-15. Comparao Grfica de Hysteresis.IN e Hysteresis.OUT


LIMITALARM
Fornecido pela util.library.
Este bloco funcional especifica se o valor da entrada est em um intervalo definido e quais limites ele
violou (caso isso tenha ocorrido).
Os valores das entradas IN, HIGH e LOW so do tipo INT. As sadas O, U e IL so do tipo BOOL.
Se o limite superior HIGH for excedido por IN, O torna-se TRUE, e, quando IN estiver abaixo de
LOW, U torna-se TRUE. IL TRUE se IN estiver entre LOW e HIGH.
Exemplo de LIMITALARM em FBD:

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.

Figura 6-16. Diagrama Bsico PID


A Figura 6-17 mostra o diagrama de blocos de um lao PID detalhado, conforme a execuo da UCP
Nexto.

Figura 6-17. Diagrama Completo PID

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

Figura 6-18. PID FB Controlando um Processo Real


O diagrama apresenta apenas os principais parmetros do bloco PID. A sada analgica (AO) uma
varivel escrita no mdulo de sada analgica. A entrada analgica (AI) a varivel lida de um
mdulo de entrada analgica.
As variveis AI e AO normalmente so do tipo INT. Por exemplo, alguns mdulos de entradas e
sadas analgicas tipicamente operam na faixa de 0 .. 30000, onde 0 corresponde a 4 mA, e 30000
corresponde a 20 mA.
Por outro lado, os parmetros MV e PV do PID so do tipo REAL. As unidades e a faixa de operao
podem ser definidas da maneira mais apropriada. A seguir exemplos de converso destes parmetros
para utilizao no PID.
Considere os seguintes exemplos:

MV com a mesma faixa de operao de AO e valor no preparado (e.g.: 0 .. 30000);


MV em porcentagem (e.g.: 0% = vlvula de controle totalmente fechada; 100% = vlvula de
controle totalmente aberta);

Em cada um dos exemplos, observe a necessidade de converso que deve implementar:

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

Ganho proporcional utilizado para calcular a ao proporcional


do bloco PID.

Td

REAL

Tempo Derivativo, em segundos, utilizado para calcular a ao


derivativa do bloco PID.

Ti

REAL

Tempo Integral, em segundos, utilizado para calcular a ao


integral do bloco PID.

BIAS

REAL

Compensao adicionada varivel manipulada.

ManualMV

REAL

Valor atribudo varivel manipulada, quando utilizado o modo


manual.

MaxVarMV

REAL

Mxima variao da varivel manipulada, entre o ciclo atual e o


ciclo anterior. Caso seja zero ou negativa, o bloco PID no tem
limite de variao de MV.

MaxMV

REAL

Mximo valor da varivel manipulada.


Caso o valor calculado seja maior do que o configurado, o MV
ser igual ao MaxMV.

MinMV

REAL

Mnimo valor da varivel manipulada.


Caso o valor calculado seja menor do que o configurado, o MV
ser igual ao MinMV.

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

Mximo valor da varivel de processo.


Caso o valor de PV seja maior do que o configurado, o bloco
PID ir parar o clculo e ser gerado um cdigo de erro na
sada.

REAL

Mnimo valor da varivel de processo.


Caso o valor de PV seja menor do que o configurado, o bloco
PID ir parar o clculo e ser gerado um cdigo de erro na
sada.

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

Quando verdadeiro, habilita a ao proporcional do bloco PID.


Caso seja falso, a ao proporcional zerada.

EnableD

BOOL

Quando verdadeiro, habilita ao derivativa do bloco PID. Caso


seja falso, a ao derivativa zerada.

EnableI

BOOL

Quando verdadeiro, habilita a ao integral do bloco PID. Caso


seja falsa, a ao integral zerada.

DerivPV

BOOL

Quando verdadeiro, a ao derivativa calculada na varivel


de processo, sendo diferente de zero somente quando PV
alterado. Caso seja falso, a ao derivativa calculada no erro,
sendo dependente das variveis SP e PV.

Manual

BOOL

Quando verdadeiro, habilita o modo manual. Caso seja falso,


habilita o modo automtico. O modo de controle do bloco PID
afeta a maneira como o MV e a ao integral so calculadas.

Direct

BOOL

Quando verdadeiro, seleciona-se o controle direto, fazendo


com que MV seja includo na resposta para ser includo no PV.
Caso seja falso, seleciona-se o controle reverso, fazendo com
que MV seja diminudo da resposta para ser includo no PV.

MeasureST

BOOL

Quando verdadeiro, o tempo de amostragem medido. Caso


seja falso, o tempo de amostragem informado pelo usurio na
varivel SampleTime.

Restart

BOOL

Quando verdadeiro, o bloco PID reiniciado, inicializando todas


as variveis. Tambm pode ser utilizado para limpar as aes
integral e derivativa; e os cdigos de erro na sada do bloco.

IntegralAction

REAL

Armazena a ao integral, a qual eliminada em estado de


erro.

Tabela 6-9. Parmetros de Entrada


Parmetros de sada

Tipo

Descrio

MV

REAL

Varivel manipulada.

EffST

REAL

Tempo efetivo de amostragem, em segundos, utilizado para os


clculos de ao derivativa e taxa limite de MV.

Eff3ST

REAL

Tempo efetivo de amostragem dos trs ltimos ciclos, em


segundos, utilizado para os clculos de ao derivativa.

MaxEffST

REAL

Mximo valor do tempo efetivo de amostragem, em segundos,


desde a inicializao do bloco PID.

MinEffST

REAL

Mnimo valor do tempo efetivo de amostragem, em segundos,


desde a inicializao do bloco PID.

UINT

Cdigo de erro exibido pelo bloco PID. Para remov-lo, basta


solucionar o problema e reiniciar o bloco atravs da varivel
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)

ErrorCode

Tabela 6-10. Parmetros de Sada

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

Ganho proporcional utilizado para calcular a ao proporcional


do bloco PID.

Ti

REAL

Tempo Integral, em segundos, utilizado para calcular a ao


integral do bloco PID.

Td

REAL

Tempo Derivativo, em segundos, utilizado para calcular a ao


derivativa do bloco PID.

BIAS

REAL

Compensao adicionada varivel manipulada.

ManualMV

REAL

Valor atribudo varivel manipulada, quando utilizado o modo


manual.

MaxVarMV

REAL

Mxima variao da varivel manipulada, entre o ciclo atual e o


ciclo anterior. Caso seja zero ou negativa, o bloco PID no tem
limite de variao de MV.

MaxMV

REAL

Mximo valor da varivel manipulada.


Caso o valor calculado seja maior do que o configurado, o MV
ser igual ao MaxMV.

MinMV

REAL

Mnimo valor da varivel manipulada.


Caso o valor calculado seja menor do que o configurado, o MV
ser igual ao MinMV.

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

Mximo valor da varivel de processo.


Caso o valor de PV seja maior do que o configurado, o bloco
PID ir parar o clculo e ser gerado um cdigo de erro na
sada.

REAL

Mnimo valor da varivel de processo.


Caso o valor de PV seja menor do que o configurado, o bloco
PID ir parar o clculo e ser gerado um cdigo de erro na
sada.

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

Quando verdadeiro, habilita a ao proporcional do bloco PID.


Caso seja falso, a ao proporcional zerada.

EnableD

BOOL

Quando verdadeiro, habilita ao derivativa do bloco PID. Caso


seja falso, a ao derivativa zerada.

EnableI

BOOL

Quando verdadeiro, habilita a ao integral do bloco PID. Caso


seja falsa, a ao integral zerada.

DerivPV

BOOL

Quando verdadeiro, a ao derivativa calculada na varivel


de processo, sendo diferente de zero somente quando PV
alterado. Caso seja falso, a ao derivativa calculada no erro,
sendo dependente das variveis SP e PV.

Manual

BOOL

Quando verdadeiro, habilita o modo manual. Caso seja falso,


habilita o modo automtico. O modo de controle do bloco PID
afeta a maneira como o MV e a ao integral so calculadas.

Direct

BOOL

Quando verdadeiro, seleciona-se o controle direto, fazendo


com que MV seja includo na resposta para ser includo no PV.
Caso seja falso, seleciona-se o controle reverso, fazendo com
que MV seja diminudo da resposta para ser includo no PV.

MeasureST

BOOL

Quando verdadeiro, o tempo de amostragem medido. Caso


seja falso, o tempo de amostragem informado pelo usurio na
varivel SampleTime.

Restart

BOOL

Quando verdadeiro, o bloco PID reiniciado, inicializando todas


as variveis. Tambm pode ser utilizado para limpar as aes
integral e derivativa; e os cdigos de erro na sada do bloco.

MaxPV

MinPV

Tabela 6-11. Parmetros de Entrada


Parmetros de sada

Tipo

Descrio

MV

REAL

Varivel manipulada.

Overflow

BOOL

Se o valor calculado pelo algoritmo do bloco funcional para a


varivel MV for maior que MaxMV, ento MV ser igual a
MaxMV e esta sada ser igual a TRUE.

Undeflow

BOOL

Se o valor calculado pelo algoritmo do bloco funcional para a


varivel MV for menor que MinMV, ento MV ser igual a
MinMV e esta sada ser igual a TRUE.

EffST

REAL

Tempo efetivo de amostragem, em segundos, utilizado para os


clculos de ao derivativa e taxa limite de MV.

Eff3ST

REAL

Tempo efetivo de amostragem dos trs ltimos ciclos, em


segundos, utilizado para os clculos de ao derivativa.

MaxEffST

REAL

Mximo valor do tempo efetivo de amostragem, em segundos,


desde a inicializao do bloco PID.

MinEffST

REAL

Mnimo valor do tempo efetivo de amostragem, em segundos,


desde a inicializao do bloco PID.

UINT

Cdigo de erro exibido pelo bloco PID. Para remov-lo, basta


solucionar o problema e reiniciar o bloco atravs da varivel
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

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

Tabela 6-12. Parmetros de Sada


PID_INT
O bloco funcional PID_INT funcionalmente idntico ao bloco PID_REAL. Contudo as variveis de
entrada SP, PV, BIAS, ManualMV, MaxVarMV, MaxMV, MinMV, DeadBand, MaxPV e MinPV e
a varivel de sada MV so do tipo INT. Este comportamento importante pois permite declarar
entradas e sadas analgicas diretamente as entradas e sadas do bloco sem ser necessrias converses
de tipos.
Exemplo do bloco PID_INT em FBD:

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

Ganho proporcional utilizado para calcular a ao proporcional


do bloco PID.

Ti

REAL

Tempo Integral, em segundos, utilizado para calcular a ao


integral do bloco PID.

Td

REAL

Tempo Derivativo, em segundos, utilizado para calcular a ao


derivativa do bloco PID.

BIAS

INT

Compensao adicionada varivel manipulada.

ManualMV

INT

Valor atribudo varivel manipulada, quando utilizado o modo


manual.

MaxVarMV

INT

Mxima variao da varivel manipulada, entre o ciclo atual e o


ciclo anterior. Caso seja zero ou negativa, o bloco PID no tem
limite de variao de MV.

MaxMV

INT

Mximo valor da varivel manipulada.

224

6. Bibliotecas
Caso o valor calculado seja maior do que o configurado, o MV
ser igual ao MaxMV.
INT

Mnimo valor da varivel manipulada.


Caso o valor calculado seja menor do que o configurado, o MV
ser igual ao MinMV.

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

Mximo valor da varivel de processo.


Caso o valor de PV seja maior do que o configurado, o bloco
PID ir parar o clculo e ser gerado um cdigo de erro na
sada.

MinPV

INT

Mnimo valor da varivel de processo.


Caso o valor de PV seja menor do que o configurado, o bloco
PID ir parar o clculo e ser gerado um cdigo de erro na
sada.

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

Quando verdadeiro, habilita a ao proporcional do bloco PID.


Caso seja falso, a ao proporcional zerada.

EnableD

BOOL

Quando verdadeiro, habilita ao derivativa do bloco PID. Caso


seja falso, a ao derivativa zerada.

EnableI

BOOL

Quando verdadeiro, habilita a ao integral do bloco PID. Caso


seja falsa, a ao integral zerada.

DerivPV

BOOL

Quando verdadeiro, a ao derivativa calculada na varivel


de processo, sendo diferente de zero somente quando PV
alterado. Caso seja falso, a ao derivativa calculada no erro,
sendo dependente das variveis SP e PV.

Manual

BOOL

Quando verdadeiro, habilita o modo manual. Caso seja falso,


habilita o modo automtico. O modo de controle do bloco PID
afeta a maneira como o MV e a ao integral so calculadas.

Direct

BOOL

Quando verdadeiro, seleciona-se o controle direto, fazendo


com que MV seja includo na resposta para ser includo no PV.
Caso seja falso, seleciona-se o controle reverso, fazendo com
que MV seja diminudo da resposta para ser includo no PV.

MeasureST

BOOL

Quando verdadeiro, o tempo de amostragem medido. Caso


seja falso, o tempo de amostragem informado pelo usurio na
varivel SampleTime.

Restart

BOOL

Quando verdadeiro, o bloco PID reiniciado, inicializando todas


as variveis. Tambm pode ser utilizado para limpar as aes
integral e derivativa; e os cdigos de erro na sada do bloco.

MinMV

DeadBand

MaxPV

Tabela 6-13. Parmetros de Entrada


Parmetros de sada

Tipo

Descrio

MV

INT

Varivel manipulada.

Overflow

BOOL

Se o valor calculado pelo algoritmo do bloco funcional para a


varivel MV for maior que MaxMV, ento MV ser igual a
MaxMV e esta sada ser igual a TRUE.

Undeflow

BOOL

Se o valor calculado pelo algoritmo do bloco funcional para a


varivel MV for menor que MinMV, ento MV ser igual a
MinMV e esta sada ser igual a TRUE.

EffST

REAL

Tempo efetivo de amostragem, em segundos, utilizado para os


clculos de ao derivativa e taxa limite de MV.

Eff3ST

REAL

Tempo efetivo de amostragem dos trs ltimos ciclos, em


segundos, utilizado para os clculos de ao derivativa.

MaxEffST

REAL

Mximo valor do tempo efetivo de amostragem, em segundos,


desde a inicializao do bloco PID.

MinEffST

REAL

Mnimo valor do tempo efetivo de amostragem, em segundos,


desde a inicializao do bloco PID.

ErrorCode

UINT

Cdigo de erro exibido pelo bloco PID. Para remov-lo, basta


solucionar o problema e reiniciar o bloco atravs da varivel

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

Tabela 6-14. Parmetros de Sada


Notas de Aplicao
Seleo do Tempo de Amostragem
A eficincia do controlador digital est diretamente relacionada com o intervalo de amostragem
utilizado. A medida que este intervalo diminui, o resultado do controlador digital aproxima-se do
resultado de um controlador analgico. Aconselha-se utilizar um tempo de amostragem da ordem de
um dcimo da constante de tempo do sistema, ou seja: TA = T / 10, onde TA o tempo de
amostragem utilizado e T a constante de tempo do sistema.
Exemplo: Pode-se obter a constante de tempo de um sistema de primeira ordem a partir do seu
grfico da resposta da varivel de atuao (MV) a um degrau no ponto de ajuste SP com o lao de
controle aberto (PID desabilitado ou em modo manual), conforme a Figura 6-19.

Figura 6-19. Obteno da Constante de Tempo


A Figura 6-19 demonstra a obteno da constante de tempo do sistema por dois modos distintos. O
mais usual tomar como constante de tempo do sistema o tempo necessrio para o sistema atingir

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.

Figura 6-20. Controle em Cascata com Duas Malhas


A malha externa chamada de controlador mestre e a malha interna de controlador escravo. O
controlador mestre tem seu ponto de ajuste fixo e sua sada fornece o ponto de ajuste do controlador
escravo (MV 1). A varivel de atuao do controlador escravo (MV 2) atuar sobre o processo 2 que,
por sua vez, atuar sobre o processo 1, fechando a malha do controlador mestre.
Este tipo de controlador aplicado, por exemplo, no controle de temperatura pela injeo de vapor.
Alm da variao da temperatura, que deve ser controlada, o sistema est sujeito a variaes de
presso na linha de vapor. Torna-se ento desejvel um controlador de vazo escravo atuando em
funo das variaes de presso e um controlador mestre para manipular a referncia do escravo
controlando ento a temperatura do processo. Este exemplo pode ser representado graficamente
conforme a Figura 6-21.

227

6. Bibliotecas

Figura 6-21. Exemplo de Controle em Cascata Aplicado


Caso fosse utilizado somente um controlador de temperatura atuando diretamente sobre a vlvula de
vapor, no haveria como compensar eventuais variaes de presso na linha de vapor.
Existem trs principais vantagens no uso de controladores em cascata:

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.

Sugestes para Ajustes do Controlador PID


A seguir so apresentados dois mtodos para a determinao das constantes do controlador PID. O
primeiro mtodo consiste na determinao das constantes em funo do perodo de oscilao e do
ganho crtico, enquanto que o segundo determina as constantes do controlador em funo da
constante de tempo (T), do tempo morto (Tm) e do ganho esttico do sistema (K). Para maiores
detalhes aconselha-se a leitura da literatura referenciada.
ATENO:
A Altus Sistemas de Automao S.A. no se responsabiliza por eventuais danos causados por erros
de configurao das constantes do controlador ou parametrizao. Recomenda-se que pessoa
devidamente qualificada execute esta tarefa.
Determinao das Constantes do Controlador Atravs do Perodo e do Ganho Crtico
Este mtodo gera uma resposta amortecida cuja taxa de amortecimento igual a 1/4. Isto , depois de
sintonizar um lao atravs deste mtodo, espera-se uma resposta como mostrada na Figura 6-22.

228

6. Bibliotecas

Figura 6-22. Resposta Amortecida


O ganho crtico definido como o ganho de um controlador proporcional que gera uma oscilao de
amplitude constante no sistema em malha fechada enquanto que o perodo crtico o perodo desta
oscilao. O ganho crtico uma medida de controlabilidade do sistema, ou seja, quanto maior o
ganho crtico mais fcil ser o controle do sistema. O perodo crtico de oscilao uma medida da
velocidade de resposta do sistema em malha fechada, ou seja, quanto maior o perodo de oscilao
mais lento ser o sistema. No decorrer deste captulo o ganho crtico ser denominado como GPc e o
perodo crtico como Tc.
importante lembrar que ganhos ligeiramente menores que GPc geram oscilaes cujo perodo
decresce com o tempo, enquanto que ganhos maiores que GPc geram oscilaes cuja amplitude
cresce com o tempo. No caso de ganhos maiores que GPc preciso ter cuidado para no tornar o
sistema criticamente instvel.
O processo para a determinar GPc e Tc consiste em fechar a malha com o controlador em modo
automtico desabilitando a ao integral e a derivativa. Os passos so os seguintes:

Remover a ao integral e derivativa atravs dos respectivos parmetros de entrada.


Aumentar o ganho proporcional com pequenos incrementos. Depois de cada incremento inserir
um pequeno distrbio no sistema atravs de um pequeno degrau no ponto de ajuste (SP).
Verificar o comportamento do sistema (PV), a amplitude de oscilao deve aumentar medida
que o ganho aumenta. O ganho crtico (GPc) ser aquele que gerar oscilaes com amplitude
constante (ou quase constante) conforme a Figura 7-22.
Medir o perodo destas oscilaes (Tc).

Para determinar as constantes do controlador basta aplicar os valores de GPc e Tc nas frmulas da
Tabela 6-15.

229

6. Bibliotecas

Figura 6-23. Oscilaes com Amplitude Constante


Tipo de Controlador

Constantes

Proporcional (P)

GP = 0,5.GPc

Proporcional e Integral (PI)

GP = 0,45.GPc
Ti = Tc/1,2

Proporcional, Integral e Derivativo (PID)

Gp = 0,75.GPc
Ti = Tc/1,6
Td = Tc / 10

Tabela 6-15. Valores de GPc e Tc


Determinao das Constantes do Controlador Atravs das Constantes do Processo
Este mtodo se aplica bem a processos lineares, de primeira ordem (similar a um circuito RC) e com
tempo morto. Na prtica, muitos processos industriais se adaptam a este modelo.
O mtodo requer, inicialmente, determinar as seguintes caractersticas do processo em lao aberto:

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

Figura 6-24. Tr Comparado com uma Constante de Tempo


O parmetro Tr, na Figura 6-24, mostra o tempo de resposta desejado. Trata-se do tempo medido
entre o incio da resposta do sistema (aps o tempo morto Tm), e o momento em que PV atinge
63,21% de sua excurso total. Atravs de Tr o usurio pode especificar um requisito de performance
para o lao controlado. Deve-se ter o cuidado de no especificar tempos de resposta menores que um
dcimo da constante de tempo do sistema, pois do contrrio o sistema pode ficar instvel. Quanto
menor o valor de Tr, maior o ganho necessrio.
A seguir, descreve-se como determinar, atravs de um teste de lao aberto, os demais parmetros (K,
Tm e T), que caracterizam o processo. Um modo simples para determinar estas constantes do
processo colocar o bloco funcional PID em modo manual, gerar um pequeno degrau em MV e
plotar a resposta de PV no tempo. Para processos lentos isto pode ser feito manualmente, mas para
processos rpidos aconselha-se o uso de um osciloscpio ou qualquer outro dispositivo que monitore
a variao de PV. O degrau em MV deve ser grande o suficiente para causar uma variao
perceptvel em PV.
A Figura 6-25 representa um degrau na sada MV, aplicado no instante t0 , e a resposta de um
sistema linear de primeira ordem com tempo morto.

Figura 6-25. Degrau em MV e Resposta do Sistema ao Degrau

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

Proporcional, Integral e Derivativo (PID)

GP = _______T_________
K * (Tr + Tm + dt/2)
Ti = T
Td = Tm/2 + dt/4

Tabela 6-16. Parmetros do Controlador


Ganhos X Escalas
importante lembrar que o ganho proporcional somente executar sua ao de modo correto quando
tanto a entrada como a sada do sistema utilizarem as mesmas escalas. Por exemplo, um controlador
proporcional com ganho unitrio e entrada (PV) utilizando a faixa de 0 a 1000 somente ser
realmente unitrio se a faixa de sada (MV) tambm for de 0 a 1000.
Em muitos casos as escalas de entrada e sada so diferentes. Pode-se citar como exemplo um
sistema onde o carto de entrada analgica de 4-20 mA, onde 4 mA corresponde ao valor 0, e 20
mA corresponde ao valor 30000. E o carto de sada analgica de 0 V a 10 V, onde 0 V
corresponde ao valor 0, e 10 V corresponde ao valor 1000. Em casos como o deste exemplo, o ajuste
de escalas pode ser feito atravs do ganho proporcional ao invs de uma normalizao dos valores de
entrada ou de sada.
Uma estratgia que pode ser adotada , inicialmente, determinar o ganho em termos percentuais
(independente de escalas), sem se preocupar com o tipo de mdulos de entrada e sada analgicas
utilizados. Posteriormente, aps determinado este ganho, deve-se executar a correo de escalas,
antes de introduzir o ganho proporcional no bloco funcional PID.
A estratgia consiste em determinar o ganho proporcional do sistema utilizando a faixa percentual
(0% a 100%) tanto da varivel medida (PV) como do valor de atuao (MV), sem levar em
considerao os valores absolutos, tanto de PV como de MV.
Isto levar determinao de um ganho proporcional denominado GP%. Este ganho GP% no pode
ser utilizado diretamente no bloco funcional PID. Antes necessrio fazer uma correo de escalas,
que considere os valores absolutos destas variveis.
ATENO:
Na seo anterior, Sugestes para Ajustes do Controlador PID, so sugeridos mtodos de ajuste
nos quais a correo de escalas implcita ao mtodo, no devendo ser considerada. No captulo
seguinte, Exemplo de Aplicao, a correo de escalas tambm desnecessria, pois utilizou-se um
dos mtodos abordados na seo Sugestes para Ajustes do Controlador PID.

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:

SA0 = 0 = 0% = 0 V (corresponde a mnima vazo de gua pela vlvula)


SA1 = 30000 = 100% = 10 V (corresponde a mxima vazo de gua pela vlvula)

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

Figura 6-26. Exemplo de Controle de Temperatura


Observa-se que o transmissor de temperatura (TT) fica perto do consumidor, que fica a 20 metros do
ponto de aquecimento da gua. Processos como este so bons exemplos de como podem ser
introduzidos tempos mortos. Isto porque a gua aquecida no ponto de aquecimento leva algum tempo
para percorrer a distncia at o ponto de medio junto do consumidor. Tempos mortos foram
discutidos anteriormente (Figura 6-24).
Algumas hipteses foram assumidas no modelamento deste processo:

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.

Descrio dos Mdulos Analgicos


Conforme pode ser visto na Figura 6-26, necessita-se de uma sada analgica 4 a 20 mA, e de uma
entrada analgica de 4 a 20 mA, como interfaces entre o controlador e o processo.
Internamente ao controlador, estas faixas de 4 a 20 mA correspondem a variveis (PV e MV). Estas
faixas de valores numricos podem variar em funo dos mdulos de entrada e sada analgica
selecionados. Neste exemplo, assume-se o seguinte:
entrada analgica PV (0 a 30000):
PV = 0 ---> 4 mA ---> 30 C
PV = 30000 ---> 20 mA ---> 130 C
sada analgica MV (0 a 10000):
MV = 0 ---> 4 mA = 0 ---> 0 m/h
MV = 10000 ---> 20 mA ---> 8 m/h

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.

Figura 6-27. Diagrama de Blocos do Bloco Funcional PID


SP:
mnimo = 6000 (50 C)
mximo = 15000 (80 C)
PV:
mnimo = 0 (30 C)
mximo = 30000 (130 C)
MV:
mnimo = 0 (0 m/h)
mximo = 7500 ---> (6 m/h)
Observa-se que no caso de MV, embora a vlvula tenha capacidade de injetar 8 m/h, deseja-se
limitar esta vazo em 6 m/h.
Parmetros do Processo
A Figura 6-28 mostra o resultado de um teste de malha aberta sobre o processo. Para executar este
teste, utilizou-se diretamente as variveis MV e PV, com suas unidades internas.

235

6. Bibliotecas

Figura 6-28. Teste de Malha Aberta


A partir da Figura 6-28 pode-se determinar os 3 parmetros bsicos, conforme explicado
anteriormente na seo Notas de Aplicao.
Tm = 10 segundos (tempo morto, visto que o degrau foi aplicado em t = 50 s e a resposta iniciou em t
= 60 s).
T = 30 segundos (constante de tempo, visto que a resposta iniciou em t = 60 s, e atingiu 63,21% da
excurso em t = 90 s):
9792 = 6000 + (12000 - 6000) * 0,6321.
K = 2.4 (ganho esttico do processo)
2.4 = _12000 6000
5000 2500
Sintonia do Controlador
J que foi realizado o teste de malha aberta, ser utilizado o segundo mtodo de sintonia descrito no
captulo Notas de Aplicao.
Para utilizar este mtodo, alm dos parmetros do processo determinados na seo anterior (Tm, T e
K), tambm necessrio que o usurio informe outros 2 parmetros:

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.

Agora, possvel aplicar as equaes do mtodo:


GP = T / (K * (Tr + Tm + Dt/2)) = 30 / (2.4 * (10 + 10 + 1/2) = 0,609
Ti = T = 30 s/rep
Td = Tm/2 + Dt/4 = 10/2 + 1/2 = 5.25 s
236

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 com o nome do objeto Recipe Definition onde est a


receita a ser escrita. Deve ser observado o uso de caracteres
maisculos e minsculos pois o nome na string deve ser
idntico ao atribudo ao objeto.

STRING

STRING com o nome da receita que ser escrita e est


definida dentro do objeto Recipe Definition. Deve ser
observado o uso de caracteres maisculos e minsculos pois
o nome na string deve ser idntico ao atribudo a receita.

sRecipeName

Tabela 6-17. Parmetros de Entrada


Quando a funo executada com o sucesso o seu retorno zero. Quando acontece algum erro um
cdigo de erro o retorno. O retorno da funo do tipo de DWORD, mas pode ser declarado como
um enumervel chamado RECIPE_RETURN_VALUES. os valores possveis de retorno so
apresentados na Tabela 6-18.
Cdigo de Erro

Valor

Descrio

ERROR_OK

16#0

Funo executada corretamente.

16#4003

No existe ou est errado o nome da receita dentro


do objeto Recipe Definition. Tambm indica erro no
formato da STRING inserida como parmetro. Por
exemplo, a STRING no pode ser nula e deve
possuir no mximo 60 caracteres e no pode possuir
os caracteres |, . e /.

16#4004

No existe ou est errado o nome do objeto Recipe


Definition. Tambm indica erro no formato da
STRING inserida como parmetro. Por exemplo, a
STRING no pode ser nula e deve possuir no
mximo 60 caracteres e no pode possuir os
caracteres |, . e /.

16#4006

No existe um objeto RecipeManager no projeto


onde a funo foi includa. Este erro informado
caso os parmetros da funo sejam consistentes.
Caso contrrio indicado que erro no parmetro
inconsistente.

ERROR_RECIPE_NOT_FOUND

ERROR_RECIPE_DEFINITON_NOT_FOUND

ERROR_NO_RECIPE_MANAGER_SET

Tabela 6-18. Cdigos de Erro da Funo


Antes de executar a escrita a funo consiste os parmetros de entrada. Se houver alguma
inconsistncia indicado erro na Receita ou no Recipe Definition. Caso as STRINGs dos parmetros
sejam vlidas a funo tenta executar a escrita. Se a Receita ou o Recipe Definition no estiver
carregado no CP pode ocorrer erro.
Exemplo de uso ST com a declarao de RECIPE_RETURN_VALUES como retorno da funo:
VAR
sName : STRING := 'Recipe001';
sDef : STRING := 'Recipes';
237

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

Sequncia finita de instrues bem definidas, objetivando a resoluo de problemas.


Estrutura de dados para configurao do hardware.
Conjunto de mdulos de E/S interligados a uma UCP ou cabea de rede de campo.
Unidade bsica de informao, cujo estado 0 (falso) ou 1 (verdadeiro).
Ponto de parada no aplicativo para depurao.
Disseminao simultnea de informao a todos os ns interligados a uma rede de comunicao.

Byte

Unidade de informao composta por oito bits.

CAN

Protocolo de comunicao usado largamente em redes automotivas.

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

Tambm chamado de E/S. Dispositivos de E/S de dados de um sistema. No caso de CPs,


correspondem tipicamente a mdulos digitais ou analgicos de entrada ou sada que monitoram ou
acionam o dispositivo controlado.

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

Equipamentos fsicos usados em processamento de dados onde normalmente so executados


programas (software).

IEC 61131

Norma genrica para operao e utilizao de CPs. Antiga IEC 1131.

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

Ao de estabelecer um canal de comunicao com o CP.

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

Menu dinmico com o contedo de acordo com o contexto atual.


Equipamento ligado a uma rede de comunicao de onde se originam solicitaes de comandos para
outros equipamentos da rede.
Elemento bsico de um sistema completo que possui funes bem definidas. Normalmente ligado ao
sistema por conectores, podendo ser facilmente substitudo.
Elementos sobre os quais as instrues atuam. Podem representar constantes, variveis ou um conjunto
de variveis.
Sigla para programmable controller. a abreviatura de controlador programvel em ingls.
Program Organization Unit, ou Unidade de Organizao de Programa, uma subdiviso do programa
aplicativo que pode ser escrito em qualquer uma das linguagens disponveis.
o programa carregado em um CP, que determina o funcionamento de uma mquina ou processo.
Regras de procedimentos e formatos convencionais que, mediante sinais de controle, permitem o
estabelecimento de uma transmisso de dados e a recuperao de erros entre equipamentos.
Sigla para random access memory. a memria onde todos os endereos podem ser acessados
diretamente de forma aleatria e com a mesma velocidade. voltil, ou seja, seu contedo perdido
quando o equipamento desenergizado, a menos que se possua uma bateria para a reteno dos
valores.
Conjunto de equipamentos (ns) interconectados por canais de comunicao.
Comando para reinicializar o CP.
Comando para colocar o CP em modo de execuo.
Ao para atribuir o estado de nvel lgico alto para uma varivel booleana.
Programas de computador, procedimentos e regras relacionadas operao de um sistema de
processamento de dados.
Comando para congelar o CP em seu estado atual.

239

7. Glossrio
Token
Tooltip

uma marca que indica quem o mestre do barramento no momento.


Caixa de texto com uma ajuda ou local onde pode-se entrar com a ajuda.

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

Unidade de informao composta por 16 bits.


Do ingls, Extensible Markup Language, um padro para gerar linguagens de marcao.
No contexto da janela de funo do teclado, utilizado para a troca de telas.

240