Você está na página 1de 224

EcoStruxure Machine Expert - Basic

Guia da biblioteca de funções genéricas

EIO0000003295.03
11/2022

www.se.com
Informações legais
A marca Schneider Electric e quaisquer marcas comerciais da Schneider Electric SE
e suas subsidiárias mencionadas neste guia são de propriedade da Schneider
Electric SE e de suas subsidiárias. Todas as outras marcas podem ser marcas
registradas de seus respectivos proprietários. Este guia e seu conteúdo são
protegidos pelas leis de direitos autorais aplicáveis e fornecidos somente para fins
informativos. Nenhuma parte deste guia pode ser reproduzida ou transmitida de
qualquer forma ou por qualquer meio (eletrônico, mecânico, fotográfico, gravação ou
outro), para qualquer finalidade, sem a permissão prévia por escrito da Schneider
Electric.
A Schneider Electric não concede nenhum direito ou licença para uso comercial do
guia ou de seu conteúdo, exceto para uma licença não exclusiva e pessoal para
consultá-lo "no estado em que se encontra".
Os produtos e equipamentos da Schneider Electric devem ser instalados, operados,
consertados e mantidos somente por pessoal qualificado.
Como os padrões, as especificações e os designs mudam de tempos em tempos, as
informações neste guia podem estar sujeitas a alterações sem aviso prévio.
Na medida permitida pela lei aplicável, a Schneider Electric e suas subsidiárias não
assumem nenhuma responsabilidade ou obrigação por quaisquer erros ou omissões
no conteúdo informativo deste material ou consequências decorrentes do uso das
informações contidas neste documento.

Como parte de um grupo de empresas responsáveis e inclusivas, estamos


atualizando nossas comunicações que contêm terminologia não inclusiva. No
entanto, até concluirmos este processo, o nosso conteúdo poderá ainda conter
termos padronizados do setor, que poderão ser considerados inadequados pelos
nossos clientes.

© 2022 – Schneider Electric. Todos os direitos reservados.


Índice analítico
Informações de segurança ........................................................................7
Antes de começar.......................................................................................7
Partida e teste ............................................................................................8
Funcionamento e ajustes ...................................................................................9
Sobre este manual ....................................................................................10
Introdução ..................................................................................................14
Como usar exemplos de código fonte.........................................................14
Blocos de operações ................................................................................16
Blocos de comparação..............................................................................18
Objetos de linguagem ..............................................................................20
Objetos....................................................................................................20
Objetos de bits de memória .......................................................................21
Objetos de E/S .........................................................................................22
Objetos de palavras..................................................................................24
Objetos de ponto flutuante e palavra dupla .................................................28
Objetos estruturados ................................................................................32
Objetos indexados....................................................................................34
Objetos de blocos de funções....................................................................36
Instruções...................................................................................................38
Processamento booleano..........................................................................38
Instruções booleanas ..........................................................................38
Operadores de carga (LD, LDN, LDR, LDF ...........................................40
Operadores de atribuição (ST, STN, R, S).............................................42
Operadores lógicos AND (AND, ANDN, ANDR, ANDF)..........................43
Operadores lógicos OR (OR, ORN, ORR, ORF)....................................44
Operadores OR Exclusivos (XOR, XORN, XORR, XORF)......................45
Operador NOT (N) ..............................................................................47
Funções de subida e descida (RISING, FALLING).................................48
Instruções de comparação ..................................................................50
Processamento numérico..........................................................................51
Introdução a operações numéricas.......................................................51
Instruções de atribuição ......................................................................51
Atribuição de cadeias de bits ...............................................................52
Atribuição de palavras.........................................................................53
Operadores aritméticos em inteiros ......................................................54
Instruções lógicas ...............................................................................57
Instruções de deslocamento ................................................................58
Instruções de conversão BCD/binário...................................................59
Instruções de conversão de palavra simples/dupla ................................61
Programa.................................................................................................61
Instruções END ..................................................................................62
Instruções NOP ..................................................................................63
Instruções de salto..............................................................................63
Elementos condicionais.......................................................................64
Elementos de loop ..............................................................................66
Instruções de sub-rotina ......................................................................67
Ponto de flutuação....................................................................................68

EIO0000003295.03 3
Instruções aritméticas sobre objetos de ponto flutuante .........................68
Instruções trigonométricas...................................................................70
Instruções de conversão de ângulo ......................................................71
Instruções de conversão inteiro/flutuante..............................................72
ASCII.......................................................................................................74
Instruções ROUND .............................................................................74
Instruções de conversão de ASCII para inteiro ......................................75
Instruções de conversão de inteiro para ASCII ......................................77
ASCII para instruções de conversão de flutuante ..................................78
Instruções de conversão de flutuante para ASCII ..................................80
Instruções de conversão de ASCII para palavra dupla ...........................81
Instruções de conversão de palavra dupla para ASCII ...........................83
Operadores de pilha .................................................................................84
Instruções da pilha (MPS, MRD, MPP) .................................................84
Instruções em tabelas de objetos...............................................................85
Atribuição de tabelas de palavra, palavra dupla e ponto
flutuante.............................................................................................86
Funções de soma de tabela.................................................................87
Funções de comparação de tabelas .....................................................88
Funções de pesquisa de tabela............................................................89
Funções de pesquisa de tabelas para valores máximos e
mínimos .............................................................................................90
Número de ocorrências de um valor em uma tabela ..............................91
Funções de deslocamento de giro de tabela .........................................92
Funções de classificação de tabela ......................................................93
Funções de interpolação de tabela de ponto flutuante (LKUP)................94
Funções MEAN dos valores de uma tabela de ponto flutuante ...............97
Função SWAP dos valores de uma tabela do Word ...............................98
Instruções em objetos de E/S ....................................................................99
Ler entrada incorporada digital imediata (READ_IMM_IN) .....................99
Saída digital incorporada imediata de gravação (WRITE_IMM_
OUT................................................................................................. 100
Parâmetro de bloco de funções de leitura imediata (READ_
IMM) ................................................................................................ 101
Parâmetro de bloco de funções de gravação imediata (WRITE_
IMM) ................................................................................................ 102
Objetos de E/S ........................................................................................ 104
Contador rápido (%FC) ........................................................................... 104
Contador de alta velocidade (%HSC) ....................................................... 104
Impulso (%PLS) ..................................................................................... 104
Modulação por duração de impulso (%PWM) ........................................... 104
Objetos de rede ....................................................................................... 106
Objetos de rede...................................................................................... 106
Objetos de software................................................................................ 107
Utilizando os blocos de funções............................................................... 107
Princípios de programação de blocos de funções ................................ 107
Adicionar um bloco de funções .......................................................... 108
Configurando um bloco de funções .................................................... 110
Temporizador (%TM) .............................................................................. 110
Descrição......................................................................................... 111

4 EIO0000003295.03
Configuração.................................................................................... 111
TON: temporizador de atraso............................................................. 113
TOF: temporizador de atraso desligado .............................................. 116
TP: Temporizador de pulsos .............................................................. 119
Exemplo de programação.................................................................. 122
Contador (%C) ....................................................................................... 122
Descrição......................................................................................... 123
Configuração.................................................................................... 124
Exemplo de programação.................................................................. 126
Mensagem (%MSG) e intercâmbio (EXCH) .............................................. 127
Visão geral ....................................................................................... 127
Descrição......................................................................................... 129
Configuração.................................................................................... 134
Exemplo de programação.................................................................. 137
Exemplos ASCII ............................................................................... 138
Pedidos e exemplos padrão do Modbus ............................................. 140
Registro LIFO/FIFO (%R)........................................................................ 147
Descrição......................................................................................... 147
Configuração.................................................................................... 148
Operação de registo LIFO ................................................................. 150
Operação de registo FIFO ................................................................. 151
Exemplo de programação.................................................................. 152
Drums (%DR)......................................................................................... 152
Descrição......................................................................................... 153
Configuração.................................................................................... 154
Exemplo de programação.................................................................. 155
Registro de bit de deslocamento (%SBR) ................................................. 158
Descrição......................................................................................... 158
Configuração.................................................................................... 159
Exemplo de programação.................................................................. 160
Step Counter (%SC) ............................................................................... 161
Descrição......................................................................................... 161
Configuração.................................................................................... 162
Exemplo de programação.................................................................. 163
Blocos de agendamento (%SCH) ............................................................ 164
Descrição......................................................................................... 164
Programação e configuração ............................................................. 167
Relógio em tempo real (RTC) .................................................................. 169
Descrição......................................................................................... 169
Configuração.................................................................................... 171
PID........................................................................................................ 172
Função PID ...................................................................................... 172
Registro de dados .................................................................................. 173
Registro de dados............................................................................. 173
Passos Grafcet....................................................................................... 175
Passos Grafcet ................................................................................. 175
Objetos de PTO....................................................................................... 176
Tabela de tarefa de movimentos (%MT) ................................................... 176
Saída do trem de pulso (%PTO) .............................................................. 176
Objetos da unidade ................................................................................ 177
Objetos da unidade................................................................................. 177
EIO0000003295.03 5
Objetos de comunicação ....................................................................... 178
Ler dados de um dispositivo remoto(%READ_VAR) .................................. 178
Descrição......................................................................................... 178
Configuração da função .................................................................... 182
Exemplo de programação.................................................................. 184
Gravar dados em um dispositivo Modbus(%WRITE_VAR)......................... 184
Descrição......................................................................................... 184
Configuração da função .................................................................... 186
Exemplo de programação.................................................................. 189
Ler e gravar dados em um dispositivo Modbus (%WRITE_READ_
VAR)...................................................................................................... 189
Descrição......................................................................................... 189
Configuração da função .................................................................... 191
Exemplo de programação.................................................................. 193
Comunicação em um link ASCII(%SEND_RECV_MSG)............................ 194
Descrição......................................................................................... 194
Configuração da função .................................................................... 196
Exemplo de programação.................................................................. 198
Enviar Receber SMS (%SEND_RECV_SMS) ........................................... 199
Descrição......................................................................................... 199
Configuração da função .................................................................... 205
Diagramas de temporização para blocos de função do objeto de
comunicação.......................................................................................... 210
Exemplos de diagramas de temporização........................................... 210
Funções definidas pelo usuário ............................................................ 212
Apresentação......................................................................................... 212
Blocos de função definidos pelo usuário ............................................. 213
Apresentação......................................................................................... 213
Funções de relógio ................................................................................. 214
Funções de relógio ................................................................................. 214
Carimbo de data e hora........................................................................... 214
Definir data e hora .................................................................................. 216
Glossário .................................................................................................. 219
Índice ........................................................................................................ 221

6 EIO0000003295.03
Informações de segurança

Informações de segurança
Informações importantes
Leia estas instruções cuidadosamente e observe o equipamento para se
familiarizar com o dispositivo antes de tentar instalar, operar, consertar ou fazer
manutenção. As seguintes mensagens especiais podem aparecer ao longo desta
documentação ou no equipamento para alertar sobre perigos potenciais ou para
chamar a atenção para informações que esclarecem ou simplificam um
procedimento.

A inclusão desse símbolo às etiquetas de segurança “Perigo” e “Atenção” indica


a existência de um risco elétrico que poderá resultar em lesão física caso as
instruções não sejam seguidas.

Este é o símbolo de alerta de segurança. Ele é usado para alertar sobre riscos
de lesão física em potencial. Obedeça a todas as mensagens que seguem esse
símbolo a fim de evitar possíveis lesões ou morte.

! PERIGO
PERIGO indica uma situação de risco que, se não for evitada, resultará em lesão
grave ou morte.

! ATENÇÃO
ATENÇÃO indica uma situação de risco que, se não for evitada, pode resultar em lesão
grave ou morte.

! CUIDADO
CUIDADO indica uma situação de risco que, se não for evitada, pode resultar em lesões
leves ou moderadas.

AVISO
O AVISO é usado para abordar práticas não relacionadas a lesão física.

Observação
O equipamento elétrico deve ser instalado, operado, reparado e mantido apenas
por pessoal qualificado. Nenhuma responsabilidade é assumida pela Schneider
Electric por quaisquer consequências decorrentes do uso deste material.
Uma pessoa qualificada é aquela que possui habilidades e conhecimentos
relacionados à construção e operação de equipamentos elétricos e sua
instalação, e recebeu treinamento de segurança para reconhecer e evitar os
perigos envolvidos.

Antes de começar
Não utilize este produto em maquinários que não tenham uma proteção efetiva no
ponto de operação. A falta de proteção efetiva no ponto de operação de uma
máquina pode resultar em ferimentos graves ao operador dessa máquina.

EIO0000003295.03 7
Informações de segurança

ATENÇÃO
EQUIPAMENTO SEM PROTEÇÃO
• Não utilize este software e o equipamento de automação relacionado em
equipamentos que não tenham proteção no ponto de operação.
• Não toque no maquinário durante a operação.
O não cumprimento destas instruções poderá resultar em morte,
ferimentos graves ou danos do equipamento.

Este equipamento de automação e o software relacionado são utilizados para


controlar diversos processos industriais. O tipo ou modelo de equipamento de
automação adequado para cada aplicação variará dependendo de fatores como a
função de controle necessária, grau de proteção necessária, métodos de
produção, condições incomuns, regulamentos governamentais etc. Em algumas
aplicações, mais de um processador pode ser necessário, como quando a
redundância de backup é necessária.
Somente você, o usuário, o construtor da máquina ou o integrador, podem estar
cientes de todas as condições e fatores presentes durante a configuração, a
operação e a manutenção da máquina e, portanto, podem determinar o
equipamento de automação e as seguranças e interbloqueios relacionados que
podem ser utilizados de modo apropriado. Ao selecionar o equipamento de
automação e controle e o software relacionado para um aplicativo específico,
deve-se consultar as normas e regulamentos aplicáveis locais e nacionais. O
National Safety Council's Accident Prevention Manual (nacionalmente
reconhecido nos Estados Unidos) também fornece muitas informações úteis.
Em algumas aplicações, como maquinário para embalagens, será obrigatório
fornecer proteção adicional ao operador, como no ponto de operação. Isso ocorre
porque, se as mãos ou outras partes do corpo tiverem liberdade para entrar em
pontos de pinçamento ou outras áreas perigosas, ferimentos sérios podem
ocorrer. Os produtos de software por si só não podem proteger o operador de
ferimentos. Por essa razão, o software não pode substituir ou tomar o lugar de
uma proteção no ponto de operação.
Certifique-se de que a segurança e interbloqueios mecânicos/elétricos
apropriados relacionados à proteção do ponto de operação sejam instalados e
estejam operacionais antes de colocar o equipamento em funcionamento. Todos
os interbloqueios e a segurança relacionados à proteção do ponto de operação
devem ser coordenados com o equipamento de automação e a programação do
software relacionados.
NOTA: A coordenação da segurança e dos interbloqueios mecânicos/
elétricos para a proteção do ponto de operação ficam fora do escopo da
Biblioteca de blocos de funções, do Guia do usuário do sistema ou de outra
implementação citada nesta documentação.

Partida e teste
Antes de usar o controle elétrico e o equipamento de automação para operação
regular após a instalação, deve-se testar a inicialização do sistema por pessoal
qualificado para verificar a operação correta do equipamento. É importante que
os preparativos para tal busca sejam feitos e que haja tempo suficiente para
realizar um teste completo e satisfatório.

8 EIO0000003295.03
Informações de segurança

ATENÇÃO
RISCO DE FUNCIONAMENTO DO EQUIPAMENTO
• Verifique se todos os procedimentos de instalação e inicialização foram
concluídos.
• Antes da execução dos testes funcionais, retire de todos os dispositivos
componentes todos os blocos ou meios de suporte temporários utilizados
para a expedição.
• Retire ferramentas, aparelhos de medição e resíduos do equipamento.
O não cumprimento destas instruções poderá resultar em morte,
ferimentos graves ou danos do equipamento.

Execute todos os testes de inicialização recomendados na documentação do


equipamento. Armazene toda a documentação do equipamento para consulta
futura.
O teste de software deve ser feito em ambientes simulados e reais.
Verifique se o sistema completo está sem curtos-circuitos e aterramentos
temporários que não estejam instalados de acordo com as regulamentações
locais (por exemplo, de acordo com o National Electrical Code, dos EUA). Se
houver a necessidade de executar o teste de tensão de alto potencial, siga as
recomendações da documentação do equipamento para evitar danos acidentais
ao equipamento.
Antes de ligar o equipamento:
• Retire ferramentas, aparelhos de medição e resíduos do equipamento.
• Feche a porta do compartimento do equipamento.
• Remova todos os aterramentos temporários das linhas de alimentação de
entrada.
• Execute todos os testes de inicialização recomendados pelo fabricante.

Funcionamento e ajustes
As precauções a seguir são da NEMA Standards Publication ICS 7.1-1995
(aversão em inglês prevalece):
• Independentemente do cuidado exercido no projeto e na fabricação de
equipamentos ou na seleção e classificação dos componentes, existem
riscos que podem ser encontrados se tal equipamento for operado de forma
inadequada.
• Algumas vezes é possível desajustar o equipamento, produzindo uma
operação insatisfatória ou sem segurança. Sempre utilize as instruções do
fabricante como um guia para ajustes funcionais. Os funcionários que
tiverem acesso a esses ajustes devem estar familiarizados com as instruções
do fabricante do equipamento e com o maquinário usado com o equipamento
elétrico.
• O operador deverá ter acesso somente os ajustes operacionais que ele
precise executar. O acesso a outros controles deve ser restrito a fim de evitar
alterações não autorizadas nas características operacionais.

EIO0000003295.03 9
Sobre este manual

Sobre este manual


Escopo do documento
Este guia descreve como utilizar Blocos de funções e Instruções em programas
criados com o software EcoStruxure Machine Expert - Basic. As descrições se
aplicam a todos os controladores lógicos suportados pela EcoStruxure Machine
Expert - Basic.

Âmbito de aplicação
As informações neste manual são aplicáveis somente para produtos compatíveis
com EcoStruxure Machine Expert - Basic.
Este documento foi atualizado para o lançamento do EcoStruxureTM Machine
Expert - Basic V1.2 SP1 Patch 1.
As características descritas no presente documento, bem como as descritas nos
documentos incluídos na secção Documentos relacionados abaixo, podem ser
encontradas online. Para acessar as informações online, vá para a página inicial
da Schneider Electric www.se.com/ww/en/download/.
As características descritas no presente documento devem ser as mesmas que as
características apresentadas online. De acordo com a nossa política de melhoria
constante, podemos rever periodicamente os conteúdos para melhorar a clareza e
a exatidão. Se você encontrar uma diferença entre o documento e as informações
online, use as informações online como referência.

Documentos relacionados
Título da documentação Número de referência

EcoStruxure Machine Expert - Basic - Guia de instruções EIO0000003281 (ENG)

EIO0000003282 (FRA)

EIO0000003283 (GER)

EIO0000003284 (SPA)

EIO0000003285 (ITA)

EIO0000003286 (CHS)

EIO0000003287 (POR)

EIO0000003288 (TUR)

Modicon M221 Logic Controller Guia para a biblioteca de EIO0000003305 (ENG)


funções avançadas
EIO0000003306 (FRE)

EIO0000003307 (GER)

EIO0000003308 (SPA)

EIO0000003309 (ITA)

EIO0000003310 (CHS)

EIO0000003311 (POR)

EIO0000003312 (TUR)

10 EIO0000003295.03
Sobre este manual

Título da documentação Número de referência

Modicon M221 Logic Controller - Guia de programação EIO0000003297 (ENG)

EIO0000003298 (FRE)

EIO0000003299 (GER)

EIO0000003300 (SPA)

EIO0000003301 (ITA)

EIO0000003302 (CHS)

EIO0000003303 (POR)

EIO0000003304 (TUR)

Modicon M221 Logic Controller - Guia de hardware EIO0000003313 (ENG)

EIO0000003314 (FRA)

EIO0000003315 (GER)

EIO0000003316 (SPA)

EIO0000003317 (ITA)

EIO0000003318 (CHS)

EIO0000003319 (POR)

EIO0000003320 (TUR)

Informações relacionadas com produtos

ATENÇÃO
PERDA DE CONTROLE
• O projetista de qualquer esquema de controle deve considerar os possíveis
modos de falha de caminhos de controle e, para certas funções essenciais
de controle, fornecer um meio para atingir um estado seguro durante e após
uma falha no caminho. Exemplos de funções essenciais de controle são
parada de emergência e parada de ultrapassagem, falta de energia e
reiniciar.
• Caminhos de controle separados ou redundantes devem ser fornecidas
para as funções essenciais de controle.
• Caminhos de controle do sistema podem incluir links de comunicação.
Considerações devem ser dadas para as implicações dos atrasos de
transmissão imprevistos ou falhas do link.
• Observar todos os regulamentos de prevenção de acidentes e orientações
de segurança local.1
• Cada implementação desse equipamento deve ser individual e
cuidadosamente testada para o funcionamento correto antes de ser
colocado em serviço.
O não cumprimento destas instruções poderá resultar em morte,
ferimentos graves ou danos do equipamento.

1Para obter informações adicionais, consulte NEMA ICS 1.1 (última edição),
"Safety Guidelines for the Application, Installation, and Maintenance of Solid State
Control"e NEMA ICS 7.1 (última edição), "Safety Standards for Construction and
Guide for Selection, Installation and Operation of Adjustable-Speed Drive
Systems" ou seu equivalente em sua localização.

EIO0000003295.03 11
Sobre este manual

ATENÇÃO
OPERAÇÃO NÃO INTENCIONAL DO EQUIPAMENTO
• Use somente software aprovado pela Schneider Electric para uso com este
equipamento.
• Atualize seu programa do aplicativo sempre que a configuração física do
hardware for alterada.
O não cumprimento destas instruções poderá resultar em morte,
ferimentos graves ou danos do equipamento.

Tecnologia derivada de padrões


Os termos técnicos, terminologia, símbolos e descrições correspondentes neste
manual ou que apareçam nos próprios produtos são geralmente derivados dos
termos ou definições dos padrões internacionais.
Na área de sistemas de segurança funcional, drives e automação geral podem
incluir, mas não se limitam a, termos como segurança, função de segurança,
estado de segurança, falha, redefinição de falha, defeito, falha, erro, mensagem
de erro, perigoso, etc.
Entre outros, estão incluídos estes padrões:

Padrão Descrição

IEC 61131-2:2007 Controladores programáveis, parte 2: Requisitos e testes do


equipamento.

ISO 13849-1:2015 Segurança do maquinário: Partes relacionadas a segurança de


sistemas de controle.

Princípios gerais de design.

EN 61496-1:2013 Segurança do maquinário: Equipamento protetor eletrosensível

Parte 1: Testes e requisitos gerais.

ISO 12100:2010 Segurança do maquinário - Princípios gerais de design - Avaliação de


risco e redução de riscos

EN 60204-1:2006 Segurança de máquinas - Equipamento elétrico de máquinas - Parte 1:


Requisitos gerais

ISO 14119:2013 Segurança do maquinário - Dispositivos de interbloqueio associados às


proteções - Princípios gerais de design e seleção

ISO 13850:2015 Segurança do maquinário - Parada de emergência - Princípios de


design

IEC 62061:2015 Segurança do maquinário - Segurança funcional de sistemas de


controle elétricos, eletrônicos e eletrônicos programáveis relacionados
com segurança

IEC 61508-1:2010 Segurança funcional de sistemas elétricos/eletrônicos/eletrônicos


programáveis relacionados com segurança. Requisitos gerais.

IEC 61508-2:2010 Segurança funcional de sistemas elétricos/eletrônicos/eletrônicos


programáveis relacionados com segurança. Requisitos para sistemas
elétricos/eletrônicos/eletrônicos programáveis relacionados à
segurança.

IEC 61508-3:2010 Segurança funcional de sistemas elétricos/eletrônicos/eletrônicos


programáveis relacionados com segurança. Requisitos de software.

IEC 61784-3:2016 Redes de comunicação industrial - Perfis - Parte 3: Barramentos de


campo de segurança funcional - Regras gerais e definições de perfil.

2006/42/EC Diretiva de maquinário

2014/30/EU Diretiva de compatibilidade eletromagnética

2014/35/EU Diretiva de baixa tensão

12 EIO0000003295.03
Sobre este manual

Adicionalmente, os termos usados no presente documento pode ser


tangencialmente usado, já que derivam de outros padrões, como:

Padrão Descrição

Série IEC 60034 Alternando máquinas elétricas

Série IEC 61800 Sistemas de acionamento elétrico de potência a velocidade variável

Série IEC 61158 Comunicação de dados digitais para medição e controle - Barramento
de campo para utilização em sistemas de controle industriais

Finalmente, o termo zona de operação pode ser usado em conjunto com a


descrição de perigos específicos e está assim definido para uma zona perigosa
ou zona de perigo na Diretiva de maquinário (2006/42/EC) e ISO 12100:2010.
NOTA: Os padrões mencionados acima podem ou não aplicar-se aos
produtos específicos citados na presente documentação. Para mais
informações à respeito dos padrões individuais aplicáveis aos produtos aqui
descritos, consulte as tabelas de características para as referências destes
produtos.

EIO0000003295.03 13
Introdução

Introdução
Visão geral
Este capítulo fornece informações sobre como utilizar os exemplos de código-
fonte e os blocos necessários para executar muitos dos exemplos de operação e
instruções de designação dados neste documento.

Como usar exemplos de código fonte


Visão geral
Exceto quando mencionado explicitamente, os exemplos de código fonte contidos
neste documento são válidos para as linguagens de programação Diagrama
Ladder e Lista de instruções. Um exemplo completo pode necessitar de mais de
um degrau.

Procedimento de reversibilidade
Para obter o código fonte do Diagrama Ladder equivalente:

Etapa Ação

1 Selecione e copie (Ctrl+C) o código fonte para o primeiro degrau do programa


exemplo mostrado neste guia.

2
Em EcoStruxure Machine Expert - Basic, crie um novo degrau clicando em
na barra de ferramentas.
3 Neste degrau, clique no botão LD > IL para exibir o código fonte da Lista de
instruções.

4 Selecione o número da linha 0000, clique com o botão direito do mouse e selecione
Colar instruções para colar o código fonte no degrau:

NOTA: Lembre-se de excluir a instrução LD da última linha do degrau, se você


tiver colado as instruções inserindo a(s) linha(s) antes do operador LD padrão.

5 Clique no botão IL > LD para exibir o código fonte do Diagrama Ladder.

6 Repita as etapas anteriores para todos os degraus adicionais no programa exemplo.

14 EIO0000003295.03
Introdução

Exemplo
Programa da Lista de instruções:

Degrau Código fonte

0 BLK %R0
LD %M1
I
LD %I0.3
ANDN %R2.E
O
END_BLK

1 LD %I0.3
[%MW20:=%R2.O]

2 LD %I0.2
ANDN %R2.F
[%R2.I:=%MW34]
ST %M1

Diagrama Ladder correspondente:

EIO0000003295.03 15
Introdução

Blocos de operações
Inserir operações de IL e instruções e atribuição em Diagramas
Ladder
Você pode usar o símbolo gráfico Bloco de operações para inserir operações da
Lista de instruções e instruções de atribuição em degraus de Diagramas Ladder:

Bloco de operações ao final de um degrau. Bloco de operações em qualquer ponto de um


degrau.

O símbolo gráfico do Bloco de operações pode ser inserido em qualquer


posição em um degrau do Diagrama do Ladder, exceto na primeira coluna, pois
não pode ser utilizado como primeiro contato em um degrau.
Se mais de um símbolo gráfico do Bloco de operações for utilizado em um
degrau do Diagrama do Ladder, ele deve ser colocado em série. As instruções do
Bloco de operações não podem ser utilizadas em paralelo.
NOTA: Se o aplicativo estiver configurado com um nível funcional de pelo
menos Nível 5.0:
• Você pode utilizar até cinco operandos e três níveis de parênteses em
um bloco de operações. Os operandos devem ser do mesmo tipo do
objeto: palavras com palavras, flutuante com flutuante, etc.
• Um mínimo de 20 palavras de memória (%MW) deve ser disponibilizado
para utilização de vários operandos na tarefa principal. Se estiver usando
vários operandos em uma tarefa periódica também, outras 20 palavras
de memória deverão estar disponíveis.
Para inserir um símbolo gráfico do bloco de operações em um degrau do
Diagrama do Ladder:

Etapa Ação

1
Clique no botão Bloco de operações na barra de ferramentas.

2 Clique em qualquer lugar no degrau para inserir o Bloco de operações.

3
Clique no botão Modo de seleção na barra de ferramentas.

4 Clique duas vezes na linha da expressão da operação.

O botão Codificação inteligente, página 17 aparece no final da linha. Clique neste


botão para ajudar a selecionar uma função e ajudar com a sintaxe da instrução.

5 Digite uma instrução de atribuição ou operação válida da Lista de instruções e


pressione ENTER.

Por exemplo: %MF10 := ((SIN( %MF12 + 60.0 ) + COS( %MF13 )) + %MF10 ) + 1.2

Você pode modificar a expressão no modo online. Consulte Modificações do modo


online (consulte EcoStruxure Machine Expert - Básico, Guia da biblioteca de funções
genéricas).

NOTA: Não é possível utilizar várias expressões de operandos em tarefas de


evento.

16 EIO0000003295.03
Introdução

Sintaxe da instrução OPER


A instrução OPER corresponde a um bloco de operações colocado em qualquer
lugar de um degrau.
A instrução OPER equivalente pode ser utilizada diretamente nos degraus da
Lista de instruções.
OPER [ expressão ] em que expressão é uma expressão válida, contendo até
cinco operandos e três níveis de parênteses. Por exemplo:
OPER [ %MF10 := ((SIN( %MF12 + 60.0 ) + COS( %MF13 )) + %MF10 ) + 1.2]

Dicas de ferramentas de codificação inteligente nos Diagramas


do Ladder
Para ajudar a selecionar funções, o EcoStruxure Machine Expert - Basic exibe
dicas enquanto você introduz o nome da função nos blocos de operação.
Dois tipos de dicas estão disponíveis:
• Uma lista de nomes de funções, atualizada dinamicamente com os nomes
das funções que começarem com os caracteres introduzidos. Por exemplo,
ao introduzir “AS”, são exibidos ASCII_TO_FLOAT, ASCII_TO_INT e ASIN.
• Ajuda com a sintaxe de uma função, exibida quando você introduz um abre-
parêntese. Por exemplo, ao introduzir “ABS(“ é exibido:

Utilizando o Assistente de codificação inteligente


O Assistente de codificação inteligente aparece quando você clica no botão

Codificação inteligente na linha de expressão da operação:

EIO0000003295.03 17
Introdução

Prossiga da seguinte forma:

Etapa Ação

1 Opcionalmente, filtre a lista por categorias de funções:


• Todos os tipos
• ASCII
• Ponto de flutuação
• Objetos de E/S
• Ponto de flutuação
• Processamento numérico
• Tabela
• PID
• Função definida pelo usuário

2 Selecione uma função para adicionar à expressão.

3 Clique em Inserir função.

Obter ajuda para a sintaxe


Se a sintaxe da operação da Lista de instruções ou da instrução de atribuição
estiver incorreta, a borda da caixa expressão da operação fica vermelha. Para
obter assistência:
• Mova o mouse sobre a linha de expressão da operação ou
• Selecione Ferramentas > Mensagens do programa.

Blocos de comparação
Inserir expressões de comparação de IL em Diagramas Ladder
É possível utilizar o símbolo gráfico Bloco de comparação para inserir
expressões de comparação da Lista de instruções em degraus de Diagramas
Ladder:

Os operandos devem ser do mesmo tipo do objeto: palavras com palavras,


flutuante com flutuante, etc.
Prossiga da seguinte forma:

Etapa Ação

Clique no botão Bloco de comparação na barra de ferramentas.

2 Clique em qualquer lugar no degrau para inserir o Bloco de comparação.

3 Clique duas vezes na linha Expressão de comparação.

4 Digite uma operação de comparação válida da Lista de instruções e pressione ENTER.

Você pode modificar a expressão no modo online. Consulte Modificações do modo


online (consulte EcoStruxure Machine Expert - Básico, Guia de instruções).

18 EIO0000003295.03
Introdução

NOTA: Se o aplicativo estiver configurado com um nível funcional (consulte


EcoStruxure Machine Expert - Básico, Guia de instruções) de pelo menos
Nível 6.0:
• Você pode utilizar até cinco operandos e três níveis de parênteses em
um bloco de comparação.
• Um mínimo de 20 palavras de memória (%MW) deve ser disponibilizado
para utilização de vários operandos na tarefa principal. Se estiver usando
vários operandos em uma tarefa periódica também, outras 20 palavras
de memória deverão estar disponíveis.
NOTA: Não é possível utilizar várias expressões de operandos em tarefas de
evento.

Obter ajuda para a sintaxe


Se a sintaxe da operação de comparação da Lista de instruções estiver incorreta,
a borda da caixa Expressão de comparação fica vermelha. Para obter
assistência:
• Mova o mouse sobre a linha Expressão de comparação ou
• Selecione Ferramentas > Mensagens do programa.

EIO0000003295.03 19
Objetos de linguagem

Objetos de linguagem
Objetos
Visão geral
No EcoStruxure Machine Expert - Basic, o termo objeto é usado para representar
uma área da memória do controlador lógico reservada para ser usada por um
aplicativo. Os objetos podem ser:
• Variáveis de software simples, como bits e palavras da memória
• Endereços de entradas e saídas digitais ou analógicas
• Variáveis internas do controlador, como palavras e bits do sistema
• Funções predefinidas do sistema ou blocos de funções, como
temporizadores e contadores.
A memória do controlador está pré-alocada para determinados tipos de objetos
ou é automaticamente alocada quando um aplicativo é baixado para o controlador
lógico.
Os objetos somente podem ser endereçados por um programa quando a
memória tiver sido alocada. Os objetos são endereçados utilizando o prefixo %.
Por exemplo, %MW12 é o endereço de uma palavra da memória, %Q0.3 é o
endereço de uma saída digital incorporada e %TM0 é o endereço de um bloco de
função Timer.

20 EIO0000003295.03
Objetos de linguagem

Objetos de bits de memória


Introdução
Objetos de bits da memória são variáveis de software de tipo byte que podem ser
usados como operandos e testados por instruções booleanas.
Exemplos de objetos de bits:
• Bits de memória
• Bits do sistema
• Bits de passos
• Bits extraídos de palavras
O intervalo de objetos válidos é de 0 até a referência máxima utilizada no
aplicativo (consulte o guia de programação do controlador lógico.

Sintaxe
Utilize este formato para endereçar memória, sistema, e objetos de bits de passos

Esta tabela descreve os elementos no formato de endereçamento:

Grupo Item Descrição

Símbolo % O símbolo de porcentagem precede uma variável de software.

Tipo de objeto M Bits de memória armazenam valores intermediários enquanto um


programa está sendo executado.

S Bits de sistema fornecem o status e informações de controle para


o controlador.
X Bits de passos fornecem o status das atividades de passos
Grafcet.
Identificador de i O identificador do objeto representando suas instâncias
instância de objeto sequenciais na memória. O número máximo de objetos depende
do número de objetos configurados para os limites da memória
disponível. Para a quantidade máxima de memória disponível,
consulte o guia de programação do seu controlador lógico.

Para obter mais informações sobre o endereçamento de bits de E/S, consulte


Objetos de E/S, página 22.
Para mais informações sobre o endereçamento de bits extraídos de palavras,
consulte Extraindo bits de objeto de palavras, página 28.

Descrição
Esta tabela lista e descreve a memória, o sistema, e bits de passos que são
utilizados como operandos em instruções booleanas:

Tipo Descrição Endereço Acesso de


ou Valor gravação1

Valores 0 ou 1 (Falso ou Verdadeiro) 0 ou 1 –


imediatos
Memória Bits de memória são áreas da memória interna %Mi Sim
usadas para armazenar valores binários.

EIO0000003295.03 21
Objetos de linguagem

Tipo Descrição Endereço Acesso de


ou Valor gravação1

NOTA: Objetos de E/S não utilizados não


podem ser usados como bits de memória.

Sistema Os bits de sistema %S0 a %S127 permitem o %Si Depende


monitoramento do funcionamento correto do de i
controlador e a execução correta do programa
aplicativo, bem como controlar certos recursos no
nível do sistema.
Passos Bits %X1 a %Xi são associados com passos %Xi Sim
Grafcet Grafcet. O bit de passo Xi é definido como 1 quando
o passo correspondente está ativo, e definido como
0 quando o passo é desativado.
1 Escrito pelo programa ou usando uma tabela de animação.

Exemplo
Esta tabela mostra alguns exemplos de endereçamento de objetos de bits:

Objeto de Descrição
bits
%M25 Bit de memória número 25
%S20 Bit de sistema número 20
%X4 Passo Grafcet número 4

Objetos de E/S
Introdução
Objetos de E/S incluem tanto bits quanto palavras. Cada entrada e saída física é
mapeada por esses objetos na memória interna. Os objetos de bits de E/S podem
ser usados como operandos e testados por instruções booleanas. As palavras de
bits de E/S podem ser usados na maioria das instruções não-booleanas, como
funções e instruções contendo operadores aritméticos.
Exemplos de objetos de E/S:
• Entradas digitais
• Saídas digitais
• Entradas analógicas
• Saídas analógicas
• Entradas e saídas de comunicação
O intervalo dos objetos válidos é de 0 até o máximo configurado e suportado pelo
seu controlador (consulte o Guia de hardware e o Guia de programação do seu
controlador lógico).

Sintaxe
Esta imagem mostra o formato de endereço de entrada/saída:

22 EIO0000003295.03
Objetos de linguagem

Esta tabela descreve os componentes do formato de endereçamento:

Componente Item Valor Descrição

Símbolo % – O símbolo de porcentagem precede um endereço


interno.
Tipo de objeto I – Entrada digital (objeto de bits)

Q – Saída digital (objeto de bits)

IW – Valor de entrada analógico (objeto de palavra)

QW – Valor de saída analógico (objeto de palavra)

IWS – Status do canal de entrada analógico (objeto de


palavra)

QWS – Status do canal de saída analógico (objeto de


palavra)

Número do y 0 Canal de E/S incorporado no controlador lógico ou


módulo em um cartucho inserido no controlador lógico.

1...m 1 Canal de E/S em um módulo de expansão


diretamente conectado ao controlador.
m+1...n 2 Canal de E/S em um módulo de expansão conectado
utilizando os módulos Transmissor/Receptor TM3.

Número do z De 0 a Número de canal de E/S no controlador lógico ou


canal 31 módulo de expansão. O número de canais
disponíveis depende do controlador lógico ou da
referência do módulo de expansão.

p0q 3 Canal de E/S em um cartucho inserido no controlador


lógico. O número de canais disponíveis depende da
referência do cartucho.
1 m é o número de módulos locais configurados (máximo de 7).
2n é o número de módulos remotos configurados (máximo de n+7). O número de posição máxima
é 14.
3 p é o número do cartucho no controlador. q é o número do canal no cartucho.

Descrição
Esta tabela lista e descreve os objetos de E/S que são usados como operandos
em instruções:

Tipo Endereço Acesso de Descrição


ou Valor gravação 1

Bits de %Iy.z 2 Não 3 Estes bits são as imagens lógicas dos estados
entrada elétricos da E/S digital física. São armazenados na
memória de dados e atualizados entre cada
Bits de saída %Qy.z 2 Sim verificação da lógica do programa.

Palavra de %IWy.z 2 Não Esses objetos de palavras contêm o valor analógico


entrada do canal correspondente.
Palavra de %QWy.z 2 Sim
saída
Status da %IWSy.z 2 Não Esses objetos de palavras contêm o status do canal
palavra de analógico correspondente.
entrada
Status da %QWSy.z 2 Não
palavra de
saída
1 Escrito pelo programa ou usando uma tabela de animação.
2y é o número do módulo e z é o número do canal. Consulte sintaxe de endereçamento de E/Ss,
página 22 para descrições de y e z.
3 Embora você não possa gravar em bits de entrada, eles podem ser forçados.

EIO0000003295.03 23
Objetos de linguagem

Exemplos
Esta tabela mostra alguns exemplos de endereçamento de E/S:

Objeto de E/S Descrição

%I0.5 O canal da entrada digital número 5 no controlador (E/Ss incorporadas


são módulos número 0).

%Q3.4 Canal de saída digital número 4 no módulo de expansão no endereço 3


(E/S de módulo de expansão).

%IW0.1 Entrada analógica 1 no controlador (E/S incorporada).

%QW2.1 Saída analógica 1 no módulo de expansão no endereço 2 (módulo de


expansão de E/S).

%IWS0.101 Status do canal de entrada analógico do canal 1 de entrada no primeiro


cartucho no controlador lógico).

%QWS1.1 Status de saída analógica da saída analógica 1 no módulo de expansão


no endereço 1 (E/S do módulo de expansão).

Objetos de palavras
Introdução
Objetos de palavra endereçados em forma de palavras de 16 bits são
armazenados em memória de dados e podem conter um valor inteiro de -32 768 a
32 767 (exceto para o bloco de função Contador rápido que é de 0 a 65 535).
Exemplos de objetos de palavras:
• Valores imediatos
• Palavras de memória (%MWi)
• Palavras constantes (%KWi)
• Palavras de intercâmbio de E/S (%IWi, %QWi, %IWSi, %QWSi)
• Palavras do sistema (%SWi)
• Blocos de funções (dados de configuração e/ou de tempo de execução)
O intervalo de objetos válidos é de 0 até a referência máxima utilizada pelo
aplicativo (consulte o Guia de programação do controlador lógico).
Por exemplo, se a referência máxima no aplicativo para palavras da memória é %
MW9, então %MW0 até %MW9 são espaços alocados. %MW10 neste exemplo não é
válido e não pode ser acessado interna ou externamente.

Sintaxe
Utilize este formato para endereçar memória, constante e palavras do sistema:

Esta tabela descreve os elementos no formato de endereçamento:

Grupo I- Descrição
tem
Símbolo % O símbolo de porcentagem precede um endereço interno.

Tipo de objeto M Palavras da memória armazenam valores enquanto um programa


é executado.

24 EIO0000003295.03
Objetos de linguagem

Grupo I- Descrição
tem
K Palavras constantes armazenam valores constantes ou
mensagens alfanuméricas. O conteúdo somente poderá ser
gravado ou modificado usando o EcoStruxure Machine Expert -
Basic.
S Palavras do sistema fornecem o status e informações de controle
para o controlador lógico.

Formato L Palavra de 16 bits.


Identificador de i O identificador do objeto representando suas instâncias
instância de objeto sequenciais na memória. O número máximo de objetos depende
do número de objetos configurados para os limites da memória
disponível. Para a quantidade máxima de memória disponível,
consulte o guia de programação do seu controlador lógico.

Formato
Os conteúdos das palavras ou valores são armazenados na memória do usuário
em código binário de 16 bits (formato complementar de dois) utilizando a
convenção a seguir:

Na notação binária assinalada, por convenção, o bit 15 é alocado para o sinal do


valor codificado:
• Bit 15 está definido como 0: o conteúdo da palavra é um valor positivo.
• Bit 15 é definido como 1: o conteúdo da palavra é um valor negativo (valores
negativos expressos em um complemento lógico de dois).
Palavras e valores imediatos (consulte Lista de exceções, página 26 para inteiros
não assinalados) podem ser inseridos ou recuperados no formato a seguir:
• Decimal
Mín.: -32768, Máx.: 32767 (1579, por exemplo)
• Hexadecimal
Mín.: 16#0000, Máx.: 16#FFFF (por exemplo, 16#A536)
Sintaxe alternativa: #A536
• O ASCII formata as regras conforme segue:
◦ A função lê primeiro o byte mais significativo.
◦ Qualquer caractere ASCII que não esteja no intervalo [0 - 9] ([16#30 -
16#39]) é considerado como caractere "final", exceto por um sinal de
menos '-' (16#2D) quando é posicionado no primeiro caractere.
◦ Em caso de transbordamento (>32 767 ou <-32 768), o bit de sistema %
S18 (transbordamento aritmético ou erro detectado) é definido como 1 e
32 767 ou o valor -32 768 é retornado.
◦ Se o primeiro caractere do operando é um caractere "final", o valor 0 é
retornado e o bit %S18 é definido como 1.
Por exemplo, "HELLO":
◦ %MW0:="HE"
◦ %MW1:="LL"
◦ %MW2:="O"

EIO0000003295.03 25
Objetos de linguagem

Lista de exceções
Esta tabela lista o intervalo de valores dos objetos que são inteiros não
assinalados:

Objeto Valor

%SW 0...65535
%FC.V e %FC.P 0...65535

%FC.VD e %FC.PD De 0 a 4294967295

%HSC.V, %HSC.P, %HSC.S0, %HSC.S1, e %HSC.C 0...65535

%HSC.DV, %HSC.PD, %HSC.S0D, %HSC.S1D, e %HSC. De 0 a 4294967295


CD
%HSC.T 100...1000

%PWM.P 0...32767

%PWM.R 0...100

%PLS.P 0...32767

%PLS.N 0...32767
%PLS.ND 0...2147483647

Além dos objetos na lista de exceções, os dados têm os seguintes intervalos de


valores:
• Palavras: -32768...32767
• Palavras duplas: -2147483648...2147483647

26 EIO0000003295.03
Objetos de linguagem

Descrição
Esta tabela descreve os objetos de palavra:

Palavras Descrição Endereço ou Acesso de


Valor gravação1

Valores Estes são valores inteiros que estão no - Não


imediatos mesmo formato das palavras de 16
bits, o que permite que os valores
sejam assinalados a essas palavras.

Base 10 (decimal) -32768 para


32767
Base 16 (hexadecimal) De 16#0000 a
16#FFFF
Memória Utilizados como palavras "ativas" para %MWi Sim
armazenar valores durante o
funcionamento na memória de dados.
Constantes Armazenar constantes em mensagens %KWi Sim, durante a
alfanuméricas. Seu conteúdo pode ser configuração e no
escrito ou modificado usando modo online,
EcoStruxure Machine Expert - Basic usando
durante a configuração e no modo Propriedades de
online (consulte EcoStruxure Machine palavras constantes
Expert - Básico, Guia de instruções). (consulte
EcoStruxure
Machine Expert –
Básico, Guia de
instruções).

Sistema Essas palavras de 16 bits possuem %SWi Depende de i


diversas funções:
• Fornece acesso aos dados que
vêm diretamente do controlador
pelas palavras de leitura %SWi.
• Executa operações no aplicativo
(por exemplo, ajuste de blocos
de agendamento).

Blocos de Essas palavras correspondem aos %TM2.P%Ci.P, Sim


funções parâmetros atuais ou valores de etc.
blocos de funções.
1 Escrito pelo programa ou usando uma tabela de animação.

O número máximo de objetos disponíveis é determinado pelo controlador lógico.


Consulte o guia de programação do controlador lógico para o número máximo de
objetos.

Exemplo
Esta tabela mostra alguns exemplos de endereçamento de objetos de palavras:

Objeto de palavra Descrição

%MW15 Palavra de memória número 15


%KW26 Palavra constante número 26
%SW30 Palavra de sistema número 30

EIO0000003295.03 27
Objetos de linguagem

Bits extraídos de objetos de palavras


Esta tabela descreve como extrair 1 dos 16 bits dos objetos de palavras a seguir:

Objeto de palavra Endereço ou Valor Acesso de gravação1

Memória %MWi:Xk Sim


Sistema %SWi:Xk Depende de i

Constante %KWi:Xk Não


Valor de entrada %IWy.z:Xk2 Não

Valor de saída %QWy.z:Xk2 Sim

Status de entrada %IWSy.z:Xk2 Não

Status de saída %QWSy.z:Xk2 Sim


1 Escrito pelo programa ou usando uma tabela de animação.
2Para obter informações sobre objetos de palavras de E/S, consulte Endereçamento de objetos de
E/S (consulte EcoStruxure Machine Expert - Básico, Guia de instruções).

Xk indica o número de bit que tem que ser extraído do objeto de palavra. Por exemplo, %MW0.X3;
o bit armazenado na terceira posição sequencial da palavra de memória %MW0 será extraído.

Objetos de ponto flutuante e palavra dupla


Introdução
Um objeto de ponto flutuante é um número real; ou seja, um número com uma
parte fracionária (por exemplo: 3,4E+38, 2,3 ou 1,0).
Uma palavra dupla consiste em 4 bytes armazenados na memória de dados e
contém um valor complementar para ambas de -2.147.483.648 a +2.147.483.647.
Operações de ponto de flutuação e palavra dupla não são suportados por todos
os controladores lógicos.
Para compatibilidade, consulte o Guia de Programação do controlador lógico.

Formato e valor de ponto de flutuação


O formato flutuante utilizado é o padrão IEEE STD 734-1985 (equivalente ao
IEC 559). A extensão das palavras é 32 bits, o que corresponde a números
flutuantes de uma única casa decimal.
Esta tabela mostra o formato de um valor de ponto de flutuação:

Bit 31 Bits {De 30 a 23} Bits {De 22 a 0}

Sinal do expoente Expoente Significando

A precisão da representação é de 2 a 24 para exibir números de ponto flutuante;


não é necessário exibir mais de 6 dígitos após a casa decimal.
NOTA: O valor 1285 é interpretado como um valor completo; a fim de ser
reconhecido como um valor de ponto flutuante, deve ser escrito assim: 1285,0

28 EIO0000003295.03
Objetos de linguagem

Intervalo limite de funções aritméticas em objetos de ponto


flutuante
Esta tabela descreve o intervalo limite de funções aritméticas em objetos de ponto
flutuante:

Função aritmética Intervalo limite e operações inválidas

Tipo Sintaxe NeN (Não é um Infinito


Número)

Raiz quadrada de um SQRT(x) x<0 x > SQRT(3.402824E


operando +38) é o número
máximo que pode ser
obtido
Energia de um inteiro EXPT(y, x) x < 0 e y = número X ^ Y > 3,402824E+38
por um real fracionário
(em que:
EXPT(%MF,%MW)
x^y = %MW^%MF)

Base 10 logaritmo LOG(x) x<0 Cálculo possível até


que o valor máximo de
x seja obtido
(3,402824E+38)

Logaritmo natural LN(x) x<0 Nenhum valor máximo


de x. LN(3.402824E
+38) é o número
máximo que pode ser
obtido
Exponencial natural EXP(x) Sem limite no intervalo x > 88,72283
real
Se x <-103,973, o
resultado é 0

Verificação da validade
Quando o resultado não está no intervalo válido, o bit de sistema %S18 é definido
como 1.
A palavra de status %SW17 indica a causa de um erro detectado em uma
operação flutuante.
Bits diferentes da palavra %SW17:

%SW17:X0 Operação inválida, o resultado não é um número (NeN)

%SW17:X1 Reservado
%SW17:X2 Divisão por 0, o resultado é inválido (-Infinito ou +Infinito)

%SW17:X3 Resultado em valor absoluto maior que +3,402824E+38, o resultado é


inválido (-Infinito ou +Infinito)

%SW17:X4 to X15 Reservado

Esta palavra é redefinida como 0 pelo sistema seguindo uma partida a frio, e
também pode ser redefinida pelo programa para fins de reutilização.

Sintaxe
Utilize este formato para endereçar memória e objetos de ponto de flutuação
constantes:

EIO0000003295.03 29
Objetos de linguagem

Utilize este formato para endereçar memória e objetos de palavra dupla


constantes:

Esta tabela descreve os elementos no formato de endereçamento:

Grupo Item Descrição

Símbolo % O símbolo de porcentagem precede um endereço interno.

Tipo de objeto M Objetos de memória são utilizados para armazenar valores


intermediários enquanto um programa está em execução.

K Constantes são utilizadas para armazenar valores ou


mensagens alfanuméricas (somente para palavras duplas).

Formato F Objeto de ponto de flutuação de 32 bits.

D Objeto de palavra dupla de 32 bits.

Identificador de i O identificador que representa a instância (posição sequencial)


instância de objeto de um objeto na memória. Consulte o guia de programação do
controlador lógico para o número máximo de objetos.

Descrição de objetos de ponto flutuante e de palavra dupla


Esta tabela descreve objetos de ponto de flutuação e palavra dupla:

Tipo de objeto Descrição Ende- Acesso de escrita


reço

Valores imediatos Números inteiros (palavra dupla) ou - Não


decimais (ponto de flutuação) com
formato idêntico ao de objetos de
32 bits.
Ponto flutuante de Objetos utilizados para armazenar %MFi Sim
memória valores durante o funcionamento na
memória de dados.
Palavra dupla de %MDi Sim
memória
Valor constante de Utilizado para armazenar %KFi Sim, durante a
flutuação constantes. configuração e no
modo online, usando
Propriedades de
palavras constantes
(consulte EcoStruxure
Machine Expert –
Básico, Guia de
instruções)

Constante dupla %KDi Sim, durante a


configuração e no
modo online, usando
Propriedades de
palavras constantes
(consulte EcoStruxure
Machine Expert –
Básico, Guia de
instruções)

NOTA: O número máximo de objetos é determinado pelo controlador lógico;


consulte o Guia de programação da plataforma de hardware para obter mais
detalhes.

30 EIO0000003295.03
Objetos de linguagem

Exemplo
Esta tabela mostra exemplos de endereçamento de objetos de ponto de flutuação
e de palavra dupla:

Objeto Descrição

%MF15 Objeto de ponto flutuante de memória número 15

%KF26 Objeto de ponto flutuante constante número 26

%MD15 Palavra dupla de memória número 15

%KD26 Palavra dupla constante número 26

Possibilidade de sobreposição entre objetos


Palavras simples, de extensão dupla e flutuantes são armazenadas no espaço de
dados em uma zona de memória. Assim, a palavra dupla %MFi e a palavra dupla
%MDi correspondem às palavras de extensão simples %MWi e %MWi+1; a palavra
%MWi que contém os bits menos significativos, e a palavra %MWi+1 os bits mais
significativos da palavra %MFi.
Esta tabela mostra como palavras de memória flutuantes e duplas se sobrepõem:

Flutuante e duplo Endereço ímpar Palavras da memória

%MF0 / %MD0 %MW0


%MF1 / %MD1 %MW1
%MF2 / %MD2 %MW2
%MF3 / %MD3 %MW3
%MF4 / %MD4 %MW4
... %MW5
... ...
%MFi / %MDi %MWi
%MFi+1 / %MDi+1 %MWi+1

Esta tabela mostra como constantes flutuantes e duplas se sobrepõem:

Flutuante e duplo Endereço ímpar Palavras da memória

%KF0 / %KD0 %KW0


%KF1 / %KD1 %KW1
%KF2 / %KD2 %KW2
%KF3 / %KD3 %KW3
%KF4 / %KD4 %KW4
... %KW5
... ...
%KFi / %KDi %KWi
%KFi+1 / %KDi+1 %KWi+1

Exemplo:
%MF0 corresponde a %MW0 e %MW1. %KF43 corresponde a %KW43 e %KW44.

EIO0000003295.03 31
Objetos de linguagem

Objetos estruturados
Introdução
Objetos estruturados são combinações de objetos adjacentes. EcoStruxure
Machine Expert - Basic suporta os seguintes tipos de objetos estruturados:
• Cadeias de bits
• Tabelas de palavras
• Tabelas de palavras duplas
• Tabelas de palavras flutuantes

Cadeias de bits
Cadeias de bits são séries de bits de objeto adjacentes de mesmo tipo e de
extensão definida (L). Cadeias de bits são citadas como iniciando em limites de
bytes.
Exemplo: Cadeia de bits %M8:6

NOTA: %M8:6 é válido (8 é um múltiplo de 8) enquanto que %M10:16 é


inválido (10 não é um múltiplo de 8).
Cadeias de bits podem ser utilizadas com a Instrução de designações, página 52.

Tipos de bits disponíveis


Tipos de bits disponíveis para cadeias de bits:

Tipo Endereço Acesso de escrita

Bits de entrada digital %I0.0:L ou %I1.0:L(1) Não

Bits de saída digital %Q0.0:L ou %Q1.0:L(1) Sim

Bits do sistema %Si:L Dependendo de i

com i múltiplo de 8

Bits de passo Grafcet %Xi:L Sim (pelo programa)

com i múltiplo de 8

Bits de memória %Mi:L Sim

com i múltiplo de 8

(1) Somente os bits de E/S de 0 a 16 podem ser lidos em uma cadeia de bits. Para controladores
lógicos com 24 ou 32 canais de E/S, os bits acima de 16 não podem ser lidos em uma cadeia de
bits.

L Representa o comprimento dos objetos estruturados (cadeias de bits, tabela de palavras, tabela
de palavras duplas e tabela de palavras flutuantes).

O número de bits é determinado pelo controlador lógico; consulte o Guia de


programação para a plataforma de hardware para mais detalhes.

32 EIO0000003295.03
Objetos de linguagem

Tabelas de palavras
Tabelas de palavras são uma série de palavras adjacentes de mesmo tipo e de
comprimento definido (L, valor máximo é 255).
Exemplo: Tabela de palavras %KW10:7

Tabelas de palavras podem ser utilizadas com a Instrução de designações,


página 86.

Tipos de palavras disponíveis


Tipos de palavras disponíveis para tabelas de palavras:

Tipo Endereço Acesso de escrita

Palavras da memória %MWi:L(1) Sim

Palavras constantes %KWi:L(1) Não

Palavras do sistema %SWi:L(1) Dependendo de i

Saídas analógicas %QWi.j:L(2) Sim

Entradas analógicas %IWi.j:L(2) Não

EtherNet/IP conjuntos de %QWEi:L(2) Sim


entrada
EtherNet/IP conjuntos de saída %IWEi:L(2) Não

Modbus mapeamento de %IWMi:L(2) Não


registros de entrada

Modbus mapeamento de %QWMi:L(2) Sim


registros de saída

IOScanner registros de %IWNa.b.c:L(2) Não


entrada
IOScanner registros de saída %QWNa.b.c:L(2) Sim

(1) O número de palavras L é determinado pelo controlador lógico; para obter detalhes, consulte o
Guia de programação para sua plataforma de hardware.

(2) O número de palavras L depende da configuração de cada objeto. Consulte Objetos de E/S,
página 22 ou Objetos de rede, página 106.

Tabelas de palavras duplas


Tabelas de palavras duplas são uma série de palavras adjacentes de mesmo tipo
e de comprimento definido (L, o valor máximo é 255).
Exemplo: Tabela de palavras duplas %KD10:7

EIO0000003295.03 33
Objetos de linguagem

Tabelas de palavras duplas podem ser utilizadas com as Instruções de


designações, página 42.

Tipos de palavras duplas disponíveis


Tipos de palavras disponíveis para tabelas de palavras duplas:

Tipo Endereço Acesso de escrita

Palavras da memória %MDi:L Sim


Palavras constantes %KDi:L Não

Tabelas de palavras flutuantes


Tabelas de palavras flutuantes são uma série de palavras adjacentes de mesmo
tipo e de extensão definida (L, o valor máximo é 255).
Exemplo: Tabela de ponto flutuante %KF10:7

Tabelas de pontos de flutuação podem ser utilizadas com a Instrução de


designação, página 42.

Tipos de palavras flutuantes disponíveis


Tipos de palavras disponíveis para tabelas de palavras flutuantes:

Tipo Endereço Acesso de escrita

Palavras da memória %MFi:L Sim


Palavras constantes %KFi:L Não

Objetos indexados
Introdução
Um objeto indexado é um objeto de palavra única, palavra dupla, ponto flutuante
ou bit de memória com um endereço de objeto indexado. Existem dois tipos de
endereçamento de objeto:
• Endereçamento direto
• Endereçamento indexado

Endereçamento direto
Um endereço direto de um objeto é configurado e definido quando um programa é
escrito.

34 EIO0000003295.03
Objetos de linguagem

Exemplo: %M26 é um bit de memória com o endereço direto 26.

Endereçamento indexado
Um endereço indexado de um objeto fornece um método de modificação do
endereço de um objeto ao adicionar um índice ao endereço direto do objeto. O
conteúdo do índice é adicionado ao endereço direto do objeto. O índice é definido
por uma palavra de memória %MWi.
Exemplo: %MW108[%MW2] é uma palavra com um endereço que consiste do
endereço direto 108 mais os conteúdos da palavra %MW2.
Se a palavra %MW2 tem um valor de 12, escrevendo para %MW108[%MW2] é
equivalente a escrever para %MW120 (108 mais 12).

Objetos disponíveis para endereçamento indexado


Esta tabela descreve os tipos disponíveis de objetos para o endereçamento
indexado:

Tipo Endereço Acesso de escrita

Palavras da memória %MWi[MWj] Sim

%MWi[%PARAMj]1 Sim

Palavras constantes %KWi[%MWj] Não

Palavras duplas de memória %MDi[MWj] Sim

Palavras duplas constantes %KDi[%MWj] Não

Pontos flutuantes de memória %MFi[MWj] Sim

Pontos flutuantes constantes %KFi[%MWj] Não

Bits de memória %Mi[%MWj] Sim

i Identificador de instância de objeto que representa a instância (posição sequencial) de um objeto


na memória. Consulte o guia de programação do controlador lógico para o número máximo de
objetos.

j Identificador de instância de objeto do objeto de indexação cujo conteúdo precisa ser adicionado
ao endereço direto de algum outro objeto.
1Válido apenas no DEGRAU de uma Função Definida pelo Usuário (UDF)/Bloco de Função
Definida pelo Usuário (UDFB) onde %PARAMj é definido.

Objetos indexados podem ser utilizados com a Instrução de designação, página


51 e em Instruções de comparação, página 50.
Este tipo de endereçamento permite que séries de objetos de mesmo tipo (como
por exemplo palavras da memória e constantes) sejam buscadas em sucessão,
ao modificar o conteúdo do objeto de indexação no programa.

Bit do sistema de estouro de índice %S20


Um transbordamento do índice ocorre quando o endereço de um objeto indexado
excede os limites da zona de memória que contém o mesmo tipo de objeto. Em
resumo:
• O endereço do objeto mais o conteúdo do índice é menor que 0.
• O endereço do objeto mais o conteúdo do índice é maior que a palavra mais
longa diretamente referenciada no aplicativo.
Na eventualidade de um transbordamento no índice, o bit de sistema %S20 é
definido como 1 e é designado ao objeto um valor de indexação de 0.

EIO0000003295.03 35
Objetos de linguagem

NOTA: Monitore o estouro. O programa deve ler %S20 para possíveis


processamentos. Deve-se confirmar então que está redefinido como 0.
%S20 (status inicial = 0):
• Em transbordamento na indexação: definido como 1 pelo controlador.
• Reconhecimento de transbordamento: defina manualmente para 0 no
programa após modificar o índice.
Alguns dos erros matemáticos detectados podem ter um impacto significativo na
execução do seu aplicativo. Monitore esses erros em potencial e as instruções do
programa para controlar adequadamente a execução de seu aplicativo caso um
ou mais desses erros detectados ocorram. O impacto de qualquer um desses
erros detectados depende da configuração, do equipamento usado e da
execução das instruções do programa antes e depois da detecção do erro ou
erros potenciais.

ATENÇÃO
OPERAÇÃO NÃO INTENCIONAL DO EQUIPAMENTO
• Escreva instruções de programação para testar a validade dos operandos a
serem utilizados em operações matemáticas.
• Evite a utilização de operandos de tipos diferentes de dados em operações
matemáticas.
• Monitore sempre os bits do sistema atribuídos para indicar resultados
matemáticos inválidos.
O não cumprimento destas instruções poderá resultar em morte,
ferimentos graves ou danos do equipamento.

Objetos de blocos de funções


Introdução
Um bloco de função é um objeto reutilizável que aceita um ou mais valores de
entrada e retorna um ou mais valores de saída. Um bloco de funções é chamado
através de uma instância (uma cópia de um bloco de funções com seu próprio
nome dedicado e variáveis). Cada instância de bloco de função possui um estado
persistente (saídas e variáveis internas) de um chamado para outro.
NOTA: Os blocos de funções (%FC, %HSC, %PLS e %PWM) e o Alarme de
status orientam suas entradas e saídas (%I0.x e %Q0.x, afetadas na
configuração) diretamente sem relação com o ciclo do controlador. Os bits de
imagem (%I0.x e %Q0.x) não são atualizados pelo controlador. Então, esses
bits de entrada e saída não podem ser utilizados diretamente no programa
usuário, e uma tabela de animação que utiliza essas entradas/saídas não
pode mostrar os estados atuais de tais entradas/saídas.

36 EIO0000003295.03
Objetos de linguagem

Exemplo
Esta ilustração mostra um bloco de função Counter:

Objetos de bits
Objetos de bits correspondem a saídas de blocos de funções. Esses bits podem
ser acessados por instruções de teste booleanas utilizando qualquer um dos
métodos a seguir:
• Diretamente (por exemplo, LD E) se estiverem conectados ao bloco em
programação, página 107 reversível.
• Por especificar o tipo de bloco (por exemplo, LD %Ci.E).
Entradas podem ser acessadas no formulário de instruções.

Objetos de palavras
Objetos de palavra correspondem a parâmetros e valores específicos conforme
segue:
• Parâmetros de configuração de blocos: alguns parâmetros são acessíveis
pelo programa (por exemplo, parâmetros de pré-seleção), e alguns são
inacessíveis pelo programa (por exemplo, base de tempo).
• Valores atuais: por exemplo, %Ci.V, o valor atual de contagem.

Objetos de palavra dupla


Objetos de palavras duplas aumentam a capacidade computacional do
controlador lógico enquanto executam funções de sistema, tais como contadores
rápidos (%FC), contadores de alta velocidade (%HSC) e geradores de impulso
(%PLS, %PWM).
Para endereçar os objetos de palavra dupla de 32 bits usados com blocos de
funções, anexe o caractere D à sintaxe original dos objetos de palavra padrão.
Este exemplo mostra como endereçar o valor atual de um contador rápido em
formato padrão e em formato de palavra dupla:
• %FCi.V é o valor atual do contador rápido no formato padrão.
• %FCi.VD é o valor atual do contador rápido no formato de palavra dupla.

EIO0000003295.03 37
Instruções

Instruções
Processamento booleano
Objetivo desta seção
Este seção fornece uma introdução às instruções do processamento booleano.

Instruções booleanas
Introdução
Instruções booleanas podem ser comparadas aos elementos de linguagem de
diagramas Ladder. Estas instruções estão resumidas nesta tabela:

Item Operador Exemplo de Descrição


instrução

Elementos de A instrução de LD %I0.0 O contato é fechado quando


teste carregamento (LD) é o bit %I0.0 está no estado
equivalente ao primeiro 1.
contato aberto conectado a
uma linha de transmissão
de um diagrama ladder.

As instruções lógicas AND e


OR são equivalentes a
contatos abertos depois do
primeiro contato ser
conectado à linha de
transmissão do diagrama
ladder.
Elementos de A instrução de ST %Q0.0 O objeto de bit associado
ação armazenamento (ST) é obtém um valor lógico do
equivalente a uma bobina. acumulador de bits
(resultado da lógica
anterior).

O resultado booleano dos elementos de teste é aplicado aos elementos de ação


conforme mostrado pelas instruções a seguir:

Degrau Instrução

0 LD %I0.0
AND %I0.1
ST %Q0.0

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Testando as entradas do controlador


As instruções do teste booleano podem ser utilizadas para detectar bordas de
subida ou descida nas entradas do controlador. Uma borda é detectada quando o
estado de uma entrada foi alterado entre "scan n-1" e o "scan n" atual. Essa
borda permanece detectada durante a busca atual.

38 EIO0000003295.03
Instruções

Detecção de limite
Esta tabela resume as instruções e o tempo de detecção das bordas de subida e
descida:

Limite Instrução IL Diagrama Diagrama de temporização


Ladder
Contato da LDR %M0
borda de
subida

Contato da LDF %M0


borda de
descida

Os objetos somente são atualizados no início do próximo ciclo mestre após a deteção de
borda. Uma alteração de estado de um bit de memória (p. ex. %M0) é indicada com uma varredura
de atraso.

NOTA: Os contatos da borda de subida e descida somente podem ser


utilizados em objetos de bits de entrada (%I) e bits de memória (%M).
A detecção de borda também pode ser realizada utilizando as funções, página 48
RISING e FALLING . Para utilizá-las, o aplicativo deve ser configurado
com um Nível funcional de pelo menos Nível 6.0.
Uma das diferenças entre os contatos da borda de subida/borda de descida e das
funções RISING/FALLING é a verificação aplicada ao programa:
• As instruções LDR/LDF indicam as bordas de subida/descida com um atraso
de uma verificação.
• As funções RISING/FALLING indicam as bordas de subida/descida no
mesmo ciclo em que ocorrem.

Deteção de borda de subida


A instrução de carregamento de borda de subida LDR é equivalente a um contato
de detecção de borda de subida. A borda de subida detecta uma alteração do
valor de entrada de 0 a 1.
Um contato de detecção de transição positiva é utilizado para detectar uma Borda
de subida conforme visto neste exemplo:

Degrau Instrução

0 LDR %I0.0

EIO0000003295.03 39
Instruções

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Deteção de borda de descida


A instrução de carregamento de borda de descida (LDF) é equivalente a um
contato de detecção de borda de descida. A borda de descida detecta uma
alteração da entrada controladora de 1 para 0.
Um contato de detecção de transição negativa é utilizado para detectar uma
Borda de descida conforme visto neste exemplo:

Degrau Instrução

0 LDF %I0.0

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Operadores de carga (LD, LDN, LDR, LDF)


Introdução
Os operadores de carga LD, LDN, LDR e LDF correspondem respectivamente
aos contatos aberto, fechado, borda de subida e borda de descida. LDR e LDF
são utilizados somente com entradas e palavras da memória do controlador
lógico.

Sintaxe
Esta tabela lista os tipos de operadores de carga com equivalentes e operandos
do diagrama Ladder:

Operadores Equivalente a Diagrama Operandos


Ladder
LD 0/1

%I, %Q, %M, %S, %X, %BLK.x


LDN
%IW:Xk, %QW:Xk, %IWS:Xk, %QWS:Xk, %
MW:Xk, %SW:Xk, %KW:Xk

%Mi[%MWj]1

LDR %I, %M

LDF

1 Nível funcional >= 10,0

40 EIO0000003295.03
Instruções

Codificar exemplos
Exemplos de instruções de carregamento:

Degrau Instrução

0 LD %I0.1
ST %Q0.3

1 LDN %M0
ST %Q0.2

2 LDR %I0.1
ST %Q0.4

3 LDF %I0.3
ST %Q0.5

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Diagrama de temporização
O diagrama a seguir ilustra a temporização, e o efeito sobre a saída, do código da
codificação de exemplo(s):

NOTA: A detecção de subida de bit do bit de memória (%M) é executada


entre as verificações de tarefa mestre.

EIO0000003295.03 41
Instruções

Operadores de atribuição (ST, STN, R, S)


Introdução
Os operadores de atribuição ST, STN, Se R correspondem respectivamente a
bobinas diretas, inversas, definidas e redefinidas.

Sintaxe
Esta tabela lista os tipos de operadores de atribuição com equivalentes e
operandos do diagrama Ladder:

Operadores Equivalente a Diagrama Operandos


Ladder
ST %Q, %M, %BLK.x

%QW:Xk, %MW:Xk, %S(1), %SW:Xk(1)


STN
%Mi[%MWj](2)

S %Q, %M, %S, %X, %BLK.x

%QW:Xk, %MW:Xk, %SW:Xk(1)


R
%Mi[%MWj](2)

(1) %S ou %SW:Xk estão em objetos do sistema não só de leitura.

(2) Nível funcional >= 10.0

Codificar exemplos
Exemplos de instruções de designações:

Degrau Instrução

0 LD %I0.1
ST %Q0.3
STN %Q0.2
S %Q0.4

1 LD %I0.2
R %Q0.4

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Diagrama de temporização
O diagrama a seguir ilustra a temporização, e o efeito sobre a saída, do código da
codificação de exemplo(s):

42 EIO0000003295.03
Instruções

Operadores lógicos AND (AND, ANDN, ANDR, ANDF)


Introdução
Os operadores executam uma operação lógica ANDAND entre o operando (ou
seu inverso, borda de subida ou de descida) e o resultado booleano da instrução
precedente.

Sintaxe
Esta tabela lista os tipos de operadores AND

Operadores Equivalente a Diagrama Operandos


Ladder
AND 0/1

%I, %Q, %M, %S, %X, %BLK.x


ANDN
%IW:Xk, %QW:Xk, %IWS:Xk, %QWS:Xk, %MW:
Xk, %SW:Xk, %KW:Xk

%Mi[%MWj](1)

ANDR %I, %M

ANDF

(1) Nível funcional >= 10.0

Codificar exemplos
Exemplos de instruções lógicas AND:

Degrau Instrução

0 LD %I0.1
AND %M1
ST %Q0.3

1 LD %M0
ANDN %I0.0
ST %Q0.2

2 LD %I0.3
ANDR %I0.4
S %Q0.4

3 LD %M3
ANDF %I0.5
S %Q0.5

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

EIO0000003295.03 43
Instruções

Diagrama de temporização
O diagrama a seguir ilustra a temporização, e o efeito sobre a saída, do código da
codificação de exemplo(s):

Operadores lógicos OR (OR, ORN, ORR, ORF)


Introdução
Os operadores OR executam uma operação lógica OR entre o operando (ou seu
inverso, borda de subida ou de descida) e o resultado booleano da instrução
precedente.

Sintaxe
Esta tabela lista os tipos de operadores OR

Operadores Equivalente a Operandos


Diagrama Ladder

OR 0/1

%I, %Q, %M, %S, %X, %BLK.x

%IW:Xk, %QW:Xk, %IWS:Xk, %QWS:Xk, %MW:Xk,


%SW:Xk, %KW:Xk
ORN
%Mi[%MWj](1)

ORR %I, %M

ORF

(1) Nível funcional >= 10.0

44 EIO0000003295.03
Instruções

Codificar exemplos
Exemplos de instruções lógicas OR:

Degrau Instrução

0 LD %I0.1
OR %M1
ST %Q0.0

1 LD %I0.2
ORN %M2
ST %Q0.1

2 LD %M0
ORR %I0.3
S %Q0.5

3 LDF %I0.5
ORF %I0.6
S %Q0.0

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Diagrama de temporização
O diagrama a seguir ilustra a temporização, e o efeito sobre a saída, do código da
codificação de exemplo(s):

Operadores OR Exclusivos (XOR, XORN, XORR, XORF)


Introdução
O operador XOR executa uma operação OR exclusiva entre o operando e o
resultado booleano da instrução anterior.
O operador XORN executa uma operação OR exclusiva entre o inverso do
operando e o resultado booleano da instrução anterior.
O operador XORR executa uma operação OR exclusiva entre o inverso do
operando e o resultado booleano da instrução anterior.
O operador XORF executa uma operação OR exclusiva entre o inverso do
operando e o resultado booleano da instrução anterior.

EIO0000003295.03 45
Instruções

Sintaxe
Esta tabela lista os tipos de operadores e operandos XOR:

Operadores Equivalente a Diagrama Operandos


Ladder
XOR %I, %Q, %M, %S, %X, %BLK.x

%IW:Xk, %QW:Xk, %IWS:Xk, %QWS:Xk, %MW:Xk,


%SW:Xk, %KW:Xk
XORN

XORR %I, %M

XORF

Codificar exemplos
Utilizando a instrução XOR:

Degrau Instrução

0 LD %I0.1
XOR %M1
ST %Q0.3

Instruções lógicas equivalentes do operador XOR:

Degrau Instrução

0 LD %I0.1
ANDN %M1
OR( %M1
ANDN %I0.1
)
ST %Q0.3

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Diagrama de temporização
O diagrama a seguir ilustra a temporização, e o efeito sobre a saída, do código da
codificação de exemplo(s):

46 EIO0000003295.03
Instruções

Casos especiais
Não inserir
• Contatos XOR a primeira posição de um degrau.
• Contatos XOR em paralelo com outros elementos de diagrama Ladder (veja
o exemplo a seguir).
Conforme mostrado neste exemplo, a inserção de um elemento em paralelo com
o contato XOR gerará um erro de validação:

Operador NOT (N)


Introdução
O operador NOT (N) possui um operando implícito; sendo assim, o resultado
armazenado no acumulador booleano. O NOT nega o valor do acumulador.

Sintaxe
Esta tabela mostra o operador N:

Operador Equivalente a Diagrama Operandos


Ladder
N Não se aplica.

Codificar exemplos
Exemplo da instrução NOT:

Degrau Instrução

0 LD %I0.1
N
ST %Q0.0

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

EIO0000003295.03 47
Instruções

Diagrama de temporização
O diagrama a seguir ilustra a temporização, e o efeito sobre a saída, do código da
codificação de exemplo(s):

Funções de subida e descida (RISING, FALLING)


Introdução
As funções RISING e FALLING avaliam respetivamente uma borda de subida e
de descida da expressão que imediatamente a precede.
Essas funções possuem um operando implícito; ou seja, o resultado da
expressão anterior, que é armazenada no acumulador boolean.
Você não pode colocar essas funções na primeira coluna de um degrau ou ramal
de linguagem Ladder, e eles não podem ser a primeira instrução em um degrau
IL.
NOTA: Para usar as FALLING funções RISING e, o aplicativo deve ser
configurado com um nível funcional (consulte EcoStruxure Machine Expert -
Básico, Guia de instruções) de pelo menos Nível 6.0.

Sintaxe
Função Equivalente a Diagrama Operandos
Ladder
RISINGn 1 Não se aplica.

FALLINGn 1 Não se aplica.

1 n é um inteiro incrementado sempre que uma borda de subida ou descida é inserida.

O inteiro é calculado automaticamente se você:


• Não definir nenhum índice.
• Inserir um índice incorreto.
• Excluir o índice.
• Alterar o índice.

48 EIO0000003295.03
Instruções

Codificar exemplos
Função Degrau Instrução

RISING 0 LD %M0

RISING0

ST %Q0.0

FALLING 1 LD %I0.1

FALLING0

ST %Q0.7

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.
Você pode inserir até:
• 32 instruções de cada tipo se o nível funcional for menor que 10,1
• 255 instruções de cada tipo se o nível funcional for maior ou igual a 10,1
Você não pode utilizar as funções RISING e FALLING imediatamente após
qualquer uma das seguintes instruções:
• AND
• ANDN
• OR
• ORN

Diagrama de temporização
O diagrama a seguir ilustra a temporização do exemplo acima para um tempo de
verificação de tarefa principal:

EIO0000003295.03 49
Instruções

Instruções de comparação
Introdução
Operadores de comparação são utilizados para comparar até 5 operandos com 3
níveis de parênteses.
Esta tabela lista os tipos de operadores de comparação:

Operador Função

> Testar se Op1 é maior que Op2

>= Testar se Op1 é maior que ou igual a Op2

< Testar se Op1 é menor que Op2

<= Testar se Op1 é menor que ou igual a Op2

= Testar se Op1 é igual a Op2

<> Testar se Op1 é diferente de Op2

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir expressões de comparação da Lista de instruções, página 18 em
degraus de Diagramas Ladder usando um elemento gráfico Blocos de
comparação.
Sintaxe para instruções de comparação:

Operador Sintaxe

>, >=, <, <=, =, <> LD [Op1 operador Op2]

AND [Op1 operador Op2]

OR [Op1 operador Op2]

Esta tabela fornece detalhes dos operandos:

Tipo Op1 Op2

Palavras %MWi, %KWi, %IW, %QWi, %SWi, %BLK.x Valor imediato, %MWi, %KWi, %IW, %QW, %IWSi, %
QWSi, %SWi, %BLK.x, %MWi[%MWi], %KWi[%MWi]

Palavras duplas %MDi, %KDi Valor imediato, %MDi, %KDi, %MDi[%MWi], %KD[%
MWi]

Palavras de pontos flutuantes %MFi, %KFi Valor de ponto flutuante imediato, %MFi, %KFi, %MFi
[%MWi], %KFi[%MWi]

NOTA: Instruções de comparação podem ser utilizadas entre parênteses.

Codificar exemplos
A comparação é executada dentro de colchetes, seguindo as instruções LD, AND
e OR. O resultado é 1 quando a comparação solicitada é verdadeira.

50 EIO0000003295.03
Instruções

Exemplos de instruções de comparação:

Degrau Instrução

0 LD %I0.2
AND [%MW10>100]
ST %Q0.3

1 LD %M0
AND [%MW20<%KW35]
ST %Q0.4

2 LD %I0.2
OR [%MF30>=%MF40]
ST %Q0.5

Um exemplo da utilização de uma instrução de comparação entre parênteses:

Degrau Instrução

0 LD %M0
AND( [%MF20>10.0]
OR %I0.0
)
ST %Q0.1

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Processamento numérico
Objetivo desta seção
Esta seção fornece uma introdução ao processamento numérico.

Introdução a operações numéricas

À primeira vista
Instruções numéricas geralmente se aplicam a palavras de 16 bits e palavras
duplas de 32 bits. Estão escritos entre colchetes. Se o resultado da operação
lógica precedente foi verdadeiro (acumulador booleano = 1), a instrução numérica
é executada. Se o resultado da operação lógica precedente foi falso (acumulador
booleano = 0), a instrução numérica não é executada e o operando permanece
inalterado.

Instruções de atribuição
Introdução
Instruções de designação são utilizadas para carregar o Op2 (operando 2) no
Op1 (operando 1).

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.

EIO0000003295.03 51
Instruções

Sintaxe para instruções de designação:

Operador Sintaxe

:= [Op1 := Op2]

Op1 obtém o valor de Op2

Operações de designação podem ser executadas em:


• Cadeias de bits
• Palavras
• Palavras duplas
• Palavra flutuante
• Tabelas de palavras
• Tabelas de palavras duplas
• Tabelas de palavra flutuante
• Objetos da saída do trem de impulso

Atribuição de cadeias de bits


Introdução
As operações podem ser executadas nas cadeias de bits a seguir:
• Cadeia de bits para cadeia da bits (Exemplo 1)
• Cadeia de bits para palavra (Exemplo 2) ou palavra dupla (indexado)
• Palavra ou palavra dupla (indexada) para a cadeia de bits (Exemplo 3)
• Valor imediato para cadeia de bits

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Sintaxe para designações de cadeias de bits:

Operador Sintaxe

:= [Op1 := Op2]

Op1 obtém o valor de Op2

Esta tabela fornece detalhes para os operandos:

Tipo Op1 Op2

Palavra, palavra %MWi,%QWi, %SWi Valor imediato, %MWi, %KWi, %IW, %QWi, %IWSi, %
dupla %MWi[%MWi], %MDi, %MDi[%MWi] QWSi, %SWi,%BLK.x, %MWi[%MWi], %KWi[%MWi], %
%Mi:L, %Qi:L, %Si:L, %Xi:L MDi[%MWi], %KDi[%MWi], %Mi:L,%Qi:L, %Si:L, %
%TMi.P, %Ci.P, %Ri.I, %Ri.O, %FCi.P, % Xi:L, %Ii:L
PLSi.P, %PWMi.P
%Ci.PD, %FCi.PD %TMi.P, %Ci.P, %Ri.I, %Ri.O, %FCi.P, %PLSi.P,
%PWMi.P

%Ci.PD, %FCi.PD

NOTA: A abreviatura %BLK.x (por exemplo, %C0.P) é utilizada para


descrever qualquer palavra de bloco de função.

52 EIO0000003295.03
Instruções

Estrutura
Exemplos de designações de cadeias de bits:

Degrau Instrução

0 LD 1
[%Q0.0:8:=%M64:8]

1 LD %I0.2
[%MW100:=%M0:16]

2 LDR %I0.3
[%MW104:16:=%KW0]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.
Regras de utilização:
• Para a designação de cadeia de bits para palavra: os bits na cadeia são
transferidos para a palavra que começa à direita (primeiro bit na cadeia para
o bit 0 na palavra); a os bits da palavra que não estão envolvidos na
transferência (comprimento ≤16) são definidos como 0.
• Para atribuição de cadeia de palavras a bits: Os bits de palavra são
transferidos da direita (bit de palavra 0 para o primeiro bit na cadeia).

Atribuição de palavras
Introdução
Operações de designação podem ser executadas nas seguintes palavras e
palavras duplas:
• Palavra (indexada) para palavra (2, por exemplo) (indexada ou não)
• Palavra dupla (indexada) para palavra dupla (indexada ou não)
• Valor total imediato para palavra (Exemplo 3) ou palavra dupla (indexado ou
não)
• Cadeia de bits para palavra ou palavra dupla
• Ponto de flutuante (indexado ou não) para ponto flutuante (indexado ou não)
• Palavra ou palavra dupla para cadeia de bits
• Valor imediato de ponto flutuante para ponto flutuante (indexado ou não)

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Sintaxe para designações de palavras:

Operador Sintaxe

:= [Op1 := Op2]

Op1 obtém o valor de Op2

EIO0000003295.03 53
Instruções

Esta tabela fornece detalhes dos operandos:

Tipo Op1 Op2

Palavra, palavra dupla, %BLK.x, %MWi, %MWi[%PARAMj], %QWi, % Valor imediato, %MWi, %MWi[%PARAMj], %KWi, %IW, %
cadeia de bits SWi %MWi[%MWj], %MDi, %MDi[%MWj], %Mi: QWi, %IWSi, QWSi, %SWi, %MWi[%MWj], %KWi[%
L, %Qi:L, %Si:L, %Xi:L MWi], %MDi, %MDi[%MWj], %KDi, %KDi[%MWj], %Mi:
L, %Qi:L, %Si:L, %Xi:L, %Ii:L

Ponto de flutuação %MFi, %MFi[%MWj] Valor de ponto flutuante imediato, %MFi, %MFi[%MWj], %
KFi, %KFi[%MWj]

NOTA: A abreviatura %BLK.x (por exemplo, R3.I) é utilizada para descrever


qualquer palavra de bloco de funções. Para cadeias de bits %Si:L, %Mi:L e
%Xi:L, o endereço básico da primeira das cadeias de bits deve ser um
múltiplo de 8 (0, 8, 16, ..., 96, ...).

Estrutura
Exemplos de designações de palavras:

Degrau Instrução

0 LD 1
[%SW112:=%MW100]

1 LD %I0.2
[%MW0[%MW10]:=%KW0[%MW20]]

2 LD %I0.3
[%MW10:=100]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Operadores aritméticos em inteiros


Introdução
Operadores aritméticos são utilizados para executar operações aritméticas entre
2 operandos inteiros ou sobre 1 operando inteiro.
Esta tabela lista os tipos de operadores aritméticos:

Operador Função

+ Adicionar 2 operandos

- Subtrair 2 operandos

* Multiplicar 2 operandos

/ Dividir 2 operandos

REM Resto da divisão de 2 operandos

SQRT Raiz quadrada de um operando

INC Incrementar um operando

DEC Decresça um operando

ABS Valor absoluto de um operando

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página

54 EIO0000003295.03
Instruções

16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de


operações.
Sintaxe para Instruções aritméticas:

Operador Sintaxe

+,-,*,/,REM [Op1 := Op2 operador Op3]

INC, DEC [operador Op1]

SQRT (1) [Op1 := SQRT(Op2)]

ABS (1) [Op1 := ABS(Op2)]

Esta tabela fornece detalhes dos operandos:

Tipo Op1 Op2 e Op3 1

Palavras %MWi, %QWi, %SWi, %BLK.x 2, %MWi[%MWj 3], Valor imediato, %MWi, %KWi, %IWi, %QWi, %IWSi, %
%MWi[%PARAMj] 4 QWSi, %SWi, %BLK.x 2 %MWi[%MWj 3], %MWi[%
PARAMj]4

Palavras duplas %MDi, %BLK.x Immediate value, %MDi, %KDi, %BLK.x 2

1 Com este operador, Op2 não pode ser um valor imediato. A função ABS somente pode ser utilizada com as palavras duplas (%MD% e %
KD ) e os pontos de flutuação (%MF% e %KF). Então, OP1 e OP2 devem ser palavras duplas ou pontos de flutuação.
2 %BLK.x representa todos os objetos de bloco.
3 Nível funcional >= 5.0.
4 Nível funcional >= 10.0.

Estrutura
Exemplos de instruções aritméticas:

Degrau Instrução

0 LD %M0
[%MW0:=%MW10+10]

1 LD %I0.2
[%MW0:=SQRT(%MW10)]

2 LDR %I0.3
[%MW10:=32767]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Casos especiais
Adição
• Transbordamento durante operação de palavra
Se o resultado exceder a capacidade da palavra de resultado, o bit %S18
(transbordamento) é definido como 1 e o resultado não é significativo
(consulte o degrau 1 do exemplo de aplicativo, página 56). O programa
usuário administra o bit %S18.
NOTA: Para palavras duplas, os limites são -2 147 483 648 e 2 147 483 647.
Multiplicação
• Transbordamento durante operação
Se o resultado exceder a capacidade da palavra de resultado, o bit %S18
(transbordamento) é definido como 1 e o resultado não é significativo.

EIO0000003295.03 55
Instruções

Divisão/resto
• Divisão por 0
Se o divisor for 0, a divisão é impossível e o bit de sistema %S18 é definido
como 1. Então o resultado é incorreto.
• Transbordamento durante operação
Se o quociente da divisão exceder a capacidade da palavra de resultado, o
bit %S18 é definido como 1.
Extração de raiz quadrada
• Transbordamento durante operação
A extração da raiz quadrada é executada somente em valores positivos.
Assim, o resultado é positivo. Se o operando da raiz quadrada é negativo, o
bit de sistema %S18 é definido como 1 e o resultado é incorreto.
Alguns dos erros matemáticos detectados podem ter um impacto significativo na
execução do seu aplicativo. Monitore esses erros em potencial e as instruções do
programa para controlar adequadamente a execução de seu aplicativo caso um
ou mais desses erros detectados ocorram. O impacto de qualquer um desses
erros detectados depende da configuração, do equipamento usado e da
execução das instruções do programa antes e depois da detecção do erro ou
erros potenciais.

ATENÇÃO
OPERAÇÃO NÃO INTENCIONAL DO EQUIPAMENTO
• Escreva instruções de programação para testar a validade dos operandos a
serem utilizados em operações matemáticas.
• Evite a utilização de operandos de tipos diferentes de dados em operações
matemáticas.
• Monitore sempre os bits do sistema atribuídos para indicar resultados
matemáticos inválidos.
O não cumprimento destas instruções poderá resultar em morte,
ferimentos graves ou danos do equipamento.

NOTA: O programa do usuário deve gerenciar bits do sistema %S17 e %S18.


Esses são definidos como 1 pelo controlador e devem ser redefinidos pelo
programa de modo que possam ser reutilizados (consulte a página anterior
para ver o exemplo).

Exemplo de aplicativo
Transbordamento durante adição:

Degrau Instrução

0 LD %M0
[%MW0:=%MW1+%MW2]

1 LDN %S18
[%MW10:=%MW0]

2 LD %S18
[%MW10 :=32767]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.
Se %MW1% = =23241 e %MW2%==21853, o resultado seria (45094), o que não
pode ser expresso em uma palavra assinalada de 16 bits. Assim, o bit %S18 é
definido como 1 e o valor em %MW0 (-20442) é incorreto. Neste exemplo,
quando o resultado é maior que 32 767, esse valor é fixado em 32 767.

56 EIO0000003295.03
Instruções

Instruções lógicas
Introdução
Os operadores lógicos podem ser utilizados para executar uma operação lógica
entre 2 operandos de palavras ou, no caso NOT lógico, em um operando de
palavra.
Esta tabela lista os tipos de instruções lógicas:

Instrução Função

AND AND (sentido do bit) entre 2 operandos

OR OR lógico (sentido do bit) entre 2 operandos

XOR OR Exclusivo (sentido do bit) entre 2 operandos

NOT Complemento lógico (sentido do bit) de um operando

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Sintaxe para instruções lógicas:

Operador Sintaxe Op1 Op2 e Op3

AND, OR, XOR [Op1 := Op2 operador Op3] %MWi, %QWi, %SWi, %BLK.x Valor imediato (1), %MWi, %
KWi, %IWi, %QWi, %IWSi, %
NOT [Op1 := NOT(Op2)] QWSi, %SWi, %BLK.x

(1) Com NOT, Op2 não pode ser um valor imediato.

Estrutura
Exemplos de instruções lógicas:

Degrau Instrução

0 LD %M0
[%MW0:=%MW10 AND 16#00FF]

1 LD 1
[%MW0:=%KW5 OR %MW10]

2 LD %I0.3
[%MW102:=NOT(%MW100)]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Exemplo de aplicativo
Instrução lógica AND:
[%MW15:=%MW32 AND %MW12]
Quando %MW32 = 0001 1011 (binário) (27 (decimal)) e %MW12 = 0011 0110
(binário) (54 (decimal)) então o resultado será %MW15 = 0001 0010 (binário) (18
(decimal)).

EIO0000003295.03 57
Instruções

Instruções de deslocamento
Introdução
Instruções de deslocamento movem bits de um operando em um número
especificado de posições para a direita ou para a esquerda.
Esta tabela lista os tipos de instruções de deslocamento:

Instrução Função

Deslocamento lógico

SHL(op2,n) Deslocamento lógico de n


posições para a esquerda.

SHR(op2,n) Deslocamento lógico de n


posições para a direita.

Deslocamento de rotação

ROL(op2,n) Deslocamento de rotação de n


posições para a esquerda.

ROR(op2,n) Deslocamento de rotação de n


posições para a direita.

Em que n é um valor inteiro imediato para:


• palavra: 1...16 inclusive
• palavra dupla: 1...32 inclusive.

NOTA: O bit de sistema %S17 indica o valor do último bit ejetado.

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Sintaxe para instruções de deslocamento:

Operador Sintaxe

SHL, SHR [Op1 := operador (Op2,n)]

ROL, ROR

Em que n é um valor inteiro imediato para:


• palavra: 1...16 inclusive
• palavra dupla: 1...32 inclusive.

58 EIO0000003295.03
Instruções

Esta tabela fornece detalhes dos operandos:

Tipos Op1 Op2

Palavras %MWi, %QWi, %SWi %MWi, %KWi, %IWi, %QWi, %IWSi, %


QWSi, %SWi, %BLK.x
%BLK.x
Palavras duplas %MDi %MDi, %KDi

%BLK.x %BLK.x

Estrutura
Exemplos de funções de deslocamento:

Degrau Instrução

0 LDR %I0.1
[%MW0:=SHL(%MW10,5)]

1 LDR %I0.2
[%MW10:=ROR(%KW9,8)]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Instruções de conversão BCD/binário


Introdução
Instruções de conversão executam a conversão entre diferentes representações
de números.
Esta tabela lista os tipos de instruções de conversão BCD/Binário:

Instrução Função

BTI Conversão BCD para Binário

ITB Conversão Binário para BCD

Revisão do código BCD


O decimal codificado binário (BCD - Binary Coded Decimal) representa um dígito
decimal (de 0 a 9) ao codificar 4 bits binários. Um objeto de palavra de 16 bits
pode assim conter um número expresso em 4 dígitos (0000 - 9999), e um objeto
de palavra dupla de 32 bits pode assim conter um número de 8 dígitos.
Durante a conversão, o bit de sistema %S18 é definido como 1 se o valor não for
BCD. Este bit deve ser testado e redefinido como 0 pelo programa.
Representação BCD de números decimais:

Deci- 0 1 2 3 4 5 6 7 8 9
mal
BCD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001

Exemplos:
• A palavra %MW5 expressa o valor BCD 2450 que corresponde ao valor
binário: 0010 0100 0101 0000
• A palavra %MW12 expressa o valor decimal 2450 que corresponde ao valor
binário: 0000 1001 1001 0010

EIO0000003295.03 59
Instruções

A palavra %MW5 é convertida para a palavra %MW12 utilizando-se a instrução BTI.


A palavra %MW12 é convertida para a palavra %MW5 utilizando-se a instrução ITB.

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Sintaxe para instruções de conversão BCD/Binário:

Operador Sintaxe

BTI, ITB [Op1 := operador (Op2)]

Esta tabela fornece detalhes dos operandos:

Tipos Op1 Op2

Palavras %MWi, %QWi, %SWi %MWi, %KWi, %IWi, %QWi, %IWSi,


%QWSi, %SWi, %BLK.x
%BLK.x
Palavra dupla %MDi %MDi, %KDi

%BLK.x %BLK.x

Estrutura
Exemplos de instruções de conversão BCD/Binário:

Degrau Instrução

0 LD %M0
[%MW0:=BTI(%MW10)]

1 LD %I0.2
[%MW10:=ITB(%KW9)]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Exemplo de aplicativo
A instrução BTI é utilizada para processar um valor de ponto definido em entradas
do controlador através de rodas de acionamento manual BCD codificadas.
A instrução ITB é utilizada para exibir valores numéricos (por exemplo, o
resultado de um cálculo, o valor atual de um bloco de funções) em telas BCD
codificadas.

60 EIO0000003295.03
Instruções

Instruções de conversão de palavra simples/dupla


Introdução
Esta tabela descreve instruções utilizadas para executar conversões entra
palavras simples e duplas:

Instrução Função

LW LSB de palavra dupla extraído para uma palavra.

HW MSB de palavra dupla extraído para uma palavra.

CONCATW Concatena 2 palavras em uma palavra dupla.

DWORD Converte uma palavra de 16 bits em uma palavra dupla de 32 bits.

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Sintaxe para instruções de conversão de palavra simples/dupla:

Operador Sintaxe Op1 Op2 Op3

LW, HW Op1 = operador (Op2) %MWi %MDi, %KDi, % [-]


BLK.x
CON- Op1 = operador (Op2, %MDi, %BLK.x %MWi, %KWi, %MWi, %KWi,
CATW Op3)) Valor imediato Valor imediato

DWORD Op1 = operador (Op2) %MDi, %BLK.x %MWi, %KWi [-]

Estrutura
Exemplos de instruções de conversão de palavra simples/dupla:

Degrau Instrução

0 LD %M0
[%MW0:=HW(%MD10)]

1 LD %I0.2
[%MD10:=DWORD(%KW9)]

2 LD %I0.3
[%MD11:=CONCATW(%MW10,%MW5)]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Programa
Objetivo desta seção
Esta seção fornece uma introdução a instruções de programa.

EIO0000003295.03 61
Instruções

Instruções END
Introdução
As instruções END definem o término da execução de uma busca de programa.

END, ENDC, e ENDCN


Estão disponíveis quatro instruções END diferentes:
• END: término incondicional do programa
• ENDC: término do programa se o resultado booleano da instrução de testes
precedente for 1
• ENDCN: término do programa se o resultado booleano da instrução de testes
precedente for 0
• ENDT: término do degrau de transição num programa Grafcet (SFC) (válido
somente em um degrau de transição).
Por padrão (modo normal) quando o término do programa é ativado, as saídas
são atualizadas e a busca seguinte é iniciada.
Se a busca for periódica, quando o término do período é atingido as saídas são
atualizadas e a próxima busca é iniciada.
A instrução END finaliza o nível atual:
• Se for ativada em uma sub-rotina, uma função definida pelo usuário ou um
bloco de função definido pelo usuário, ela a finaliza e retorna para o
programa de chamada.
• Se for ativada em uma tarefa principal, periódica ou de evento, finaliza a
tarefa atual.

Exemplos
Exemplo de uma instrução END incondicional:

Degrau Instrução

0 LD %M1
ST %Q0.1

1 LD %M2
ST %Q0.2

2 END

Exemplo de uma instrução END condicional:

Degrau Instrução

0 LD %I0.0
ST %Q0.0

1 LD %I0.1
ST %Q0.1

2 LD %I0.2
ENDC
3 LD %I0.3
ST %Q0.2

4 END

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

62 EIO0000003295.03
Instruções

Instruções NOP
Introdução
As instruções NOP não executam qualquer função. Utilize-os para "reservar"
linhas em um programa de modo que seja possível inserir instruções
posteriormente sem modificar os números de linha.

Instruções de salto
Introdução
Instruções de salto fazem com que a execução de um programa seja interrompida
imediatamente e seja retomada a partir da linha após a linha de programa que
contém o Rótulo %Li (i = número máximo de módulo).

JMP, JMPC e JMPCN


Estão disponíveis 3 instruções Jump diferentes:
• JMP: Salto incondicional de programa
• JMPC: salto de programa se o resultado booleano da lógica precedente for
igual a 1
• JMPCN: salto de programa se o resultado booleano da lógica precedente for
igual a 0

Exemplos
Exemplos de instruções de salto:

Degrau Instrução

0 LD %M15
JMPC %L8
1 LD [%MW24<%MW12]
ST %Q0.3
JMPC %L12
2 %L8:
LD %M12
AND %M13
ST %M12
JMPC %L12
3 LD %M11
S %Q0.0

4 %L12:
LD %I0.0
ST %Q0.4

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

EIO0000003295.03 63
Instruções

Orientações
• Instruções de salto não são permitidas entre parênteses, e não devem ser
posicionadas entre as instruções AND, OR e uma instrução de fechamento
de parênteses ")".
• O rótulo pode ser posicionado somente antes de uma instrução LD, LDN,
LDR, LDF, ou BLK.
• O número do rótulo %Li deve ser definido somente uma vez em um
programa.
• O salto de programa é executado para uma linha de programação que seja
de descida ou de subida. Quando o salto estiver a montante, preste atenção
ao tempo de varredura do programa. O tempo de varredura prolongado pode
disparar o temporizador de watchdog.

Elementos condicionais
Descrição
Elementos condicionais permite que você codifique condições em seu programa.
Os elementos podem ser programados somente no modo offline.
Esse recurso contém os três elementos a seguir:
• IF
• ELSE
• ENDIF
Você pode inserir um elemento por degrau.
NOTA: O aplicativo deve ser configurado com um nível funcional de pelo
menos Nível 6.0.

Número máximo de elementos


O número máximo de elementos é de até 128 menos que o número de %L
declarado no seu aplicativo.

Descrição do elemento
Elemento Instrução IL Diagrama Ladder Descrição

IF IF0...THEN0 Deve estar no início de um degrau.

O elemento THEN é adicionado automaticamente. Você


não pode modificar esse elemento.

ELSE ELSE0 Somente se um elemento IF estiver definido em um


degrau precedente.

Deve estar no início de um degrau.

ENDIF ENDIF0 Deve estar no fim de um degrau Não é possível inserir


outros elementos no mesmo degrau.

64 EIO0000003295.03
Instruções

Configuração de uma instrução de condição


Etapa Ação

1
Em um degrau vazio, insira o elemento IF clicando em → → IF. Insira a condição a avaliar entre os
elementos IF e THEN.
2 Opcionalmente, você pode alterar o índice.

Se modificar o índice de um elemento, você deve atribuir o mesmo índice aos outros elementos.

Os elementos com o mesmo índice devem estar na mesma POU.


3 Configure seu programa. Quando a condição entre IF e THEN é TRUE, os degraus subsequentes do seu programa entre
THEN e a instrução condicional seguinte (ELSE ou ENDIF) são avaliados. Caso contrário, os degraus subsequentes são
ignorados e não avaliados.

4
Opcionalmente, insira o elemento ELSE clicando em → → ELSE. Quando a condição entre IF e THEN é
FALSE, a parte do programa entre ELSE e ENDIF é avaliada. Isso inclui instruções de programa no mesmo degrau que o
elemento ELSE. Caso contrário, esta parte do programa é ignorada e não avaliada.

5
No último degrau, insira o elemento ENDIF clicando em → → ENDIF.

No exemplo abaixo:
• Quando a condição IF é TRUE, ou seja, %MW0 é menor que 10:
1. O degrau 3 é avaliado.
2. O degrau ELSE10 foi ignorado. %MW2 e %Q0.1 mantêm seus últimos
valores.
• Quando a condição IF é FALSE, ou seja, %MW0 é maior ou igual a 10:
1. O degrau 3 foi ignorado. %MW1 e %Q0.0 mantêm seus últimos valores.
2. O degrau ELSE10 é avaliado, ou seja, as operações em %MW2 e %Q0.1
são executadas quando %MW0 é maior que 20.
LD If 10 nome Comentário
%MW0 < 10
Corpo do degrau %MW0 < 10
IF 10 < THEN 10

LD Degrau 3 nome Comentário


%MW1 := %MW0 + 1
Corpo do degrau
%MW1 := %MW0 + 1
...
Comentário
Símbolo
%Q0,0
()

LD Then 10 nome Comentário

Corpo do degrau %MW0 > 20 %MW2 := %MW0 + 2


%MW0 > 20 %MW2 := %MW0 + 2
ELSE 10 < ...
Comentário
Símbolo
%Q0,1
()

LD EndIf 10 nome Comentário


Corpo do degrau ENDIF 10

EIO0000003295.03 65
Instruções

Elementos de loop
Descrição
Elementos do loop permite que você codifique uma sequência de instruções em
seu programa. Os elementos podem ser programados somente no modo offline.
Esse recurso contém os dois elementos a seguir:
• FOR
• ENDFOR
Você pode inserir um elemento por degrau.
NOTA: O aplicativo deve ser configurado com um nível funcional (consulte
EcoStruxure Machine Expert - Básico, Guia de instruções) de pelo menos
Nível 6.0.

Número máximo de elementos


O número máximo de elementos é de até 128 menos que o número de %L
declarado no seu aplicativo.

Descrição do elemento
Elemento Instrução IL Diagrama Ladder Descrição

FOR FOR0 Deve estar no início de um degrau.

Clique em para configurar.

ENDFOR ENDFOR0 Deve estar no fim de um degrau Não é possível inserir


outros elementos no mesmo degrau.

Configuração de um loop
Etapa Ação

1
Em um degrau vazio, insira o elemento FOR clicando em → →FOR.

2 Opcionalmente, você pode alterar o índice.

Se modificar o índice de um elemento, você deve atribuir o mesmo índice ao outro


elemento.

Os elementos com o mesmo índice devem estar na mesma POU.


3
Clique em para configurar o elemento FOR.

Resultado: A janela FOR Assistant é exibida.

4
No último degrau, insira o elemento ENDFOR clicando em →
→ENDFOR.

66 EIO0000003295.03
Instruções

Configuração do elemento FOR


Rótulo Descrição

Contador do loop Digite uma variável %MWx.

Valor inicial Digite uma variável %MWx ou um valor entre -32.768 e 32.767.

Assinar • <
• <=
• =
• >=
• >
• <>
Valor final Digite uma variável %MWx ou um valor entre -32.768 e 32.767.

Etapa de aumento Digite uma variável %MWx ou um valor entre -32.768 e 32.767.

Instruções de sub-rotina
Introdução
As instruções de Sub-rotina fazem com que um programa execute uma sub-rotina
e então retornem ao programa principal no ponto no qual a sub-rotina foi
chamada.

Procedimento
Uma sub-rotina é criada em um POU livre. Consulte POUs gratuitos (consulte
EcoStruxure Machine Expert - Básico, Guia de instruções) para obter informações
sobre como criar um POU e uma sub-rotina gratuitos e definir o número de sub-
rotina. Além disso, consulte Gerenciar POUs (consulte EcoStruxure Machine
Expert - Básico, Guia de instruções) para obter mais informações sobre como
gerenciar POUs com tarefas e degraus.
Chamando uma sub-rotina em 3 passos:

1 A instrução SRn chama a sub-rotina referenciada por um POU livre SRn


se o resultado da instrução booleana precedente for 1.

2 A sub-rotina é referenciada por um POU livre SRn, em que n é o número


da sub-rotina.
3 A instrução de sub-rotina deve ser gravada como um POU livre
independente do programa principal.

Para obter mais informações sobre sub-rotinas, consulte Criar tarefa periódica
(consulte EcoStruxure Machine Expert - Básico, Guia de instruções).

Exemplos
Exemplo de instruções contendo uma sub-rotina:

Degrau Instrução

0 LD %M15
AND %M5
ST %Q0.0

1 LD [%MW24>%MW12]
SR1
2 LD %I0.4
AND %M13
ST %Q0.1
END

EIO0000003295.03 67
Instruções

Exemplo de uma instrução de sub-rotina (SR1):

Degrau Instrução

0 (SR1) LD %I0.0
ST %Q0.0

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Orientações
• Uma sub-rotina não pode chamar outra sub-rotina. A tentativa de chamar
uma sub-rotina dentro de um POU livre vai gerar um erro de compilador.
• As instruções de sub-rotina não são permitidas entre parênteses e não
devem ser colocadas entre as instruçõesAND OR e uma instrução de
parênteses ")".
• Deve-se tomar cuidado quando uma instrução de designações é seguida
diretamente por um chamado de sub-rotina em IL. Isso porque a sub-rotina
pode alterar o conteúdo do acumulador booleano. Portanto, ao retornar
poderia haver um valor diferente do anterior à chamada.

Ponto de flutuação
Objetivo desta seção
Esta seção descreve as instruções avançadas de ponto de flutuação.

Instruções aritméticas sobre objetos de ponto flutuante


Introdução
Essas instruções são utilizadas para executar uma operação aritmética entre 2
operandos de ponto de flutuação ou em 1 operando de ponto de flutuação:

Instrução Objetivo

+ Adição de 2 operandos

- Subtração de 2 operandos

* Multiplicação de 2 operandos

/ Divisão de 2 operandos

LOG Base 10 logaritmo

LN Logaritmo natural

SQRT Raiz quadrada de um operando

ABS Valor absoluto de um operando

TRUNC Parte inteira de um valor de ponto de flutuação

EXP Exponencial natural

EXPT Energia de um inteiro por um real

68 EIO0000003295.03
Instruções

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Operadores de instruções aritméticas em ponto de flutuação:

Operadores Sintaxe

+, - *, / Op1 := Op2 operador Op3

SQRT, ABS, TRUNC, LOG, EXP, LN Op1 = operador (Op2)

EXPT Op1 := operador (Op2,Op3)

Operandos de instruções aritméticas em ponto de flutuação:

Operadores Op1 Op2 Op3

+, - *, / %MFi %MFi, %KFi, valor %MFi, %KFi, valor


imediato imediato
SQRT, ABS, LOG, %MFi %MFi, %KFi [-]
EXP, LN

TRUNC %MFi, %MDi %MFi, %KFi [-]

EXPT %MFi %MFi, %KFi %MWi, %KWi, Valor


imediato

NOTA: EcoStruxure Machine Expert - Basic impede o uso da função com um %MWi como Op1.

Estrutura
Exemplo de instrução aritmética:

Degrau Instrução

0 LD %M0
[%MF0:=%MF10+129.7]

1 LD %I0.2
[%MF1:=SQRT(%MF10)]

2 LDR %I0.3
[%MF2:=ABS(%MF20)]

3 LDR %I0.4
[%MF3:=TRUNC(%MF2)]

4 LD %M1
[%MF4:=LOG(%MF10)]

5 LD %I0.5
[%MF5:=LN(%MF20)]

6 LD %I0.0
[%MF6:=EXP(%MF30)]

7 LD %I0.1
[%MF7:=EXPT(%MF40,%MW52)]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

EIO0000003295.03 69
Instruções

Regras de utilização
• Operações em ponto de flutuação e valores inteiros não podem ser
diretamente misturados. Operações de conversão, página 71 converter em
um ou outro destes formatos.
• O bit de sistema %S18 é administrado da mesma maneira que operações
com inteiros, página 71, a palavra %SW17 indica a causa do erro detectado.
• Quando o operando da função é um número inválido (por exemplo, um
logaritmo de um número negativo), produz um resultado indeterminado ou
infinito e altera o bit %S18 para 1. A palavra %SW17 indica a causa do erro
detectado.
NOTA: Para a instrução TRUNC, o bit de sistema %S17 não é afetado.

Exemplos de aplicativos para instrução TRUNC com %MDi


Esta tabela mostra exemplos da instrução TRUNC quando %MDi é utilizado para
armazenar o resultado:

Exemplo Resultado

TRUNC(3.5) 3
TRUNC(324.18765) 324
TRUNC(927.8904) 927
TRUNC(-7.7) -7
TRUNC(45.678E+20) 2 147 483 647 (palavra dupla assinada máxima) 1

%S18 é definido como 1


TRUNC(-94.56E+13) - 2 147 483 648 (palavra dupla assinada mínima) 1

%S18 é definido como 1


1Este exemplo aplica-se à instrução TRUNC quando usada com %MDi. (Quando utilizado com %
MFi, a instrução TRUNC não possui transbordamento e assim não possui limites máximos/
mínimos.)

Instruções trigonométricas
Introdução
Estas instruções permitem que o usuário execute operações trigonométricas:

SIN seno de um ângulo expresso em ASIN


radianos, arco seno (resultado entre e )

COS cosseno de um ângulo expresso em ACOS arco cosseno (resultado entre de 0


radianos, e )

TAN tangente de um ângulo expresso em ATAN


radianos, arco tangente (resultado entre e

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.

70 EIO0000003295.03
Instruções

Operadores, operandos e sintaxe de instruções para operações trigonométricas

Operadores Sintaxe Op1 Op2

SIN, COS, TAN, ASIN, Op1:=operador (Op2) %MFi %MFi, %KFi


ACOS, ATAN

Estrutura
Exemplo de funções Trigonometric:

Degrau Instrução

0 LD %M0
[%MF0:=SIN(%MF10)]

1 LD %I0.0
[%MF1:=TAN(%MF20)]

2 LD %I0.3
[%MF2:=ATAN(%MF30)]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Regras de utilização
• Quando o operando da função é um número inválido (por exemplo, o arco
cosseno de um número maior que 1), produz um resultado indeterminado ou
infinito e altera o bit %S18 para 1. A palavra %SW17 indica a causa do erro
detectado.
• As funções SIN/COS/TAN permitem como parâmetro um ângulo entre
e mas sua precisão diminui progressivamente para ângulos
fora da faixa e por causa da imprecisão introduzida pelo módulo
realizado no parâmetro antes de qualquer operação.

Instruções de conversão de ângulo


Introdução
Estas instruções são utilizadas para realizar operações de conversão:

DEG_TO_RAD Conversão de graus para radianos, o resultado é o valor do ângulo entre 0 e

RAD_TO_DEG Conversão de um ângulo expresso em radianos, o resultado é o valor do


ângulo de 0 a 360 graus

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Operadores, operandos e sintaxe de instruções de conversão

Operadores Sintaxe Op1 Op2

DEG_TO_RAD RAD_ Op1:=operador (Op2) %MFi %MFi, %KFi


TO_DEG

EIO0000003295.03 71
Instruções

Estrutura
Exemplo de instruções de conversão:

Degrau Instrução

0 LD %M0
[%MF0:=DEG_TO_RAD(%MF10)]

1 LD %M2
[%MF2:=RAD_TO_DEG(%MF20)]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Regras de utilização
O ângulo a ser convertido deve ser entre -737280,0 e +737280,0 (para
conversões DEG_TO_RAD) ou entre e (para conversões RAD_
TO_DEG).
Para valores fora desses intervalos, o resultado exibido será + NaN, sendo os bits
%SW17:X0 e %S18 and definidos como 1.

Instruções de conversão inteiro/flutuante


Introdução
São oferecidas 4 instruções de conversão:

INT_TO_REAL Conversão de uma palavra inteira para flutuante

DINT_TO_REAL Conversão de uma palavra dupla (inteira) para flutuante

REAL_TO_INT Conversão de uma palavra flutuante para palavra de inteiro (o resultado é o


valor algébrico mais próximo)

REAL_TO_DINT Conversão de uma palavra flutuante para uma palavra dupla de inteiro (o
resultado é o valor algébrico mais próximo)

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Operações e sintaxe (conversão de uma palavra de inteiro para flutuante):

Operadores Sintaxe

INT_TO_REAL Op1=INT_TO_REAL(Op2)

Operandos (conversão de uma palavra de inteiro para flutuante):

Op1 Op2

%MFi %MWi,%KWi

Exemplo: conversão de palavra inteira em flutuante: 147 a 1,47e+02

72 EIO0000003295.03
Instruções

Operadores e sintaxe (conversão dupla de palavra de inteiro para flutuante):

Operadores Sintaxe

DINT_TO_REAL Op1=DINT_TO_REAL(Op2)

Operandos (conversão dupla de palavra de inteiro para flutuante):

Op1 Op2

%MFi %MDi,%KDi

Exemplo: conversão de palavra dupla inteira para flutuante: 68905000 a 6,8905e


+07
Operadores e sintaxe (conversão de flutuante para palavra de inteiro ou palavra
dupla de inteiro):

Operadores Sintaxe

REAL_TO_INT Op1 = operador (Op2)

REAL_TO_DINT

Operadores (conversão de flutuante para palavra de inteiro ou palavra dupla de


inteiro):

Tipo Op1 Op2

Palavras %MWi, %QWi.j, %QWEi, %QWMi %MFi, %KFi

Palavras duplas %MDi %MFi, %KFi

Exemplo:
• Conversão de flutuante em palavra inteira: 5978,6 para 5979
• Conversão de flutuante em palavra dupla inteira: -1235978,6 para -1235979
NOTA: Se durante a conversão de real para inteiro (ou de real para palavra
dupla de inteiro) o valor flutuante está fora dos limites da palavra (ou palavra
dupla) o bit %S18 é definido como 1.

Estrutura
Exemplo de instrução de conversão inteiro/flutuante:

Degrau Instrução

0 LD 1
[%MF0:=INT_TO_REAL(%MW10)]

1 LD %I0.8
[%MD2:=REAL_TO_DINT(%MF9)]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Precisão do arredondamento
O IEEE 754 padrão define 4 modos de arredondamento para operações
flutuantes.
O modo empregado pelas instruções acima é o modo "arredondar para o mais
próximo":
"Se os valores representativos mais próximos estiverem à mesma distância do
resultado teórico, o valor dado será aquele cujo bit menos relevante seja igual a
0".

EIO0000003295.03 73
Instruções

Isso significa que o valor será arredondado tanto para cima quando para baixo,
mas para o número par.
Por exemplo:
• Arredondamento do valor 10,5 para 10.
• Arredondamento do valor 11,5 para 12.

ASCII
Objetivo desta seção
Esta seção descreve as instruções avançadas do ASCII.

Instruções ROUND
Introdução
A instrução ROUND arredonda uma representação de um ponto de flutuação que
está armazenada em uma cadeia ASCII.

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Para a ROUND instrução, use a sintaxe: Op1 := ROUND( Op2,Op3 ).
Por exemplo:
[%MW0:7:=ROUND(%MW8,4)]

Parâmetros
Esta tabela descreve os parâmetros da função ROUND:

Parâmetros Descrição

Op1 %MW em cujo resultado é armazenado

Op2 %MW contendo o ponto de flutuação a ser contornado

Op3 Número de dígitos significativos necessários no arredondamento

Inteiro de 1 até 8

74 EIO0000003295.03
Instruções

Regras de utilização
as regras da instrução ROUND são as seguintes:
• O operando é arredondado para baixo.
• O caractere final da cadeia do operando é utilizada como um caractere final
para a cadeia do resultado.
• O caractere final pode ser qualquer caractere ASCII que não esteja no
intervalo [0 - 9] ([16#30 - 16#39]), exceto por:
◦ ponto '.' (16#2E),
◦ menos '-' (16#2D),
◦ mais '+' (16#2B),
◦ Exp 'e' ou 'E' (16#65 ou 16#45).
• O resultado e o operando não devem ter mais de 13 bytes: O tamanho
máximo de uma cadeia de caracteres ASCII é de 13 bytes.
• A notação científica não é autorizada.

Casos especiais
O software verifica a sintaxe. Os exemplos a seguir poderão resultar em erros de
sintaxe:

Sintaxe incorreta Sintaxe correta


%MW10:= ROUND(%MW1,4) %MW10:7 := ROUND(%MW1,4)

":7" ausente no resultado


%MW10:13:= ROUND(%MW1,4) %MW10:7 := ROUND(%MW1,4)

%MW10:n onde n ≠ 7 é incorreto

Exemplo de aplicativo
Esta tabela mostra exemplos da instrução ROUND:

Exemplo Result

ROUND("987654321", 5) "987650000"
ROUND("-11.1", 8) "-11,1"

ROUND("NAN") "NAN"

Instruções de conversão de ASCII para inteiro


Introdução
As instruções de conversão de ASCII para inteiro convertem uma cadeia ASCII
em um valor inteiro.

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Para as instruções de conversão de ASCII para inteiro, utilize esta sintaxe: Op1 :
= ASCII_TO_INT( Op2 )

EIO0000003295.03 75
Instruções

Por exemplo:
[%MW0:=ASCII_TO_INT(%MW8)]
A instrução lê até quatro objetos de palavra de Op2, converte-os para o formato
integral e armazena o resultado em Op1.

Parâmetros
Esta tabela descreve os parâmetros da função de conversão de ASCII para
Inteiro:

Parâmetros Descrição

Op1 %MW em cujo resultado é armazenado

Op2 %MW ou %KW

Regras de utilização
As regras de instruções de ASCII para inteiro são as que se seguem:
• Op2 deve ser entre -32 768 a 32 767.
• A função lê primeiro o byte mais significativo.
• Espaços à esquerda serão ignorados.
• Caractere ASCII que não esteja no intervalo [0 - 9] ([16#30 - 16#39]) é
considerado como caractere final, exceto por um sinal de menos '-' (16#2D)
quando é posicionado no primeiro caractere.
• Em caso de transbordamento (>32.767 ou <-32.768), o bit de sistema %S18
(transbordamento aritmético ou erro detectado) é definido como 1 e o valor
32.767 ou -32.768 é retornado.
• Se o primeiro caractere do operando é um caractere "separador", o valor 0 é
retornado e o bit %S18 é definido como 1.
NOTA: Os caracteres do separador são '+' e '-', a letra 'e' ou 'E', ou '.'
(separador decimal).
• Notação científica inválida.

Exemplo de aplicativo
Considere que os dados ASCII a seguir foram armazenados em %MW10 para %
MW13:

Parâmetro Valor hexadecimal Representação ASCII

%MW10 16#3932 9, 2

%MW11 16#3133 1, 3

%MW12 16#2038 ‘ ’, 8

%MW13 16#387A 8, ‘z’

Esta tabela mostra exemplos de conversão ASCII para inteiro:

Exemplo Result

%MW20 := ASCII_TO_INT(%MW10) %MW20 = 29318

%MW20 := ASCII_TO_INT(%MW12) %MW20 = 8

%MW20 := ASCII_TO_INT(%MW13) %MW20 = 0 e %S18 está definido como 1

76 EIO0000003295.03
Instruções

Instruções de conversão de inteiro para ASCII


Introdução
As instruções de conversão de inteiro para ASCII convertem um inteiro em um
valor de cadeia ASCII.

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Para as instruções de conversão de inteiro para ASCII, utilize esta sintaxe: Op1 :
= INT_TO_ASCII( Op2 )
Por exemplo:
[%MW0:4:=INT_TO_ASCII(%MW8)]

Parâmetros
Esta tabela descreve os parâmetros de funções de conversão de inteiro para
ASCII:

Parâmetros Descrição

Op1 %MW em cujo resultado é armazenado

Op2 %MW, %KW, %SW, %IW, %QW ou qualquer WORD

(Valores imediatos não são aceitos)

Regras de utilização
As regras de conversão de números inteiros para ASCII são as que se seguem:
• Op2 deve ser entre -32 768 a 32 767.
• A função grava primeiro o byte mais significativo.
• O caractere de fim selecionado na janela Comportamento do aplicativo
(consulte EcoStruxure Machine Expert - Básico, Guia de instruções) é
adicionado. O valor padrão é 'CR' (retorno de carro, ASCII 13).
• A função determina automaticamente quantas variáveis %MW devem ser
preenchidas com valores ASCII (de 1 a 4).

Erros de sintaxe
O software verifica a sintaxe. Os exemplos a seguir poderão resultar em erros de
sintaxe:

Sintaxe incorreta Sintaxe correta


%MW10 := INT_TO_ASCII(%MW1) %MW10:4 := INT_TO_ASCII(%MW1)

":4" ausente no resultado


%MW10:n := INT_TO_ASCII(%MW1) %MW10:4 := INT_TO_ASCII(%MW1)

%MW10:n em que n ≠ 4 é incorreto

EIO0000003295.03 77
Instruções

Exemplo de aplicativo
Para a instrução MW10:4 := INT_TO_ASCII(%MW1) usando o caractere final
‘CR’:

Se... Então...
Valor inteiro Valor hexadecimal Representação ASCII

%MW10 = 16#3231 2, 1
%MW1 = 123
%MW11 = 16#0D33 ‘CR’, 3

%MW10 = 16#3534 5, 4
%MW1 = 45
%MW11 = 16#000D ‘CR’
%MW1 = 7 %MW10 = 16#0D37 ‘CR’, 7

%MW10 = 16#312D 1, ‘-’

%MW11 = 16#3332 3, 2
%MW1 = -12369
%MW10 = 16#3936 9, 6

%MW11 = 16#000D ‘CR’

ASCII para instruções de conversão de flutuante


Introdução
As instruções de conversão de ASCII para flutuante convertem uma cadeia ASCII
em um valor de ponto flutuante.

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Para obter as instruções de conversão ASCII em flutuante, use esta sintaxe: Op1
:= ASCII_TO_FLOAT( Op2 ).
Por exemplo:
[%MF0:=ASCII_TO_FLOAT(%MW8)]

Parâmetros
Esta tabela descreve os parâmetros da função de conversão ASCII para
Flutuante:

Parâmetros Descrição

Op1 %MF

Op2 %MW or %KW

78 EIO0000003295.03
Instruções

Regras de utilização
As regras para conversão ASCII para Flutuação são as que se seguem:
• A função lê primeiro o byte mais significativo.
• Qualquer caractere ASCII que não esteja no intervalo [0 - 9] ([16#30 -
16#39]) é considerado um caractere "final", exceto:
◦ ponto '.' (16#2E),
◦ menos '-' (16#2D),
◦ mais '+' (16#2B),
◦ Exp 'e' ou 'E' (16#65 ou 16#45).
• O formato da cadeia ASCII pode ser em notação científica (p. ex. "-2.34567e
+13") ou notação decimal (isto é, 9826.3457)
• Em caso de transbordamento (o resultado do cálculo é >3,402824E+38 ou
<-3,402824E+38):
◦ O bit de sistema %S18 (transbordamento aritmético ou erro detetado) é
definido como 1,
◦ %SW17:X3 é definido como 1,
◦ Valor +/- 1.#INF (+ ou - valor infinito) é retornado.
• Se o resultado do cálculo estiver entre -1,175494E-38 e 1,175494E-38, então
o resultado é arredondado para 0,0.
• Se o operando não for um número:
◦ O valor NaN é devolvido,
◦ O bit %SW17:X0 é definido como 1.

Exemplo de aplicativo
Considere que os dados ASCII a seguir foram armazenados em %MW10 para %
MW14:

Parâmetro Valor hexadecimal Representação ASCII

%MW10 16#382D 8, ‘-’

%MW11 16#322E 2, ‘.’

%MW12 16#3536 5, 6

%MW13 16#2B65 ‘+’, ‘e’

%MW14 16#2032 ‘ ’, 2

Esta tabela mostra exemplos da conversão ASCII para Flutuante:

Exemplo Result

%MF20 := ASCII_TO_FLOAT(%MW10) %MF20 = -826,5

%MF20 := ASCII_TO_FLOAT(%MW11) %MF20 = 26,5

%MF20 := ASCII_TO_FLOAT(%MW12) %MF20 = 6500,0

%MF20 := ASCII_TO_FLOAT(%MW13) %MF20 = NaN

%MF20 := ASCII_TO_FLOAT(%MW14) %MF20 = 2,0

EIO0000003295.03 79
Instruções

Instruções de conversão de flutuante para ASCII


Introdução
As instruções de conversão de Flutuante para ASCII convertem um valor de
ponto flutuante em um valor de cadeia ASCII.

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Para obter as instruções de conversão de flutuante para ASCII, use esta sintaxe:
Op1 := FLOAT_TO_ASCII(Op2).
Por exemplo:
[%MW0:7:=FLOAT_TO_ASCII(%MF8)]

Parâmetros
Esta tabela descreve os parâmetros da função de conversão Flutuante para
ASCII:

Parâmetro Descrição

Op1 %MW

Op2 %MF or %KF

Regras de utilização
As regras da conversão Flutuante para ASCII são as seguintes:
• A função grava primeiro o byte mais significativo.
• A representação é feita utilizando a notação científica convencional.
• Os resultados "Infinito" ou "Não é um número" retornam a série "NAN".
• O caractere de fim selecionado na janela Comportamento do aplicativo
(consulte EcoStruxure Machine Expert - Básico, Guia de instruções) é
adicionado. O valor padrão é 'CR' (retorno de carro, ASCII 13).
• A função determina automaticamente quantas variáveis %MW deverão ser
preenchidas com valores ASCII.
• Precisão de conversão em 6 algarismos

Erros de sintaxe
O software verifica a sintaxe. Os exemplos a seguir poderão resultar em erros de
sintaxe:

Sintaxe incorreta Sintaxe correta


%MW10 := FLOAT_TO_ASCII(%MF1) %MW10:7 := FLOAT_TO_ASCII(%MF1)

":7" ausente no resultado


%MW10:n := FLOAT_TO_ASCII(%MF1) %MW10:7 := FLOAT_TO_ASCII(%MF1)

%MW10:n em que n ≠ 7 é incorreto

80 EIO0000003295.03
Instruções

Exemplo de aplicativo
Para a instrução %MW10:7 := FLOAT_TO_ASCII(%MF1):

Número para conversão Result

1234567800 1.234568e+09
0,000000921 9.210000e-07

9,87654321 9.876543e+00

1234 1.234000e+03

Instruções de conversão de ASCII para palavra dupla


Introdução
A instrução de conversão de ASCII para palavra dupla converte uma cadeia
ASCII para um valor de palavra dupla.

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Para instrução de conversão de ASCII para palavra dupla, utilize esta sintaxe:
Op1 := ASCII_TO_DINT( Op2 )
Por exemplo:
[%MD4 := ASCII_TO_DINT(%MW5)]

Parâmetros
Esta tabela descreve os parâmetros da instrução de conversão de ASCII para
palavra dupla:

Parâmetros Descrição

Op1 %MDx

Op2 %MWy ou %KWy

NOTA: Não é necessário definir Op1 e Op2 em uma tabela de animação.

EIO0000003295.03 81
Instruções

Regras de utilização
As regras de instruções de ASCII para inteiro são as que se seguem:
• Op2 deve ser entre –2.147.483.648 e 2.147.483.647.
• A função lê primeiro o byte mais significativo.
• Espaços à esquerda serão ignorados.
• Caractere ASCII que não esteja no intervalo [0 - 9] ([16#30 - 16#39]) é
considerado como caractere final, exceto por um sinal de menos '-' (16#2D)
quando é posicionado no primeiro caractere.
• Em caso de transbordamento (> 2.147.483.647 ou < –2.147.483.648), o %
S18 do bit do sistema (transbordamento aritmético ou erro detectado) é
definido como 1 e o valor 2.147.483.647 ou –2.147.483.648 é retornado.
• Se o primeiro caractere do operando é um caractere "separador", o valor 0 é
retornado e o bit %S18 é definido como 1.
NOTA: Os caracteres do separador são '+' e '-', a letra 'e' ou 'E', ou '.'
(separador decimal).
• Notação científica inválida.

Exemplo de aplicativo
Considere que os dados ASCII a seguir foram armazenados em %MW11 para %
MW13:

Parâmetro Valor hexadecimal Representação ASCII

%MW8 16#3431 4, 1

%MW9 16#3532 5, 2

%MW10 16#3239 2, 9

%MW11 16#3133 1, 3

%MW12 16#2038 ‘ ‘, 8

%MW13 16#387A 8, ‘z‘

Esta tabela mostra exemplos da conversão ASCII para Palavra dupla:

Exemplo Result

%MD10 := ASCII_TO_DINT(%MW8) %MD10 = 142592318

%MD10 := ASCII_TO_DINT(%MW12) %MD10 = 8

%MD10 := ASCII_TO_DINT(%MW13) %MD10 = 0 e %S18 está definido como 1

82 EIO0000003295.03
Instruções

Instruções de conversão de palavra dupla para ASCII


Introdução
A instrução de conversão de palavra dupla para ASCII converte um valor de
palavra dupla para um valor de cadeira ASCII.

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Para a instrução de conversão de palavra dupla para ASCII, utilize esta sintaxe:
Op1 := DINT_TO_ASCII( Op2 )
Por exemplo:
[%MW4:6 := DINT_TO_ASCII(%MD5)]

Parâmetros
Esta tabela descreve os parâmetros de função de conversão de palavra dupla
para ASCII:

Parâmetros Descrição

Op1 %MWx:6

Op2 %MD ou %KD

NOTA: Não é necessário definir Op1 e Op2 em uma tabela de animação.

Regras de utilização
As regras de conversão de números inteiros para ASCII são as que se seguem:
• Op2 deve ser entre –2.147.483.648 e 2.147.483.647.
• A função grava primeiro o byte mais significativo.
• O caractere de fim selecionado na janela Comportamento do aplicativo
(consulte EcoStruxure Machine Expert - Básico, Guia de instruções) é
adicionado. O valor padrão é 'CR' (retorno de carro, ASCII 13).
• A função determina automaticamente quantas variáveis %MW devem ser
preenchidas com valores ASCII (de 1 a 6).

Erros de sintaxe
O software verifica a sintaxe. Os exemplos a seguir poderão resultar em erros de
sintaxe:

Sintaxe incorreta Sintaxe correta


%MW2 := DINT_TO_ASCII (%MD1) %MW2:6 := DINT_TO_ASCII (%MD1)

":6" ausente no resultado


%MW2:n := DINT_TO_ASCII (%KD7) %MW2:6 := DINT_TO_ASCII (%KD7)

%MW2:n em que n ≠ 6 é incorreto

EIO0000003295.03 83
Instruções

Exemplo de aplicativo
Para a instrução %MW0:6 := DINT_TO_ASCII(%MD10) utilizando o caractere de
extremidade de linha ‘CR’:

Se... Então...
Valor inteiro Valor hexadecimal Representação ASCII

%MD10 = 1236589 %MW0 = 16#3231 2, 1

%MW1 = 16#3633 6, 3

%MW2 = 16#3835 8, 5

%MW3 = 16#0D37 ‘CR’, 9

%MD10 = 45 %MW0 = 16#3534 5, 4

%MW1 = 16#000D ‘CR’


%MD10 = -1236945 %MW0 = 16#3145 1, ‘-‘

%MW1 = 16#3332 3, 2

%MW2 = 16#3936 9, 6

%MW3 = 16#3534 5, 4

%MW4 = 16#000D ‘CR’

Operadores de pilha
Objetivo desta seção
Esta seção descreve as instruções avançadas de pilha.

Instruções da pilha (MPS, MRD, MPP)


Introdução
As instruções de pilha processam o roteamento para as bobinas. As instruções
MPS, MRD e MPP usam uma área de armazenamento temporário chamada pilha
que pode armazenar até 32 expressões booleanas.
NOTA: Essas instruções não podem ser utilizadas dentro de uma expressão
entre parênteses.

Sintaxe
Esta tabela descreve as 3 funções de pilha:

Instrução Descrição Função

MPS Impulso de memória para a Armazena o resultado da última instrução lógica


pilha (conteúdo do acumulador) na parte superior da
pilha (um impulso) e transfere os outros valores
para a base da pilha.

MRD Leitura da memória da pilha Lê o topo da pilha no acumulador.

MPP Impulso de memória da pilha Copia o valor na parte superior da pilha no


acumulador (um pop) e desloca os outros valores
em direção ao topo da pilha.

NOTA: Para cada MPS instrução (empurrar), uma instrução MPP (pop)
correspondente deverá aparecer no mesmo degrau.

84 EIO0000003295.03
Instruções

Funcionamento
Este diagrama mostra como as instruções de pilha funcionam:

Exemplo de aplicativo
Exemplo de utilização de instruções de pilha:

Degrau Instrução

0 LD %I0.0
AND %M1
MPS
AND %I0.1
ST %Q0.0
MRD
AND %I0.2
ST %Q0.1
MRD
AND %I0.3
ST %Q0.2
MPP
AND %I0.4
ST %Q0.3

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Instruções em tabelas de objetos


Objetivo desta seção
Esta seção descreve instruções para gerenciar as Tabelas de objetos de:
• Palavras duplas
• Objetos de ponto flutuante

EIO0000003295.03 85
Instruções

Atribuição de tabelas de palavra, palavra dupla e ponto flutuante


Introdução
Operações de designação podem ser executadas nas seguintes tabelas de
objetos:
• Valor total imediato para tabela de palavras (consulte o degrau 0 do exemplo
de estrutura, página 87) ou tabela de palavras duplas
• Palavra para tabela de palavras (consulte o degrau 1 do exemplo de
estrutura, página 87)
• Tabela de palavras para tabela de palavras (consulte o degrau 2 do exemplo
de estrutura, página 87)
O comprimento da tabela (L) deve ser o mesmo para ambas as tabelas.
• Palavra dupla para tabela de palavras duplas
• Tabela de palavras duplas para tabela de palavras duplas
O comprimento da tabela (L) deve ser o mesmo para ambas as tabelas.
• Valor imediato de ponto flutuante para tabela de ponto flutuante
• De ponto de flutuação para tabela de ponto de flutuação
• De tabela de ponto de flutuação para tabela de ponto de flutuação
O comprimento da tabela (L) deve ser o mesmo para ambas as tabelas.

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Sintaxe para designações de palavra, palavra dupla e ponto flutuante:

Operador Sintaxe

:= [Op1 := Op2]

Op1 obtém o valor de Op2

Esta tabela fornece detalhes dos operandos:

Tipo Op1 Op2

Tabela de palavras %MWi:L, %SWi:L, %QWi.j:L, % %MWi:L, %SWi:L, valor inteiro imediato, %MWi, %KWi, %IW, %QW,
QWEi:L, %QWMi:L, %QWNi.j.k:L %SWi, %BLK.x, %QWi.j:L, %QWEi:L, %QWMi:L, %QWNi.j.k:
L, %IWi.j:L, %IWEi:L, %IWMi:L, %IWNi.j.k:L

Tabelas de palavras duplas %MDi:L Valor inteiro imediato, %MDi, %KDi,%MDi:L, %KDi:L

Tabelas de palavra flutuante %MFi:L Valor de ponto flutuante imediato, %MFi, %KFi, %MFi:L, %KFi:L

L Comprimento da tabela (máximo de 255).

NOTA: A abreviatura %BLK.x (por exemplo, R3.I) é utilizada para descrever


qualquer palavra de bloco de funções.

86 EIO0000003295.03
Instruções

Estrutura
Exemplos de designações de tabelas de palavras:

Degrau Instrução

0 LD 1
[%MW0:10:=100]

1 LD %I0.0
[%MW0:10:=%MW11]

2 LDR %I0.3
[%MW10:20:=%KW20:20]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Funções de soma de tabela


Introdução
A função SUM_ARR adiciona todos os elementos de uma tabela de objeto:
• Se a tabela é feita de palavras duplas, o resultado é dado na forma de uma
palavra dupla,
• Se a tabela é feita de palavras flutuantes, o resultado é dado na forma de
uma palavra flutuante.

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Sintaxe da instrução da soma de tabelas:
Res:=SUM_ARR(Tab)
Parâmetros da instrução da soma de tabelas:

Tipo Resultado (Res) Tabela (Guia)

Tabelas de palavras duplas %MDi %MDi:L,%KDi:L

Tabelas de palavra flutuante %MFi %MFi:L,%KFi:L

L Comprimento da tabela (máximo de 255).

NOTA: Quando o resultado não está dentro do intervalo de formato válido de


palavra dupla conforme o operando da tabela, o bit de sistema %S18 é
definido como 1.

EIO0000003295.03 87
Instruções

Estrutura
Exemplo da função soma:

Degrau Instrução

0 LD %I0.2
[%MD5:=SUM_ARR(%MD3:1)]

1 LD 1
[%MD5:=SUM_ARR(%KD5:2)]

2 LD 1
[%MF2:=SUM_ARR(%MF8:5)]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Exemplo de aplicativo
%MD4:=SUM_ARR(%MD30:4)
Em que %MD30=10, %MD32=20, %MD34=30, %MD36=40
Então %MD4:=10+20+30+40

Funções de comparação de tabelas


Introdução
A função EQUAL_ARR realiza uma comparação de 2 tabelas, elemento por
elemento.
Se uma diferença for mostrada, a classificação dos primeiros elementos
dissimilares é retornada na forma de uma palavra, de outra forma o valor
retornado é igual a -1.
A comparação é efetuada em toda a tabela.

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Sintaxe de instrução de comparação da tabela:
Res:=EQUAL_ARR(Tab1,Tab2)
Parâmetros das instruções de comparação de tabelas:

Tipo Resultado (Res) Tabelas (Tab1 e Tab2)

Tabelas de palavras duplas %MWi %MDi:L,%KDi:L

Tabelas de palavra flutuante %MWi %MFi:L,%KFi:L

L Comprimento da tabela (máximo de 255).

NOTA: As tabelas têm de ter o mesmo comprimento e tipo.

88 EIO0000003295.03
Instruções

Estrutura
Exemplo da função de comparação de tabelas:

Degrau Instrução

0 LD %I0.2
[%MW5:=EQUAL_ARR(%MD20:7,%KD0:7)]

1 LD 1
[%MW0:=EQUAL_ARR(%MD20:7,%KD0:7)]

2 LD 1
[%MF2:=SUM_ARR(%MF8:5)]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Exemplo de aplicativo
%MW5:=EQUAL_ARR(%MD30:4,%KD0:4)
Comparação de 2 tabelas:

Classifi- Tabela de palavras Tabelas de palavras Diferença


car constantes
0 %MD30=10 %KD0=10 =

1 %MD32=20 %KD2=20 =

2 %MD34=30 %KD4=60 Diferente


3 %MD36=40 %KD6=40 =

O valor da palavra %MW5 é 2 (primeira classificação diferente).

Funções de pesquisa de tabela


Introdução
Existem 3 funções de busca:
• FIND_EQR: busca pela posição em uma tabela de palavras duplas ou
flutuantes do primeiro elemento que é igual a um valor dado
• FIND_GTR: busca pela posição em uma tabela de palavras duplas ou
flutuantes do primeiro elemento que é maior que um valor dado
• FIND_LTR: busca pela posição em uma tabela de palavras duplas ou
flutuantes do primeiro elemento que é menor que um valor dado
O resultado dessas instruções é igual à classificação do primeiro elemento
encontrado ou em -1 se a busca não for bem sucedida.

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Sintaxe das instruções de busca das tabelas:

Função Sintaxe

FIND_EQR Res:=Função(Tab,Val)

FIND_GTR

EIO0000003295.03 89
Instruções

Função Sintaxe

FIND_LTR

Parâmetros de instruções de busca em tabela de palavras flutuantes e duplas

Tipo Resultado (Res) Tabela (Guia) Valor (Val)

Tabelas de palavra %MWi %MFi:L,%KFi:L %MFi,%KFi


flutuante
Tabelas de palavras %MWi %MDi:L,%KDi:L %MDi,%KDi
duplas

L Comprimento da tabela (máximo de 255).

Estrutura
Exemplo da função de busca em tabelas:

Degrau Instrução

0 LD %I0.2
[%MW5:=FIND_EQR(%MD20:7,%KD0)]

1 LD %I0.3
[%MW6:=FIND_GTR(%MD20:7,%KD0)]

2 LD 1
[%MW7:=FIND_LTR(%MF40:5,%KF4)]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Exemplo de aplicativo
%MW5:=FIND_EQR(%MD30:4,%KD0)
Busca pela posição da primeira palavra dupla = %KD0=30 na tabela:

Classificar Tabela de palavras Result

0 %MD30=10 -

1 %MD32=20 -

2 %MD34=30 Valor (Val), classificar

3 %MD36=40 -

Funções de pesquisa de tabelas para valores máximos e mínimos


Introdução
Existem 2 funções de busca:
• MAX_ARR: busca pelo valor máximo em uma tabela de palavras duplas e
flutuantes
• MIN_ARR: busca pelo valor mínimo em uma tabela de palavras duplas e
flutuantes
O resultado dessas instruções é igual ao valor máximo (ou mínimo) encontrado
na tabela.

90 EIO0000003295.03
Instruções

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Sintaxe das instruções de busca da tabela para valores máximos e mínimos:

Função Sintaxe

MAX_ARR Resultado:=Função(Guia)

MIN_ARR

Parâmetros das instruções de busca da tabela para valores máximos e mínimos:

Tipo Resultado (Res) Tabela (Guia)

Tabelas de palavras duplas %MDi %MDn:L,%KDn:L

Tabelas de palavra flutuante %MFi %MFn:L,%KFn:L

i é o identificador de instância do objeto para a variável de memória.

n é o índice de memória da tabela que indica o endereço base para a pesquisa.

L é o número de posições a serem consideradas em uma busca incluindo o índice de endereço


base (o valor máximo de L é 255).

NOTA: L conta somente os endereços que não são sobrepostos durante a


busca. Para mais informações, consulte Possibilidade de sobreposição entre
objetos, página 31.

Estrutura
Exemplo da função de busca em tabelas:

Degrau Instrução

0 LD %I0.2
[%MD0:=MIN_ARR(%MD20:7)]

1 LD 1
[%MF8:=MIN_ARR(%MF40:5)]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Número de ocorrências de um valor em uma tabela


Introdução
Esta função OCCUR_ARR busca em uma tabela de palavras duplas ou flutuantes
pelo número de elementos iguais a um valor dado.

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.

EIO0000003295.03 91
Instruções

Sintaxe das instruções de busca da tabela para valores máximos e mínimos:

Função Sintaxe

OCCUR_ARR Res:=Função(Tab,Val)

Parâmetros das instruções de busca da tabela para valores máximos e mínimos:

Tipo Resultado (Res) Tabela (Guia) Valor (Val)

Tabelas de palavras %MWi %MDi:L,%KDi:L %MDi,%KDi


duplas

Tabelas de palavra %MWi %MFi:L,%KFi:L %MFi,%KFi


flutuante
L Comprimento da tabela (máximo de 255).

Estrutura
Exemplo de número de ocorrências:

Degrau Instrução

0 LD %I0.3
[%MW5:=OCCUR_ARR(%MF20:7,%KF0)]

1 LD %I0.2
[%MW5:=OCCUR_ARR(%MD20:7,%MD1)]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Funções de deslocamento de giro de tabela


Introdução
Existem duas funções de deslocamento:
• ROL_ARR: executa um deslocamento de rotação de n posições do topo até
a base dos elementos em uma tabela de palavras flutuantes
Ilustração das funções ROL_ARR

• ROR_ARR: executa um deslocamento de rotação de n posições da base até


o topo dos elementos em uma tabela de palavras flutuantes
Ilustração das funções ROR_ARR

92 EIO0000003295.03
Instruções

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Sintaxe de instruções de deslocamento de rotação em tabelas de palavra
flutuante ou palavra dupla: ROL_ARR e ROR_ARR:

Função Sintaxe

ROL_ARR Função(n,Tab)

ROR_ARR

Parâmetros de instruções de deslocamento de giro para tabelas de palavras


flutuantes: ROL_ARR e ROR_ARR:

Tipo Número de posições (n) Tabela (Guia)

Tabelas de palavra flutuante %MWi, %KWi, immediate %MFi:L


value
Tabelas de palavras duplas %MWi, %KWi, immediate %MDi:L
value
L Comprimento da tabela (máximo de 255).

NOTA: se o valor de n for negativo ou nulo, nenhum deslocamento é


executado.

Estrutura
Exemplo da função de deslocamento de rotação de tabela:

Degrau Instrução

0 LD %I0.2
[ROL_ARR(%KW0,%MD20:7)]

1 LD %I0.3
[ROR_ARR(2,%MD20:7)]

2 LD %I0.4
[ROR_ARR(2,%MF40:5)]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Funções de classificação de tabela


Introdução
A função de classificação SORT_ARR executa classificações em ordem
crescente ou decrescente dos elementos de uma tabela de palavras duplas ou
flutuantes e armazena o resultado na mesma tabela.

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.

EIO0000003295.03 93
Instruções

Sintaxe das funções de classificação de tabelas:

Função Sintaxe

SORT_ARR Função(direção,Guia)

O parâmetro "direção" dá a ordem para a classificação:


• Direção > 0: a classificação é realizada em ordem de subida.
• Direção < 0: a classificação é realizada em ordem decrescente.
• Direção = 0: nenhuma classificação é executada
O resultado (tabela classificada) é retornado no parâmetro Tab (tabela a ser
classificada).
Parâmetros das funções de classificação de tabelas:

Tipo Classificar Direção Tabela (Guia)

Tabelas de palavras duplas %MWi, %KWi, immediate %MDi:L


value
Tabelas de palavra flutuante %MWi, %KWi, immediate %MFi:L
value
L Comprimento da tabela (máximo de 255).

Estrutura
Exemplo da função de classificação de tabelas:

Degrau Instrução

0 LD %I0.1
[SORT_ARR(%MW20,%MF0:6)]

1 LD %I0.2
[SORT_ARR(%MW20,%MF0:6)]

2 LD %I0.3
[SORT_ARR(0,%MF40:8)]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Funções de interpolação de tabela de ponto flutuante (LKUP)


Introdução
A função LKUP é usada para interpolar um conjunto de dados de ponto de
flutuação X versus Y por um valor X dado.

94 EIO0000003295.03
Instruções

Revisão de Interpolação Linear


A função LKUP faz uso da regra de interpolação linear, conforme definido nesta
equação:

(Equação 1)

para , onde ;

assumindo que valores são classificados em ordem crescente:


.
NOTA: Se quaisquer dois valores Xi consecutivos forem iguais (i=i+1=X), a
equação (1) produz uma exceção inválida. Neste caso, o seguinte algoritmo é
utilizado no lugar da equação (1) para lidar com esta exceção:

(Equação 2)

para , onde .

Representação gráfica
Este gráfico ilustra a regra de interpolação linear descrita acima:

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
A função LKUP utiliza três operandos, dos quais dois são atributos de função,
conforme descrito nesta tabela:

Sintaxe Op1 Op2 Op3

Variável de saída Valor (X) definido pelo Matriz variável (Xi,Yi) definida pelo
usuário usuário
[Op1 := LKUP(Op2,Op3)] %MWi %MF0 Valor inteiro, %MWi,or %KWi

EIO0000003295.03 95
Instruções

Definição de Op1
Op1 é a palavra de memória que contém a variável de saída da função de
interpolação.
Dependendo do valor de Op1, você pode saber se a interpolação foi bem
sucedida ou não, e o que impediu o sucesso, conforme delineado nesta tabela:

Op1 (%MWi) Descrição

0 Interpolação bem sucedida

1 Erro de interpolação detectado: Matriz incorreta, X m < Xm-1

2 Erro de interpolação detectado: Op2 fora do intervalo, X < X1

4 Erro de interpolação detectado: Op2 fora do intervalo, X > Xm

8 Tamanho inválido da matriz de dados:


• Op3 está definido como número ímpar, ou
• Op3 < 6.

NOTA: Op1 não contém o valor de interpolação computado (Y). Para um


valor (X) dado, o resultado da interpolação (Y) está contido em %MF2 da
matriz Op3, página 96.

Definição de Op2
Op2 é a variável de ponto flutuante (%MF0 da matriz de ponto flutuante Op3) que
contém o valor (X) definido pelo usuário para o qual computar o valor (Y)
interpolado.

Intervalo válido para Op2: .

Definição de Op3
Op3 define o tamanho (Op3 / 2) da matriz de ponto de flutuação onde os pares de
dados (Xi,Yi) são armazenados.
Os dados Xi e Yi são armazenados em objetos de pontos flutuantes com índices
pares; começando em %MF4 (note que os objetos de ponto flutuante %MF0 e %MF2
são reservados pelo ponto X definido pelo usuário e o valor interpolado Y,
respectivamente).
Dada a matriz de (m) dos pares de dados (Xi,Yi), o índice superior (u) da matriz do
ponto flutuante (%MFu) é definida ao se utilizar estas relações:
• (Equação 3)
• (Equação 4)
A matriz de ponto flutuante Op3 (%MFi) possui uma estrutura similar à deste
exemplo (onde Op3=8):

(X) (X1) (X2) (X3)

%MF0 %MF4 %MF8 %MF12


%MF2 %MF6 %MF10 %MF14
(Y) (Y1) (Y2) (Y3)

(Op3=8)

96 EIO0000003295.03
Instruções

NOTA: Como resultado da matriz de estrutura de ponto flutuante, o Op3 tem


que satisfazer ambos os requisitos; de outra forma, isso causará um erro na
função LKUP:
• Op3 é um número par, e
• Op3 ≥ 6 (porque tem que haver, no mínimo, dois pontos de dados para
permitir a interpolação linear).

Estrutura
As operações de interpolação são executadas conforme segue:

Degrau Instrução

0 LD %I0.2
[%MW20:=LKUP(%MF0,%KW1)]

1 LD %I0.3
[%MW22:=LKUP(%MF0,10)]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Exemplo de aplicativo
Utilização de uma função de interpolação LKUP:
[%MW20:=LKUP(%MF0,10)]
Neste exemplo:
• %MW20 é Op1 (a variável de saída).
• %MF0 é o valor (X) definido pelo usuário cujo valor correspondente (Y) deve
ser computado por interpolação linear.
• %MF2 armazena o valor computado (Y) resultante da interpolação linear.
• 10 é Op3 (conforme dado pela equação 3 acima). Define o tamanho da
matriz do ponto de flutuação. O item com classificação mais alta %MFu, onde
u=18 é dado pela equação 4, acima.
Existem quatro pares de pontos de dados armazenados na matriz Op3 [%
MF4,...%MF18]:
• %MF4 contém X1,%MF6 contém Y1.
• %MF8 contém X2,%MF10 contém Y2.
• %MF12 contém X3,%MF14 contém Y3.
• %MF16 contém X4,%MF18 contém Y4.

Funções MEAN dos valores de uma tabela de ponto flutuante


Introdução
A função MEAN é utilizada para calcular a média de um número de valores dados
em uma tabela de ponto de flutuação.

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.

EIO0000003295.03 97
Instruções

A sintaxe da função de cálculo da média da tabela de ponto de flutuação:

Função Sintaxe

MEAN Resultado=Função(Op1)

Parâmetros da função de cálculo para um número L dado (máximo de 255) de


valores de uma tabela de ponto de flutuação:

Op1 Resultado (Res)

%MFi:L, %KFi:L %MFi

Estrutura
Exemplo de função média:

Degrau Instrução

0 LD %I3.2
[%MF0:=MEAN(%MF10:5)]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Função SWAP dos valores de uma tabela do Word


Introdução
A função SWAP é usada para trocar os bytes alto e baixo dos valores em uma
tabela de palavras e armazenar o resultado em uma tabela de palavras.

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Para a função SWAP, use a sintaxe:
Op1 := SWAP(Op2)
Em que:

Operando Tipo

Op1 %MWx:L, %QWx.y:L, %QWEx:L, %QWMx:L, %QWNx.y.z:L

Op2 %MWx:L, %KWx:L, %QWx.y:L, %IWx.y:L, %QWEx:L, %IWEx:


L, %QWMx:L, %IWMx:L, %QWNx.y.z:L, %IWNx.y.z:L

L Comprimento da tabela (máximo de 255).

Estrutura
Exemplo de função SWAP:

Degrau Instrução

0 %MW0:3 := "1234"
[%MW0:3 := SWAP(%MW0:3)]

98 EIO0000003295.03
Instruções

Para este exemplo, o resultado é:


%MW0="12" e %MW1="34"
NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o
Diagrama Ladder equivalente.

Instruções em objetos de E/S


Objetivo desta seção
Esta seção descreve as instruções em objetos de E/S.

Ler entrada incorporada digital imediata (READ_IMM_IN)


Introdução
A instrução READ_IMM_IN lê uma entrada digital incorporada (entrada integrada
no controlador lógico) durante a execução de uma tarefa e atualiza
imediatamente a imagem da entrada. Isso evita a necessidade de esperar o
próximo ciclo de tarefas para atualizar a imagem da entrada.
NOTA: Essa instrução é válida somente para entradas digitais incorporadas.
NOTA: Ao utilizar essa instrução, avalie o desempenho relativo (ative e
desative atrasos) de entradas regulares e entradas rápidas. Consulte
Entradas digitais no guia de programação do seu controlador lógico.

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Para a instrução READ_IMM_IN, use esta sintaxe:
Op1 := READ_IMM_IN(Op2)
Em que:

Operando Tipo Descrição

Op1 %MWi Armazena o código de retorno de função (consulte a


tabela abaixo).

Op2 Valor imediato (inteiro) Define o índice de entrada (%I0.x).

%MWi

%KWi
i Identificador de instância do objeto para a variável de memória.

EIO0000003295.03 99
Instruções

Código de retorno de função


Esta tabela descreve os códigos de retorno de funções:

Código Descrição

0 Sem erro detectado.


1 A entrada declarada é maior que a entrada máxima permitida.

2 A entrada declarada é forçada.

Exemplo
%MW0 := READ_IMM_IN(2)
Ao executar este bloco de operações, o valor atual da entrada %I0.2 é lido e a
imagem da entrada é imediatamente atualizada. O código de retorno de função é
armazenado na palavra da memória %MW0.

Estrutura
Exemplo da instrução READ_IMM_IN:

Degrau Instrução

0 LD %M0
[%MW0:=READ_IMM_IN(%MW5)]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Saída digital incorporada imediata de gravação (WRITE_IMM_


OUT)
Introdução
A instrução WRITE_IMM_OUT grava fisicamente em uma saída digital
incorporada (saída integrada ao controlador lógico). O valor é lido imediatamente
a partir da imagem de saída. Isso evita a necessidade de esperar o próximo ciclo
de tarefas para gravar a saída incorporada.
NOTA: Essa função é válida somente para saídas digitais incorporadas.

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Para a instrução WRITE_IMM_OUT, use esta sintaxe:
Op1 := WRITE_IMM_OUT(Op2)

100 EIO0000003295.03
Instruções

Em que:

Operando Tipo Descrição

Op1 %MWi Armazena o código de retorno de função (consulte a


tabela abaixo).

Op2 Valor imediato (inteiro) Define o índice de saída (%Q0.x).

%MWi

%KWi
i é o identificador de instância do objeto para a variável de memória.

Código de retorno de função


Esta tabela descreve os códigos de retorno de funções:

Código Descrição

0 Sem erro detectado.


3 A saída declarada é maior que a saída máxima permitida.

4 A saída declarada é forçada.

5 A saída declarada é usada como saída de hardware dedicada.


6 A saída declarada é usada como saída de alarme.

Exemplo
%MW0 := WRITE_IMM_OUT(%MW5) (com %MW5 = 2)
Na execução deste bloco de operações, a imagem da saída %Q0.2 é gravada
fisicamente na saída digital incorporada. O código de retorno de função é
armazenado na palavra da memória %MW0.

Estrutura
Exemplo da instrução WRITE_IMM_OUT:

Degrau Instrução

0 LD %M0
[%MW0:= WRITE_IMM_OUT(%MW4)]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Parâmetro de bloco de funções de leitura imediata (READ_IMM)


Introdução
A instrução READ_IMM lê um parâmetro do bloco de funções durante a execução
de uma tarefa e atualiza imediatamente a imagem da entrada durante o mesmo
ciclo.
Esta função está disponível somente para certos parâmetros do bloco de
funções. A instrução READ_IMM lê diretamente de HSC.V, e HSC.P registra em
blocos de funções com contador de alta velocidade (%HSC). Para obter mais
detalhes, consulte Contador de alta velocidade (%HSC) no Guia da biblioteca de
funções avançadas do controlador lógico.

EIO0000003295.03 101
Instruções

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Para a instrução READ_IMM, use esta sintaxe:
READ_IMM(Op1)
Em que:

Operando Tipo Descrição

Op1 %HSCx.P, %HSCx.PD, Esta instrução lê um parâmetro do bloco de funções dado


%HSCx.V, %HSCx.VD em Op1 e atualiza o valor da imagem de E/S e o registro
correspondente.

x é o identificador de instância de objeto para o bloco de funções.

Exemplo
O código seguinte é um exemplo do uso da instrução READ_IMM:

Degrau Instrução

0 LD %M0
[READ_IMM(%HSC0.P)]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.
NOTA: O aplicativo deve ser configurado com um nível funcional (consulte
EcoStruxure Machine Expert - Básico, Guia de instruções) de pelo menos
Nível 3.3 para usar a instrução READ_IMM.

Parâmetro de bloco de funções de gravação imediata (WRITE_


IMM)
Introdução
A instrução WRITE_IMM escreve um parâmetro de bloco de funções durante a
execução de uma tarefa e atualiza a imagem da saída durante o mesmo ciclo.
Esta função está disponível somente para certos parâmetros do bloco de
funções. A instrução WRITE_IMM grava diretamente em HSC.V, e HSC.P
registra em blocos de funções com contador de alta velocidade (%HSC). Para
obter mais detalhes, consulte Contador de alta velocidade (%HSC) no Guia da
biblioteca de funções avançadas do controlador lógico.

Sintaxe
Em seguida, é exibida uma descrição da sintaxe da Lista de instruções. Você
pode inserir operações da Lista de instruções e instruções de atribuição, página
16 em degraus de Diagramas Ladder usando um elemento gráfico Blocos de
operações.
Para a instrução WRITE_IMM, use esta sintaxe:
WRITE_IMM(Op1)

102 EIO0000003295.03
Instruções

Em que:

Operando Tipo Descrição

Op1 %HSCx.P, %HSCx.PD, Esta instrução grava um parâmetro do bloco de funções


%HSCx.V, %HSCx.VD dado em Op1 e atualiza o valor da imagem de E/S.

x é o identificador de instância de objeto para o bloco de funções.

Exemplo
O código seguinte é um exemplo do uso da instrução WRITE_IMM:

Degrau Instrução

0 LD %M1
[WRITE_IMM(%HSC0.V)]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.
NOTA: O aplicativo deve estar configurado com um nível funcional de pelo
menos Nível 3.3 para utilizar a instrução WRITE_MM.

EIO0000003295.03 103
Objetos de E/S

Objetos de E/S
Contador rápido (%FC)
Usar blocos de funções do contador rápido
Esta seção fornece descrições e orientações de programação para a utilização de
blocos de funções de Fast Counter.

Visão geral
Consulte o Guia da biblioteca de funções avançadas do controlador.

Contador de alta velocidade (%HSC)


Usar blocos de funções do contador de alta velocidade
Esta seção fornece descrições e orientações de programação para a utilização de
blocos de funções de High Speed Counter.

Visão geral
Consulte o Guia da biblioteca de funções avançadas do controlador.

Impulso (%PLS)
Usar blocos de funções de impulsos
Esta seção fornece descrições e orientações de programação para a utilização
dos blocos de funções Pulse.

Visão geral
Consulte o Guia da biblioteca de funções avançadas do controlador.

Modulação por duração de impulso (%PWM)


Usar blocos de funções da modulação por duração de impulso
Esta seção fornece descrições e orientações de programação para a utilização
dos blocos de funções Pulse Width Modulation.

104 EIO0000003295.03
Objetos de E/S

Visão geral
Consulte o Guia da biblioteca de funções avançadas do controlador.

EIO0000003295.03 105
Objetos de rede

Objetos de rede
Objetos de rede
Apresentação
Objetos de rede são utilizados para estabelecer comunicação via EtherNet/IP,
Modbus TCP ou Modbus Serial IOScanner.
Existem dois tipos de objetos de rede para comunicação EtherNet/IP:
• %QWE: Input Assembly
• %IWE: Output Assembly
Existem dois tipos de objeto de rede para comunicação Modbus TCP:
• %QWM: Registradores de entrada
• %IWM: Registradores de saída
Os tipos de objeto de rede a seguir são usados para o Modbus Serial IOScanner:
• %IN: Entradas digitais (IOScanner)
• %QN: Saídas digitais (IOScanner)
• %IWN: Registros de entradas (IOScanner)
• %QWN: Registros de saída (IOScanner)
• %IWNS: Códigos de diagnóstico de rede do IOScanner
NOTA: Referências para entrada e saída são do ponto de vista do cliente
EtherNet/IP mestre ou Modbus TCP.
Para mais informações sobre como configurar objetos de rede, consulte o guia de
programação para seu controlador lógico.

106 EIO0000003295.03
Objetos de software

Objetos de software
Utilizando os blocos de funções
Princípios de programação de blocos de funções
Visão geral
Um bloco de função é um objeto reutilizável que aceita um ou mais valores de
entrada e retorna um ou mais valores de saída.
Você pode inserir até cinco blocos de função em cada degrau do Diagrama
ladder.
Os parâmetros do bloco de função não estão disponíveis se:
• o controlador não suporta o bloco de função,
• O bloco de função não está configurado.

Programas de diagramas Ladder


Para utilizar um bloco de função em um degrau do Diagrama ladder:

Etapa Ação

1 Insira, página 108 o bloco de função em um degrau.

2 Ligue as entradas e saídas conforme for necessário.

3 Configure, página 110 o bloco de função ao especificar valores para seus parâmetros.

Programas de listas de instrução


Para adicionar um bloco de função a um programa de Lista de instruções, é
possível utilizar um dos métodos a seguir:
• Instruções de bloco de função (por exemplo, BLK %TM2): Este método
reversível de programação permite que as operações sejam executadas no
bloco em um único local no programa.
• Instruções específicas (por exemplo, CU %Ci). Este método irreversível
habilita operações a ser executadas nas entradas dos blocos de funções em
diversos lugares no programa. Por exemplo:

Linha Instrução

1000 CU %C1

1074 CD %C1

1209 R %C1

Utilize as instruções BLK, OUT_BLK e END_BLK para a programação reversível


de blocos de função:
• BLK: indica o início do bloco.
• OUT_BLK: é utilizada para ligar as saídas de bloco diretamente.
• END_BLK: indica o final do bloco.
NOTA: Instruções de teste e entrada no bloco relevante podem ser
posicionadas entre as instruções BLK e OUT_BLK (ou entre BLK e END_BLK
quando OUT_BLK não for programável).

EIO0000003295.03 107
Objetos de software

Exemplo com fiação da saída


Este exemplo mostra o bloco de função de Counter em um programa com saídas
conectadas:

Degrau Instrução

0 BLK %C8
LDF %I0.1
R
LD %I0.1
AND %M0
CU
OUT_BLK
LD D
AND %M1
ST %Q0.0
END_BLK

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Exemplo sem fiação de saída


Este exemplo mostra a programação reversível de um bloco de função de
Counter sem saídas conectadas:

Degrau Instrução

0 BLK %C8
LDF %I0.1
R
LD %I0.2
AND %M0
CU
END_BLK

1 LD %C8.D
AND %M1
ST %Q0.4

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Adicionar um bloco de funções


Inserir um bloco de funções em um programa de diagrama Ladder
Siga este procedimento:

Etapa Ação

1 Crie um novo degrau de diagrama Ladder na área de trabalho de programação de


EcoStruxure Machine Expert - Basic. Consulte o EcoStruxure Machine Expert - Basic
Guia de instruções para obter detalhes.

2 Clique no botão Função na barra de ferramentas gráfica na parte superior da área de


trabalho de programação.

Resultado: É exibida uma lista de todos os objetos de blocos de funções disponíveis


(consulte a tabela abaixo).

3 Selecione o bloco de função.

4 Mova o bloco de função para a posição solicitada no degrau; então clique para inserir.

Você pode inserir até cinco blocos de funções em série ou paralelo.

108 EIO0000003295.03
Objetos de software

Objetos de blocos de funções disponíveis


Esta tabela apresenta os objetos de blocos de funções disponíveis:

Objeto de bloco de Descrição


funções

Temporizador

Registrador LIFO/FIFO

Registrador do bit de mudança

Contador de etapas

Contador

Contador rápido

Contador de alta velocidade

Drum

RTC (relógio em tempo real)

Impulso

Modulação por duração de impulso

Message

Registro de dados

Saída do trem de pulso


NOTA: Para obter uma lista completa de objetos PTO, consulte
o Guia de biblioteca de funções avançadas, Blocos de função
PTO.
Objetos da unidade
NOTA: Para obter uma lista completa de objetos da unidade,
consulte o Guia da biblioteca de funções avançadas do , Blocos
de função da unidade.

Blocos de funções de comunicação


NOTA: Para obter uma lista completa de blocos de funções de
comunicação, consulte Objetos de comunicação, página 178.

Bloco de funções definido pelo usuário

EIO0000003295.03 109
Objetos de software

Configurando um bloco de funções


Configurando um bloco de função em um Programa de diagrama Ladder
Siga este procedimento:

Etapa Ação

1 Opcionalmente, clique em Endereço no bloco de função.

Um endereço padrão aparece na caixa de texto, por exemplo "%TM0" para um bloco
de funções de Timer.

Para alterar o endereço padrão, exclua o dígito final do endereço (o identificador de


instância).

Uma lista de todos os endereços disponíveis aparece.

Selecione o endereço a ser utilizado para identificar essa instância do bloco de


função.

As propriedades do bloco de função aparecem no centro do objeto do bloco de


função e na tabela Propriedades na metade inferior da área de trabalho de
programação.

Em qualquer outro momento, clique duas vezes dentro do bloco de função para exibir
as propriedades.

2 Opcionalmente, clique em Comentário no bloco de função e digite uma descrição


curta do bloco de função. Por exemplo, Temporizador de impulso.

3 Opcionalmente, clique em Símbolo no bloco de função e comece a digitar o nome do


símbolo para associar a esse bloco de função.

Uma lista de todos os símbolos existentes iniciando com o caractere ou caracteres


digitados aparece; clique no símbolo para utilizá-lo.

Para criar um novo símbolo para este bloco de funções, digite o nome do símbolo a
ser criado e selecione o objeto a ser associado com o símbolo.

Consulte o EcoStruxure Machine Expert - Basic Guia de instruções (consulte


EcoStruxure Machine Expert - Básico, Guia de instruções) para obter detalhes sobre
o uso de símbolos.
4 Clique no bloco de função.

Resultado: A dica Configuração é exibida.

5 Configure os parâmetros disponíveis de cada bloco de função, conforme descrito no


tópico "Parâmetros" das descrições individuais dos blocos de função.

Você pode modificar os valores dos objetos no modo online. Consulte Modificações
on-line (consulte o EcoStruxure Machine Expert - Básico, Guia de instruções).

NOTA: Também é possível exibir a tabela Propriedades ao clicar duas vezes


sobre o bloco de função em um degrau.

Temporizador (%TM)
Utilizar blocos de funções de temporizador
Esta seção fornece descrições e orientações de programação para a utilização
dos blocos de funções do Timer.

110 EIO0000003295.03
Objetos de software

Descrição
Introdução

Um bloco de funções Timer é usado para especificar um período de tempo


antes de fazer algo, por exemplo, desencadear um evento.

Ilustração
Essa imagem é o bloco de funções Timer:

Comentário
Símbolo
IN Q
%TM0

Ret., Din. Predefinição Predefinido


Tipo: TON
TB: 1 min
Predefinição: 9999

Entradas
O bloco de funções Timer tem a seguinte entrada:

Rótulo Descrição Valor

IN Endereço de Inicia o Timer quando uma borda de subida (tipos TON ou TP)
entrada (ou ou borda de descida (tipo TOF) for detectada.
instrução)

Saídas
O bloco de função Timer tem as seguintes saídas:

Rótulo Descrição Valor

Q Endereço de saída O bit %TMi.Q associado é definido como 1 (dependendo do


(%TMi.Q) tipo de Timer) quando o Timer expira.

Configuração
Parâmetros
Para configurar os parâmetros, siga o procedimento Configurar um bloco de
funções, página 110 e leia a descrição dos Modos de alocação de memória no
EcoStruxure Machine Expert - Basic Guia de instruções.

EIO0000003295.03 111
Objetos de software

Os blocos de funções Timer possuem os seguintes parâmetros:

Parâmetro Descrição Valor Editável


em modo
on-line
Usado Endereço utilizado Se selecionado, esse endereço estará em uso no programa. Não

Endereço Endereço do objeto Timer (%TMi) Um programa pode conter somente um número limitado de Não
Timer objetos. Consulte o Guia de programação da plataforma
relacionada para obter o número máximo de temporizadores.

Símbolo Símbolo O símbolo associado a este objeto. Consulte o EcoStruxure Não


Machine Expert - Basic Guia de instruções, Definição e uso de
símbolos (consulte EcoStruxure Machine Expert - Básico, Guia
de instruções) para obter detalhes.

Tipo Timer tipo Um dos seguintes: Sim1


• TON, página 113: Temporizador com atraso (padrão)
• TOF, página 116: Timer sem atraso
• TP, página 119: Temporizador de pulso (monoestável)

Retentivo VERDADEIRO/FALSO Quando a caixa de seleção retentiva não está selecionada Sim1
(padrão), o valor atual é reiniciado quando uma borda de
descida do parâmetro de ENTRADA é detectada. A contagem
reinicia de 0.

Quando a caixa de seleção Retentiva é selecionada, o


temporizador mantém o seu valor atual quando uma borda de
descida do parâmetro de ENTRADA é detectada antes do valor
Predefinido ser atingido. A contagem se reiniciará a partir
deste valor.
NOTA: O aplicativo deve ser configurado com um nível
funcional (consulte EcoStruxure Machine Expert - Básico,
Guia de instruções) de pelo menos Nível 3.3 para usar o
parâmetro Retentivo.

Predefinição VERDADEIRO/FALSO Quando a caixa de seleção Predefinição dinâmica não estiver Sim1
dinâmica selecionada (padrão) e o valor predefinido for modificado (por
instrução de programação ou usando EcoStruxure Machine
Expert - Basic), o valor predefinido modificado só entrará em
vigor na próxima ativação do temporizador.

Quando a caixa de seleção Predefinição dinâmica é


selecionada e o valor predefinido é modificado (por instrução de
programação ou usando EcoStruxure Machine Expert - Basic),
o valor predefinido modificado entra em vigor imediatamente.

Quando a caixa de seleção Predefinição dinâmica estiver


selecionada e um novo valor predefinido for recebido enquanto
o temporizador estiver em execução:
• Se o valor atual (TMi.V) for maior ou igual ao novo valor
predefinido, o temporizador comporta-se como se o valor
predefinido tivesse sido alcançado.
• Se o valor atual (TMi.V) for menor que o novo valor
predefinido, o temporizador continua a funcionar até
alcançar o novo valor predefinido.
NOTA: Seu aplicativo deve ser configurado com um nível
funcional (consulte EcoStruxure Machine Expert - Básico,
Guia de instruções) de pelo menos Nível 12.0 para usar o
parâmetro Predefinição dinâmica.

Base de tempo Base de tempo A unidade de tempo básica do temporizador. Quanto menor a Sim1
unidade de tempo básica, maior será a precisão do
temporizador:
• 1 ms (suportado em %TM0...%TM5)
• 10 ms
• 100 ms
• 1s
• 1 min (padrão)

Predefinido valor de pré-seleção De 0 a 9999. O valor padrão é 9999. Sim1

Período de tempo = Predefinido x Base de tempo

Atraso de tempo = Predefinido x Base de tempo

Este valor pré-selecionado configurado pode ser lido, testado e


modificado, utilizando o objeto associado %TMi.P.

112 EIO0000003295.03
Objetos de software

Parâmetro Descrição Valor Editável


em modo
on-line
Comentário Comentário Um comentário pode ser associado a este objeto. Não
1 O temporizador é imediatamente redefinido para 0 após qualquer alteração no valor do parâmetro quando estiver no modo online.

Objetos
O bloco de função Timer possui os objetos a seguir:

Objeto Descrição Valor

%TMi.P valor de pré- Consulte a descrição na tabela Parâmetros acima.


seleção

%TMi.V Valor atual A palavra que incrementa de 0 até o valor predefinido %TMi.P
quando a contagem estiver em andamento. O valor pode ser lido
e testado, mas não escrito para, pelo programa.

Seu valor pode ser modificado na tabela de animações.

%TMi.Q Timer saída Consulte a descrição na tabela Saídas acima.

TON: temporizador de atraso


Introdução
O tipo de temporizador TON (On-Delay Timer) é utilizado para controlar ações de
atraso. Este atraso é programável com a utilização do software.

Casos especiais
A tabela seguinte contém uma lista de casos especiais para a programação do
temporizador do bloco de funções.

Caso especial Descrição

Efeito de um reinício a frio (%S0=1) Força o valor para 0. Define a saída %TMi.Q como 0. O
valor predefinido é redefinido com o valor definido durante a
configuração.

Efeito de um reinício a quente (% Não tem efeito no valor do temporizador e no valor


S1=1) predefinido do temporizador. O valor do temporizador não
muda durante um corte no fornecimento de energia.

Efeito da interrupção de um Interromper o controlador não congela o valor.


controlador
Efeito de um salto no programa Saltar o bloco do temporizador não congela o temporizador.
O temporizador continuará a aumentar até alcançar o valor
predefinido (%TMi.P). Neste ponto, o bit Done (%TMi.Q)
atribuído à saída Q do bloco do temporizador muda de
estado. No entanto, a saída associada diretamente
conectada à saída do bloco não é ativada e verificada pelo
controlador.
Testando por bit %TMi.Q (bit Done) Teste o bit %TMi.Q somente uma vez no programa.

Efeito da modificação da O efeito de modificar o valor predefinido usando uma


predefinição %TMi.P instrução, ou ajustando o valor com uma tabela de
animação, depende da configuração do parâmetro
Predefinição dinâmica. Consulte o parâmetro Predefinição
Dinâmica para obter detalhes.

EIO0000003295.03 113
Objetos de software

Diagrama de temporização
Este diagrama ilustra o funcionamento do Timer tipo TON.

(1) O Timer começa na borda de subida da entrada IN.


(2) O valor %TMi.V aumenta de 0 para %TMi.P em incrementos de 1 unidade
para cada pulso do parâmetro de base de tempo TB.
(3) O bit %TMi.Q de saída é definido como 1 quando o valor atingiu o valor
predefinido %TMi.P.
(4) O bit %TMi.Q de saída permanece em 1 enquanto a entrada IN está em 1.
(5) Quando uma borda de descida é detectada na entrada IN, o Timer é
interrompido, mesmo que o Timer não tenha atingido %TMi.P, o valor %TMi.V é
definido como 0.

Diagrama de temporização com caixa de seleção retentiva ativada


Este diagrama ilustra a operação do tipo TON Timer quando a caixa de seleção
retentiva estiver selecionada.

(1) O Timer começa na borda de subida da entrada IN.


(2) O valor %TMi.V aumenta de 0 para %TMi.P em incrementos de 1 unidade
para cada pulso do parâmetro de base de tempo TB.
(3) Na borda de descida da entrada IN, o Timer é parado e permanece inalterado
aguardando a próxima borda de subida da entrada IN.
(4) Na borda de subida da entrada IN, o Timer começa novamente a partir do
valor em que parou.
(5) O bit %TMi.Q de saída é definido como 1 quando o valor atinge o valor
predefinido %TMi.P.
(6) Quando uma borda de descida é detectada na entrada IN, se o Timer atingiu o
valor predefinido %TMi.P, o valor %TMi.V é definido como 0.

114 EIO0000003295.03
Objetos de software

Diagrama de tempo com caixa de seleção de predefinição dinâmica


selecionada
Este diagrama ilustra a operação do tipo TON Timer quando a caixa de seleção
Predefinição dinâmica é selecionada.
(1) (2) (3)(4)(5) (6) (7) (8) (9) (10)

IN

80
TMi.P

30

TMi.V

Q
t

(1) O Timer começa na borda de subida da entrada IN.


(2) O valor de %TMi.P é alterado para 80. Como %TMi.V é menor que o novo
valor %TMi.P, o valor do bit de saída %TMi.Q é inalterado e %TMi.V continua a
aumentar com cada pulso do parâmetro do Time Base TB.
(3) O bit %TMi.Q de saída é definido como 1 quando %TMi.V atinge o novo valor
predefinido %TMi.P.
(4) O bit %TMI.Q de saída permanece em 1 enquanto a entrada IN está em 1.
(5) Em uma borda de descida da IN entrada, o Timer é interrompido. %TMi.V é
definido como 0
(6) O Timer começa na borda de subida da entrada IN.
(7) O valor de %TMi.P é alterado para 30. O novo valor %TMi.P será levado em
consideração na próxima atualização do valor do parâmetro Time Base. Como %
TMi.V é maior que o novo valor %TMi.P, o bit %TMi.Q de saída é definido como
1.
(8) Quando uma borda de descida é detectada na entrada IN, o Timer é
interrompido. %TMi.V é definido como 0
(9) O Timer começa na borda de subida da entrada IN.
(10) Quando uma borda de descida é detectada na entrada IN, o Timer é
interrompido, mesmo que o valor %TMi.P não tenha sido atingido. O valor %TMi.
V está definido como 0.

EIO0000003295.03 115
Objetos de software

Diagrama de tempo com caixas de seleção dinâmicas predefinidas e de


retenção selecionadas
Este diagrama ilustra a operação do tipo TON Timer quando as caixas de seleção
Predefinição dinâmica e Retentiva são selecionadas.
(1) (2) (3)(4)(5) (6) (7) (8) (9) (10) (11)

IN

80
TMi.P
30

TMi.V

Q
t

(1) O Timer começa na borda de subida da entrada IN.


(2) O valor de %TMi.P é alterado para 80. Como %TMi.V é menor que o novo
valor %TMi.P, o valor %TMi.Q fica inalterado e %TMi.V continua a aumentar a
cada pulso do parâmetro TB do Time Base.
(3) O bit %TMi.Q de saída é definido como 1 quando %TMi.V atinge o novo valor
predefinido %TMi.P.
(4) O bit %TMI.Q de saída permanece em 1 enquanto a entrada IN permanece
em 1.
(5) Em uma borda de descida da IN entrada, o Timer é interrompido. %TMi.V é
definido como 0
(6) O Timer começa na borda de subida da entrada IN.
(7) O valor de %TMi.P é alterado para 30. O novo valor %TMi.P será levado em
consideração na próxima atualização do valor do parâmetro Time Base. Como %
TMi.V é maior que o novo valor %TMi.P, o bit %TMi.Q de saída é definido como
1.
(8) Quando uma borda de descida é detectada na entrada IN, o Timer é
interrompido. %TMi.V é definido como 0
(9) O Timer começa na borda de subida da entrada IN.
(10) Quando uma borda de descida é detectada na entrada IN, o Timer é
interrompido. O %TMi.V permanece inalterado à medida que o parâmetro
Retentive é ativado.
(11) Se %TMi.P está definido como um valor menor do que %TMi.V quando o
temporizador está desativado (ou seja, a entrada IN está definida como 0), o valor
%TMi.V é definido como 0.

TOF: temporizador de atraso desligado


Introdução
Utilize o Off-Delay Timer de tipo TOF (Timer) para controlar ações de atraso de
desligamento. Este atraso é programável com a utilização do software.

116 EIO0000003295.03
Objetos de software

Diagrama de temporização
Este diagrama ilustra o funcionamento do Timer tipo TOF.

(1) Em uma borda de subida de entradaIN, %TMi.Q é definido como 1.


(2) O Timer começa na borda de descida da entrada IN.
(3) O valor %TMi.V aumenta para o valor predefinido %TMi.P em incrementos de
1 unidade para cada pulso do parâmetro de base de tempo TB.
(4) O bit %TMi.Q de saída é redefinido para 0 quando o valor atinge o valor
predefinido %TMi.P.
(5) Em uma borda de subida de entradaIN, %TMi.V é definido como 0.
(6) Em uma borda de subida de entradaIN, %TMi.V é definido como 0, mesmo
que o valor predefinido não seja atingido.

Diagrama de temporização com caixa de seleção retentiva ativada


Este diagrama ilustra a operação do tipo TOF Timer quando a caixa de seleção
retentiva estiver selecionada.

(1) Em uma borda de subida de entradaIN, %TMi.Q é definido como 1.


(2) O Timer começa na borda de descida da entrada IN.
(3) O valor %TMi.V aumenta para o valor predefinido %TMi.P em incrementos de
1 unidade para cada pulso do parâmetro de base de tempo TB.
(4) Em uma borda de subida da entrada IN, o Temporizador é parado e
permanece inalterado aguardando a próxima borda de descida da entrada IN.
(5) O bit %TMi.Q de saída é redefinido para 0 quando o valor atinge o valor
predefinido %TMi.P
(6) Em uma borda de subida da entradaIN, %TMi.V está definido como 0 e %TMi.
Q está definido como 1.

EIO0000003295.03 117
Objetos de software

Diagrama de tempo com caixa de seleção de predefinição dinâmica


selecionada
Este diagrama ilustra a operação do tipo TOF Timer quando a caixa de seleção
Predefinição dinâmica é selecionada.
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10)

IN

80
TMi.P

30

TMi.V

Q
t

(1) Em uma borda de subida da entrada IN, %TMi.Q é definido como 1.


(2) O Timer começa na borda de descida da entrada IN.
(3) O valor de %TMi.P é alterado para 80. Como %TMi.V é menor que o novo
valor %TMi.P, o valor do bit de saída %TMi.Q é inalterado e %TMi.V continua a
aumentar com cada pulso do parâmetro do Time Base TB.
(4) O bit de saída %TMi.Q é redefinido para 0 quando %TMi.V atinge o valor
predefinido %TMi.P.
(5) Em uma borda de subida da entrada IN entrada, %TMi.V é definido como 0
(6) O Timer começa na borda de descida da entrada IN.
(7) O valor de %TMi.P é alterado para 30. O novo valor %TMi.P será levado em
consideração na próxima atualização do valor do parâmetro Time Base. O novo
valor %TMi.P será levado em consideração na próxima atualização do valor do
parâmetro Time Base. Como %TMi.V é maior que o novo valor %TMi.P, o bit %
TMi.Q de saída é redefinido como 0.
(8) Em uma borda de subida de entradaIN, %TMi.V é definido como 0.
(9) O Timer começa na borda de descida da entrada IN.
(10) Em uma borda de subida da entrada IN, %TMi.V é definido como 0, mesmo
que o valor predefinido %TMi.P não tenha sido atingido.

118 EIO0000003295.03
Objetos de software

Diagrama de tempo com caixas de seleção dinâmicas predefinidas e de


retenção selecionadas
Este diagrama ilustra a operação do tipo TOF Timer quando as caixas de seleção
Predefinição dinâmica e Retentiva são selecionadas.
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11)

IN

80
TMi.P
30

TMi.V

Q
t

(1) Em uma borda de subida da entrada IN, %TMi.Q é definido como 1.


(2) O temporizador começa em uma borda de descida da entrada IN.
(3) O valor de %TMi.P é alterado para 80. Como %TMi.V é menor que o novo
valor %TMi.P, o valor do bit de saída %TMi.Q é inalterado e %TMi.V continua a
aumentar com cada pulso do parâmetro do Time Base TB.
(4) O bit %TMi.Q de saída é redefinido para 0 quando o valor atinge o novo valor
predefinido %TMi.P.
(5) Ao detectar uma borda de subida da entrada IN, %TMi.V é definido como 0.
(6) O Timer começa na borda de descida da entrada IN.
(7) O valor de %TMi.P é alterado para 30. O novo valor %TMi.P será levado em
consideração na próxima atualização do valor do parâmetro Time Base. Como %
TMi.V é maior que o novo valor %TMi.P, o bit %TMi.Q de saída é redefinido
como 0.
(8) Ao detectar uma borda de subida da entrada IN, %TMi.V é definido como 0.
(9) O Timer começa na borda de descida da entrada IN.
(10) Em uma borda de subida da entrada IN, o Timer é parado. O %TMi.V
permanece inalterado à medida que o parâmetro Retentive é ativado.
(11) Se %TMi.P está definido para um valor menor do que %TMi.V quando o
temporizador está desativado (ou seja, a entrada IN é definida como 1) %TMi.V é
redefinido para 0.

TP: Temporizador de pulsos


Introdução
O Timer tipo TP (Temporizador de impulso) é utilizado para criar impulsos de
duração precisa. Este atraso é programável com a utilização do software.

EIO0000003295.03 119
Objetos de software

Diagrama de temporização
Este diagrama ilustra o funcionamento do Timer tipo TP.

(1) O Timer começa na borda de subida da entrada IN. O valor atual %TMi.V é
definido como 0 se o Timer ainda não tiver sido iniciado e %TMi.Q é definido
como 1 quando o Timer for iniciado
(2) O valor atual %TMi.V do Timer aumenta de 0 para o valor predefinido %TMi.P
em incrementos de uma unidade por pulso do parâmetro de base de tempo TB.
(3) O bit %TMi.Q de saída é definido como 0 quando o valor atual atingiu o valor
predefinido %TMi.P.
(4) O valor atual %TMi.V é definido como 0 quando %TMi.V é igual %TMi.P e a
entrada IN retorna a 0.
(5) Esse Timer não pode ser redefinido.
(6) Quando %TMi.V é igual %TMi.P e a entrada IN é 0, então %TMi.Q é definido
como 0.

120 EIO0000003295.03
Objetos de software

Diagrama de tempo com caixa de seleção de predefinição dinâmica


selecionada
Este diagrama ilustra a operação do tipo TP Timer quando a caixa de seleção
Predefinição dinâmica é selecionada.
(1) (2) (3) (4) (5) (6) (7) (8)(9) (10)

IN

80
TMi.P

30

TMi.V

Q
t

(1) O temporizador começa em uma borda de subida da entrada IN. %TMi.V está
definido como 0 se o temporizador ainda não tiver iniciado. O valor %TMi.Q do bit
de saída é definido como 1 quando o temporizador é iniciado.
(2) O valor atual %TMi.V do Timer aumenta de 0 para o valor predefinido %TMi.P
em incrementos de uma unidade por pulso do parâmetro TB de Time Base.
(3) O valor de %TMi.P é alterado para 80. Como %TMi.V é menor que o novo
valor %TMi.P, o valor %TMi.Q fica inalterado e %TMi.V continua a aumentar com
cada pulso doTB do parâmetro Time Base.
(4) O bit %TMi.Q de saída é redefinido para 0 quando %TMi.V atinge o valor do
parâmetro predefinido %TMi.P.
(5) O valor atual %TMi.V é definido como 0 quando %TMi.V igual %TMi.P e a IN
entrada é redefinida como 0.
(6) O temporizador começa em uma borda de subida da entrada IN. O valor atual
%TMi.V é definido como 0 se o temporizador ainda não tiver começado e %TMi.Q
estiver definido como 1 quando o temporizador começar.
(7) O valor de %TMi.P é alterado para 30. O novo valor %TMi.P será levado em
consideração na próxima atualização do valor do parâmetro Time Base. Como %
TMi.V é maior que o novo valor %TMi.P, o bit %TMi.Q de saída é redefinido
como 0.
(8) O Timer começa em uma borda de subida da entrada IN. O valor atual %TMi.
V é definido como 0 se o temporizador ainda não tiver começado e %TMi.Q
estiver definido como 1 quando o temporizador começar.
(9) Este tipo de temporizador não pode ser redefinido.
(10) Quando %TMi.V é igual %TMi.P e a entrada IN é 0, %TMi.Q é definido como
0.

EIO0000003295.03 121
Objetos de software

Exemplo de programação
Introdução
Os blocos de função do Timer possuem os modos de operação a seguir:
• TON (Timer On-Delay), página 113: usado para especificar um período de
tempo entre uma entrada especificada sendo ativada e um sensor de saída
sendo ligado.
• TOF (Timer Off-Delay), página 116: usado para especificar um período de
tempo entre uma saída associada a um sensor não sendo mais detectado e
a saída correspondente sendo desligada.
• TP (Timer - Pulse), página 119: usado para criar um pulso de uma duração
precisa.
Os atrasos ou períodos de pulso dos Timers são programáveis e podem ser
configurados de dentro do software.

Programação
Este exemplo é um bloco de função Timer com instruções reversíveis:

Degrau Instrução reversível

0 BLK %TM0
LD %M0
IN
OUT_BLK
LD Q
ST %Q0.0
END_BLK

1 LD [%TM0.V<400]
ST %Q0.1

2 LD [%TM0.V>=400]
ST %Q0.2

Este exemplo é o mesmo bloco de função Timer com instruções irreversíveis:

Degrau Instrução irreversível

0 LD %M0
IN %TM0
1 LD %TM0.Q
ST %Q0.0

2 LD [%TM0.V<400]
ST %Q0.1

3 LD [%TM0.V>=400]
ST %Q0.2

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Contador (%C)
Utilizando os blocos de funções de contador
Esta seção fornece descrições e orientações de programação para a utilização de
blocos de funções de Counter.

122 EIO0000003295.03
Objetos de software

Descrição
Introdução

O bloco de função Counter fornece a contagem crescente e decrescente dos


eventos. Estas duas operações podem ser realizadas simultaneamente.

Ilustração
Esta imagem apresenta o bloco de funções Counter:

Entradas
O bloco de funções Counter tem as seguintes entradas:

Rótulo Descrição Valor

R Redefinir entrada (ou Define o contador (%Ci.V) para 0 quando a entrada de


instrução) redefinição (R) é definida como 1.

S Consulte entrada (ou Define o contador (%Ci.V) para o valor predefinido (%Ci.
instrução) P) quando a entrada definida (S) estiver definida como 1.

CU Contagem crescente Incrementa o valor do contador (%Ci.V) em 1 em uma


borda de subida na entrada de contagem crescente (CU).

CD Contagem Decresce o valor do contador (%Ci.V) por 1 em uma


decrescente borda de subida na entrada de contagem decrescente
(CD).

Saídas
O bloco de funções Counter tem as seguintes saídas:

Rótulo Descrição Valor

E Transbordamento O bit associado %Ci.E (contador vazio) é definido como 1


de contagem quando o contador atinge o valor 0. No caso de decréscimo
regressiva seguido, o valor do contador passa para 9999.

D Saída predefinida O bit associado %Ci.D (contagem concluída) é definido como


alcançada 1 quando %Ci.V = %Ci.P.

F Transbordamento O bit associado %Ci.F=1 (contador cheio), quando %Ci.V


de contagem muda de 9999 para 0 (definido como 1 quando %Ci.V chega a
progressiva 0, e redefinido como 0 se o Counter prosseguir com a
contagem progressiva).

EIO0000003295.03 123
Objetos de software

Configuração
Parâmetros
Para configurar os parâmetros, siga o procedimento Configurar um bloco de
funções, página 110 e leia a descrição dos Modos de alocação de memória no
EcoStruxure Machine Expert - Basic Guia de instruções.
Os blocos de funções Counter possuem os seguintes parâmetros:

Parâmetro Descrição Valor Editável


em
modo
on-line?
Usado Endereço utilizado Se estiver selecionado, este endereço é Não
atualmente utilizado em um programa.

Endereço Counter endereço Um programa pode conter somente um Não


do objeto número limitado de objetos contadores.
Consulte o Guia de programação do
controlador para obter o número máximo de
contadores.
Símbolo Símbolo O símbolo associado a este objeto. Consulte Não
o EcoStruxure Machine Expert - Basic Guia
de instruções, Definição e uso de símbolos
(consulte EcoStruxure Machine Expert -
Básico, Guia de instruções) para obter
detalhes.
Predefinido valor de pré- Valores aceitos por valores predefinidos [de 0 Sim
seleção a 9999]. O valor padrão é 9999. Este valor
configurado pode ser lido, testado e
modificado utilizando o objeto associado %Ci.
P.
Comentário Comentário Um comentário pode ser associado a este Não
objeto.

Objetos
O bloco de função Counter possui os objetos a seguir:

Objeto Descrição Valor

%Ci.V Valor atual do Esta palavra é acrescida ou decrescida de acordo


Counter com as entradas (ou instruções) CU e CD (consulte
Tabela de entradas, página 123). Pode ser
somente lido.

Pode ser modificado em uma tabela de animação.

%Ci.P valor de pré- Consulte a tabela Parâmetros, página 124.


seleção
Pode ser modificado em uma tabela de animação.

%Ci.E Vazio Consulte a tabela Saídas, página 123.

Pode ser modificado em uma tabela de animação.

%Ci.D Concluído Consulte a tabela Saídas, página 123.

Pode ser modificado em uma tabela de animação.

%Ci.F Completo Consulte a tabela Saídas, página 123.

Pode ser modificado em uma tabela de animação.

124 EIO0000003295.03
Objetos de software

Operações
Esta tabela descreve os estágios principais de operações do bloco de funções
Counter:

Funcionamento Ação Result

Reinicializar A entrada R está definida para o O valor atual %Ci.V é forçado para 0.
estado 1 (ou a instrução R está As saídas %Ci.E, %Ci.D e %Ci.F
ativada). estão como 0. A entrada redefinida tem
prioridade.

Set Se a entrada S estiver definida O valor atual %Ci.V assume o valor de


como 1 (ou a instrução S estiver %Ci.P e a saída %Ci.D é definida como
ativada) e a entrada da redefinição 1.
estiver em 0 (ou a instrução R
estiver inativa).

Contagem Uma borda de subida aparece na O valor atual %Ci.V é incrementado por
entrada Contagem de subida CU uma unidade.
(ou a instrução CU é ativada).

O valor atual de %Ci.V é igual ao O bit de saída "predefinição alcançada"


valor predefinido %Ci.P. %Ci.D alterna para 1.

O valor atual de %Ci.V altera de O bit de saída %Ci.F (transbordamento


9999 para 0. da contagem progressiva) alterna para
1.
Se o Counter prosseguir com a O bit de saída %Ci.F (transbordamento
contagem progressiva. da contagem progressiva) é redefinido
como 0.
Contagem Uma borda de subida aparece na O valor atual %Ci.V é diminuído em
decrescente entrada contagem de descida CD uma unidade.
(ou a instrução CD é ativada).

O valor atual %Ci.V é alterado de O bit de saída %Ci.E (transbordamento


0 a 9999. da contagem regressiva) alterna para 1.

Se o Counter prosseguir com a O bit de saída %Ci.F (transbordamento


contagem regressiva. da contagem regressiva) é redefinido
como 0.

Casos especiais
Esta tabela contém uma lista de casos especiais para o funcionamento/
configuração do bloco de função Counter:

Caso especial Descrição

Efeito de um reinício a frio (%S0=1) ou INIT • O valor atual %Ci.V é definido como 0.
• Os bits de saída %Ci.E, %Ci.D, e %Ci.F são
definidos como 0.
• O valor predefinido é inicializado com o valor
definido durante a configuração.

Efeito de um reinício a quente %S1=1 de Não tem efeito no valor atual do Counter (%Ci.V).
uma interrupção de controlador

Efeito da modificação da predefinição % A modificação de um valor predefinido através de


Ci.P uma instrução ou por ajuste ocorre quando o bloco é
processado pelo aplicativo (ativação de uma das
entradas).

NOTA: O efeito de INIT é o mesmo de %S0=1.

EIO0000003295.03 125
Objetos de software

Exemplo de programação
Introdução
O exemplo a seguir é um contador que fornece uma contagem de até 5000 itens.
Cada impulso na entrada %I0.2 (quando o bit de memória %M0 é definido como
1) incrementa o bloco de função Counter %C8 até seu valor predefinido final (bit %
C8.D=1). O contador é reiniciado pela entrada %I0.1.

Programação
Este exemplo é um bloco de função Counter com instruções reversíveis:

Degrau Instrução reversível

0 BLK %C8
LD %I0.1
R
LD %I0.2
AND %M0
CU
END_BLK

1 LD %C8.D
ST %Q0.0

Este exemplo é o mesmo bloco de função de Counter sem instruções


irreversíveis:

Degrau Instrução irreversível

0 LD %I0.1
R %C8
1 LD %I0.2
AND %M0
CU %C8
2 LD %C8.D
ST %Q0.0

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Configuração
Os parâmetros devem ser inseridos durante a configuração:
Valor Predefinido (%Ci.P): definido como 5000 neste exemplo.

126 EIO0000003295.03
Objetos de software

Exemplo de um Contador Progressivo/Regressivo


Esta ilustração é um exemplo de um bloco de funções Counter.

Neste exemplo, %M0 é a ordem de acréscimo (%M0 = Falso) e de decréscimo (%M0


= Verdadeiro). O contador conta a borda frontal de %I0.0. Se %M0 é Falso, em
cada borda frontal em %I0.0, %C1.V é incrementado até que alcance o valor
predefinido %C1.P, e o indicador Concluído %C1.D mude para VERDADEIRO. A
saída %C1.D define %M0 e muda a instrução para ordem de decréscimo. Então
em cada borda frontal %I0.0, %C1.V é decrescido até chegar a 0. O indicador
Vazio (%C1.E) é ligado e redefine %M0 (ordem de acréscimo).

Mensagem (%MSG) e intercâmbio (EXCH)


Utilizando os blocos de função Mensagem
Esta seção fornece descrições e orientações de programação para a utilização de
blocos de função de Message.

Visão geral
Introdução
Um controlador lógico pode ser configurado para se comunicar no protocolo
Modbus ou pode enviar e/ou receber mensagens no modo de caractere (ASCII).
EcoStruxure Machine Expert - Basic fornece as seguintes funções para estas
comunicações:
• Instrução Intercâmbio (EXCH) para transmitir/receber mensagens.
• Bloco de função Message (Mensagem) (%MSG) para controlar o intercâmbio
de dados.
O controlador lógico utiliza o protocolo configurado para a porta especificada
quando processar uma instrução de Intercâmbio. Cada porta de comunicações
pode ser designada a um protocolo diferente. As portas de comunicação são
acessadas ao anexar o número da porta à instrução Intercâmbio (EXCH1,
EXCH2) ou ao bloco de função Message (%MSG1, %MSG2).
Os controladores lógicos implementam a troca de mensagens TCP Modbus
através de rede Ethernet utilizando a instrução EXCH3 e o bloco de função %
MSG3.

EIO0000003295.03 127
Objetos de software

Esta tabela mostra a instrução Intercâmbio e o bloco de função Message


utilizado para acessar as portas de comunicação do controlador:

Porta de comunicação Instrução de intercâmbio Bloco de função Mensagem

2 linhas em série EXCH1 %MSG1

EXCH2 %MSG2

1 linha serial e 1 Ethernet EXCH1 %MSG1

EXCH3 %MSG3

Instrução de intercâmbio
A instrução Intercâmbio permite que um controlador lógico envie e/ou receba
informações de/para dispositivos ASCII ou Modbus. Uma tabela de palavras (%
MWi:L) deve ser definida que contenha informações de controle e os dados a
serem enviados e/ou recebidos. Consulte Configurando a tabela de transmissão,
página 135. Um intercâmbio de mensagens é executado utilizando-se a instrução
Intercâmbio.

Sintaxe
A instrução Intercâmbio possui o formato a seguir:
[EXCHx %MWi:L]
Onde: x = número da porta; L = número total de palavras da tabela de palavras.
O controlador lógico deve concluir o intercâmbio da primeira instrução
Intercâmbio antes que uma segunda instrução Intercâmbio seja iniciada. O
bloco de função Message deve ser utilizado ao se enviar diversas mensagens.

Protocolo ASCII
O protocolo ASCII fornece ao controlador lógico um protocolo de modo de
caractere para transmitir e/ou receber dados com um dispositivo. Este protocolo é
suportado pela utilização da instrução Intercâmbio e controlado utilizando-se do
bloco de função Message.
São possíveis 3 tipos de comunicações com o protocolo ASCII:
• Somente transmissão
• Transmissão/Recepção
• Somente recepção

Protocolo Modbus
No caso de um link serial, o protocolo Modbus é um protocolo mestre-escravo
que permite que um e somente um mestre solicite respostas de escravos, ou que
aja com base na solicitação. No suporte a Ethernet, diversos Mestres (cliente)
podem intercambiar com um escravo (servidor). Cada escravo deve possuir um
endereço único. O mestre pode tratar de escravos individuais ou pode iniciar uma
mensagem de difusão para os escravos. Os escravos retornam uma mensagem
(resposta) para as consultas que são endereçadas a eles individualmente.
Respostas não retornam a consultas de difusão do mestre.
O modo mestre do Modbus permite que o controlador envie uma consulta
Modbus a um escravo, e que aguarde pela resposta. O modo de mestre Modbus
somente é suportado através da instrução Intercâmbio. Ambos Modbus ASCII e
RTU são suportados no modo mestre Modbus.
O modo escravo do Modbus permite que o controlador responda a consultas
padrão Modbus de um mestre Modbus.

128 EIO0000003295.03
Objetos de software

Para obter informações detalhadas sobre o protocolo Modbus, consulte o


protocolo de aplicativo Modbus do documento, que está disponível emhttp://www.
modbus.org.

Escravo Modbus
O protocolo Modbus suporta 2 camadas de link de dados dos formatos de Modelo
OSI: ASCII e RTU. Cada um é definido pela implementação da Camada Física,
com o ASCII utilizando 7 bits de dados, e o RTU utilizando 8 bits de dados.
Ao utilizar-se o modo Modbus ASCII, cada byte na mensagem é enviado como 2
caracteres ASCII. O quadro Modbus ASCII inicia com um caractere de início (':'),
e termina com dois caracteres de final (CR e LF). O caractere de final de quadro
padrão é 0x0A (LF). O valor de verificação do quadro Modbus ASCII é um
complemento de dois do quadro, excluindo os caracteres de início e fim.
O modo Modbus RTU não reformata a mensagem antes da transmissão;
contudo, utiliza um modo de soma diferente, especificado como um CRC.
O Modbus Data Link Layer possui as limitações a seguir:
• Endereços de 1 a 247
• Bits: 128 bits sob solicitação
• Palavras: 125 palavras de 16 bits por solicitação

Descrição
Introdução

O bloco de funções Message gerencia o intercâmbio de dados e tem três


funções:
• Verificação de erros de comunicação:
A verificação de erros verifica o tamanho de cada tabela Intercâmbio, e
verifica a validade do intercâmbio relacionado à configuração.
• Coordenação de mensagens múltiplas:
Para ajudar a garantir a coordenação ao enviar várias mensagens, o bloco
de funções Message fornece as informações necessárias para determinar
quando uma mensagem anterior é concluída.
• Transmissão de mensagens de prioridade:
O bloco de funções Message permite que a transmissão da mensagem em
andamento seja interrompida a fim de permitir o envio imediato de uma
mensagem urgente.
A programação do bloco de funções Message é opcional.
Quando erros são detectados, são escritos códigos nas palavras do sistema %
SW63, %SW64 e %SW65 para os blocos de intercâmbio EXCH1, EXCH2 e EXCH3,
respetivamente. Para mais informações, consulte o Guia de programação do
controlador.

EIO0000003295.03 129
Objetos de software

Ilustração
Esta imagem apresenta o bloco de funções Message:

Entradas
O bloco de funções Message tem a seguinte entrada:

Rótulo Descrição Valor

R Redefinir entrada Defina para 1 para reinicializar a comunicação:


(%MSGx.R) • Comunicações realizadas (%MSGx.D) saída está definida
como 1
• Erro de comunicação detectado (%MSG.E) saída definida
como 0
• Um erro é definido em qualquer Bloco de funções de
comunicação (%READ_VAR, %WRITE_VAR, etc.).
• As conexões TCP ativas para outros Modicon M221 Logic
Controllers estão fechadas.
NOTA: Somente um Message bloco de funções, instrução de
EXCH ou Bloco de funções de comunicação pode estar ativo
por vez durante um ciclo de tarefa mestre em uma porta de
comunicação. Se você tentar utilizar vários blocos de funções
de comunicação, MSG ou instruções de EXCH
simultaneamente na mesma porta de comunicação, os
blocos de funções retornam um código de erro. Portanto,
verifique se nenhuma troca ativa (%MSGx.D é
VERDADEIRO) está em andamento em uma porta de
comunicação antes de iniciar o Bloco de funções de
comunicação, bloco de funções de Message, ou instrução de
EXCH. Além disso, verifique se o IOScanner também não
está ativo na porta de comunicações.
NOTA: O IOScanner não atualiza as saídas do bloco de
funções do %MSG. Portanto, o bit %MSG.D é irrelevante
para a função do IOScanner.

130 EIO0000003295.03
Objetos de software

Saídas
O bloco de função Message tem as seguintes saídas:

Rótulo Descrição Valor

D Comunicação Estado 1:
realizada (% • Término da transmissão (se transmissão)
MSGx.D)
• Término da recepção (caractere final recebido)
• Erro
• Redefinir o bloco
Estado 0: solicitação em andamento.

E Erro de Estado 1:
comunicação
• Comando indefinido
detectado (%
MSGx.E) • Tabela configurada incorretamente
• Caractere incorreto recebido (velocidade, paridade, e assim
por diante)
• Tabela de recepção cheia (não atualizada)
Estado 0: comprimento da mensagem correto, vínculo
estabelecido.

Consulte a tabela abaixo para obter os códigos de erro escritos


em palavras do sistema quando um erro de comunicação é
detectado.

EIO0000003295.03 131
Objetos de software

Códigos de erros de comunicação


Esta tabela descreve os códigos de erro escritos em palavras do sistema quando
um erro de comunicação é detectado:

132 EIO0000003295.03
Objetos de software

Palavra do Função Descrição


sistema
%SW63 Código de Código de erro EXCH1:
erro do
bloco 0 - a operação foi bem sucedida
EXCH1
1 - o número de bytes a serem transmitidos excede o limite (> 255)

2 - mesa de transmissão insuficiente

3 - tabela de palavras insuficiente

4 - receber sobrecarga da tabela

5 - tempo limite decorrido

6 - transmissão

7 - comando incorreto na tabela

8 - porta selecionada não configurada/disponível

9 - erro de recepção Este código de erro reflete uma estrutura de


recepção incorreta ou corrompida. Pode ser devido a uma
configuração incorreta nos parâmetros físicos (por exemplo,
paridade, bits de dados, taxa de transmissão, e assim por diante) ou
uma conexão física não confiável causando degradação do sinal.

10 - não é possível utilizar %KW se estiver recebendo

11 - deslocamento da transmissão maior que a tabela de


transmissão

12 - deslocamento de recepção maior que a tabela de recepção

13 - controlador parou o processamento de EXCH

%SW64 Código de Código de erro EXCH2: Consulte %SW63.


erro do
bloco
EXCH2
%SW65 Código de 1-4, 6-13: Consulte %SW63. (Observe que o código de erro 5 é
erro do inválido e substituído pelos códigos de erro específicos da Ethernet
bloco 109 e 122 descritos abaixo).
EXCH3
Em seguida, são exibidos os códigos de erro específicos da
Ethernet:

101 - endereço de IP incorreto

102 - sem conexão TCP

103 - nenhum soquete disponível (todos os canais de conexão


estão ocupados)

104 - a rede está inoperante

105 - não é possível alcançar a rede

106 - conexão à rede perdida no reinício

107 - conexão cancelada por dispositivo par

108 - conexão reiniciada por dispositivo par

109 - tempo limite de conexão decorrido

110 - rejeição na tentativa de conexão

111 - o anfitrião está inoperante

120 - índice incorreto (dispositivo remoto não indexado na tabela de


configuração)

121 - erro de sistema (MAC, chip, IP duplicado)

122 - tempo limite de processamento de recepção após envio de


dados

123 - inicialização da Ethernet em progresso

EIO0000003295.03 133
Objetos de software

Configuração
Erro detectado
Se um erro é detectado com a utilização de uma instrução de Intercâmbio, os
bits %MSGx.D e %MSGx.E são definidos como 1, a palavra do sistema %SW63
contém o código de erro para a porta 1 e %SW64 contém o código de erro para a
porta 2. Consulte o capítulo Palavras do sistema do guia de programação do
controlador lógico.

Operações
Esta tabela descreve os estágios principais de operações do bloco de funções
Message:

Funcionamento Ação Resultado

Reinicializar A entrada R está definida para o • Quaisquer mensagens que


estado 1 (ou a instrução R está estejam sendo transmitidas são
ativada). interrompidas.
• A saída do erro de comunicação é
redefinida como 0.
• O bit Done é definido como 1.
Uma nova mensagem pode ser enviada
agora;

Comunicação A saída D é definida com o estado O controlador lógico está pronto para
realizada 1. enviar outra mensagem. A utilização do
bit de %MSGx.D para ajudar a evitar a
perda de mensagens quando são
enviadas várias mensagens.

Erro detectado de A saída de erro de comunicação está definida como 1:


comunicação
• Por causa de um erro na programação das comunicações ou por um erro
na transmissão da mensagem.
• Se o número de bytes definidos no bloco de dados associado com a
instrução Intercâmbio (palavra 1, byte menos significativo) é maior que
128 (+80 em hexadecimal por FA).
• Se for detetado um erro no envio de uma mensagem Modbus para um
dispositivo Modbus. Nesse caso, deve-se verificar a fiação e se o
dispositivo de destino suporta a comunicação Modbus.

Casos especiais
Esta tabela contém uma lista de casos especiais para o funcionamento de
Message:

Caso especial Descrição

Efeito de um reinício a frio (%S0=1) ou Força uma reinicialização das comunicações.


INIT
Efeito de um reinício a quente (%S1=1) Não tem nenhum efeito.

Efeito da interrupção de um controlador Se a transmissão de uma mensagem está em


andamento, o controlador interrompe sua transferência
e reinicializa as saídas %MSGx.D e %MSGx.E.

NOTA: O efeito de INIT é o mesmo de %S0=1.

134 EIO0000003295.03
Objetos de software

Limitações
Observe as limitações a seguir:
• A disponibilidade e o tipo da porta 2 (para protocolo ASCII) (consulte %SW7)
são verificados somente na inicialização ou reinicialização
• A presença e configuração da porta 2 (para protocolo Modbus) (RS-485) são
verificadas na inicialização ou reinicialização
• Qualquer mensagem sendo processada na porta 1 é cancelada quando
EcoStruxure Machine Expert - Basic estiver conectada
• As instruções de Exchange abortam o processamento do escravo Modbus
ativo
• O processamento das instruções de Intercâmbio Não é repetido na
eventualidade de um erro detectado
• A entrada redefinida (R) pode ser utilizada para abortar o processamento de
recepção da instrução Exchange
• As instruções de Exchange são configuradas com um tempo de espera no
caso do protocolo Modbus.
• Mensagens múltiplas são controladas através de %MSGx.D

Configurando a tabela de transmissão/recepção


O tamanho máximo dos quadros transmitidos e/ou recebidos é:
• 250 bytes para protocolo Modbus.
• 255 bytes para protocolo ASCII.
A tabela de palavras associada com a instrução Intercâmbio é composta das
tabelas de controle, transmissão e recepção:

Byte mais relevante Byte menos relevante

Modbus ASCII Modbus ASCII


Tabela de Comando Comprimento (transmissão/recepção)
controle
Deslocamento Reservado (0) Deslocamento Tx Reservado (0)
Rx
Tabela de Byte 1 transmitido Byte 2 transmitido
transmissão
...
...
Byte n transmitido

Byte n+1 transmitido

Tabela de Byte recebido 1 Byte recebido 2


recepção
...
...
Byte recebido p

Byte recebido p+1

NOTA: Em adição às consultas por escravos adicionais, o controlador mestre


Modbus pode iniciar uma consulta de transmissão a todos os escravos. No
caso de uma consulta de transmissão, o byte Comando deve ser definido
como 00, enquanto que o endereço do escravo deve ser definido como 0.

Tabela de controle para o protocolo ASCII


O byte Comprimento contém o comprimento da tabela de transmissão em bytes
(máx. 255), que é sobrescrita pelo número de caracteres recebidos no término da
recepção, caso uma recepção for solicitada.

EIO0000003295.03 135
Objetos de software

O byte Comando deve conter uma das opções a seguir:


• 0: Somente transmissão
• 1: Enviar/receber
• 2: Apenas recepção

Tabela de controle para o protocolo Modbus


O byte Comprimento contém o comprimento da tabela de transmissão em bytes
(máx. 250), que é sobrescrita pelo número de caracteres recebidos no término da
recepção, caso uma recepção for solicitada.
Este parâmetro é o comprimento em bytes da tabela de transmissão. Se o
parâmetro de deslocamento Tx for igual a 0, esse parâmetro será igual ao
comprimento do quadro de transmissão. Se o parâmetro de deslocamento Tx
não for igual a 0, um byte da tabela de transmissão (indicado pelo valor de
deslocamento) não será transmitido e esse parâmetro é igual ao comprimento do
próprio quadro mais 1.
No caso de solicitação Modbus RTU (exceto para transmissão), o byte Comando
deve ser igual a 1 (Tx e Rx). Para transmissão, deve ser 0.
O byte deslocamento de Tx contém a classificação (1 para o primeiro byte, 2
para o segundo byte, e assim por diante) dentro da tabela de transmissão do byte
para ignorar ao transmitir os bytes. Isto é utilizado para manipular problemas
associados com valores de byte/palavra dentro do protocolo Modbus. Por
exemplo, se este byte contém 3, o terceiro byte seria ignorado, tornando o quarto
byte na tabela o terceiro byte a ser transmitido.
O byte deslocamento de Rx contém a classificação (1 para o primeiro byte, 2
para o segundo byte, e assim por diante) dentro da tabela de recepção para
adicionar ao transmitir o pacote. Isto é utilizado para manipular problemas
associados com valores de byte/palavra dentro do protocolo Modbus. Por
exemplo, se este byte contém 3, o terceiro byte dentro da tabela seria preenchido
com um 0, e o terceiro byte recebido seria inserido no quarto local na tabela.

Tabelas de transmissão/recepção para o protocolo ASCII


No modo somente transmissão, as tabelas de controle e transmissão do tipo %
MW são preenchidas antes que a instrução Intercâmbio (EXCH) seja executada.
Nenhum espaço é necessário para a recepção de caracteres no modo somente-
transmissão. Uma vez que todos os bytes são transmitidos, %MSGx.D é definido
como 1 e uma nova instrução Intercâmbio (EXCH) pode ser executada.
No modo transmissão/recepção, as tabelas de controle e transmissão são
preenchidas antes que a instrução Intercâmbio (EXCH) seja executada e devem
ser do tipo %MW. É necessário espaço para até 256 bytes de recepção no final da
tabela de transmissão. Uma vez que todos os bytes tenham sido transmitidos, o
controlador lógico muda para o modo de recepção e aguarda para receber mais
bytes.
Quando estiver no modo somente-recepção a tabela de controle é preenchida
antecipadamente para executar a instrução Intercâmbio e deve ser do tipo %MW.
É necessário espaço para até 256 bytes de recepção no final da tabela de
controle. O controlador lógico entra imediatamente no modo de recepção e
aguarda para receber quaisquer bytes.
A recepção termina quando os bytes de final de quadro tiverem sido recebidos ou
a tabela de recepção estiver cheia. Neste caso, um código de erro detectado
(transbordamento de tabela de recepção) aparece nas palavras do sistema %
SW63 e %SW64. Se um valor de tempo limite diferente de zero é configurado, a
recepção termina quando o tempo limite for completado. Se um valor de tempo
limite zero é selecionado, não há tempo limite de recepção. Assim, para
interromper a recepção, a entrada %MSGx.R deve ser ativada.

136 EIO0000003295.03
Objetos de software

Tabelas de transmissão/recepção para o protocolo Modbus


Ao utilizar ambos os modos (Modbus ASCII ou Modbus RTU), a tabela de
transmissão é preenchida com a solicitação antes que a instrução Intercâmbio
(EXCH) seja executada. No tempo de execução, o controlador lógico determina o
que a camada de link de dados é, e executa as conversões necessárias para
processas a transmissão e resposta. Caracteres de início, término e verificação
não são armazenados nas tabelas de Transmissão/Recepção.
Uma vez que todos os bytes tenham sido transmitidos, o controlador lógico muda
para o modo de recepção e aguarda para receber mais bytes.
A recepção é concluída em uma de várias maneiras:
• tempo limite de um caractere ou quadro foi detectado,
• caracteres de final de quadro recebidos no modo ASCII,
• a tabela de recepção está cheia.
X entradas de Byte transmitido contêm dados de protocolo Modbus (codificação
RTU) a ser transmitidos. Se a porta de comunicações está configurada para
Modbus ASCII, os caracteres corretos de enquadramento são anexados à
transmissão. O primeiro byte contém o endereço do dispositivo (específico ou de
transmissão), o segundo byte contém o código de função, e o restante contém as
informações associadas com aquele código de função.
NOTA: Este é um aplicativo típico, mas não define todas as possibilidades.
Nenhuma validação dos dados sendo transmitidos será executada.
X entradas de Bytes recebidos contêm dados de protocolo Modbus (codificação
RTU) a ser recebidos. Se a porta de comunicações está configurada para
Modbus ASCII, os caracteres corretos de enquadramento são removidos da
resposta. O primeiro byte contém o endereço do dispositivo, o segundo byte
contém o código de função (ou código de resposta), e o restante contém as
informações associadas com aquele código de função.
NOTA: Este é um aplicativo típico, mas não define todas as possibilidades.
Nenhuma validação dos dados recebidos é executada, exceto para
verificação de soma de controle.

Exemplo de programação
Introdução
Os exemplos a seguir são da programação de um bloco de função Message.

Programando a transmissão de diversas mensagens sucessivas.


A execução da instrução Intercâmbio ativa um bloco de função Message no
programa do aplicativo. A mensagem é transmitida se o bloco de função Message
ainda não estiver ativo (%MSGx.D = 1). Se diversas mensagens são enviadas no
mesmo ciclo, somente a primeira mensagem é transmitida utilizando a mesma
porta.

EIO0000003295.03 137
Objetos de software

Exemplo de uma transmissão de 2 mensagens em sequência na porta 1:

Degrau Instrução reversível Comentário

0 LD %M142 Escrever em um escravo, no endereço 1:


[%MW2:=16#0106] valor 7 no registro 4.
[%MW3:=0]
[%MW4:=16#0106] [%MW2:=16#0106]: Código de comando:
[%MW5:=4] 01 hex, comprimento da transmissão: 06
[%MW6:=7] hex

[%MW3:=0]: Sem compensação de


recepção ou transmissão

[%MW4:=16#0106]: Endereço escravo:


01 hex, código de função: 06 hex (Gravar
registro único)

[%MW5:=4]: Endereço de registro

[%MW6:=7]: Valor a gravar

1 LD %MSG1.D %MSG2.D: Detecta se a porta está


AND %M0 ocupada ou não e, assim, gerencia a
[EXCH1 %MW2:8] coordenação de várias mensagens.
R %M0
2 LDR %I0.0 –
AND %MSG1.D
[EXCH1 %MW2:8]
S %M0

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Programando um intercâmbio de reinicialização


Um intercâmbio é cancelado ao se ativar a entrada (ou instrução) R. Essa entrada
inicializa a comunicação e redefine a saída %MSGx.E como 0 e a saída %MSGx.D
como 1. É possível reinicializar um intercâmbio se um erro for detectado.
Exemplo de reinicialização de um intercâmbio:

Degrau Instrução reversível Comentário

0 BLK %MSG1 –
LD %M0
R
END_BLK

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Exemplos ASCII
Escrita de aplicativo
Exemplo de aplicativo ASCII:

Degrau Instrução Comentário

0 LD 1 [%MW10:=16#0104]: Código de comando: 01 hex,


[%MW10:=16#0104] comprimento da transmissão: 04 hex
[%MW11:=16#0000]
[%MW12:=16#4F4B] [%MW11:=16#0000]: 0000: Nulo

1 LD 1 [%MW12:=16#4F4B]: Ok
AND %MSG2.D
NOTA: A tabela possui 8 elementos.
[EXCH2 %MW10:8]

2 LD %MSG2.E
ST %Q0.0
END

138 EIO0000003295.03
Objetos de software

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.
Utilize EcoStruxure Machine Expert - Basic para criar um programa com 3
degraus:
• Primeiro, inicialize as tabelas de controle e transmissão para utilização pela
instrução Intercâmbio. Neste exemplo, um comando é definido para ambos
os dados de envio e recepção. A quantidade de dados a enviar é de 4 bytes,
como definido no aplicativo, seguido pelo caractere de final de quadro
definido na configuração. Caracteres de início e final não são exibidos em
uma tabela de animação, somente caracteres de dados. Em todos os casos,
esses caracteres são transmitidos ou verificados automaticamente na
receção (por %SW63 e %SW64), quando utilizados.
NOTA: Os caracteres de final definidos na configuração são enviados
automaticamente no fim do quadro. Por exemplo, se você tiver
configurado o primeiro caractere de final como 10 e o segundo caractere
de final como 13, 16#0A0D (códigos ASCII, 0A = LF e 0D = CR) é
enviado no fim do quadro.
• Em seguida, verifique o bit de status associado ao %MSG2 e emita a instrução
EXCH2 somente se a porta estiver pronta. Para a instrução EXCH2, é
especificado um valor de 8 palavras. Há 2 palavras de controle (%MW10 e %
MW11), 2 palavras para ser utilizadas para transmitir informações (%MW12 e %
MW13), e 4 palavras para receber dados (%MW14 até %MW17).
• Finalmente, o status de erro detetado do %MSG2 é verificado e armazenado
no primeiro bit de saída no controlador de E/S base local. O processamento
adicional de erros utilizando %SW64 também pode ser adicionado para torná-
lo mais preciso.

Inicialização da tabela de animação


Exemplo de inicialização de uma tabela de animação no modo online:

Endereço Valor Formato

%MW10 0104 Hexadecimal


%MW11 0000 Hexadecimal
%MW12 4F4B Hexadecimal
%MW13 0A0D Hexadecimal
%MW14 AL ASCII
%MW15 OH ASCII
%MW16 A ASCII

Para exibir os formatos possíveis, clique com o botão direito do mouse na caixa
Valores em uma tabela de animação.
O passo final é baixar o aplicativo para o controlador e executá-lo. Inicialize uma
tabela de animação para animar e exibir o %MW10 através de palavras %MW16.
Essa informação é intercambiada com um controlador lógico e exibida em uma
tabela de animação.

EIO0000003295.03 139
Objetos de software

Pedidos e exemplos padrão do Modbus


Mestre Modbus: Ler N bits
Esta tabela representa as solicitações 01 e 02 (01 para bit de saída ou de
memória, 02 para bit de entrada):

Tabela Byte mais relevante Byte menos relevante

Índice
Tabela de controle 0 01 (Transmissão/recepção) 06 (Duração da transmissão) (1)

1 03 (Deslocamento de recepção) 00 (Deslocamento de transmissão)

Tabela de transmissão 2 Escravo@(De 1 a 247) 01 ou 02 (Código de solicitação)

3 Endereço do primeiro bit para leitura no escravo

4 N1 = Número de bits a ser lidos


Tabela de recepção 5 Escravo@(De 1 a 247) 01 ou 02 (Código de resposta)
(após resposta)
6 00 (byte adicionado por ação de N2
deslocamento Rx)
= Número de bytes de dados para leitura

= [1+(N1-1)/8],

onde o resultado é uma parte inteira da


divisão.
7 O valor do primeiro bit (valor 00 ou O valor do segundo bit (se N2>1) expandido
01) expandido em um byte em um byte

8 O valor do terceiro bit (se N1>1) –


expandido em um byte

... ... ...


(N2/2)+6 (se N2 é par) O valor do N2ºbit
(se N1>1) –
expandido em um byte
(N2/2+1)+6 (se N2 é
ímpar)

(1) Este byte também recebe o comprimento da cadeia transmitida após a resposta.

140 EIO0000003295.03
Objetos de software

Mestre Modbus: Ler N palavras


Esta tabela representa as solicitações 03 e 04 (03 para palavra de saída ou de
memória, 04 para palavra de entrada):

Tabela Byte mais relevante Byte menos relevante

Índice
Tabela de controle 0 01 (Transmissão/recepção) 06 (Duração da transmissão) (1)

1 03 (Deslocamento de recepção) 00 (Deslocamento de transmissão)

Tabela de transmissão 2 Escravo@(De 1 a 247) 03 ou 04 (Código de solicitação)

3 Endereço da primeira palavra a ser lida

4 N = Número de palavras a ser lidas

Tabela de recepção (após 5 Escravo@(De 1 a 247) 03 ou 04 (Código de resposta)


resposta)
6 00 (byte adicionado por ação de 2*N (número de bytes lidos)
deslocamento Rx)

7 Primeira palavra lida

8 Segunda palavra lida (se N>1)

... ...
N+6 Palavra N lida (se N>2)

(1) Este byte também recebe o comprimento da cadeia transmitida após a resposta.

NOTA: O deslocamento de recepção de 3 adiciona um byte (valor =0) na


terceira posição na tabela de recepção. Isso ajuda a garantir um bom
posicionamento do número de bytes lidos e dos valores das palavras lidas
nesta tabela.

Mestre Modbus: Bit de escrita


Esta tabela representa a solicitação 05 (gravar um único bit: saída ou memória):

Tabela Byte mais relevante Byte menos relevante

Índice
Tabela de controle 0 01 (Transmissão/recepção) 06 (Duração da transmissão) (1)

1 00 (Deslocamento de recepção) 00 (Deslocamento de transmissão)

Tabela de transmissão 2 Escravo@(de 1 a 247) ou 0 em caso de 05 (Código de solicitação)


difusão
3 Valor a ser gravado para MSB das palavras de indexação 4; se 0xFF ou 0x00(2).

4 Valor de bit a ser gravado no escravo (16#0000 = Falso e 16#FF00 = Verdadeiro)

Tabela de recepção (após 5 Escravo@(De 1 a 247) 05 (Código de resposta)


resposta)
6 Endereço do bit escrito

7 Valor escrito
(1) Este byte também recebe o comprimento da cadeia transmitida após a resposta.

(2) Para que um bit grave 1, a palavra associada na tabela de transmissão tem que conter o valor FF00h 0 para que o bit grave 0.

NOTA:
• Esta solicitação não necessita da utilização de deslocamento.
• A estrutura de resposta é a mesma que a estrutura solicitada aqui (em
um caso normal).

EIO0000003295.03 141
Objetos de software

Mestre Modbus: Palavra de escrita


Esta tabela representa a solicitação 06 (escrever uma única palavra: saída ou
memória):

Tabela Byte mais relevante Byte menos relevante

Índice
Tabela de controle 0 01 (Transmissão/recepção) 06 (Duração da transmissão) (1)

1 00 (Deslocamento de recepção) 00 (Deslocamento de transmissão)

Tabela de transmissão 2 Escravo@(de 1 a 247) ou 0 em caso de 06 (Código de solicitação)


difusão
3 Endereço da palavra a ser escrita

4 Valor da palavra a ser escrita

Tabela de recepção (após 5 Escravo@(De 1 a 247) 06 (Código de resposta)


resposta)
6 Endereço da palavra escrita

7 Valor escrito
(1) Este byte também recebe o comprimento da cadeia transmitida após a resposta.

NOTA:
• Esta solicitação não necessita da utilização de deslocamento.
• A estrutura de resposta é a mesma que a estrutura solicitada aqui (em
um caso normal).

Mestre Modbus: Escrita de N bits


Esta tabela representa a solicitação 15 (escrever N bits: saída ou memória):

Tabela Byte mais relevante Byte menos relevante

Índice
Tabela de controle 0 01 (Transmissão/recepção) 8 + número de bytes (transmissão)

1 00 (Deslocamento de 07 (Deslocamento da transmissão)


recepção)

Tabela de transmissão 2 Escravo@(de 1 a 247) ou 0 em 15 (Código de solicitação)


caso de difusão
3 Endereço do primeiro bit a gravar

4 N1 = Número de bits para escrita

5 00 (byte não enviado, efeito de N2


deslocamento)
= Número de bytes de dados para escrita

= [1+(N1-1)/8],

onde o resultado é uma parte inteira da divisão.

6 Valor do primeiro byte Valor do segundo byte

7 Valor do terceiro byte Valor do quarto byte

... ... ...


(N2/2)+5 (se N2 é par) Valor do 2th byte N

(N2/2+1)+5 (se N2 é
ímpar)

Tabela de recepção – Escravo@(De 1 a 247) 15 (Código de resposta)


(após resposta)
– Endereço do primeiro bit escrito

– Número de bits gravados (= N1)

142 EIO0000003295.03
Objetos de software

NOTA: O deslocamento de transmissão = 7 suprime o sétimo byte na


estrutura enviada. Isto também permite a correspondência correta dos
valores das palavras na tabela de transmissão.

Mestre Modbus: Escrita de N palavras


Esta tabela representa a solicitação 16:

Tabela Byte mais relevante Byte menos relevante

Índice
Tabela de controle 0 01 (Transmissão/recepção) 8 + (2*N) (Duração da transmissão)

1 00 (Deslocamento de recepção) 07 (Deslocamento da transmissão)

Tabela de transmissão 2 Escravo@(de 1 a 247) ou 0 em caso de 16 (Código de solicitação)


difusão
3 Endereço da primeira palavra a ser escrita

4 N = Número de palavras para escrita

5 00 (byte não enviado, efeito de 2*N = Número de bytes a escrever


deslocamento)

6 Primeiro valor de palavra para escrever

7 Segundo valor a escrever

... ...
N+5 N valores para escrita

Tabela de recepção (após N+6 Escravo@(De 1 a 247) 16 (Código de resposta)


resposta)
N+7 Endereço da primeira palavra escrita

N+8 Número de palavras gravadas (= N)

NOTA: O deslocamento de transmissão = 7 suprime o sétimo byte na


estrutura enviada. Isto também permite a correspondência correta dos
valores das palavras na tabela de transmissão.

Solicitação Modbus: Leitura da identificação do dispositivo


Esta tabela representa a solicitação 43 (identificação de dispositivo lido):

Degrau Instrução Comentário

0 LD 1 [%MW800:=16#0105]: Cabeçalho Modbus padrão


[%MW800:
=16#0105] [%MW801:=16#0000]: Sem deslocamento de transmissão
[%MW801: e recepção
=16#0000]
[%MW802: [%MW802:=16#032B]: Endereço do escravo, código de
=16#032B] função
[%MW803:
=16#0E01] [%MW803:=16#0E01]: Tipo MEI, código ID do dispositivo
[%MW804: de leitura
=16#0000]
[%MW804:=16#0000]: ID do objeto, não utilizado

EIO0000003295.03 143
Objetos de software

Solicitação Modbus: Diagnóstico


Esta tabela representa a solicitação 8 (diagnóstico):

Degrau Instrução Comentário

0 LD 1 [%MW1000:=16#0106]: Cabeçalho Modbus padrão


[%MW1000:
=16#0106] [%MW1001:=16#0000]: Sem deslocamento de
[%MW1001: transmissão e recepção
=16#0000]
[%MW1002: [%MW1002:=16#0308]: Endereço do escravo, código de
=16#0308] função
[%MW1003:
=16#0000] [%MW1003:=16#0000]: Código de subfunção
[%MW1004:
=16#1234] [%MW1004:=16#1234]: Quaisquer dados

A resposta do Escravo será uma cópia da solicitação. Este


modo é conhecido como Eco ou modo Espelho.

Exemplo 1: Escrita do aplicativo Modbus


Programa principal:

Degrau Instrução Comentário

0 LD 1 [%MW0:=16#0106]: Duração da transmissão = 6


[%MW0:=16#0106]
[%MW1:=16#0300] [%MW1:=16#0300]: Recepção de deslocamento = 3,
[%MW2:=16#0203] transmissão de deslocamento = 0
[%MW3:=16#0000]
[%MW4:=16#0004] %MW2 para %MW4: Transmissão

[%MW2:=16#0203]: Escravo 2, Função 3 (Ler várias


palavras)

[%MW3:=16#0000]: Primeiro endereço de palavra a ser


lido no escravo: para endereço 0

[%MW4:=16#0004]: Número de palavras a ler: 4 palavras


(%MW0 a %MW3)

1 LD 1 –
AND %MSG2.D
[EXCH2 %MW0:11]

2 LD %MSG2.E –
ST %Q0.0
END

Programa escravo:

Degrau Instrução Comentário

0 LD 1 –
[%MW0:=16#6566]
[%MW1:=16#6768]
[%MW2:=16#6970]
[%MW3:=16#7172]
END

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.
Utilizando EcoStruxure Machine Expert - Basic, crie um programa aplicativo para
ambos mestre e escravo. Para o escravo, escreva algumas palavras da memória
para um conjunto de valores conhecidos. No mestre, a tabela de palavras da
instrução Intercâmbio é inicializada para ler 4 palavras do escravo no endereço
Modbus 2 iniciando pelo local %MW0.

144 EIO0000003295.03
Objetos de software

NOTA: Observe a utilização do conjunto de deslocamento de Recepção em %


MW1 do mestre Modbus. O deslocamento de 3 irá adicionar um byte (valor = 0)
na terceira posição na área de recepção da tabela. Isto alinha as palavras no
mestre de modo que caiam corretamente nas demarcações de palavras. Sem
este deslocamento, cada palavra de dados poderia ser dividida entre 2
palavras no bloco Intercâmbio. Este deslocamento é utilizado por
conveniência.
Antes de executar a instrução EXCH2, o aplicativo verifica o bit de comunicação
associado ao %MSG2. Finalmente, o status de erro de %MSG2 é excluído e
armazenado no primeiro bit de saída no controlador de E/S base local. A
verificação adicional de erros utilizando %SW64 também pode ser adicionada para
tornar isto mais preciso.
Tabela de animação inicializando no modo on-line correspondendo com a parte
da tabela de recepção:

Endereço Valor Formato

%MW5 0203 Hexadecimal


%MW6 0008 Hexadecimal
%MW7 6566 Hexadecimal
%MW8 6768 Hexadecimal
%MW9 6970 Hexadecimal
%MW10 7172 Hexadecimal

Após realizar o download e definir cada controlador lógico a ser executado, abra
uma tabela de animação no mestre. Examine a seção de resposta da tabela para
verificar se o código de resposta é 3 e se o número correto de bytes foi lido.
Também neste exemplo, as palavras lidas a partir do escravo (começando com %
MW7) estão alinhadas corretamente com os limites de palavras no mestre.

Exemplo 2: Escrita do aplicativo Modbus


Programa principal:

Degrau Instrução Comentário

0 LD 1 [%MW0:=16#010C]: Comprimento da tabela de transmissão: 0C


[%MW0: hex = 12 dec, de %MW2 a %MW7
=16#010C]
[%MW1: [%MW1:=16#0007]
=16#0007]
[%MW2: [%MW2:=16#0210]: endereço escravo 2, código de função 10h
=16#0210] para gravar palavras
[%MW3:
=16#0010] [%MW3:=16#0010]: a partir do endereço 16 no escravo
[%MW4:
=16#0002] [%MW4:=16#0002]: escrita de 2 palavras
[%MW5:
=16#0004] [%MW5:=16#0004]: número de bytes a serem gravados
[%MW6:
[%MW6:=16#6566]: valor da primeira palavra
=16#6566]
[%MW7: [%MW7:=16#6768]: valor da segunda palavra
=16#6768]

1 LD 1 –
AND %MSG2.D
[EXCH2 %
MW0:12]

2 LD %MSG2.E –
ST %Q0.0
END

EIO0000003295.03 145
Objetos de software

Programa escravo:

Degrau Instrução Comentário

0 LD 1 –
[%MW18:
=16#FFFF]
END

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.
Utilizando EcoStruxure Machine Expert - Basic, crie um programa aplicativo para
ambos mestre e escravo. Para o escravo, escreva uma única palavra de memória
%MW18. Isso irá alocar espaço no escravo para os endereços de memória de %
MW0 até %MW18. Sem alocar o espaço, a solicitação do Modbus tentaria escrever
em locais que não existem no escravo.
No mestre, a tabela de palavras da instrução EXCH2 é inicializada para ler 4 bytes
para o escravo no endereço 2 do Modbus no endereço %MW16 (10 hexadecimal).
NOTA: Observe a utilização do deslocamento de Transmissão em %MW1 do
aplicativo principal do Modbus mestre. O deslocamento de 7 irá suprimir o
byte alto na sexta palavra (o valor 00 hexadecimal em %MW5). Isso trabalha
para alinhar os valores de dados na tabela de transmissão da tabela de
palavras de modo que caiam corretamente nas demarcações de palavras.
Antes de executar a instrução EXCH2, o aplicativo verifica o bit de comunicação
associado ao %MSG2. Finalmente, o status de erro de %MSG2 é excluído e
armazenado no primeiro bit de saída no controlador de E/S base local. A
verificação adicional de erros detetados usando %SW64 também pode ser
adicionada para tornar isto mais preciso.
Inicialização da tabela de animação no mestre:

Endereço Valor Formato

%MW0 010C Hexadecimal


%MW1 0007 Hexadecimal
%MW2 0210 Hexadecimal
%MW3 0010 Hexadecimal
%MW4 0002 Hexadecimal
%MW5 0004 Hexadecimal
%MW6 6566 Hexadecimal
%MW7 6768 Hexadecimal
%MW8 0210 Hexadecimal
%MW9 0010 Hexadecimal
%MW10 0004 Hexadecimal

Inicialização da tabela de animação no escravo:

Endereço Valor Formato

%MW16 6566 Hexadecimal


%MW17 6768 Hexadecimal

Após realizar o download e definir cada controlador lógico a ser executado, abra
uma tabela de animação no escravo. Os 2 valores em %MW16 e %MW17 são
escritos para o escravo.
No mestre, uma tabela de animação pode ser utilizada para examinar a porção da
tabela de recepção dos dados de intercâmbio. Esses dados exibem o endereço
do escravo, o código de resposta, a primeira palavra escrita e o número de
palavras escritas começando em %MW8 no exemplo acima.

146 EIO0000003295.03
Objetos de software

Registro LIFO/FIFO (%R)


Utilizando os blocos de função de registro LIFO/FIFO
Esta seção fornece descrições e orientações de programação para a utilização
dos blocos de funções do LIFO/FIFO Register.

Descrição
Introdução

Um LIFO/FIFO Register é um bloco de memória que pode armazenar até 16


palavras de 16 bits cada, de 2 maneiras diferentes:
• Fila (Primeiro que entra, primeiro que sai) conhecido como First In, First Out -
FIFO.
• Pilha (Last In, First Out) conhecida como LIFO.

Ilustração
Essa imagem é o bloco de funções LIFO/FIFO Register:

Entradas
O bloco de funções LIFO/FIFO Register tem as seguintes entradas:

Rótulo Descrição Valor

R Redefinir No estado 1, inicializa o LIFO/FIFO Register.


entrada (ou
instrução)

I Entrada (ou Em uma borda de subida, armazena os conteúdos da palavra


instrução) de associada %Ri.I no LIFO/FIFO Register.
armazenamento
O Entrada (ou Em uma borda de subida, carrega uma palavra de dados do
instrução) de LIFO/FIFO Register na palavra associada %Ri.O.
recuperação

EIO0000003295.03 147
Objetos de software

Saídas
O bloco de função LIFO/FIFO Register tem as seguintes saídas:

Rótulo Descrição Valor

E Saída vazia (% O bit associado %Ri.E indica que o LIFO/FIFO Register está
Ri.E) vazio. O valor de %Ri.E pode ser testado, por exemplo, em uma
tabela de animação ou com uma instrução.

F Saída total (% O bit associado %Ri.F indica que o LIFO/FIFO Register está
Ri.F) cheio. O valor de %Ri.F pode ser testado, por exemplo, em uma
tabela de animação ou com uma instrução.

Configuração
Parâmetros
Para configurar os parâmetros, siga o procedimento Configurar um bloco de
funções, página 110 e leia a descrição dos Modos de alocação de memória no
EcoStruxure Machine Expert - Basic Guia de instruções.
Os blocos de funções LIFO/FIFO Register possuem os seguintes parâmetros:

Parâmetro Descrição Valor Editável


em modo
on-line
Usado Endereço utilizado Se estiver selecionado, este endereço é atualmente utilizado em Não
um programa.

Endereço LIFO/FIFO Register endereço Um programa pode conter somente um número limitado de LIFO/ Não
do objeto FIFO Register objetos. Consulte o Guia de programação da
plataforma de hardware para o número máximo de registradores.

Símbolo Símbolo O símbolo associado a este objeto. Consulte o EcoStruxure Não


Machine Expert - Basic Guia de instruções, Definição e uso de
símbolos (consulte EcoStruxure Machine Expert - Básico, Guia de
instruções) para obter detalhes.

Tipo LIFO/FIFO Register tipo FIFO (fila) ou LIFO (pilha). Sim

Comentário Comentário Um comentário pode ser associado a este objeto. Não

Objetos
O bloco de função LIFO/FIFO Register possui os objetos a seguir:

Objeto Descrição Valor

%Ri.I LIFO/FIFO Register Pode ser lido, testado e escrito.


palavra de entrada
Pode ser modificado em uma tabela de animação.

%Ri.O LIFO/FIFO Register Pode ser lido, testado e escrito.


palavra de saída
Pode ser modificado em uma tabela de animação.

%Ri.E Saída vazia Consulte a tabela Saídas acima.


%Ri.F Saída total Consulte a tabela Saídas acima.

148 EIO0000003295.03
Objetos de software

Casos especiais
Esta tabela contém uma lista de casos especiais para a programação do bloco de
funções LIFO/FIFO Register:

Caso especial Descrição

Efeito de um reinício a frio (%S0=1) ou INIT Inicializa os conteúdos do LIFO/FIFO Register. O bit
de saída %Ri.E associado à saída E é definido como
1.
Efeito de um reinício a quente (%S1=1) ou Não tem efeito no valor atual do LIFO/FIFO Register,
de uma interrupção do controlador nem no estado de seus bits de saída.

Borda de subida detectada em %Ri.O e %Ri. Se uma borda de subida em %Ri.O e %Ri.I for
I detectada na mesma chamada do bloco de função
LIFO/FIFO Register, os calores não serão
armazenado nem recuperados; seu programa deve
gerenciar o armazenamento ou a recuperação dos
valores.

NOTA: O efeito de INIT é o mesmo de %S0=1.

EIO0000003295.03 149
Objetos de software

Operação de registo LIFO


Introdução
Na operação LIFO (Last In, First Out), o último item de dados inserido é o primeiro
a ser recuperado.

Funcionamento
Esta tabela descreve a operação LIFO:

Estágio Descrição Exemplo

1 Armazenamento: Armazenamento do conteúdo de %Ri.I na parte


superior da pilha.
Quando uma solicitação de armazenamento é recebida (borda de
subida na entrada I ou ativação da instrução I), o conteúdo da palavra
de entrada %Ri.I é armazenado na parte superior da pilha. Quando a
pilha está cheia (saída F=1), nenhum armazenamento posterior é
possível.

2 Recuperação: Recuperação da palavra de dados mais alta na


pilha.
Quando uma solicitação de recuperação é recebida (borda de subida
na entrada

O ou ativação de instruçãoO), a palavra de dados mais alta (última


palavra a ser inserida) é carregada na palavra %Ri.O. Quando o LIFO/
FIFO Register está vazio (saída E=1), nenhuma recuperação posterior
é possível. A palavra de saída %Ri.O não se altera e retém seu valor.

3 Redefinir: –

A pilha pode ser redefinida a qualquer momento (estado 1 na entrada


R ou ativação de instrução R). A pilha está vazia após uma redefinição
(%Ri.E =1).

150 EIO0000003295.03
Objetos de software

Operação de registo FIFO


Introdução
Na operação FIFO (First In, First Out), o primeiro item de dados inserido é o
primeiro a ser recuperado.

Funcionamento
Esta tabela descreve a operação FIFO:

Estágio Descrição Exemplo

1 Armazenamento: Armazenamento do conteúdo de %Ri.I na parte


superior da pilha.
Quando uma solicitação de armazenamento é recebida (borda de
subida na entrada I ou ativação da instrução I), o conteúdo da palavra
de entrada %Ri.I é armazenado na parte superior da fila. Quando a fila
está cheia (saída F=1), nenhum armazenamento posterior é possível.

2 Recuperação: Obtenção do primeiro item de dados que é


carregado em %Ri.O.
Quando uma solicitação de recuperação é recebida (borda de subida
na entrada O ou ativação de instrução O), a palavra de dados mais
baixa na fila é carregada na palavra de saída %Ri.O e o conteúdo do
LIFO/FIFO Register é movido para baixo em um local na fila.

Quando o LIFO/FIFO Register está vazio (saída E=1), nenhuma


recuperação posterior é possível. A palavra de saída %Ri.O não se
altera e retém seu valor.

3 Redefinir: –

A fila pode ser redefinida a qualquer momento (estado 1 na entrada R


ou ativação de instrução R). A fila está vazia após uma redefinição (%
Ri.E=1).

EIO0000003295.03 151
Objetos de software

Exemplo de programação
Introdução
O exemplo de programação a seguir mostra o conteúdo de uma palavra de
memória (%MW34) sendo carregado em um LIFO/FIFO Register (%R2.I) na
recepção de uma solicitação de armazenamento (%I0.2) se o LIFO/FIFO
Register %R2 não estiver cheio (%R2.F = 0). A solicitação de armazenamento em
LIFO/FIFO Register é realizada por %M1. A solicitação de recuperação é
confirmada pela entrada %I0.3, and %R2.O é carregado em %MW20 se o registro
não estiver vazio (%R2.E = 0).

Programação
Este exemplo é um bloco de função LIFO/FIFO Register com instruções
reversíveis:

Degrau Instrução reversível

0 BLK %R2
LD %M1
I
LD %I0.3
ANDN %R2.E
O
END_BLK

1 LD %I0.3
[%MW20:=%R2.O]

2 LD %I0.2
ANDN %R2.F
[%R2.I:=%MW34]
ST %M1

Este exemplo é o mesmo bloco de função LIFO/FIFO Register com instruções


irreversíveis:

Degrau Instrução irreversível

0 LD %M1
I %R2
1 LD %I0.3
ANDN %R2.E
O %R2
2 LD %I0.3
[%MW20:=%R2.O]

3 LD %I0.2
ANDN %R2.F
[%R2.I:=%MW34]
ST %M1

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Drums (%DR)
Utilizando os blocos de funções de Drums
Esta seção fornece descrições e orientações de programação para a utilização
dos blocos de funções Drum.

152 EIO0000003295.03
Objetos de software

Descrição
Introdução

O bloco de funções Drum funciona com um princípio semelhante a um


sequenciador de tambor eletromecânico, que muda o passo de acordo com
eventos externos. Em cada etapa, o ponto alto de uma came fornece um
comando, que é, em seguida, executado pelo controlador. No caso de um bloco
de funções Drum, estes pontos altos são simbolizados pelo estado 1 de cada
etapa e são atribuídos aos bits de saída %Qi.j, ou aos bits de memória %Mi.

Ilustração
Esta ilustração é o bloco de função Drum

Etapas Exibe o número total de etapas configuradas no Assistente de Drum.


Etapa Aparece no modo off-line quando um bloco é criado. No modo on-line,
exibe o número da etapa atual.

Entradas
O bloco de funções Drum tem as seguintes entradas:

Rótulo Descrição Valor

R Para retornar ao No estado 1, define o Drum para passo 0.


passo (ou instrução)
0
U Entrada (ou Em uma borda de subida, faz com que o Drum avance em 1
instrução) de avanço passo e atualize os bits de controle.

Saídas
O bloco de função Drum tem as seguintes saídas:

Rótulo Descrição Valor

F Saída (%DRi.F) Indica que o passo atual é igual ao último passo definido. O bit
associado %DRi.F pode ser testado.

EIO0000003295.03 153
Objetos de software

Configuração
Parâmetros
Para configurar os parâmetros, siga o procedimento Configurar um bloco de
funções, página 110 e leia a descrição dos Modos de alocação de memória no
EcoStruxure Machine Expert - Basic Guia de instruções.
Os blocos de funções Drum possuem os seguintes parâmetros:

Parâmetro Descrição Valor Editável


em modo
on-line?
Usado Endereço utilizado Se estiver selecionado, este endereço é Não
atualmente utilizado em um programa.

Endereço Drum endereço do Um programa pode conter somente um Não


objeto número limitado de Drum objetos.
Consulte o Guia de programação do
controlador para obter o número máximo
de Drum objetos.

Símbolo Símbolo O símbolo associado a este objeto. Não


Consulte o EcoStruxure Machine Expert
- Basic Guia de instruções, Definição e
uso de símbolos (consulte EcoStruxure
Machine Expert - Básico, Guia de
instruções) para obter detalhes.

Configuração Assistente de Clique para exibir o Assistente de Sim (todos


degrau degrau, página 155. os
parâmetros
na janela
do
assistente
de degrau)

Comentário Comentário Um comentário pode ser associado a Não


este objeto.

Objetos
O bloco de função Drum possui o objeto a seguir:

Objeto Descrição Valor

%DRi.S Número do passo 0<=%DRi.S<=7. Palavra que pode ser lida e escrita. O
atual valor escrito deve ser um valor decimal imediato.
Quando escrito, o efeito ocorre na próxima execução
do bloco de função.

Pode ser modificado em uma tabela de animação ou


no modo on-line.
%DRi.F Completo Consulte a tabela Saídas, página 153.

Funcionamento
O bloco de função Drum consiste de:
• Uma matriz de dados constantes (as cames) organizadas em 8 passos (0 a
7) e 16 bits (estado do passo) organizada em colunas numeradas de 0 a 15.
• Uma lista de bits de controle é associada com uma saída (%Qi.j)
configurada, ou palavra de memória (%Mi). Durante o passo atual, os bits de
controle assumem os estados binários definidos para esse passo.

154 EIO0000003295.03
Objetos de software

Assistente de degrau
Utilize o Assistente de degrau para configurar o bloco de função Drum.
Configure o Número de passos: 1...8 e as saídas ou bits de memória associados
a cada etapa: Bit0 ... Bit15 e, em seguida, clique em OK.

NOTA: A configuração também pode ser realizada utilizando bits de memória


(%Mi).

Casos especiais
Esta tabela contém uma lista de casos especiais para o funcionamento do Drum:

Caso especial Descrição

Efeitos de um reinício a frio Redefine o Drum para o passo 0 (atualização de bits de controle).
(%S0=1)

Efeito de um reinício a Atualiza os bits de controle após o passo atual.


quente (%S1=1)

Efeito de um salto no O fato de o Drum não ser mais verificado significa que os bits de
programa controle mantêm seu último estado.

Atualizando os bits de Somente ocorre quando houver uma alteração no passo ou no caso
controle. de uma nova partida a quente ou a frio.

Exemplo de programação
Introdução
O exemplo a seguir é da programação de um Drum que é configurado de tal
forma que nenhum dos controles são definidos no passo 0 e os controles são
definidos para o passo 1 ao 6 nas saídas %Q0.0 a %Q0.5 respectivamente
(consulte Configuração, página 158).

EIO0000003295.03 155
Objetos de software

As 6 primeiras saídas %Q0.0 a %Q0.5 são ativadas em sucessão cada vez que a
entrada %I0.1 é definida como 1. A entrada %I0.0 redefine as seguintes como 0
quando está alta:
• Saída de degrau F (%DRi.F = 0)
• Número do passo atual (%DRi.S = 0)

Programação
Este exemplo é um programa de bloco de funções Drum:

Degrau Instrução

0 BLK %DR1
LD %I0.0
R
LD %I0.1
U
OUT_BLK
LD F
ST %Q0.7
END_BLK

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

156 EIO0000003295.03
Objetos de software

Diagrama de temporização
Este diagrama ilustra o funcionamento do Drum:

(1) Em uma borda de subida na entrada U, o passo atual é incrementado


(2) Quando a etapa atual é atualizada, as saídas são atualizadas
(3) Quando a última etapa é alcançada, a saída F é definida como 1
(4) Uma borda de subida na entrada U quando o último passo está ativo, repõe o
passo atual para 0
(5) %DR0.R = 1 (borda de subida) o valor atual é definido como 0
(6) O usuário grava o valor do número da etapa: %DR0.S = 4
(7) O valor escrito pelo utilizador é atualizado no próximo tempo de execução

EIO0000003295.03 157
Objetos de software

Configuração
As informações a seguir são definidas durante a configuração:
• Número de passos: 6
• Os estados da saída (bits de controle) para cada passo do Drum:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Passo 0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Passo 1: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Passo 2: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
Passo 3: 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
Passo 4: 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
Passo 5: 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0

• Designação dos bits de controle:


Esta tabela apresenta as saídas associadas dos bits de controle:

Bit Saída associada


0 Nenhuma saída associada
1 %Q0.1

2 %Q0.2

3 %Q0.3

4 %Q0.4

5 %Q0.5

Registro de bit de deslocamento (%SBR)


Utilizando os blocos de funções de registro de bits de
deslocamento
Esta seção fornece descrições e orientações de programação para a utilização
dos blocos de funções do Shift Bit Register.

Descrição
Introdução

O bloco de função Shift Bit Register fornece um deslocamento para a


esquerda ou para a direita de bits de dados binários (0 ou 1).

158 EIO0000003295.03
Objetos de software

Ilustração
Essa imagem é o bloco de funções Shift Bit Register:

O valor de Shift Bit Register é exibido no centro do bloco de função:


• Valor decimal, por exemplo 7
• Valor binário, por exemplo 111
• Valor hexadecimal, por exemplo 16#7

Entradas
O bloco de funções Shift Bit Register tem as seguintes entradas:

Rótulo Descrição Valor

R Redefinir entrada (ou Quando o parâmetro de função R é 1, isso define os


instrução) bits de registro de 0 a 15 %SBRi.j como 0.

CU Deslocamento para entrada Em uma borda de subida, move um bit de registro para
(ou instrução) esquerda a esquerda.

CD Deslocamento para entrada Em uma borda de subida, desloca um bit de registro


(ou instrução) direita para a direita.

Configuração
Parâmetros
Para configurar os parâmetros, siga o procedimento Configurar um bloco de
funções, página 110 e leia a descrição dos Modos de alocação de memória no
EcoStruxure Machine Expert - Basic Guia de instruções.
O bloco de função Shift Bit Register possui os parâmetros a seguir:

Parâmetro Descrição Valor

Usado Endereço utilizado Se estiver selecionado, este endereço é atualmente


utilizado em um programa.

Endereço Shift Bit Register Um programa pode conter somente um número


endereço do objeto limitado de objetos de Shift Bit Register. Consulte o
Guia de programação da plataforma de hardware para
o número máximo de registradores.

Símbolo Símbolo O símbolo associado a este objeto. Consulte o


EcoStruxure Machine Expert - Basic Guia de
instruções, Definição e uso de símbolos (consulte
EcoStruxure Machine Expert - Básico, Guia de
instruções) para obter detalhes.

Comentário Comentário Um comentário pode ser associado a este objeto.

EIO0000003295.03 159
Objetos de software

Objetos
O bloco de função Shift Bit Register possui os objetos a seguir:

Objeto Descrição Valor

%SBRi Número de registro 0 para 7

Pode ser modificado em uma tabela de animação.

%SBRi.j Bit de registro Os bits de 0 a 15 (j = 0 a 15) do registro de


deslocamento podem ser testados por uma instrução
de testes e escritos com a utilização de uma instrução
de designações.

Funcionamento
Esta ilustração mostra um padrão de bits antes e depois de uma operação de
deslocamento:

Isto também é verdade no caso de uma solicitação para deslocar um bit para a
direita (bit 15 para bit 0) utilizando-se a instrução CD. Bit 0 foi perdido.
Se um registro de 16 bits não for adequado, é possível utilizar o programa para
cascatear diversos registros.

Casos especiais
Esta tabela contém uma lista de casos especiais para a programação do bloco de
função Shift Bit Register:

Caso especial Descrição

Efeito de um reinício a frio (%S0=1) Define todos os bits da palavra de registro como
0.
Efeito de um reinício a quente (%S1=1) Sem efeito nos bits da palavra registrada.

Exemplo de programação
Introdução
O bloco de função Shift Bit Register fornece um deslocamento para a esquerda
ou direita de bits de dados binários (0 ou 1).

Programação
Neste exemplo, um bit é deslocado para a esquerda a cada segundo enquanto o
bit 0 assume o estado como bit 15.

160 EIO0000003295.03
Objetos de software

Em instruções reversíveis:

Degrau Instrução reversível

0 BLK %SBR0
LD %S6
CU
END_BLK

1 LD %SBR0.15
ST %SBR0.0

Em instruções irreversíveis:

Degrau Instrução irreversível

0 LD %S6
CU %SBR0
1 LD %SBR0.15
ST %SBR0.0

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Step Counter (%SC)


Utilizando os blocos de funções de contador de passos
Esta seção fornece descrições e orientações de programação para a utilização de
blocos de funções de Step Counter.

Descrição
Introdução

Um bloco de funções de Step Counter fornece uma série de passos para os


quais ações podem ser designadas. O movimento de um passo para outro
depende de eventos externos ou internos. Cada vez que um passo está ativo, o
bit associado (bit de Step Counter %SCi.j) é definido como 1. Um Step Counter
pode ter somente um passo ativo por vez.

Ilustração
Esta ilustração é um bloco de funções Step Counter:

EIO0000003295.03 161
Objetos de software

Entradas
O bloco de funções Step Counter tem as seguintes entradas:

Rótulo Descrição Valor

R Redefinir entrada (ou Quando o parâmetro de funções R é 1, isto redefine o


instrução) Step Counter.

CU Entrada de incremento Em uma borda de subida, incrementa o Step Counter


(ou instrução) em um passo.

CD Entrada (ou instrução) de Numa borda de subida, decresce o Step Counter em um


decréscimo passo.

Configuração
Parâmetros
Para configurar os parâmetros, siga o procedimento Configurar um bloco de
funções, página 110 e leia a descrição dos Modos de alocação de memória no
EcoStruxure Machine Expert - Basic Guia de instruções.
O bloco de função Step Counter possui os parâmetros a seguir:

Parâmetro Descrição Valor

Usado Endereço utilizado Se estiver selecionado, este endereço é atualmente


utilizado em um programa.

Endereço Step Counter Um programa pode conter somente um número limitado


endereço do objeto de objetos de Step Counter. Consulte o Guia de
programação da plataforma de hardware para obter o
número máximo do Step Counter.

Símbolo Símbolo O símbolo associado a este objeto. Consulte o


EcoStruxure Machine Expert - Basic Guia de
instruções, Definição e uso de símbolos para obter
detalhes.
Comentário Comentário Um comentário pode ser associado a este objeto.

Objetos
O bloco de função Step Counter possui o objeto a seguir:

Objeto Descrição Valor

%SCi.j Step Counter Bit do Os bits 0 a 255 do Step Counter (j = 0 a 255) podem ser
testados por uma operação lógica carregada e gravada
por uma instrução de Atribuição.

Pode ser modificado em uma tabela de animação.

Caso especial
Esta tabela contém uma lista de casos especiais para o funcionamento do bloco
de função Step Counter:

Caso especial Descrição

Efeito de um reinício a frio (%S0=1) Inicializa o Step Counter.

Efeito de um reinício a quente (%S1=1) Não te efeito no Step Counter.

162 EIO0000003295.03
Objetos de software

Exemplo de programação
Introdução
Este exemplo é um bloco de funções Step Counter.
• Step Counter 0 é decrescido pela entrada %I0.1.
• Step Counter 0 é acrescido pela entrada %I0.2.
• Step Counter 0 é redefinido como 0 pela entrada %I0.3 ou quando chega ao
passo 3.
• O passo 0 controla a saída %Q0.1, o passo 1 controla a saída %Q0.2 e o
passo 2 controla a saída %Q0.3.

Programação
Este exemplo é um bloco de função Step Counter com instruções reversíveis:

Degrau Instrução reversível

0 BLK %SC0
LD %SC0.3
OR %I0.3
R
LD %I0.2
CU
LD %I0.1
CD
END_BLK

1 LD %SC0.0
ST %Q0.1

2 LD %SC0.1
ST %Q0.2

3 LD %SC0.2
ST %Q0.3

Este exemplo é de um bloco de funções Step Counter com instruções


irreversíveis:

Degrau Instrução irreversível

0 LD %SC0.3
OR %I0.3
R %SC0
1 LD %I0.2
CU %SC0
2 LD %I0.1
CD %SC0
3 LD %SC0.0
ST %Q0.1

4 LD %SC0.1
ST %Q0.2

5 LD %SC0.2
ST %Q0.3

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

EIO0000003295.03 163
Objetos de software

Diagrama de temporização
Este diagrama ilustra o funcionamento do bloco de função Step Counter:

(1) O passo 0 está ativo, por isso, %SC0.0 está definido como 1
(2) Na borda de subida da entrada CU, o passo é incrementado e as saídas são
atualizadas
(3) A etapa é incrementada e as saídas são atualizadas
(4) O passo 3 está ativo, por isso, a entrada Reset fica ativa após um ciclo
(5) Quando a opção Reset está ativa, o passo atual é definido como 0 e a entrada
reiniciar é definida como 0 após um ciclo
(6) A etapa atual é incrementada na borda de subida da entrada CU
(7) Na borda de subida da entrada de CD, a etapa é diminuída e as saídas são
atualizadas

Blocos de agendamento (%SCH)


Utilizando blocos de agendamento
Esta seção fornece descrições e orientações de programação para usar blocos
de funções Schedule blocks.

Descrição
Introdução
Blocos de agendamento são utilizados para controlar ações em um mês, dia e
hora predefinidos.
Blocos de agendamento são configurados somente em EcoStruxure Machine
Expert - Basic; não podem ser inseridos em um degrau de programa do mesmo
modo que outros blocos de função.
NOTA: Verifique o bit do sistema %S51 e a palavra do sistema %SW118 para
confirmar que a opção Relógio em Tempo Real (RTC) está instalada. A opção
RTC é necessária para a utilização dos Schedule blocks.

164 EIO0000003295.03
Objetos de software

Blocos de agendamento podem ser configurados:


• Na janela Propriedades do bloco de agendamento (guia Ferramentas >
Blocos de agendamento).
• Utilizando objetos dedicados %SCHi.xxx, página 165.

Configuração das propriedades do bloco de agendamento


Para configurar um bloco de programação, leia a descrição dos Modos de
alocação de memória (consulte EcoStruxure Machine Expert - Básico, Guia de
instruções).
O Schedule blocks possui os seguintes parâmetros:

Parâmetro Descrição Valor

Usado Endereço utilizado Se estiver selecionado, este endereço é atualmente utilizado


em um programa.

Endereço Schedule blocks endereço do objeto Um programa pode conter somente um número limitado de
Schedule blocks objetos. Consulte o Guia de programação da
plataforma de hardware para obter o número máximo do
Schedule blocks.
Configurado Se o número de Schedule blocks selecionado Se a caixa de seleção está selecionada, está configurada
estiver configurado para utilização. para utilização. De outro modo, não é utilizado

Bit de saída Bit de saída A atribuição de saída é ativada peloSchedule blocks: %Mi ou
%Qj.k.

Esta saída é definida como 1 quando a data e hora atuais


estão entre a definição de início do período ativo e a definição
de término do período ativo.

Dia de início O dia do mês para início dos Schedule blocks. 1...31

Mês de início O mês para início dos Schedule blocks. Schedule blocks.

Dia de término O dia do mês para término dos Schedule blocks. 1...31

Mês de término O mês de término dos Schedule blocks. De janeiro a dezembro

Horário de início O período do dia, horas e minutos para início dos Hora: 0...23
Schedule blocks.
Minuto: 0...59
Hora de término O período do dia, horas e minutos para término Hora: 0...23
dos Schedule blocks.
Minuto: 0...59
Segunda-feira Marque as caixas que identificam o(s) dia(s) da Se a caixa de seleção está selecionada, está configurada
semana para a ativação dos Schedule blocks. para utilização. De outro modo, não é utilizado
Terça-feira

Quarta-feira

Quinta-feira

Sexta-feira
Sábado
Domingo

Comentário Comentário Um comentário pode ser associado a este objeto.

Objetos
Esses objetos estão disponíveis somente se o bloco estiver configurado conforme
explicado acima.
O aplicativo deve ser configurado com um nível funcional (consulte EcoStruxure
Machine Expert - Básico, Guia de instruções) de pelo menos Nível 6.0.

EIO0000003295.03 165
Objetos de software

Os objetos dos blocos de agendamento são:

Objetos Descrição

%SCHi.STARTDAY O dia do mês para início dos Schedule blocks.

%SCHi.STARTMONTH O mês para início dos Schedule blocks.

%SCHi.STARTHOUR A hora para início dos Schedule blocks.

%SCHi.STARTMIN O minuto para início dos Schedule blocks.

%SCHi.ENDDAY O dia do mês para término dos Schedule


blocks.
%SCHi.ENDMONTH O mês de término dos Schedule blocks.

%SCHi.ENDHOUR A hora para término dos Schedule blocks.

%SCHi.ENDMIN O minuto para término dos Schedule blocks.

%SCHi.DOW O dia da semana para ativar os Schedule


blocks.

Modificar esses valores do objeto no programa permite alterar dinamicamente a


configuração do bloco de agendamento. A modificação é levada em consideração
na próxima verificação do MAST.
Após uma reinicialização a frio (%S0=1), os valores do objeto são redefinidos para
o valor definido durante a configuração.

Configuração dos blocos de agendamento utilizando o sistema ou


palavras de memória
Você também pode configurar os Blocos de agendamento utilizando as palavras
de sistema ou palavras de memória.

Habilitando blocos de agendamento


Os bits da palavra do sistema %SW114 habilitam (bit definido como 1) ou
desabilitam (bit definido como 0) a operação de cada um dos 16 Schedule blocks.
Atribuição de Schedule blocks em %SW114:

Por padrão (ou após uma reinicialização a frio), os bits dessa palavra do sistema
são definidos como 1 (ativado). A utilização destes bits pelo programa é opcional.

Saída de blocos de agendamento


Se a mesma saída (%Mi ou %Qj.k) for atribuída por diversos blocos de
agendamento, o OR dos resultados de cada um dos blocos que será finalmente
atribuído a esse objeto (é possível que haja diversos Schedule blocks para a
mesma saída).
Por exemplo, o bloco de agendamento %SCH0 e %SCH1 estão ambos atribuídos à
saída %Q0.0. %SCH0 define a saída das 12h00 às 13h00 na segunda-feira e %
SCH1 define a saída das 12h00 às 13h00 na terça-feira. O resultado é que a saída
é definida das 12h00 às 13h00 na segunda e terça-feira.

166 EIO0000003295.03
Objetos de software

Programação e configuração
Introdução
Schedule blocks são utilizados para controlar ações em um mês, dia e hora
predefinidos.

Exemplo de programação
Esta tabela mostra os parâmetros para um exemplo de programa para a
pulverização em um mês de verão:

Parâmetro Valor Descrição Editável em modo


on-line?
Endereço Relógio em tempo real 6 Schedule blocks número 6 Não

Configurado Caixa selecionada Caixa selecionada para configurar o Schedule blocks Não
número 6.
Bit de saída %Q0.2 Ativar saída%Q0.2 Sim

Dia de início 21 Iniciar atividade no dia 21 de Junho Sim


Mês de início Junho Iniciar atividade em Junho Sim
Horário de início 21 Iniciar atividade às 21:00 Sim
Dia de término 21 Interromper a atividade no dia 21 de Setembro Sim

Mês de término Setembro Interromper a atividade em Setembro Sim

Hora de término 22 Interromper a atividade às 22:00 Sim

Segunda-feira Caixa selecionada Executar atividade na Segunda-feira Sim

Terça-feira Caixa não selecionada Sem atividade Sim

Quarta-feira Caixa selecionada Executar atividade na Quarta-feira Sim

Quinta-feira Caixa não selecionada Sem atividade Sim

Sexta-feira Caixa selecionada Executar atividade na Sexta-feira Sim


Sábado Caixa não selecionada Sem atividade Sim
Domingo Caixa não selecionada Sem atividade Sim

Utilizando este programa, os Schedule blocks podem ser desabilitados através de


um interruptor ou um detector de umidade conectado à entrada %I0.1:

Degrau Instrução Comentário

0 LD %I0.1 Neste exemplo, o %SCH6 está validado.


ST %SW114:X6

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

EIO0000003295.03 167
Objetos de software

A tabela a seguir apresenta um exemplo de programa:

Degrau Instrução

0 LD %M4

[ %M0:4 := 7 ]

1 LD %M0

RISING1

OPER [ %SCH0.STARTDAY := %MW0]

OPER [ %SCH0.STARTMONTH := %MW1]

OPER [ %SCH0.STARTHOUR := %MW2]

OPER [ %SCH0.STARTMIN := %MW3]

R %M0
2 LD %M1

RISING0

OPER [ %SCH0.ENDDAY := %MW4

OPER [ %SCH0.ENDMONTH := %MW5]

OPER [ %SCH0.ENDHOUR := %MW6]

OPER [ %SCH0.ENDMIN := %MW7]

R %M1
3 LD %M2

RISING2

[%SCH0.DOW := %MW8]

Diagrama de temporização
Este diagrama de temporização mostra a ativação da saída %Q0.2:

168 EIO0000003295.03
Objetos de software

Relógio em tempo real (RTC)


Utilizando os blocos de funções do RTC
Esta seção fornece descrições e orientações de programação para a utilização
dos blocos de funções RTC.
NOTA: Seu aplicativo deve ser configurado com um nível funcional (consulte
EcoStruxure Machine Expert - Básico, Guia de instruções) de pelo menos
Nível 5.0 para usar os blocos de função RTC.

Descrição
Introdução

O bloco de funções do RTC permite ler e gravar no relógio de tempo real


(RTC) do M221 Logic Controller.

Ilustração
Esta ilustração mostra o bloco de funções do RTC.

EIO0000003295.03 169
Objetos de software

Entradas
O bloco de funções RTC tem as seguintes entradas:

Rótulo Objeto Valor

Habilitar - Habilita o bloco de funções quando uma borda de subida desta entrada
for detetada.

No estado 1, os valores de entrada RD e WR são lidos continuamente


para determinar a ação a ser tomada.

No estado 0, o bloco de funções é desabilitado e as saídas são


redefinidas.
RD - Uma combinação dos valores das duas entradas determina a ação a ser
tomada:
WR -
• RD = 0 e WR = 0. Nenhuma ação.
As saídas Done e Error são definidas como 0.
• RD = 1 e WR = 0. Lê o valor do RTC.
Se for bem-sucedida, a saída Done será definida como 1, e a saída
Error, como 0.
Os objetos de saída são atualizados continuamente com os valores
lidos no RTC. Use uma tabela de animação (consulte EcoStruxure
Machine Expert - Básico, Guia de instruções) para exibir os valores
do objeto.
• RD = 0 e WR = 1. Quando a subida de borda do WR for detetada,
atualize o RTC utilizando os valores de objeto especificados nos
parâmetros de RTC associados a este bloco de funções (veja
abaixo).
Se a atualização for bem-sucedida, a saída Done será definida
como 1 e a saída Error, como 0. O RTC é atualizado.
Se dor malsucedida, a saída Done será definida como 0, e a saída
Error, como 1.
• RD = 1 e WR = 1. Não suportado.
A saída Done é definida como 0, a saída Error, como 1, e a saída
ErrorId, página 171, como 256 (lê e grava simultaneamente).

Day %RTCi.DAY Dia

Valor padrão: 12

De 1 a 31
Month %RTCi.MONTH Mês

Valor padrão: 6

De 1 a 12
Year %RTCi.YEAR Ano

Valor padrão: 2017

Maior que ou igual a 2000

Hours %RTCi.HOURS Horas

Valor padrão: 0

De 0 a 23
Minutes %RTCi.MINUTES Minutos

Valor padrão: 0

De 0 a 59
Seconds %RTCi.SECONDS Segundos

Valor padrão: 0

De 0 a 59

170 EIO0000003295.03
Objetos de software

Saídas
O bloco de funções RTC tem as seguintes saídas:

Rótulo Objeto Valor

Done %RTCi.Done Defina como 1 quando o RTC for bem-sucedido em ler


ou gravar.

Defina como 0 quando a leitura ou a gravação não for


bem-sucedida.
Error %RTCi.Error Defina como 1 se ocorrer um erro durante a execução.
A execução do bloco de funções está finalizada. O
objeto da saída ErrorId indica a causa do erro.

DayOfWeek %RTCi. Retorna o dia da semana, calculado a partir do valor da


DayOfWeek semana atual.

Faixa: De 0 a 7

0: Bloqueio de função ainda não executado

1...7: Dia da semana.


ErrorId %RTCi.ErrorId Identificador do código de erro.

Veja Códigos de erro, página 171 abaixo.

Códigos de erro
Os códigos a seguir podem ser retornados no %RTCi.ErrorId objeto quando a
saída Erro for definida como 1.

Código de erro Descrição

0 Nenhum erro
1 Erro em ano
2 Erro em mês
3 Erro em dia
4 Erro em semana
5 Erro em hora
6 Erro em minuto
7 Erro em segundos

8 Erro de combinação

9 Erro no RTC interno


256 Leitura e gravação simultâneas

257 Atualização do RTC já em andamento (bit do sistema %S50 = 1)

Configuração
Apresentação
Configure as propriedades do bloco de funções RTC com os valores a serem
utilizados para atualizar o RTC no controlador lógico.
Para exibir a página Propriedades de RTC, escolha:
• Faça clique duplo no bloco de funções do RTC.
• Na guia Programação, escolha Ferramentas > Objetos de software >
RTC.

EIO0000003295.03 171
Objetos de software

Propriedades de RTC
Para configurar os parâmetros, siga o procedimento Configurar um bloco de
funções, página 110 e leia a descrição dos Modos de alocação de memória no
EcoStruxure Machine Expert - Basic Guia de instruções.
A página Propriedades de RTC exibe as seguintes propriedades:

Propriedade Descrição Valor Editável em


modo on-line?
Usado Endereço do objeto em uso Se estiver selecionado, esse endereço está sendo Não
utilizado em um programa no momento.

Endereço RTC endereço do objeto %RTCi, em que i é o número do objeto. Não

Um programa pode conter somente um número limitado


de RTC objetos. Consulte o Guia de programação do
controlador para obter o número máximo de RTC objetos.

Símbolo Símbolo O símbolo associado a este objeto. Consulte o Sim


EcoStruxure Machine Expert - Basic Guia de instruções,
Definição e uso de símbolos (consulte EcoStruxure
Machine Expert - Básico, Guia de instruções) para obter
detalhes.
Dia O dia do mês De 1 a 31 Sim

Mês O mês do ano De 1 a 12 Sim


Ano O ano Maior que ou igual a 2000 Sim

Horas A hora do dia De 0 a 23 Sim


Minutos Os minutos da hora De 0 a 59 Sim

Segundos Os segundos do minuto De 0 a 59 Sim

Comentário Comentário Um comentário pode ser associado a este objeto. Sim

PID
Função PID
Introdução
A função PID é usada para controlar continuamente um processo dinâmico. O
propósito do controle de PID é manter um processo em execução o mais próximo
possível de um ponto de ajuste desejado.
Consulte o Guia da biblioteca de funções avançadas para obter informações
detalhadas sobre o comportamento do PID, as funcionalidades e a
implementação da função de PID:
• Modos de operação do PID
• Configuração de auto-ajuste do PID
• Configuração padrão do PID
• Assistente do PID
• Programação do PID
• Parâmetros do PID
◦ Função e influência dos parâmetros do PID
◦ Método de ajuste de parâmetros do PID

172 EIO0000003295.03
Objetos de software

Registro de dados
Registro de dados
Descrição do bloco de funções
O recurso de registro de dados permite que você armazene retentivamente dados
de objetos ou sequências de caracteres no arquivo /user/DATALOGx.csv, onde x
é o número inteiro correspondente ao número da instância de registro de dados.
O arquivo é armazenado na placa do SD.
Quando DATALOGx.csv excede o tamanho máximo de arquivo definido, ele é
renomeado como DATALOGx.bak, substituindo qualquer arquivo DATALOGx.bak
existente. Novos dados de registro são então armazenados no novo arquivo
DATALOG.csv DATALOGx.bak é armazenado no cartão SD.
O nome da placa do SD deve serDATA.
NOTA: O aplicativo deve ser configurado com um nível funcional (consulte
EcoStruxure Machine Expert - Básico, Guia de instruções) de pelo menos
Nível 6.0 e o carregador de inicialização versão 50 ou posterior. Consulte a
palavra do sistema (consulte Controlador lógico Modicon M221, Guia de
programação) %SW13.

Representação gráfica

EIO0000003295.03 173
Objetos de software

Configurar o registro de dados


Etapa Ação

1 Na janela Programação, clique em Ferramentas > Objetos de software > Registro


de dados.
2
Na coluna Configuração, clique em .

Resultado: O assistente DATALOG é exibido.


3 Digite o Tamanho máximo do arquivo.

O Tamanho máximo de arquivo pode ser 1...500. O valor padrão é 100.

4 Selecione Dados históricos ou Registro de eventos.

O recurso Dados históricos permite que você armazene vários dados a partir de
objetos. Somente os objetos de EcoStruxure Machine Expert - Basic são permitidos.
Você pode armazenar até 32 objetos.

O recurso Registro de eventos permite que você armazene uma cadeia (consulte
EcoStruxure Machine Expert - Básico, Guia de instruções).

5 Apague ou selecione Adicionar registro de hora.

Esse recurso adiciona a hora do evento ao arquivo CSV.

6 Digite o objeto na coluna Endereço.

Se você selecionar Registro de eventos, digite o primeiro %MW da cadeia.

Se você atribuiu um símbolo ao objeto, ele será exibido na coluna Símbolo. Não é
possível alterar o símbolo aqui.

7 Clique em Aplicar.

8 Para inserir o bloco de função no editor Ladder, realize um dos seguintes métodos:

• Clique , depois .
• Arraste e solte em propriedades do Registro de dados .

Entrada
A tabela a seguir descreve a entrada do bloco de função:

Rótulo Tipo Descrição

EXECUTE BOOL Inicia a execução de blocos de função quando uma borda de


subida é detetada.

Se uma segunda borda de subida for detetada durante a


execução do bloco de funções, ela é ignorada e o comando em
andamento não é afetado.

Saídas
A tabela a seguir descreve as saídas do bloco de função:

Rótulo Tipo Descrição

DONE BOOL Se TRUE, indica que a execução do bloco de funções foi


concluída com sucesso sem erros detetados.
BUSY BOOL Se TRUE, indica que a execução do bloco de função está em
andamento.
ERROR BOOL Se for TRUE, indica que um erro foi detetado. A execução do
bloco de funções é interrompida. A saída Errorld indica o
código de erro.

BAK BOOL Se TRUE, indica que o arquivo BAK é criado.

174 EIO0000003295.03
Objetos de software

Códigos de erro
Código de erro Descrição

0 Nenhum erro.
1 Operação em andamento.

2 Erro ao armazenar dados no arquivo CSV.

3 Erro ao criar o arquivo BAK.

4 Instância do datalog já utilizada.

10 Restaurar tempo limite. Ejetar o cartão SD.

11 Cartão SD não detetado.


12 Cartão SD protegido contra gravação.

50 Erro do sistema de arquivos.

51 Erro ao abrir o arquivo CSV.

Passos Grafcet
Passos Grafcet
Visão geral
Grafcet Objetos da etapa (%Xi) são usados para identificar o status da
Grafcetetapai correspondente em um programa.

Parâmetros
A janela propriedades da etapa Grafcet mostra as seguintes propriedades:

Parâmetro Descrição Valor

Usado Endereço utilizado Se estiver selecionado, este endereço será atualmente


usado em um programa.

Endereço Grafcet Etapa O número máximo de objetos de etapa Grafcet que o


endereço do objeto aplicativo pode conter é:
• 96, se o Nível funcional < 10.0.
• 200, se o Nível funcional>= 10.0.

Símbolo Símbolo O símbolo associado a este objeto. Consulte o


EcoStruxure Machine Expert - Basic Guia de
instruções, Definição e uso de símbolos (consulte
EcoStruxure Machine Expert - Básico, Guia de
instruções) para obter detalhes.

Comentário Comentário Um comentário associado a este objeto.

EIO0000003295.03 175
Objetos de PTO

Objetos de PTO
Tabela de tarefa de movimentos (%MT)
Utilizando a abela de tarefa de movimentos
Esta seção fornece descrições e linhas de programação para a utilização das
tabelas de tarefas de movimentos e blocos de funções Motion Task Table.

Visão geral
Consulte o Guia da biblioteca de funções avançadas do controlador.

Saída do trem de pulso (%PTO)


Utilização dos blocos de funções da saída do trem de pulso
Esta seção fornece descrições e orientações de programação para a utilização
dos blocos de funções Pulse Train Output.

Visão geral
Consulte o Guia da biblioteca de funções avançadas do controlador.

176 EIO0000003295.03
Objetos da unidade

Objetos da unidade
Objetos da unidade
Visão geral
Os objetos da unidade controlam as unidades ATV e outros dispositivos
configurados no Modbus Serial IOScanner ou Modbus TCP IOScanner.
Consulte o Guia da biblioteca de funções avançadas do seu controlador lógico.

EIO0000003295.03 177
Objetos de comunicação

Objetos de comunicação
Introdução
Os blocos de funções de comunicação são usados para comunicação com
dispositivos Modbus e enviar/receber mensagens no modo de caractere (ASCII).
NOTA: Apenas um bloco de funções de comunicação pode estar ativo de
cada vez em uma porta de comunicação durante um ciclo mestre de tarefas.
Se você tentar usar vários blocos de funções de comunicação ou instruções
EXCH ao mesmo tempo e na mesma porta de comunicação, os blocos de
funções retornam um código de erro. Portanto, verifique se não há nenhuma
troca ativa (%MSGx.D é verdadeiro) em progresso em uma porta de
comunicação antes de iniciar um bloco de funções de comunicação ou
instrução EXCH.

Ler dados de um dispositivo remoto(%READ_VAR)


Utilizando os blocos de funções %READ_VAR
Esta seção fornece descrições e orientações de programação para a utilização
dos blocos de funções %READ_VAR.

Descrição
Introdução
O bloco de funções %READ_VAR é usado para ler dados a partir de um
dispositivo remoto no Modbus SL ou TCP do Modbus.

Ilustração
Essa imagem é o bloco de funções %READ_VAR:

178 EIO0000003295.03
Objetos de comunicação

Entradas
O bloco de funções %READ_VAR tem as seguintes entradas:

Rótulo Tipo Valor

Execu- BOOL Inicia a execução de blocos de função quando uma borda de subida é
tar detetada.

Se uma segunda borda de subida for detetada durante a execução do


bloco de funções, ela é ignorada e o comando em andamento não é
afetado.
Anular BOOL Para a execução de blocos de funções quando uma borda de subida é
detectada.

A saída Anular é definida como 1 e o objeto %READ_VARi.CommError


contém o código 02 hex (intercâmbio parado por um pedido do usuário).

NOTA: A configuração da entrada Executar ou Anular como TRUE no


primeiro ciclo de tarefas em RUN não é detectada como uma borda de
subida. O bloco de funções necessita de ver primeiro a entrada como FALSE
para detectar uma borda de subida subsequente.

Saídas
O bloco de função %READ_VAR tem as seguintes saídas:

Rótulo Tipo Valor

Concluí- BOOL Se TRUE, indica que a execução do bloco de funções foi


do concluída com êxito sem erros detectados.
Ocupa- BOOL Se TRUE, indica que a execução do bloco de função está em
do andamento.
Anulado BOOL Se TRUE, indica que a execução do bloco de funções foi
cancelada com a entrada Anular.
Erro BOOL Se for TRUE, indica que um erro foi detetado. A execução do
bloco de funções é interrompida.

Para obter detalhes sobre CommError e OperError, consulte as


tabelas Códigos de erros de comunicação, página 180 e Códigos
de erros de operação, página 181.

Essa tabela descreve os objetos de saída do bloco de funções:

Objeto de Tipo Descrição


saída
CommError BYTE Para obter detalhes sobre %READ_VARi.CommError, consulte a
tabela Códigos de erros de comunicação, página 180.

OperError DWORD Para obter detalhes sobre %READ_VARi.OperError, consulte a


tabela Códigos de erros de operação, página 181.

EIO0000003295.03 179
Objetos de comunicação

Códigos de erros de comunicação


Esta tabela descreve os códigos de erro gravados no objeto de palavra %READ_
VARi.CommError:

Nome Código do Descrição


erro
detectado
CommunicationOK 0 (00 hex) O intercâmbio está correto.

TimedOut 1 (01 hex) Intercâmbio parado porque o tempo limite expirou.

Abort 2 (02 hex) Intercâmbio parado a pedido do usuário (entrada


Anular).

BadAddress 3 (03 hex) O formato do endereço está incorreto.

BadRemoteAddr 4 (04 hex) O endereço remoto está incorreto.

BadMgtTable 5 (05 hex) O formato da tabela de gerenciamento está


incorreto.
BadParameters 6 (06 hex) Os parâmetros específicos estão incorretos.

ProblemSendingRq 7 (07 hex) O envio de pedido para o destino não foi bem
sucedido.
RecvBufferNotAlloc 9 (09 hex) O tamanho do buffer de recepção é insuficiente.

SendBufferNotAlloc 10 (0A hex) O tamanho do buffer de transmissão é insuficiente.

SystemResourceMis- 11 (0B hex) Recurso do sistema indisponível.


sing

BadLength 14 (0E hex) O comprimento está incorreto.

ProtocolSpecificEr- 254 Indica um erro do protocolo Modbus. Para obter


ror (FE hex) mais detalhes, consulte Códigos de erros de
operação, página 181.

Refused 255 (FF hex) A mensagem é recusada. Para obter mais detalhes,
consulte Códigos de erros de operação, página 181.

180 EIO0000003295.03
Objetos de comunicação

Códigos de erros de operação


Este código de retorno é significativo quando o código de erro de comunicação
(objeto CommError) tem o valor:
• 0 (00 hex) (correto)
• 254 (FE hex) (código de exceção Modbus)
• 255 (FF hex) (recusado)
Esta tabela descreve os códigos de erro gravados no objeto de palavra dupla %
READ_VARi.OperError:

CommError Nome Código do erro detectado Descrição

0 (00 hex) OperationOK 0 (00000000 hex) O intercâmbio está correto.


(correto)
NotProcessed 1 (00000001 hex) O pedido não foi processado.

BadResponse 2 (00000002 hex) A resposta recebida está incorreta.

254 (FE hex) IllegalFunction 1 (00000001 hex) O código da função recebido no pedido não é
(código de uma ação autorizada para o escravo. O
exceção escravo pode não estar no estado correto
Modbus) para processar um pedido específico.

IllegalDataAddress 2 (00000002 hex) O endereço de dados recebido pelo escravo


não é um endereço autorizado para o
escravo.
IllegalDataValue 3 (00000003 hex) O valor no campo de dados do pedido não é
um valor autorizado para o escravo.

SlaveDeviceFailure 4 (00000004 hex) O escravo não pode executar uma ação


solicitada devido a um erro irrecuperável.

Acknowledge 5 (00000005 hex) O escravo reconheceu o pedido, mas as


comunicações excedeu o tempo limite antes
de o escravo ter respondido.

SlaveDeviceBusy 6 (00000006 hex) O escravo está ocupado processando outro


comando.
MemoryParityError 8 (00000008 hex) O escravo detecta um erro de paridade na
memória ao tentar ler a memória estendida.
GatewayPathUnavailable 10 (0000000A hex) O gateway está em sobrecarga ou não está
corretamente configurado.

GatewayTargetDeviceFailed- 11 (0000000B hex) O escravo não está presente na rede.


ToRespond

255 (FF hex) TargetResourceMissing 1 (00000001 hex) O recurso do sistema de destino está
(recusado) indisponível.

BadLength 5 (00000005 hex) O comprimento está incorreto.

CommChannelErr 6 (00000006 hex) Erro detectado no canal de comunicação.

BadAddr 7 (00000007 hex) O endereço está incorreto.

SystemResourceMissing 11 (0000000B hex) Recurso do sistema indisponível.

TargetCommInactive 12 (0000000C hex) A função de comunicação de destino não está


ativa.
TargetMissing 13 (0000000D hex) O destino não está comunicativo.

ChannelNotConfigured 15 (0000000F hex) O canal não está configurado.

EIO0000003295.03 181
Objetos de comunicação

Configuração da função
Propriedades
Clique duas vezes no bloco de funções para abrir a tabela de propriedades da
função.
As propriedades deste bloco de funções não podem ser modificadas no modo on-
line.
O bloco de funções %READ_VAR tem as seguintes propriedades:

Propriedade Valor Descrição

Usado Caixa de seleção marcada/desmarcada Indica se o endereço está sendo usado.

Endereço %READ_VARi em que i vai do 0 ao número de i é o identificador da instância. Para obter o número máximo de
objetos disponíveis neste controlador lógico instâncias, consulte Número máximo de objetos (consulte
Modicon M221, Controlador lógico, Guia de programação).

Símbolo Texto definido pelo usuário O símbolo identifica exclusivamente esse objeto. Para obter
detalhes, consulte o EcoStruxure Machine Expert - Basic Guia
de instruções (definição e uso de símbolos) (consulte
EcoStruxure Machine Expert - Básico, Guia de instruções).

Link • SL1: Serial 1 Seleção de porta.


• SL2: Serial 2 NOTA: As portas de comunicação incorporadas SL2 e
• ETH1: Ethernet ETH1 estão disponíveis somente em determinadas
referências do controlador.
Id Este parâmetro depende da configuração do link: Identificador do dispositivo.
• De 1 a 247 para o endereço do escravo de
Para obter mais detalhes sobre o índice Ethernet, consulte
linhas de série Adicionar servidores remotos (consulte Modicon M221,
• De 1 a 16 para o índice de Ethernet Controlador lógico, Guia de programação).

Tempo limite Especificado em unidades de 100 ms, com um O tempo limite define o tempo máximo a aguardar até receber
padrão de 100 (10 segundos). uma resposta.

Um valor de 0 significa que não é aplicado nenhum Se o tempo limite expirar, o intercâmbio termina com erro, com
tempo limite. o código de erro (CommError = 01 hex). Se o sistema receber
uma resposta após o tempo limite expirar, essa resposta será
ignorada.
NOTA: O tempo limite definido no bloco de função substitui
o valor configurado nas telas de configuração EcoStruxure
Machine Expert - Basic (Configuração do Modbus TCP
(consulte Modicon M221, Controlador lógico, Guia de
programação) e Configuração da linha serial (consulte
Modicon M221, Controlador lógico, Guia de
programação)).

ObjType O tipo objeto a ser lido: Os tipos de códigos da função de leitura do Modbus são:
• 0 para palavras • Mbs 0x03 - Ler várias palavras (registo de retenção)
• 1 para entradas digitais • Mbs 0x02 - Ler vários bits (entradas digitais)
• 2 para saídas digitais • Mbs 0x01 - Ler vários bits (saídas digitais)
• 3 para palavras de entrada • Mbs 0x04 - Ler várias palavras (registo de entrada)

FirstObj 0...65535 O endereço do primeiro objeto no dispositivo remoto de onde os


valores são lidos.
Quantidade • De 1 a 125 para %MW O número de objetos a serem lidos do dispositivo remoto.
• De 1 a 2.000 para %I
• De 1 a 2.000 para %Qou %M
• De 1 a 125 para %IW

IndexData De 0 a 7.999 O endereço da tabela de palavras local (%MW) na qual os


valores lidos são armazenados.

Ao ler os bits (%I ou %Q), os bits recuperados são gravados na


tabela de palavras iniciada no primeiro endereço especificado.
Por exemplo, ao ler 16 bits com IndexData = 10 e Quantidade
= 16, o resultado é armazenado em %MW10:X0 para %MW10:
X15
Comentário Texto definido pelo usuário Um comentário a associar a este objeto.

182 EIO0000003295.03
Objetos de comunicação

Objetos
O bloco de função %READ_VAR possui os objetos a seguir:

Objeto Descrição Valor

%READ_VARi.LINK Seleção de portas Consulte Propriedades, página 182. Pode


ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%READ_VARi.ID Identificador de dispositivo remoto Consulte Propriedades, página 182. Pode


ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%READ_VARi.TIMEOUT Tempo limite do bloco de funções Consulte Propriedades, página 182. Pode
ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%READ_VARi.OBJTYPE Tipo de objetos para ler Consulte Propriedades, página 182. Pode
ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%READ_VARi.FIRSTOBJ O endereço do primeiro objeto no Consulte Propriedades, página 182. Pode


dispositivo remoto de onde os valores são ser lido e escrito. Pode ser modificado em
lidos. uma tabela de animações.

%READ_VARi.QUANTITY O número de objetos a serem lidos do Consulte Propriedades, página 182. Pode
dispositivo remoto. ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%READ_VARi.INDEXDATA O endereço da tabela de palavras local (% Consulte Propriedades, página 182. Pode
MW) na qual os valores lidos são ser lido e escrito. Pode ser modificado em
armazenados. uma tabela de animações.

%READ_VARi.COMMERROR Códigos de erros de comunicação Consulte Códigos de erros de


comunicação, página 180. Somente leitura.
Pode ser lido em uma tabela de animações.

%READ_VARi.OPERERROR Códigos de erros de operação Consulte Códigos de erros de operação,


página 181. Somente leitura. Pode ser lido
em uma tabela de animações.

%READ_VARi.DONE Execução concluída com sucesso Consulte Saídas, página 179. Somente
leitura. Pode ser lido em uma tabela de
animações.

%READ_VARi.BUSY Execução em progresso Consulte Saídas, página 179. Somente


leitura. Pode ser lido em uma tabela de
animações.

%READ_VARi.ABORTED Execução cancelada Consulte Saídas, página 179. Somente


leitura. Pode ser lido em uma tabela de
animações.

%READ_VARi.ERROR Foi detectado um erro Consulte Saídas, página 179. Somente


leitura. Pode ser lido em uma tabela de
animações.

EIO0000003295.03 183
Objetos de comunicação

Exemplo de programação
Introdução
O bloco de funções %READ_VAR pode ser configurado como apresentado neste
exemplo de programação.

Programação
Este exemplo é um bloco de funções %READ_VAR:

Degrau Instrução

0 BLK %READ_VAR0
LD %I0.0
EXECUTE
LD %I0.1
ABORT
OUT_BLK
LD DONE
ST %Q0.0
LD BUSY
ST %Q0.1
LD ABORTED
ST %M1
LD ERROR
ST %Q0.2
END_BLK

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Diagrama de temporização
Diagramas de temporização para blocos de função de comunicação, página 210.

Gravar dados em um dispositivo Modbus(%WRITE_VAR)


Utilizando os blocos de funções %WRITE_VAR
Esta seção fornece descrições e orientações de programação para a utilização
dos blocos de funções %WRITE_VAR.

Descrição
Introdução
O bloco de funções %WRITE_VAR é usado para gravar dados em um dispositivo
externo usando o Modbus SL ou o protocolo TCP do Modbus.

184 EIO0000003295.03
Objetos de comunicação

Ilustração
Essa imagem é o bloco de funções %WRITE_VAR:

Entradas
O bloco de funções %WRITE_VAR tem as seguintes entradas:

Rótulo Tipo Valor

Execu- BOOL Inicia a execução de blocos de função quando uma borda de subida é
tar detetada.

Se uma segunda borda de subida for detetada durante a execução do


bloco de funções, ela é ignorada e o comando em andamento não é
afetado.
Anular BOOL Para a execução de blocos de funções quando uma borda de subida é
detectada.

A saída Anular é definida como 1 e o objeto %WRITE_VARi.CommError


contém o código 02 hex (intercâmbio parado por um pedido do usuário).

NOTA: A configuração da entrada Executar ou Anular como TRUE no


primeiro ciclo de tarefas em RUN não é detectada como uma borda de
subida. O bloco de funções necessita de ver primeiro a entrada como FALSE
para detectar uma borda de subida subsequente.

Saídas
O bloco de função %WRITE_VAR tem as seguintes saídas:

Rótulo Tipo Valor

Concluí- BOOL Se TRUE, indica que a execução do bloco de funções foi


do concluída com êxito sem erros detectados.
Ocupa- BOOL Se TRUE, indica que a execução do bloco de função está em
do andamento.
Anulado BOOL Se TRUE, indica que a execução do bloco de funções foi
cancelada com a entrada Anular.
Erro BOOL Se for TRUE, indica que um erro foi detetado. A execução do
bloco de funções é parada.

Para obter detalhes sobre CommError e OperError, consulte as


tabelas Códigos de erros de comunicação, página 180 e Códigos
de erros de operação, página 181 .

EIO0000003295.03 185
Objetos de comunicação

Essa tabela descreve os objetos de saída do bloco de funções:

Objeto de Tipo Descrição


saída
CommError BYTE Para obter detalhes sobre %READ_VARi.CommError, consulte a
tabela Códigos de erros de comunicação, página 180.

OperError DWORD Para obter detalhes sobre %READ_VARi.OperError, consulte a


tabela Códigos de erros de operação, página 181.

Códigos de erros de comunicação


Consulte Códigos de erros de comunicação, página 180.

Códigos de erros de operação


Consulte Códigos de erros de operação, página 181.

Configuração da função
Propriedades
Clique duas vezes no bloco de funções para abrir a tabela de propriedades das
funções.
As propriedades deste bloco de funções não podem ser modificadas no modo on-
line.

186 EIO0000003295.03
Objetos de comunicação

O bloco de funções %WRITE_VAR tem as seguintes propriedades:

Propriedade Valor Descrição

Usado Caixa de seleção ativado/desativada Indica se o endereço está sendo usado.

Endereço %WRITE_VARi em que i vai do 0 ao número de objetos i é o identificador da instância. Para obter o
disponíveis neste controlador lógico número máximo de instâncias, consulte a Tabela
Número máximo de objetos (consulte Modicon
M221, Controlador lógico, Guia de programação).

Símbolo Texto definido pelo usuário O símbolo identifica exclusivamente esse objeto.
Para obter detalhes, consulte o EcoStruxure
Machine Expert - Basic Guia de instruções
(definição e uso de símbolos) (consulte
EcoStruxure Machine Expert - Básico, Guia de
instruções).

Link • SL1: Serial 1 Seleção de porta.


• SL2: Serial 2 NOTA: As portas de comunicação
incorporadas SL2 e ETH1 estão disponíveis
• ETH1: Ethernet
somente em determinadas referências do
controlador.
Id Este parâmetro depende da configuração do link: Identificador do dispositivo.
• 0 para transmitir
Para o valor 0, o controle principal Modbus inicia
• De 1 a 247 para o endereço do escravo de linhas de série uma transmissão para todos os escravos
• De 1 a 16 para o índice de Ethernet conectados. No modo de transmissão, os
escravos não respondem o principal.

Para obter mais detalhes sobre o índice Ethernet,


consulte Adicionar servidores remotos (consulte
Modicon M221, Controlador lógico, Guia de
programação).

Tempo limite Especificado em unidades de 100 ms, com um padrão de 100 O tempo limite define o tempo máximo a aguardar
(10 segundos). até receber uma resposta.

Um valor de 0 significa que não é aplicado nenhum tempo limite. Se o tempo limite expirar, o intercâmbio termina
com erro, com o código de erro (CommError =
01 hex). Se o sistema receber uma resposta após
o tempo limite expirar, essa resposta será
ignorada.
NOTA: O tempo limite definido no bloco de
função substitui o valor configurado nas telas
de configuração EcoStruxure Machine Expert
- Basic (Configuração do Modbus TCP
(consulte Modicon M221, Controlador lógico,
Guia de programação) e Configuração da
linha serial (consulte Modicon M221,
Controlador lógico, Guia de programação)).

ObjType Os seguintes códigos da função Modbus são suportados: O tipo de objetos a ser gravado:
• 0 • Mbs 0x10 - Gravar várias palavras
• 2 (registro)

• 4 • Mbs 0x0F - Gravar vários bits (saídas


digitais)
• 5
• Mbs 0x05 - Gravar bit único (saída digital)
• Mbs 0x06 - Gravar palavra única (registro)
NOTA: O aplicativo deve ser
configurado com um nível funcional de
pelo menos 5,0 para usar os códigos de
função Modbus Single Coil (Mbs 0x05)
ou Single Register (Mbs 0x06).

FirstObj 0...65535 O endereço do primeiro objeto no dispositivo


remoto em que os valores são gravados.

Quantidade • De 1 a 123 (registro interno) para %MW O número de objetos a serem gravados a partir do
• De 1 a 1.968 (bit interno) para %M ou %Q dispositivo remoto.

Ignorado para os tipos de objeto de bobina única e


de registro único.

EIO0000003295.03 187
Objetos de comunicação

Propriedade Valor Descrição

IndexData De 0 a 7.999 O endereço da tabela de palavras local (%MW)


que contém os valores a serem gravados no
dispositivo remoto. Esta tabela de palavras de
memória (%MW) é usada para todos os códigos
de função suportados.

Ao gravar os bits (%M ou %Q), os valores a serem


gravados são recuperados da tabela de palavras
iniciada no primeiro endereço especificado. Por
exemplo, ao gravar 16 bits com IndexData = 10 e
Quantidade = 16, os valores são recuperados de
%MW10:X0 para %MW10:X15

Comentário Texto definido pelo usuário Um comentário a associar a este objeto.

Objetos
O bloco de função %WRITE_VAR possui os objetos a seguir:

Objeto Descrição Valor

%WRITE_VARi.LINK Seleção de portas Consulte Propriedades, página 186. Pode


ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%WRITE_VARi.ID Identificador de dispositivo remoto Consulte Propriedades, página 186. Pode


ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%WRITE_VARi.TIMEOUT Tempo limite do bloco de funções Consulte Propriedades, página 186. Pode
ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%WRITE_VARi.OBJTYPE Tipo de objetos para escrever Consulte Propriedades, página 186. Pode
ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%WRITE_VARi.FIRSTOBJ O endereço do primeiro objeto no Consulte Propriedades, página 186. Pode


dispositivo remoto em que os valores são ser lido e escrito. Pode ser modificado em
gravados. uma tabela de animações.

%WRITE_VARi.QUANTITY O número de objetos a serem gravados a Consulte Propriedades, página 186. Pode
partir do dispositivo remoto. ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%WRITE_VARi.INDEXDATA O endereço da tabela de palavras local (% Consulte Propriedades, página 186. Pode
MW) que contém os valores a serem ser lido e escrito. Pode ser modificado em
gravados no dispositivo remoto. uma tabela de animações.

%WRITE_VARi.COMMERROR Códigos de erros de comunicação Consulte Códigos de erros de


comunicação, página 186. Somente leitura.
Pode ser lido em uma tabela de animações.

%WRITE_VARi.OPERERROR Códigos de erros de operação Consulte Códigos de erros de operação,


página 186. Somente leitura. Pode ser lido
em uma tabela de animações.

%WRITE_VARi.DONE Execução concluída com sucesso Consulte Saídas, página 185. Somente
leitura. Pode ser lido em uma tabela de
animações.

%WRITE_VARi.BUSY Execução em progresso Consulte Saídas, página 185. Somente


leitura. Pode ser lido em uma tabela de
animações.

%WRITE_VARi.ABORTED Execução cancelada Consulte Saídas, página 185. Somente


leitura. Pode ser lido em uma tabela de
animações.

%WRITE_VARi.ERROR Foi detectado um erro Consulte Saídas, página 185. Somente


leitura. Pode ser lido em uma tabela de
animações.

188 EIO0000003295.03
Objetos de comunicação

Exemplo de programação
Introdução
O bloco de funções %WRITE_VAR pode ser configurado como apresentado
neste exemplo de programação.

Programação
Este exemplo é um bloco de funções %WRITE_VAR:

Degrau Instrução

0 BLK %WRITE_VAR0
LD %I0.0
EXECUTE
LD %I0.1
ABORT
OUT_BLK
LD DONE
ST %Q0.0
LD BUSY
ST %Q0.1
LD ABORTED
ST %M1
LD ERROR
ST %Q0.2
END_BLK

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Diagrama de temporização
Diagramas de temporização para blocos de função de comunicação, página 210.

Ler e gravar dados em um dispositivo Modbus (%WRITE_


READ_VAR)
Utilizando os blocos de funções %WRITE_READ_VAR
Esta seção fornece descrições e orientações de programação para a utilização
dos blocos de funções %WRITE_READ_VAR.

Descrição
Introdução
O bloco de funções %WRITE_READ_VAR é usado para ler e gravar dados
armazenados nas palavras da memória interna em um dispositivo externo usando
o Modbus SL ou o protocolo TCP do Modbus.
Este bloco de funções efetua um único pedido de gravação seguido de um único
pedido de leitura na mesma transação.

EIO0000003295.03 189
Objetos de comunicação

Ilustração
Essa imagem é o bloco de funções %WRITE_READ_VAR:

Entradas
O bloco de funções %WRITE_READ_VAR tem as seguintes entradas:

Rótulo Tipo Valor

Execu- BOOL Inicia a execução de blocos de função quando uma borda de subida é
tar detetada.

Se uma segunda borda de subida for detetada durante a execução do


bloco de funções, ela é ignorada e o comando em andamento não é
afetado.
Anular BOOL Para a execução de blocos de funções quando uma borda de subida é
detectada.

A saída Anular é definida como 1 e o objeto %WRITE_READ_VARi.


CommError contém o código 02 hex (intercâmbio parado por um pedido
do usuário).

NOTA: A configuração da entrada Executar ou Anular como TRUE no


primeiro ciclo de tarefas em RUN não é detectada como uma borda de
subida. O bloco de funções necessita de ver primeiro a entrada como FALSE
para detectar uma borda de subida subsequente.

Saídas
O bloco de função %WRITE_READ_VAR tem as seguintes saídas:

Rótulo Tipo Valor

Concluí- BOOL Se TRUE, indica que a execução do bloco de funções foi


do concluída com êxito sem erros detectados.
Ocupa- BOOL Se TRUE, indica que a execução do bloco de função está em
do andamento.
Anulado BOOL Se TRUE, indica que a execução do bloco de funções foi
cancelada com a entrada Anular.
Erro BOOL Se for TRUE, indica que um erro foi detetado. A execução do
bloco de funções é interrompida.

Para obter detalhes sobre CommError e OperError, consulte as


tabelas Códigos de erros de comunicação, página 180 e Códigos
de erros de operação, página 181.

190 EIO0000003295.03
Objetos de comunicação

Essa tabela descreve os objetos de saída do bloco de funções:

Objeto de Tipo Descrição


saída
CommError BYTE Para obter detalhes sobre %READ_VARi.CommError, consulte a
tabela Códigos de erros de comunicação, página 180.

OperError DWORD Para obter detalhes sobre %READ_VARi.OperError, consulte a


tabela Códigos de erros de operação, página 181.

Códigos de erros de comunicação


Consulte Códigos de erros de comunicação, página 180.

Códigos de erros de operação


Consulte Códigos de erros de operação, página 181.

Configuração da função
Propriedades
Clique duas vezes no bloco de funções para abrir a tabela de propriedades das
funções.
As propriedades deste bloco de funções não podem ser modificadas no modo on-
line.

EIO0000003295.03 191
Objetos de comunicação

O bloco de funções %WRITE_READ_VAR tem as seguintes propriedades:

Propriedade Valor Descrição

Usado Caixa de seleção ativado/desativada Indica se o endereço está sendo usado.

Endereço %WRITE_READ_VARi em que i vai do 0 ao i é o identificador da instância. Para obter o número


número de objetos disponíveis neste máximo de instâncias, consulte a Tabela Número máximo
controlador lógico de objetos (consulte Modicon M221, Controlador lógico,
Guia de programação).

Símbolo Texto definido pelo usuário O símbolo identifica exclusivamente esse objeto. Para
obter detalhes, consulte o EcoStruxure Machine Expert -
Basic Guia de instruções (definição e uso de símbolos)
(consulte EcoStruxure Machine Expert - Básico, Guia de
instruções).

Link • SL1: Serial 1 Seleção de portas


• SL2: Serial 2 NOTA: As portas de comunicação incorporadas SL2
• ETH1: Ethernet e ETH1 estão disponíveis somente em determinadas
referências do controlador.
Id Este parâmetro depende da configuração do Identificador do dispositivo
link:
Para obter mais detalhes sobre o índice Ethernet,
• De 1 a 247 para o endereço do escravo consulte Adicionar servidores remotos (consulte Modicon
de linhas de série
M221, Controlador lógico, Guia de programação).
• De 1 a 16 para o índice de Ethernet

Tempo limite Especificado em unidades de 100 ms, com O tempo limite define o tempo máximo a aguardar até
um padrão de 100 (10 segundos). receber uma resposta.

Um valor de 0 significa que não é aplicado Se o tempo limite expirar, o intercâmbio termina com erro,
nenhum tempo limite. com o código de erro (CommError = 01 hex). Se o
sistema receber uma resposta após o tempo limite expirar,
essa resposta será ignorada.
NOTA: O tempo limite definido no bloco de função
substitui o valor configurado nas telas de
configuração EcoStruxure Machine Expert - Basic
(Configuração do Modbus TCP (consulte Modicon
M221, Controlador lógico, Guia de programação) e
Configuração da linha serial (consulte Modicon
M221, Controlador lógico, Guia de programação)).

ObjType %MW (Mbs Fct 17): palavras da memória O tipo de código de função de leitura/gravação do Modbus
é Mbs Fct 17, que é equivalente ao código de função 17
do Modbus.
FirstWriteObj 0...65535 O endereço do primeiro objeto no dispositivo remoto em
que os valores são gravados.

WriteQuantity De 1 a 121 O número de objetos a serem gravados a partir do


dispositivo remoto.

IndexDataOut De 0 a 7.999 O endereço da tabela de palavras local (%MW) que


contém os valores a serem gravados no dispositivo
remoto.
FirstReadObj 0...65535 O endereço do primeiro objeto no dispositivo remoto de
onde os valores são lidos.
ReadQuantity De 1 a 125 O número de objetos a serem lidos do dispositivo remoto.

IndexDataIn De 0 a 7.999 O endereço da tabela de palavras local (%MW) na qual os


valores lidos são armazenados.
Comentário Texto definido pelo usuário Um comentário a associar a este objeto.

192 EIO0000003295.03
Objetos de comunicação

Objetos
O bloco de função %WRITE_READ_VAR possui os objetos a seguir:

Objeto Descrição Valor

%WRITE_READ_VARi.LINK Seleção de portas Consulte Propriedades, página 191. Pode


ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%WRITE_READ_VARi.ID Identificador de dispositivo remoto Consulte Propriedades, página 191. Pode


ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%WRITE_READ_VARi.TIMEOUT Tempo limite do bloco de funções Consulte Propriedades, página 191. Pode
ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%WRITE_READ_VARi.OBJTYPE Tipo de objetos para ler Consulte Propriedades, página 191. Pode
ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%WRITE_READ_VARi.FIRSTWRITEOBJ O endereço do primeiro objeto no Consulte Propriedades, página 191. Pode


dispositivo remoto em que os valores ser lido e escrito. Pode ser modificado em
são gravados. uma tabela de animações.

%WRITE_READ_VARi.WRITEQUANTITY O número de objetos a serem gravados Consulte Propriedades, página 191. Pode
a partir do dispositivo remoto. ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%WRITE_READ_VARi.INDEXDATAOUT O endereço da tabela de palavras local Consulte Propriedades, página 191. Pode
(%MW) que contém os valores a serem ser lido e escrito. Pode ser modificado em
gravados no dispositivo remoto. uma tabela de animações.

%WRITE_READ_VARi.FIRSTREADOBJ O endereço do primeiro objeto no Consulte Propriedades, página 191. Pode


dispositivo remoto de onde os valores ser lido e escrito. Pode ser modificado em
são lidos. uma tabela de animações.

%WRITE_READ_VARi.READQUANTITY O número de objetos a serem lidos do Consulte Propriedades, página 191. Pode
dispositivo remoto. ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%WRITE_READ_VARi.INDEXDATAIN O endereço da tabela de palavras local Consulte Propriedades, página 191. Pode
(%MW) na qual os valores lidos são ser lido e escrito. Pode ser modificado em
armazenados. uma tabela de animações.

%WRITE_READ_VARi.COMMERROR Códigos de erros de comunicação Consulte Códigos de erros de


comunicação, página 191. Somente leitura.
Pode ser lido em uma tabela de animações.

%WRITE_READ_VARi.OPERERROR Códigos de erros de operação Consulte Códigos de erros de operação,


página 191. Somente leitura. Pode ser lido
em uma tabela de animações.

%WRITE_READ_VARi.DONE Execução concluída com sucesso Consulte Saídas, página 190. Somente
leitura. Pode ser lido em uma tabela de
animações.

%WRITE_READ_VARi.BUSY Execução em progresso Consulte Saídas, página 190. Somente


leitura. Pode ser lido em uma tabela de
animações.

%WRITE_READ_VARi.ABORTED Execução cancelada Consulte Saídas, página 190. Somente


leitura. Pode ser lido em uma tabela de
animações.

%WRITE_READ_VARi.ERROR Foi detectado um erro Consulte Saídas, página 190. Somente


leitura. Pode ser lido em uma tabela de
animações.

Exemplo de programação
Introdução
O bloco de funções %WRITE_READ_VAR pode ser configurado como
apresentado neste exemplo de programação.

EIO0000003295.03 193
Objetos de comunicação

Programação
Este exemplo é um bloco de funções %WRITE_READ_VAR:

Degrau Instrução

0 BLK %WRITE_READ_VAR0
LD %I0.0
EXECUTE
LD %I0.1
ABORT
OUT_BLK
LD DONE
ST %Q0.0
LD BUSY
ST %Q0.1
LD ABORTED
ST %M1
LD ERROR
ST %Q0.2
END_BLK

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Diagrama de temporização
Diagramas de temporização para blocos de função de comunicação, página 210.

Comunicação em um link ASCII(%SEND_RECV_MSG)


Utilizando os blocos de funções %SEND_RECV_MSG
Esta seção fornece descrições e orientações de programação para a utilização
dos blocos de funções %SEND_RECV_MSG.

Descrição
Introdução
O bloco de funções %SEND_RECV_MSG é usado para enviar ou receber dados
em uma linha em série configurada para o protocolo ASCII.

194 EIO0000003295.03
Objetos de comunicação

Ilustração
Essa imagem é o bloco de funções %SEND_RECV_MSG:

Entradas
O bloco de funções %SEND_RECV_MSG tem as seguintes entradas:

Rótulo Tipo Valor

Execu- BOOL Inicia a execução de blocos de função quando uma borda de subida é
tar detetada.

Se uma segunda borda de subida for detetada durante a execução do


bloco de funções, ela é ignorada e o comando em andamento não é
afetado.
Anular BOOL Para a execução de blocos de funções quando uma borda de subida é
detectada.

A saída Anular é definida como 1 e o objeto %SEND_RECV_MSGi.


CommError contém o código 02 hex (intercâmbio parado por um pedido
do usuário).

NOTA: A configuração da entrada Executar ou Anular como TRUE no


primeiro ciclo de tarefas em RUN não é detectada como uma borda de
subida. O bloco de funções necessita de ver primeiro a entrada como FALSE
para detectar uma borda de subida subsequente.

Saídas
O bloco de função %SEND_RECV_MSG tem as seguintes saídas:

Rótulo Tipo Valor

Concluí- BOOL Se TRUE, indica que a execução do bloco de funções foi


do concluída com êxito sem erros detectados.
Ocupa- BOOL Se TRUE, indica que a execução do bloco de função está em
do andamento.
Anulado BOOL Se TRUE, indica que a execução do bloco de funções foi
cancelada com a entrada Anular.
Erro BOOL Se for TRUE, indica que um erro foi detetado. A execução do
bloco de funções é interrompida.

Para obter detalhes sobre CommError e OperError, consulte as


tabelas Códigos de erros de comunicação, página 180 e Códigos
de erros de operação, página 181.

EIO0000003295.03 195
Objetos de comunicação

Códigos de erros de comunicação


Consulte Códigos de erros de comunicação, página 180.

Códigos de erros de operação


Consulte Códigos de erros de operação, página 181.

Condições de fim
Para uma operação somente-envio, a saída Concluído é definida como TRUE
quando todos os dados (incluindo caracteres para iniciar/parar) tiverem sido
enviados.
Para uma operação somente de recebimento, o sistema recebe caracteres até
que a condição final seja TRUE Quando a condição de fim é alcançada, a saída
Concluído é definida como TRUE. Os caracteres recebidos são então copiados
para BufferToRecv, até caracteres sizeRecvBuffer. sizeRecvBuffer não é uma
condição final.
A condição final deve ser definida na tela Configuração de linha serial (consulte
Modicon M221, Controlador lógico, Guia de programação):

A condição de fim pode ser definida como:


• Um número de bytes recebidos: Comprimento do quadro recebido
• Um silêncio de fim de quadro: Tempo limite de quadro recebido (ms)
• Uma estrutura: Primeiro caractere de fim
Para uma operação de envio-recebimento, os caracteres são enviados primeiro
para a linha e, em seguida, os caracteres são recebidos até que a condição final
seja TRUE (a mesma que a de recebimento).

Configuração da função
Propriedades
Faça duplo clique no bloco de funções para abrir a tabela de propriedades das
funções.

196 EIO0000003295.03
Objetos de comunicação

As propriedades deste bloco de funções não podem ser modificadas no modo on-
line.
O bloco de funções %SEND_RECV_MSG tem as seguintes propriedades:

Propriedade Valor Descrição

Usado Caixa de seleção marcada/desmarcada Indica se o endereço está sendo usado.

Endereço %SEND_RECV_MSGi em que i vai do 0 ao número de i é o identificador da instância. Para um


objetos disponíveis neste controlador lógico número máximo de instâncias, consulte o Guia
de programação para o controlador lógico.

Símbolo Texto definido pelo usuário O símbolo identifica exclusivamente esse


objeto. Para obter detalhes, consulte o
EcoStruxure Machine Expert - Basic Guia de
instruções (definição e uso de símbolos)
(consulte EcoStruxure Machine Expert -
Básico, Guia de instruções).

Link • SL1: Serial 1 Seleção de portas


• SL2: Serial 2 NOTA: A porta de comunicação
incorporada SL2 está disponível somente
em algumas referências de controladores.

Tempo limite Especificado em unidades de 100 ms, com um padrão de O tempo limite define o tempo máximo a
100 (10 segundos). aguardar até receber uma resposta.

Um valor de 0 significa que não é aplicado nenhum tempo Se o tempo limite expirar, o intercâmbio
limite. termina com erro, com o código de erro
(CommError = 01 hex). Se o sistema receber
uma resposta após o tempo limite expirar, essa
resposta será ignorada.
NOTA: O tempo limite definido no bloco
de funções substitui o valor configurado
EcoStruxure Machine Expert - Basic nas
telas de configuração (Configuração
Modbus TCP e Configuração da linha em
série, consulte o Guia de programação
para o controlador lógico.).

QuantityToSend 0...255 Número de bytes a ser enviado

Um valor de 0 significa que o bloco de funções somente


recebe dados.
BufferToSend De 0 a 7.999 Endereço do primeiro objeto a ser enviado

SizeRecvBuffer 0...255 Tamanho disponível em bytes do buffer de


recepção.
Um valor de 0 significa que o bloco de funções somente
envia dados.
BufferToRecv De 0 a 7.999 O primeiro endereço da tabela de palavras na
qual os valores de leitura são armazenados (%
MW).

QuantityRecv 0...255 Quantidade de dados recebidos em bytes

Comentário Texto definido pelo usuário Um comentário a associar a este objeto.

EIO0000003295.03 197
Objetos de comunicação

Objetos
O bloco de função %SEND_RECV_MSG possui os objetos a seguir:

Objeto Descrição Valor

%SEND_RECV_MSGi.LINK Seleção de portas Consulte Propriedades, página 196. Pode


ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%SEND_RECV_MSGi.TIMEOUT Tempo limite do bloco de funções Consulte Propriedades, página 196. Pode
ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%SEND_RECV_MSGi. Número de bytes a ser enviado Consulte Propriedades, página 196. Pode
QUANTITYTOSEND ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%SEND_RECV_MSGi.BUFFERTOSEND Endereço do primeiro objeto a ser enviado Consulte Propriedades, página 196. Pode
ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%SEND_RECV_MSGi.SIZERECVBUFFER Tamanho disponível em bytes do buffer de Consulte Propriedades, página 196. Pode
recepção ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%SEND_RECV_MSGi.BUFFERTORECV O primeiro endereço da tabela de palavras Consulte Propriedades, página 196. Pode
na qual os valores gravados serão ser lido e escrito. Pode ser modificado em
armazenados. uma tabela de animações.

%SEND_RECV_MSGi.QUANTITYRECV Quantidade de dados recebidos em bytes Consulte Propriedades, página 196. Pode
ser somente lido. Pode ser modificado em
uma tabela de animações.

%SEND_RECV_MSGi.COMMERROR Códigos de erros de comunicação Consulte Códigos de erros de


comunicação, página 196. Somente leitura.
Pode ser lido em uma tabela de animações.

%SEND_RECV_MSGi.OPERERROR Códigos de erros de operação Consulte Códigos de erros de operação,


página 196. Somente leitura. Pode ser lido
em uma tabela de animações.

%SEND_RECV_MSGi.DONE Execução concluída com sucesso Consulte Saídas, página 195. Somente
leitura. Pode ser lido em uma tabela de
animações.

%SEND_RECV_MSGi.BUSY Execução em progresso Consulte Saídas, página 195. Somente


leitura. Pode ser lido em uma tabela de
animações.

%SEND_RECV_MSGi.ABORTED Execução cancelada Consulte Saídas, página 195. Somente


leitura. Pode ser lido em uma tabela de
animações.

%SEND_RECV_MSGi.ERROR Foi detectado um erro Consulte Saídas, página 195. Somente


leitura. Pode ser lido em uma tabela de
animações.

Exemplo de programação
Introdução
O bloco de funções %SEND_RECV_MSG pode ser configurado como
apresentado neste exemplo de programação.

198 EIO0000003295.03
Objetos de comunicação

Programação
Este exemplo é um bloco de funções %SEND_RECV_MSG:

Degrau Instrução

0 BLK %SEND_RECV_MSG0
LD %I0.0
EXECUTE
LD %I0.1
ABORT
OUT_BLK
LD DONE
ST %Q0.0
LD BUSY
ST %Q0.1
LD ABORTED
ST %M1
LD ERROR
ST %Q0.2
END_BLK

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

Diagrama de temporização
Diagramas de temporização para blocos de função de comunicação, página 210.

Enviar Receber SMS (%SEND_RECV_SMS)


Usar bloco de funções %SEND_RECV_SMS
Essa seção fornece descrição e orientações de programação para a utilização do
bloco de funções %SEND_RECV_SMS.

Descrição
Introdução
O bloco de funções %SEND_RECV_SMS é usado para enviar e receber
mensagens de serviço de mensagem curta (SMS) através de um modem
conectado a uma linha em série. Por exemplo, o controlador pode enviar um SMS
para transmitir um alarme a um telefone móvel específico, ou receber um SMS
para finalizar uma função na máquina.
NOTA: O aplicativo deve ser configurado com um nível funcional (consulte
EcoStruxure Machine Expert - Básico, Guia de instruções) de pelo menos
Nível 3.2 para usar a funcionalidade SMS.
O bloco de funções %SEND_RECV_SMS é usado para:
• enviar um SMS para somente um destinatário, ou
• receber um SMS filtrado por uma tabela aprovada de números de telefone.
Apenas 1 bloco de funções %SEND_RECV_SMS pode ser utilizado em um
programa.

EIO0000003295.03 199
Objetos de comunicação

Cuidados devem ser tomados e disposições devem ser realizadas para a


utilização da funcionalidade SMS como um dispositivo de controle remoto, para
evitar consequências involuntárias de operação da máquina comandada,
mudanças de estado do controlador ou alteração de memória de dados ou
parâmetros de funcionamento da máquina.

ATENÇÃO
OPERAÇÃO NÃO INTENCIONAL DO EQUIPAMENTO
• Certifique-se de que existe um observador local, competente e qualificado,
presente ao operar a partir de um local remoto.
• Configure e instale a entrada R/S no aplicativo de maneira que o controle
local de inicialização ou interrupção do controlador possa ser mantida,
independentemente dos comandos remotos enviados para o controlador.
O não cumprimento destas instruções poderá resultar em morte,
ferimentos graves ou danos do equipamento.

A funcionalidade SMS é dependente de uma rede de telecomunicações e


parâmetros externos. Comandos e mensagens SMS transmitidos para a máquina
podem ser atrasados ou não enviados nem recebidos. Não utilize a
funcionalidade SMS para funções críticas de segurança ou outros fins críticos.

ATENÇÃO
OPERAÇÃO NÃO INTENCIONAL DO EQUIPAMENTO
• Não permita funções críticas de segurança em comandos de SMS.
• Não use comandos ou mensagens SMS para qualquer fim crítico de missão.
O não cumprimento destas instruções poderá resultar em morte,
ferimentos graves ou danos do equipamento.

NOTA: Verifique a funcionalidade SMS e a rede de telecomunicações


associada durante o comissionamento e faça testes periodicamente para
verificar a cobertura da rede.

Ilustração
Essa imagem é o bloco de funções %SEND_RECV_SMS:

200 EIO0000003295.03
Objetos de comunicação

Entradas
Essa tabela descreve as entradas do bloco de funções:

Rótulo Tipo Valor

Execu- BOOL Inicia a execução do bloco de funções quando uma borda de subida é
tar detetada.

Se uma segunda borda de subida for detetada durante a execução do


bloco de funções, ela é ignorada e o comando em andamento não é
afetado.
Anular BOOL Para a execução do bloco de funções quando uma borda de subida é
detetada.

A saída Abortada é definida para 1 e o objeto %SEND_RECV_SMSi.


CommError contém o código 02 hex (troca parada em uma borda de
subida na entrada Abortada).

S BOOL Se 1, o bloco de funções está configurado para enviar um SMS.

Se 0, o bloco de função está configurado para receber um SMS.

A alteração de valor é levada em conta quando o bloco de funções é


abortado.

NOTA: A configuração da entrada Executar ou Anular como 1 no primeiro


ciclo de tarefas em RUN não é detetada como uma borda de subida. O bloco
de funções necessita de ver primeiro a entrada como 0 para detetar uma
borda de subida subsequente.
Essa tabela descreve os objetos de entrada do bloco de funções:

Objeto de entrada Tipo Intervalo de Descrição


valores
Link BYTE 1 - SL1 Indica a linha em série usada para comunicar através do modem.

2 - SL2
Tempo limite WORD 0...255 Define o tempo máximo de espera para enviar uma resposta a partir do
modem.

Especificado em unidades de 100 ms, com um padrão de 100 (10


segundos). Um valor de 0 significa que nenhum tempo limite é aplicado.

Índice WORD 0...15 O valor do índice é utilizado:


• Ao enviar, selecionar um texto a ser enviado a partir da tabela
Mensagens.
0 corresponde à primeira cadeia na tabela.
• Ao receber, selecionar uma cadeia na tabela Comandos que
corresponda ao texto recebido.
Defina para FFFF hexadecimal se nenhuma cadeia correspondente
for encontrada.
VAD DINT -2147483648... • Ao enviar, o valor em %SEND_RECV_SMSi.VADsubstitui o espaço
2147483647 reservado $VAD no texto do SMS.
• Ao receber, o valor em %SEND_RECV_SMSi.VAD contém o valor
em que o espaço reservado$VAD é inserido no SMS armazenado na
tabela Comandos.
VBD DINT -2147483648... • Ao enviar, o valor em %SEND_RECV_SMSi.VBDsubstitui o espaço
2147483647 reservado $VBD no texto do SMS.
• Ao receber, o valor em %SEND_RECV_SMSi.VBD contém o valor
em que o espaço reservado$VBD é inserido no SMS armazenado na
tabela Comandos.
MASKPHONE WORD 0...15 • Ao enviar, a máscara é usada para selecionar o destinatário do SMS
da tabelaNúmeros de telefone.
• Ao receber, a máscara é aplicada à tabela Números de telefone
para criar uma lista de números válidos.

EIO0000003295.03 201
Objetos de comunicação

Saídas
Essa tabela descreve as saídas do bloco de funções:

Rótulo Tipo Valor

Concluí- BOOL Se TRUE, indica que a execução do bloco de funções foi concluída com
do sucesso sem erros detetados.
Ocupa- BOOL Se TRUE, indica que a execução do bloco de função está em andamento.
do
Anulado BOOL Se TRUE, indica que a execução do bloco de funções foi cancelada com a
entrada %SEND_RECV_SMSi.Abort.

Erro BOOL Se for TRUE, indica que um erro foi detetado. A execução do bloco de
funções é parada.

Para obter detalhes sobre %SEND_RECV_SMSi.CommError e %SEND_


RECV_SMSi.OperError, consulte as tabelas Códigos de erros de
comunicação, página 203 e Códigos de erros de operação, página 203.

NOTA: Quando a saída Ocupado estiver definida para TRUE, a execução continuará até que
uma das saídas Concluído, Abortado ou Erro seja definida para TRUE.
NOTA: Enquanto a saída Ocupado estiver definida para TRUE, mudanças na
entradaExecutar não afetarão a execução do bloco de funções em andamento. No entanto, se
outro bloco de função %SEND_RECV_SMS for chamado, ele termina com um erro
(CommError= 255 (FF hex) e OperError =11 (0B hex)).

Essa tabela descreve os objetos de saída do bloco de funções:

Objeto de Tipo Descrição


saída
CommError BYTE Para obter detalhes sobre %SEND_RECV_SMSi.CommError,
consulte a tabela Códigos de erros de comunicação, página 203.

OperError DWORD Para obter detalhes sobre %SEND_RECV_SMSi.OperError,


consulte a tabela Códigos de erros de operação, página 203.

202 EIO0000003295.03
Objetos de comunicação

Códigos de erros de comunicação


Essa tabela descreve os códigos de erros gravados no objeto de saída %SEND_
RECV_SMSi.CommError:

Código de erro Nome Descrição


decimal
(hexadecimal)
detetado
0 (00 hex) CommunicationOK O intercâmbio está correto.
NOTA: Nesse caso, o objeto de saída %SEND_RECV_
SMSi.OperError contém o nível do sinal de modem em
oposição a um código de erro.

1 (01 hex) TimedOut Intercâmbio parado porque o tempo limite expirou.

2 (02 hex) Abort Troca parada em uma borda de subida na entrada %SEND_
RECV_SMSi.Abort.

3 (03 hex) BadLink O link está incorreto.

4 (04 hex) BadCommand O comando está incorreto.

5 (05 hex) BadMgtTable O formato da tabela de gerenciamento está incorreto.

6 (06 hex) BadParameters Os parâmetros específicos estão incorretos.

7 (07 hex) ProblemSendingSms Comando de envio de SMS malsucedido.

9 (09 hex) RecvCmdError Comando inválido.

10 (0A hex) SendValueError Valor inválido.

11 (0B hex) SystemResourceMissing Recurso do sistema indisponível.

14 (0E hex) BadLength O comprimento está incorreto.

254 (FE hex) ProtocolSpecificError Indica que foi detetado um erro de protocolo.
NOTA: Nesse caso, o objeto de saída %SEND_RECV_
SMSi.OperError contém mais detalhes. Consulte Códigos
de erros de operação., página 203

255 (FF hex) Refused SMS recusado.


NOTA: Nesse caso, o objeto de saída %SEND_RECV_
SMSi.OperError contém mais detalhes. Consulte Códigos
de erros de operação., página 203

Códigos de erros de operação


Esse código de retorno é significativo quando o código de erro de comunicação
(objeto de saída %SEND_RECV_SMSi.CommError) tem o valor:
• 0 (00 hex) (protocolo correto)
• 254 (FE hex) (protocolo incorreto)
• 255 (FF hex) (SMS recusado)
Quando o %SEND_RECV_SMSi.CommError é 0 (00 hex) (protocolo correto), o
objeto de saída %SEND_RECV_SMSi.OperError indica a indicação de
intensidade do sinal recebido (RSSI):

Valor decimal no objeto %SEND_ Nível de sinal do modem RSSI


RECV_SMSi.OperError

Menos de 9 Valor marginal (a atenuação excede o limite necessário para


manter a rede sem fio)

10 para 14 Ok

15 para 19 Bom

Maior que 20 Excelente

EIO0000003295.03 203
Objetos de comunicação

Quando o %SEND_RECV_SMSi.CommError é 254 (FE hex) (protocolo


incorreto), o objeto de saída %SEND_RECV_SMSi.OperError devolve mais
detalhes:

Valor decimal (hexadecimal) no objeto Nome Descrição


%SEND_RECV_SMSi.OperError

256 (00000100 hex) ModemConfSLAsciiFailed A configuração ASCII da linha em série está


incorreta.
512 (00000200 hex) ModemReconfSLFailed A configuração da linha em série de volta para a
configuração do usuário está incorreta.

768 (00000300 hex) ModemBusy O modem responde BUSY ao comando de


discagem.

1024 (00000400 hex) ModemNoDialtone O modem responde NODIALTONE ao comando


de discagem.

1280 (00000500 hex) ModemNoCarrier O sinal portador do modem foi perdido ou


desconectado. O modem responde NO CARRIER
ao comando de discagem.

1536 (00000600 hex) ModemBadAnswer A resposta do modem está incorreta.

Erros específicos para o uso de cartão SIM

4096 (00001000 hex) SimConfigurationFailed A configuração do cartão SIM está incorreta. Por
exemplo, o código PUK é solicitado.

8192 (00002000 hex) SimPinCodeInvalid O código PIN está incorreto.

16384 (00004000 hex) SimSmsCenterInvalid O número de telefone central do SMS está


incorreto.

Quando o %SEND_RECV_SMSi.CommError é 255 (FF hex) (SMS recusado), o


objeto de saída %SEND_RECV_SMSi.OperError devolve mais detalhes:

Valor decimal (hexadecimal) no Nome Descrição


objeto %SEND_RECV_SMSi.
OperError

1 (00000001 hex) TargetResourceMissing O recurso do sistema de destino está indisponível.

5 (00000005 hex) BadLength O comprimento está incorreto.

6 (00000006 hex) CommChannelErr Um erro foi detetado no canal de comunicação.

11 (0000000B hex) SystemResourceMissing O recurso do sistema está indisponível.

12 (0000000C hex) TargetCommInactive A função de comunicação de destino não está


ativa.
13 (0000000D hex) TargetMissing O destino está indisponível.

15 (0000000F hex) ChannelNotConfigured O canal de comunicação não está configurado.

16 (00000010 hex) PhoneNumberNotMatching O número de telefone na mensagem recebida não


corresponde com a lista de números aprovados
(lista branca).

17 (00000011 hex) MessageNotMatching A mensagem recebida não corresponde a nenhuma


mensagem da lista de comando. Emitido somente
se o número de telefone do remetente corresponder
a uma entrada na lista de números aprovados (lista
branca).

204 EIO0000003295.03
Objetos de comunicação

Configuração da função
Principais passos
O procedimento a seguir descreve as principais etapas para configurar o bloco de
funções %SEND_RECV_SMS, depois de conectar um modem à linha em série:

Etapa Ação

1 Na guia Configuração em EcoStruxure Machine Expert - Basic, configure a linha em série com o modem, o Comando Inic e
protocolo ASCII. Para obter mais detalhes, consulte o Guia de programação para seu controlador lógico.

2 Verifique se o modem está conectado à linha em série do controlador e se:


• o cartão SIM está desbloqueado, ou seja, não protegido por um código PIN.
• o telefone central do SMS está corretamente configurado no cartão SIM.

3 Na guia Programação:
• Adicione o %SEND_RECV_SMSbloco de função e faça duplo clique nele para exibir a tabela de propriedades da
função
• Clique no botão Configuração de SMS para abrir a janela Assistente de SMS
• Edite as tabelas Mensagens, Comandos e Números de telefone
Para obter mais detalhes, consulte o Assistente de SMS.
• Clique em Aplicar para fechar o Assistente de SMS
NOTA: Se o endereço do bloco de funções (por exemplo, %SEND_RECV_SMS0) é inválido e o clique duplo está
desativado, verifique que o nível funcional de sua aplicação (aba Programação > Tarefas > Comportamento) está
pelo menos no Nível 3.2).

4 Na guia Programação, edite os campos na tabela de propriedades da função.

Para obter detalhes sobre esses campos, consulte Propriedades, página 207.

ATENÇÃO
OPERAÇÃO NÃO INTENCIONAL DO EQUIPAMENTO
Verifique se os índices para mensagens, comandos e números de telefone
utilizados no bloco de função são válidos (os que você pretende utilizar) antes
de usar o bloco de função.
O não cumprimento destas instruções poderá resultar em morte,
ferimentos graves ou danos do equipamento.

Para obter mais detalhes sobre a instalação e configuração de modems


SR2MOD03, consulte o Guia do usuário do modem sem fio SR2MOD02 e
SR2MOD03 (EIO00000001575).

Assistente de SMS
Para usar o bloco de funções %SEND_RECV_SMS, configure as tabelas de
comandos, mensagens e números telefônicos.
Clique no botão Configuração de SMS na área Propriedades para enviar e
receber SMS para exibir a janela Assistente de SMS.

EIO0000003295.03 205
Objetos de comunicação

A janela Assistente de SMS contém três guias com tabelas para configurar:
• Mensagens
Digite as cadeias que são usadas quando o controlador envia um SMS. Use
espaços reservados para incluir variáveis, data e hora. Considere limites
para o número de caracteres e o formato.
• Comandos
Digite as cadeias que são usadas quando o controlador recebe um SMS. Use
espaços reservados para incluir variáveis. Considere os limites para o
número de caracteres e o formato.
• Números de telefone
Ao programar o bloco de funções para enviar mensagens de SMS, selecione
o destinatário a partir desta tabela.
Ao programar o bloco de funções para receber mensagens de SMS,
selecione os números de telefone de origem autorizados a partir desta lista.
Quando uma chamada e subsequente SMS são transmitidos para seu
aplicativo através do modem, o número de telefone de origem é validado
antes de agir sobre o SMS de entrada.
Para obter mais detalhes, consulte a linha MASKPHONE em Propriedades,
página 207.
NOTA: Consulte a documentação do modem para formatos de código de
discagem internacional.
Se o aplicativo estiver configurado com um nível funcional de pelo menos Nível
6.1, você pode declarar as cadeias em uma variável %MW e inserir esta variável de
memória no campo Valor.
NOTA: As variáveis %MW são suportadas como variáveis, não como
sequências.
Cada tabela contém um máximo de 16 entradas, com um índice em cada linha de
0 a 15.
As cadeias contidas nas tabelas assistentes podem ser interpretadas nos
seguintes formatos e limite de tamanho de mensagem:

Formato de caractere Tabelas Mensagens e Comandos

GSM 7-bit 105 caracteres no máximo.


UNICODE 45 caracteres no máximo.

NOTA: O formato de caracteres é determinado automaticamente pelos caracteres no campo


de texto.

Os seguintes espaços reservados podem ser adicionados no texto deMensagens


ou Comandos para serem interpretados como variáveis:

Espaço Substituído na execução por: Número de Número de


reservado caracteres em caracteres em
formatos GSM 7- formato UNICODE
bit

$DATE(1) YY/MM/DD (data atual) 8+1 16 + 2

$TIME(1) HH:MM:SS (hora atual) 8+1 16 + 2

$VAD O valor DWORD do parâmetro % 12 no máximo 24 no máximo


SEND_RECV_SMSi.VAD
convertido em texto.

$VBD O valor DWORD do parâmetro % 12 no máximo 24 no máximo


SEND_RECV_SMSi.VBD
convertido em texto.

$$ O símbolo $ 1 2

NOTA: Quando o texto digitado é válido (caracteres de limite não excedido, espaços
reservados válidos), o botão Aplicar é ativado.
(1) Ignorado para Comandos

206 EIO0000003295.03
Objetos de comunicação

Exemplos
Este exemplo ilustra o uso de espaços reservados em mensagens:

Mensagens

Mensagem $DATE : $TIME - Valor A = $VAD e Valor B = $VBD !


configurada

Valores de VAD = 10; VBD = 2000


espaço reservado

SMS final 15/04/27: 11:15:43 - Valor A = 10 e Valor B = 2000 !


enviada

Este exemplo ilustra o uso de espaços reservados em comandos:

Comandos
Comando Valor A = $VAD e Valor B = $VBD !
configurado

SMS recebido Valor A = 300 e Valor B = 2 !


Valores VAD = 300; VBD = 2
capturados

Propriedades
Faça duplo clique no bloco de funções para abrir a tabela de propriedades das
funções.
As propriedades deste bloco de funções não podem ser modificadas no modo on-
line.

EIO0000003295.03 207
Objetos de comunicação

O bloco de funções %SEND_RECV_SMS tem as seguintes propriedades:

Propriedade Valor Descrição

Usado Caixa de seleção marcada/ Indica se o endereço está sendo usado.


desmarcada.
Endereço %SEND_RECV_SMSi em que i vai i é o identificador da instância. Para um número máximo de instâncias,
do 0 ao número de objetos consulte o Guia de programação para o seu controlador lógico.
disponíveis neste controlador lógico

Símbolo Texto definido pelo usuário. O símbolo identifica exclusivamente esse objeto. Para obter detalhes, consulte
Definir e usar símbolos (consulte EcoStruxure Machine Expert - Básico, Guia
de instruções).

Link 1 - SL1 A linha em série na qual o modem está configurado (aba Configuração).

2 - SL2
Tempo limite 0...255 O tempo limite define o tempo máximo de espera para receber uma resposta
do modem.
Especificado em unidades de 100
ms, com um padrão de 100 (10 Se o tempo limite expirar, o intercâmbio terminará com um código de erro (%
segundos). SEND_RECV_SMSi.CommError = 01 hex). Se o sistema receber uma
resposta após o tempo limite expirar, essa resposta será ignorada.
Um valor de 0 significa que não é
aplicado nenhum tempo limite. NOTA: O tempo limite definido no bloco de funções substitui o valor
configurado na tela de configuração EcoStruxure Machine Expert - Basic.
Para obter mais detalhes, consulte o Guia de programação para seu
controlador lógico.

Índice 0...15 • Durante o envio, o valor do índice é usado para selecionar um texto para
NOTA: 0 corresponde à enviar a partir da tabela Mensagens.
primeira cadeia da lista. • Ao receber, o valor corresponde ao índice na tabela Comandos, que
corresponde aos textos recebidos.

VAD De -214748364 a 2147483647 • Ao enviar, o valor em %SEND_RECV_SMSi.VADsubstitui o espaço


reservado $VAD no texto do SMS.
• Ao receber, o valor em %SEND_RECV_SMSi.VAD contém o valor em
que o espaço reservado$VAD é inserido no SMS armazenado na tabela
Comandos.
VBD De -214748364 a 2147483647 • Ao enviar, o valor em %SEND_RECV_SMSi.VBDsubstitui o espaço
reservado $VBD no texto do SMS.
• Ao receber, o valor em %SEND_RECV_SMSi.VBD contém o valor em
que o espaço reservado$VBD é inserido no SMS armazenado na tabela
Comandos.
MASKPHONE 0000000000000000 bin para O valor inicial da máscara.
1000000000000000 bin
• Ao enviar, esta máscara é utilizada para selecionar o destinatário do
SMS da tabela Números de telefone.
Exemplo: 0000000000000010 bin = o SMS é enviado para o segundo
número de telefone (índice 1) listado na tabela Números de telefone.
• Ao receber, a máscara é aplicada à tabela Números de telefone para
criar uma lista de números de telefone de origem válidos. Um bit da
máscara indica que o número de telefone foi usado para enviar o SMS
para o controlador lógico.
Exemplo: 0000000000000100 bin significa que o terceiro número de
telefone da lista de números de telefone (índice 2) enviou o SMS.

Comentário Texto definido pelo usuário Um comentário a associar a este objeto.

208 EIO0000003295.03
Objetos de comunicação

Objetos
O bloco de função %SEND_RECV_SMS possui os objetos a seguir:

Objeto Descrição Valor

%SEND_RECV_SMSi.LINK Seleção de portas Consulte Propriedades, página 207. Pode


ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%SEND_RECV_SMSi.TIMEOUT Tempo limite do bloco de funções Consulte Propriedades, página 207. Pode
ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%SEND_RECV_SMSi.INDEX Índice nas mensagens ou tabelas de Consulte Propriedades, página 207. Pode
comando ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%SEND_RECV_SMSi.VAD VAD - espaço reservado A Consulte Propriedades, página 207. Pode


ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%SEND_RECV_SMSi.VBD VBD - espaço reservado B Consulte Propriedades, página 207. Pode


ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%SEND_RECV_SMSi.MASKPHONE Máscara para selecionar entradas na tabela Consulte Propriedades, página 207. Pode
de números de telefone ser lido e escrito. Pode ser modificado em
uma tabela de animações.

%SEND_RECV_SMSi.COMMERROR Códigos de erros de comunicação Consulte Códigos de erros de


comunicação, página 203. Pode ser
somente lido. Pode ser modificado em uma
tabela de animações.

%SEND_RECV_SMSi.OPERERROR Códigos de erros de operação Consulte Códigos de erros de operação,


página 203. Pode ser somente lido. Pode
ser modificado em uma tabela de
animações.

%SEND_RECV_SMSi.DONE Execução concluída com sucesso Consulte Saídas, página 202. Pode ser
somente lido. Pode ser modificado em uma
tabela de animações.

%SEND_RECV_SMSi.BUSY Execução em progresso Consulte Saídas, página 202. Pode ser


somente lido. Pode ser modificado em uma
tabela de animações.

%SEND_RECV_SMSi.ABORTED Execução cancelada Consulte Saídas, página 202. Pode ser


somente lido. Pode ser modificado em uma
tabela de animações.

%SEND_RECV_SMSi.ERROR Foi detetado um erro Consulte Saídas, página 202. Pode ser
somente lido. Pode ser modificado em uma
tabela de animações.

Diagramas de temporização
Consulte Comportamento do sinal dos blocos de função com a entrada Execute,
página 210.

EIO0000003295.03 209
Objetos de comunicação

Diagramas de temporização para blocos de função do


objeto de comunicação.
Exemplos de diagramas de temporização
Exemplo 1
Execução concluída sem erro:

Exemplo 2
Execução concluída com erro:

Exemplo 3
Bloco de função abortado pelo aplicativo:

210 EIO0000003295.03
Objetos de comunicação

Se Execute já tiver sido redefinido como FALSO quando a solicitação de


interrupção ocorreu, o Abort é definido como VERDADEIRO para apenas um
ciclo.

(1) Defina como TRUE apenas para um ciclo, uma vez que Execute já foi definido
como FALSE.

Exemplo 4
Execução concluída sem erro após Execute ter sido definido como FALSO.

(1) Defina como TRUE apenas para um ciclo, uma vez que Execute já foi definido
como FALSE.

EIO0000003295.03 211
Funções definidas pelo usuário

Funções definidas pelo usuário


Apresentação
Visão geral
Uma função definida pelo usuário permite que você crie novas funções com um
ou mais parâmetros de entrada, variáveis locais e um valor de retorno. Funções
definidas pelo usuário são armazenadas como parte do projeto EcoStruxure
Machine Expert - Basic.
Você pode chamar as funções definidas pelo usuário:
• Na tarefa principal
• Nas tarefas periódicas
• POUs livres
Para criar funções definidas pelo usuário, o aplicativo deve ser configurado com
um nível funcional (consulte EcoStruxure Machine Expert - Básico, Guia de
instruções) de pelo menos Nível 6.0.
Para obter mais informações sobre o uso de funções definidas pelo usuário,
consulte o EcoStruxure Machine Expert - Basic Guia de instruções - Funções
definidas pelo usuário (consulte EcoStruxure Machine Expert - Básico, Guia de
instruções).

212 EIO0000003295.03
Blocos de função definidos pelo usuário

Blocos de função definidos pelo usuário


Apresentação
Visão geral
Um bloco de função definido pelo usuário permite que você crie novos blocos de
função com um ou mais parâmetros de entrada e saída, variáveis locais e um
valor de retorno. Blocos de função definidos pelo usuário são armazenados como
parte do projeto EcoStruxure Machine Expert - Basic.
Você pode chamar os blocos de função definidos pelo usuário:
• Na tarefa principal
• Nas tarefas periódicas
• Eventos
• POUs livres
Para criar blocos de funções definidos pelo usuário, o aplicativo deve ser
configurado com um nível funcional (consulte EcoStruxure Machine Expert -
Básico, Guia de instruções) de pelo menos Nível 6.0.
Para obter mais informações sobre o uso de blocos de funções definidos pelo
usuário, consulte o EcoStruxure Machine Expert - Basic Guia de instruções -
Blocos de funções definidos pelo usuário.

EIO0000003295.03 213
Funções de relógio

Funções de relógio
Visão geral
Este capítulo descreve as funções de gerenciamento de tempo para
controladores.

Funções de relógio
Introdução
Em controladores lógicos equipados com um recurso de relógio de tempo real
(Real-Time Clock - RTC), deve se utilizar as funções de relógio de hora do dia
quando EcoStruxure Machine Expert - Basic estiver conectado ao controlador
lógico:
• RTC blocos de funções, página 169 são utilizados para ler a hora e a data no
RTC, ou atualizar o RTC no controlador lógico com hora e data definidas pelo
usuário.
• Os blocos de funções de Agendamento , página 164 são utilizados para
controlar ações em momentos predefinidos ou calculados.
• O Selo de hora/data, página 214 é utilizado para designar horários e datas a
eventos e para medir a duração do evento.
O relógio de hora do dia pode ser definido por um programa, página 214. A
bateria do controlador facilita as definições do Relógio para continuar funcionando
por até 1 ano quando o controlador é desligado. O controlador não possui uma
bateria recarregável. A bateria tem uma vida útil média de 4 anos e deve ser
substituída antes do fim da vida útil. A fim de não perder os dados durante a
substituição da bateria, troque a bateria em um período de 120 segundos após a
bateria ter sido removida do controlador.
O relógio de hora do dia possui um formato de 24 horas e leva em conta os anos
bissextos.

Carimbo de data e hora


Introdução
As palavras do sistema %SW49 a %SW53 contêm a data e hora atuais em formato
BCD que é útil para a exibição ou para a transmissão a um dispositivo periférico.
Essas palavras do sistema podem ser utilizadas para armazenar a data e hora de
um evento.
As instruções BTI são utilizadas para converter datas e horas do formato BCD
para o formato binário. Para mais informações, consulte instruções de conversão
BCD/Binário, página 59.

Programando um evento
Para associar uma data a um evento, basta utilizar operações de designação
para transferir os conteúdo de palavras do sistema para palavras da memória, e
então processar essas palavras de memória (por exemplo, transmissão para uma
unidade de monitor utilizando a instrução EXCH).

214 EIO0000003295.03
Funções de relógio

Exemplo de programação
Este exemplo mostra como atribuir data a uma borda de subida na entrada %
I0.1:

Degrau Instrução

0 LDR %I0.1
[%MW11:5:=%SW49:5]

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.
Uma vez que um evento é detectado, a tabela de palavras contém:

Codificando Byte mais relevante Byte menos relevante

%MW11 - Dia da semana (1)

%MW12 00 Segundo

%MW13 Hora Minuto


%MW14 Mês Dia
%MW15 Século Ano
(1) 1 = Segunda-feira, 2 = Terça-feira, 3 = Quarta-feira, 4 = Quinta-feira, 5 = Sexta-feira, 6 =
Sábado, 7 = Domingo

Exemplo de tabela de palavras


Data de exemplo para 13:40:30 na Segunda-feira 03 de Junho de 2013:

Palavra Valor (hex) Significado

%MW11 0001 Segunda-feira

%MW12 0030 30 segundos

%MW13 1340 13 horas, 40 minutos

%MW14 0603 06 = 3 de Junho


%MW15 2013 2013

Data e hora da última parada


As palavras do sistema %SW54 a %SW57 contêm a data e hora da última
interrupção, e a palavra %SW58 contêm o código mostrando a causa da última
interrupção, em formato BCD.

EIO0000003295.03 215
Funções de relógio

Definir data e hora


Introdução
Atualize as configurações de hora e a data no controlador lógico utilizando um
dos seguintes métodos:
• Utilizando a guia Gerenciamento de RTC na guia Colocar em
funcionamento do EcoStruxure Machine Expert - Basic. Este método está
disponível apenas no modo online (consulte EcoStruxure Machine Expert -
Básico, Guia de instruções).
Escolha entre estes dois métodos:
◦ Manual: esse método exibe um selecionador de hora/data e permite a
escolha manual da hora a ser definida no controlador lógico.
◦ Automático: esse método utiliza a hora do PC no qual o EcoStruxure
Machine Expert - Basic está em execução.
Para obter mais detalhes, consulte Gerenciamento de RTC (consulte
EcoStruxure Machine Expert - Básico, Guia de instruções).
• Em um programa, utilizando blocos de funções RTC, página 169.
• No modo online, ao atualizar as palavras do sistema, utilizando blocos de
operação direta ou programaticamente, %SW49 para %SW53 ou palavra de
sistema %SW59.
NOTA: A data e hora podem ser definidas somente quando o recurso RTC
estiver disponível no controlador lógico (consulte o guia de programação do
controlador lógico).

Utilizando de %SW49 a %SW53


Para utilizar as palavras do sistema de %SW49 a %SW53 para definir data e hora, o
bit %S50 deve ser definido como 1. Enquanto %S50 estiver definido como 1,
palavras de sistema %SW49 para %SW53 não serão mais atualizadas pelo
controlador. Em uma borda de descida de %S50 (%S50 definido como 0), o RTC
interno do controlador é atualizado pelos valores em %SW49 para %SW53. O
controlador retoma então a atualização de %SW49 a %SW53 utilizando o RTC.
Esta tabela lista as palavras do sistema contendo valores de data e hora atuais
(em BCD) para as funções do relógio em tempo real (RTC):

Palavra do sistema Descrição

%SW49 xN Dia da semana (N=1 para Segunda-feira)

%SW50 00SS: segundos

%SW51 HHMM: hora e minuto


%SW52 MMDD: mês e dia
%SW53 CCYY: século e ano

Consulte o guia de programação do controlador para uma lista completa de bits e


palavras do sistema.
Exemplo de programação:

Degrau Instrução Comentário

0 LD %S50 –
R %S50
1 LD %I0.1 Consulte Instrução para conversão BCD/Binário,
[%SW50:=%MW11] página 59.
[%SW51:=%MW12]
[%SW52:=%MW13]
[%SW53:=%MW14]
S %S50

216 EIO0000003295.03
Funções de relógio

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.
As palavras %MW11 a %MW14 contêm a nova data e hora (consulte Revisão do
código BCD, página 59) e corresponde à codificação das palavras %SW50 a %
SW53.
NOTA: %SW49 (Dia da semana) é calculado automaticamente baseado na
data fornecida.
A tabela de palavras deve conter nova data e hora:

Codificando Byte mais relevante Byte menos relevante

%MW11 – Segundo

%MW12 Hora Minuto


%MW13 Mês Dia
%MW14 Século Ano

Exemplo de dados para 03 de Junho de 2013:

Palavra Valor (hex) Significado

%MW11 0030 30 segundos

%MW12 1340 13 horas, 40 minutos

%MW13 0603 06 = 3 de Junho


%MW14 2013 2013

Utilizando o %SW59
Outro método de atualizar a data e hora é utilizando o bit %S59 e a palavra %SW59
do sistema de ajuste de data.
Definir o bit %S59 como 1 permite o ajuste da data e hora atuais pela palavra %
SW59. %SW59 acresce ou decresce cada um dos componentes de data e hora em
uma borda de subida.
Esta tabela descreve cada bit da palavra de sistema %SW59 para o ajuste dos
parâmetros de data e hora:

Acréscimo Decréscimo Parâmetro


Bit 0 Bit 8 Dia da semana(1)

Bit 1 Bit 9 Segundos

Bit 2 Bit 10 Minutos


Bit 3 Bit 11 Horas
Bit 4 Bit 12 Dias
Bit 5 Bit 13 Mês
Bit 6 Bit 14 Anos
Bit 7 Bit 15 Séculos(1)

(1) Dia da semana e séculos não podem ser modificados (acréscimo ou decréscimo) pelo usuário.

Consulte o guia de programação do controlador para uma lista completa de bits e


palavras do sistema.

EIO0000003295.03 217
Funções de relógio

Exemplo de aplicativo
Este painel frontal é criado para modificar hora, minutos e segundos do relógio
interno.

Descrição dos comandos:


• O interruptor Horas/Minutos/Segundos seleciona a exibição de hora a ser
alterada utilizando as entradas %I0.2, %I0.3 e %I0.4 respectivamente.
• Apertar o botão "+" acresce a exibição de tempo selecionada utilizando a
entrada %I0.0.
• Apertar o botão "-" decresce a exibição de tempo selecionada utilizando a
entrada %I0.1.
Este programa lê as entradas do painel e define o relógio interno:

Degrau Instrução Comentário

0 LD %M0 –
ST %S59
1 LD %I0.2 Hora
ANDR %I0.0
ST %SW59:X3
2 LD %I0.2 –
ANDR %I0.1
ST %SW59:X11
3 LD %I0.3 Minuto
ANDR %I0.0
ST %SW59:X2
4 LD %I0.3 –
ANDR %I0.1
ST %SW59:X10
5 LD %I0.4 Segundo
ANDR %I0.0
ST %SW59:X1
6 LD %I0.4 –
ANDR %I0.1
ST %SW59:X9

NOTA: Consulte o procedimento de reversibilidade, página 14 para obter o


Diagrama Ladder equivalente.

218 EIO0000003295.03
Glossário
A
ASCII:
(Código padrão americano para intercâmbio de informações) Um protocolo para
representação de caracteres alfanuméricos (letras, números, alguns gráficos e
caracteres de controle).

B
bloco de funções:
Uma unidade de programação que tem uma ou mais entradas e retorna uma ou
mais saídas. FBs são chamados por uma instância (cópia de bloco de funções
com nome e variáveis dedicados) e cada instância tem um estado persistente
(saídas e variáveis internas) a de uma chamada à outra.
Exemplos: temporizadores, contadores

D
%:
De acordo com o padrão IEC, % é um prefixo que identifica os endereços de
memória interna no controlador lógico para armazenar o valor das variáveis do
programa, constantes, E/S e assim por diante.

E
elemento condicional:
Permite implementar condições no programa no modo offline.

elemento de loop:
Permite implementar uma sequência de instruções no programa em modo offline.

entrada analógica:
Converte os níveis de voltagem ou corrente recebida em valores numéricos.
Você pode armazenar e processar esses valores no controlador lógico.

L
linguagem da lista de instruções:
Um programa gravado na linguagem da lista de instruções que é composto de
uma série de instruções com base em textos executadas sequencialmente pelo
controlador. Cada instrução inclui um número de linha, um código de instrução e
um operando (consulte a IEC 61131-3).

linguagem do diagrama ladder:


Uma representação gráfica das instruções de um programa de controlador com
símbolos para contatos, bobinas e blocos em uma série de degraus executados
sequencialmente por um controlador (consulte a IEC 61131-3).

Q
%Q:
De acordo com o padrão IEC, %Q representa um bit de saída (por exemplo um
objeto de linguagem de um tipo digital OUT).

EIO0000003295.03 219
R
registro de dados:
Armazena dados permanentemente de objetos ou sequências.

RTC:
(relógio em tempo real) Um relógio e calendário alimentado por bateria que
funciona continuamente, mesmo quando o controlador não é alimentado pela
bateria.

S
saída analógica:
Converte valores numéricos no controlador lógico e emite níveis de voltagem e
corrente proporcionais.

220 EIO0000003295.03
D
Índice decréscimo ...........................................................54
DEG_TO_RAD .....................................................71
A DINT_TO_REAL ...................................................72
divisão..................................................................54
ABS .....................................................................68 %DR .................................................................. 153
ACOS...................................................................70 Drum
adicionar...............................................................54 configuration.................................................... 154
AND .....................................................................43 description....................................................... 153
ANDF ...................................................................43 programming example...................................... 155
ANDN...................................................................43
ANDR...................................................................43
ASCII E
exemplos ........................................................ 138
ASIN ....................................................................70 elemento condicional.............................................64
Assistente de degrau ........................................... 155 configurando .....................................................65
ATAN....................................................................70 elemento de loop...................................................66
aumento ...............................................................54 configurando .....................................................66
endereçamento
formato .............................................................22
B Objetos de E/S ..................................................22
EQUAL_ARR ........................................................88
bits do sistema estouro
%S18................................................................29 índice................................................................35
blocos de comparação estouro de índice...................................................35
inserção de expressões IL em.............................18 EXCH................................................................. 127
blocos de função exemplos, código fonte ..........................................14
Blocos de agendamento ................................... 164 EXP .....................................................................68
counter............................................................ 123 expressão de comparação
definido pelo usuário ........................................ 213 inserir em degraus de Diagramas Ladder.............18
descrição geral ..................................................36 EXPT ...................................................................68
Drum............................................................... 153
LIFO/FIFO register........................................... 147
message ......................................................... 129 F
princípios de programação ............................... 107
%READ_VAR .................................................. 178 FALLING
Relógio de tempo real (RTC) ............................ 169 operador ...........................................................48
%SEND_RECV_MSG ...................................... 194 ferramentas
%SEND_RECV_SMS ...................................... 199 Objetos da unidade .......................................... 177
shift bit register ................................................ 158 objetos de rede ................................................ 106
step counter .................................................... 161 FIND_ ..................................................................89
timer ............................................................... 111 formato do endereço de entrada/saída....................22
%WRITE_READ_VAR ..................................... 189 funções de relógio
%WRITE_VAR................................................. 184 carimbo de data e hora..................................... 214
blocos de função definidos pelo usuário ................ 213 definir data e hora ............................................ 216
blocos de operações visão geral....................................................... 214
inserir instruções de atribuição em ......................16 funções definidas pelo usuário ............................. 212
blocos de programação
programação e configuração ............................ 167
borda de descida I
deteção com instrução LDF ................................40 %I ........................................................................22
deteção com operador FALLING .........................40 Instrução NOP ......................................................63
borda de subida instruções
deteção com instrução LDR ................................39 aritmética ..........................................................54
deteção com operador RISING ...........................39 ASCII ................................................................74
ASCII para conversão de flutuante ......................78
booleano ...........................................................38
C comparação ......................................................50
%C..................................................................... 123 conversão de ângulo ..........................................71
cadeias de bits ......................................................32 conversão de ASCII para inteiro..........................75
cálculo..................................................................54 conversão de ASCII para palavra dupla ...............81
código fonte, usar exemplo ....................................14 conversão de flutuante para ASCII ......................80
COS.....................................................................70 conversão de inteiro para ASCII..........................77
counter conversão de inteiro/flutuante .............................72
configuration.................................................... 124 conversão de palavra dupla para ASCII ...............83
description....................................................... 123 END..................................................................62
exemplo de programação ................................. 126 intercâmbio ..................................................... 127
NOP .................................................................63
objetos de entrada/saída .................................. 104

EIO0000003295.03 221
pilha..................................................................84 configuration.................................................... 134
ROUND ............................................................74 description....................................................... 129
salto..................................................................63 programming example...................................... 137
SR ....................................................................67 %MF ....................................................................28
sub-rotina ..........................................................67 MIN_ARR .............................................................90
tabela de objetos ...............................................85 modbus
tabelas de objeto ...............................................87 pedidos e exemplos padrão .............................. 140
trigonométricas ..................................................70 %MSG ............................................................... 129
instruções aritméticas ............................................54 multiplicação.........................................................54
instruções booleanas.............................................38 %MW ...................................................................24
instruções da pilha
MPP .................................................................84
MPS .................................................................84 N
MRD .................................................................84
instruções de atribuição N..........................................................................47
cadeias de bits...................................................52
inserir em degraus de Diagramas Ladder.............16
numérico ...........................................................51 O
palavras ............................................................53 objetos
tabelas de objeto ...............................................86 definição de.......................................................20
instruções de comparação .....................................50 endereço direto..................................................34
instruções de conversão endereço indexado ............................................34
BCD/binário.......................................................59 estruturado ........................................................32
palavra simples/dupla.........................................61 indexados..........................................................34
instruções de deslocamento...................................58 rede ................................................................ 106
instruções de intercâmbio software .......................................................... 107
EXCH1............................................................ 127 tabelas ..............................................................32
EXCH2............................................................ 127 Objetos da unidade ............................................. 177
EXCH3............................................................ 127 objetos de bits
instruções END .....................................................62 bloco de funções................................................37
instruções lógicas..................................................57 objetos de bits de memória
instruções numéricas descrição ..........................................................21
mudança ...........................................................58 objetos de palavra dupla
instruções SR (sub-rotina)......................................67 bloco de funções................................................37
INT_TO_REAL......................................................72 descrição ..........................................................28
%IW .....................................................................22 objetos de palavras
%IWS...................................................................22 bloco de funções................................................37
descrição ..........................................................24
objetos de ponto flutuante
K descrição ..........................................................28
%KD ....................................................................28 objetos de rede ................................................... 106
%KF.....................................................................28 OCCUR_ARR .......................................................91
%KW....................................................................24 operações
inserir em degraus de Diagramas Ladder.............16
operador NOT.......................................................47
operadores
L AND..................................................................43
LD........................................................................40 atribuição ..........................................................42
LDF......................................................................40 carga ................................................................40
LDN .....................................................................40 FALLING ...........................................................48
LDR ............................................................... 39–40 NOT..................................................................47
LIFO/FIFO register OR....................................................................44
configuration.................................................... 148 RISING .............................................................48
description....................................................... 147 XOR .................................................................45
FIFO ............................................................... 151 operadores AND ...................................................43
LIFO ............................................................... 150 operadores de atribuição .......................................42
programming example...................................... 152 operadores de carga .............................................40
LKUP ...................................................................94 operadores OR .....................................................44
LN........................................................................68 operadores OR exclusivos .....................................45
LOG .....................................................................68 OR .......................................................................44
ORF .....................................................................44
ORN.....................................................................44
M ORR.....................................................................44
%M ......................................................................21
MAX_ARR ............................................................90
%MD ....................................................................28
P
MEAN ..................................................................97 palavras do sistema
message %SW17.............................................................29
PID .................................................................... 172
222 EIO0000003295.03
processamento numérico T
atribuição ..........................................................51
visão geral.........................................................51 tabelas
instruções em ....................................................85
Propriedades %Xi (etapa Grafcet) ........................ 175
TAN......................................................................70
Propriedades da etapa Grafcet............................. 175
timer
configuration.................................................... 111
description....................................................... 111
Q programming example...................................... 122
%Q ......................................................................22 TOF type ......................................................... 116
%QW ...................................................................22 TON type......................................................... 113
%QWS .................................................................22 TP type ........................................................... 119
%TM .................................................................. 111
TRUNC ................................................................68
R
R.................................................................. 42, 147 U
RAD_TO_DEG .....................................................71
raiz quadrada........................................................54 usar exemplos de código fonte ...............................14
READ_IMM_IN .....................................................99
%READ_VAR ..................................................... 178
configuração.................................................... 182 V
descrição ........................................................ 178
valor absoluto .......................................................54
exemplo de programação ................................. 184
REAL_TO_DINT ...................................................72
REAL_TO_INT......................................................72
registro de dados ................................................ 173 W
configurando ................................................... 174 WRITE_IMM_OUT .............................................. 100
restante ................................................................54 %WRITE_READ_VAR......................................... 189
RISING configuração.................................................... 191
operador ...........................................................48 descrição ........................................................ 189
ROL_ARR ............................................................92 exemplo de programação ................................. 193
ROR_ARR............................................................92 %WRITE_VAR .................................................... 184
RTC configuração.................................................... 186
configuration.................................................... 171 descrição ........................................................ 184
exemplo de programação ................................. 189

S
%S ................................................................. 21, 42 X
%SBR ................................................................ 158 %X .......................................................................21
%SC .................................................................. 161 XOR.....................................................................45
%SCH ................................................................ 164 XORF...................................................................45
schedule blocks XORN ..................................................................45
descrição ........................................................ 164 XORR ..................................................................45
%SEND_RECV_MSG ......................................... 194
configuração.................................................... 196
descrição ........................................................ 194
exemplo de programação ................................. 198
%SEND_RECV_SMS.......................................... 199
configuração.................................................... 205
descrição ........................................................ 199
shift bit register
configuração.................................................... 159
descrição ........................................................ 158
programming example...................................... 160
SIN ......................................................................70
SORT_ARR ..........................................................93
SQRT...................................................................68
ST........................................................................42
step counter
configuração.................................................... 162
descrição ........................................................ 161
exemplo de programação ................................. 163
STN .....................................................................42
subtrair .................................................................54
SUM_ARR............................................................87
%SW....................................................................24
SWAP ..................................................................98

EIO0000003295.03 223
Schneider Electric
35 rue Joseph Monier
92500 Rueil Malmaison
France
+ 33 (0) 1 41 29 70 00
www.se.com

Uma vez que padrões, especificações e design mudam de vez em


quando, peça para confirmar as informações fornecidas nesta
publicação.

© 2022 Schneider Electric. Todos os direitos reservados.


EIO0000003295.03

Você também pode gostar