Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Instruções Gerais 
dos Controladores 
Logix5000™
1756-Lx, 1769-Lx, 1789-Lx, 1794-Lx, 
PowerFlex 700S
 
Manual de Referência
Informações Importantes 
ao Usuário
Por causa da diversidade de usos dos produtos descritos nesta 
publicação, os responsáveis pela aplicação e usos deste equipamento 
de controle devem certificar-se de que todas as etapas necessárias 
foram tomadas para garantir que cada aplicação e uso cumpram todos 
os requisitos de desempenho e segurança, incluindo todas as leis, 
regulamentações, códigos e padrões aplicáveis. Em nenhum momento 
a Rockwell Automation (Allen-Bradley) será responsável por danos 
indiretos ou que possam vir acontecer como resultado do uso ou a 
aplicação destes produtos.
As ilustrações, gráficos, exemplos de programas e de layout mostrados 
neste manual são apenas para fins ilustrativos. Visto que há diversas 
variáveis e requisitos associados a qualquer instalação em especial, a 
Rockwell Automation/Allen-Bradley não assume a responsabilidade 
(incluindo a responsabilidade por propriedade intelectual) pelo uso real 
baseado nos exemplos mostrados nesta publicação.
A publicação SGI-1.1, Diretrizes de Segurança para Aplicação, 
Instalação e Manutenção dos Dispositivos de Controle Eletrônico 
(disponível no escritório local da Rockwell Automation/Allen-Bradley), 
descreve algumas diferenças importantes entre os equipamentos 
eletrônicos e dispositivos eletromecânicos, que devem ser levadas em 
consideração ao utilizar produtos como os descritos nesta publicação.
É proibida a reprodução, parcial ou total, deste manual sem a 
permissão por escrito da Rockwell Automation.
Ao longo deste manual, usamos observações a fim de chamar a sua 
atenção para algumas considerações de segurança. As anotações a 
seguir acompanham declarações que ajudam você a identificar, evitar 
um perigo potencial e a reconhecer as suas conseqüências:
Allen-Bradley, ControlLogix, DH+, Logix5000, Logix5550, CLP-2, CLP-3, CLP-5 RSLinx, RSLogix 5000, RSNetWorx e SLC são 
marcas da Rockwell Automation
ControlNet é uma marca registrada da ControlNet International, Ltda.
Ethernet é uma marca registrada da Digital Equipment Corporation, Intel e Xerox Corporation.
ATENÇÃO
!
Identifica as informações sobre práticas ou 
circunstâncias que podem causar danos pessoais ou 
a morte, danos à propriedade ou perdas econômicas.
IMPORTANTE Identifica as informações críticas para aplicação e 
compreensão bem-sucedidas do produto.
Suporte da Rockwell 
Automation
Antes de entrar em contato com a Rockwell Automation para 
assistência técnica, sugerimos que você revise as informações sobre 
as localizações de falhas contidas nesta primeira publicação.
Caso o problema persista, telefone para o representante local da 
Rockwell Automation ou entre em contato com a Rockwell 
Automation por:
Telefone Estados 
Unidos/Canadá
1.440.646.5800
Outras 
Localidades
Você pode obter o número do telefone em seu 
país através da Internet:
1. Acesse o site http://www.ab.com
2. Clique em Product Support 
(http://support.automation.rockwell.com)
3. Em Support Centers, clique em Contact 
Information
Internet ⇒ 1. Acesse o site http://www.ab.com
2. Clique em Product Support 
(http://support.automation.rockwell.com)
Notas:
Resumo das Alterações
Introdução A versão desse documento contém informações novas e atualizadas. 
Informações Atualizadas Este documento contém as seguintes alterações:
• Agora, este documento inclui texto estruturado, além da lógica 
ladder e bloco de funções.
• O início de cada capítulo lista as linguagens disponíveis para as 
instruções descritas no capítulo.
• A tabela de execução de cada instrução inclui uma condição 
postscan.
Este documento contém estas alterações específicas:
Alteração: Consulte o 
capítulo:
As instruções BAND, BOR, BXOR e BNOT foram adicionadas a este 
manual para que o bitwise e as instruções de lógica estejam no 
mesmo manual. Elas foram removidas do Logix5000 Controllers 
Process Control and Drives Instruction Set Reference Manual, 
publicação 1756-RM006.
6
A fonte para uma instrução SIZE pode ser um tag do array. Você não 
precisa mais especificar o primeiro elemento no array.
7
Adição da instrução JXR que somente era compatível com os 
controladores SoftLogix5800
10
Adição das instruções EOT, SFP e 
SFR
10
O Apêndice A contém informações extras sobre retenção de IREFs e 
OREFs. IREFs e OREFs podem usar o mesmo nome de tag sem alterar 
os valores de IREFs para um scan.
A
Um novo apêndice explica como programar em texto estruturado. C
1 Publicação 1756-RM003F-PT-P - Maio 2002
2 Resumo das Alterações 
Notas:
Publicação 1756-RM003F-PT-P - Maio 2002
Localizador de Instrução
Onde Encontrar uma 
Instrução
Use este localizador para encontrar detalhes de referência sobre as 
instruções do Logix (as instruções em cinza estão disponíveis em 
outros manuais). Este localizador também lista as linguagens de 
programação que estão disponíveis para as instruções.
Se o localizador listar: A instrução está documentada em:
um número de página este manual
controle de processo Manual de Referência do Conjunto de Instruções dos Inversores e Controle de Processo dos 
Controladores Logix5000, publicação 1756-RM006
controle de posicionamento (motion) Logix5000 Controllers Motion Instruction Set Reference Manual, publicação 1756-RM007
Instrução: Local: Linguagens:
ABL 16-5 lógica ladder
texto estruturado
ABS 5-26 lógica ladder
texto estruturado
bloco de funções
ACB 16-8 lógica ladder
texto estruturado
ACL 16-10 lógica ladder
texto estruturado
ACOS 13-10 texto estruturado
ACS 13-10 lógica ladder
bloco de funções
ADD 5-5 lógica ladder
texto estruturado
bloco de funções
AFI 10-22 lógica ladder
AHL 16-12 lógica ladder
texto estruturado
ALM controle de 
processo
texto estruturado
bloco de funções
AND 6-21 lógica ladder
texto estruturado
bloco de funções
ARD 16-15 lógica ladder
texto estruturado
ARL 16-18 lógica ladder
texto estruturado
ASIN 13-8 texto estruturado
ASN 13-8 lógica ladder
bloco de funções
ATAN 13-12 texto estruturado
ATN 13-12 lógica ladder
bloco de funções
AVE 7-35 lógica ladder
AWA 16-22 lógica ladder
texto estruturado
AWT 16-26 lógica ladder
texto estruturado
BAND 6-33 texto estruturado
bloco de funções
BNOT 6-40 texto estruturado
bloco de funções
BOR 6-35 texto estruturado
bloco de funções
BRK 11-5 lógica ladder
BSL 8-2 lógica ladder
BSR 8-5 lógica ladder
BTD 6-11 lógica ladder
BTDT 6-14 texto estruturado
bloco de funções
BTR (tipo MSG) 3-2 lógica ladder
texto estruturado
BTW (tipo MSG) 3-2 lógica ladder
texto estruturado
BXOR 6-38 texto estruturado
bloco de funções
CLR 6-17 lógica ladder
texto estruturado
Instrução: Local: Linguagens:
1 Publicação 1756-RM003F-PT-P - Maio 2002
2 Localizador de Instrução 
CMP 4-2 lógica ladder
CONCAT 17-3 lógica ladder
texto estruturado
COP 7-25 lógica ladder
texto estruturado
COS 13-4 lógica ladder
texto estruturado
bloco de funções
CPS 7-25 lógica ladder
texto estruturado
CPT 5-2 lógica ladder
CTD 2-25 lógica ladder
CTU 2-22 lógica ladder
CTUD 2-29 texto estruturado
bloco de funções
D2SD controle de 
processo
texto estruturado
bloco de funções
D3SD controle de 
processo
texto estruturado
bloco de funções
DDT 12-9 lógica ladder
DEDT controle de 
processo
texto estruturado
bloco de funções
DEG 15-2 lógica ladder
texto estruturado
bloco de funções
DELETE 17-5 lógica ladder
texto estruturado
DERV controle de 
processo
texto estruturado
bloco de funções
DFF controle de 
processo
texto estruturado
bloco de funções
DIV 5-14 lógica ladder
texto estruturado
bloco de funções
DTOS 18-7 lógica ladder
texto estruturado
DTR 12-16 lógica ladder
EOT 10-24 lógica ladder
texto estruturado
EQU 4-7 lógica ladder
texto estruturado
bloco de funções
Instrução: Local: Linguagens:
ESEL controle de 
processo
texto estruturado
bloco de funções
FAL 7-6 lógica ladder
FBC 12-2 lógica ladder
FFL 8-8 lógica ladder
FFU 8-14 lógicaladder
FGEN controle de 
processo
texto estruturado
bloco de funções
FIND 17-7 lógica ladder
texto estruturado
FLL 7-31 lógica ladder
FOR 11-2 lógica ladder
FRD 15-9 lógica ladder
bloco de funções
FSC 7-17 lógica ladder
GEQ 4-10 lógica ladder
texto estruturado
bloco de funções
GRT 4-14 lógica ladder
texto estruturado
bloco de funções
GSV 3-29 lógica ladder
texto estruturado
HLL controle de 
processo
texto estruturado
bloco de funções
HPF controle de 
processo
texto estruturado
bloco de funções
INSERT 17-9 lógica ladder
texto estruturado
INTG controle de 
processo
texto estruturado
bloco de funções
JKFF controle de 
processo
texto estruturado
bloco de funções
JMP 10-2 lógica ladder
JSR 10-4 lógica ladder
texto estruturado
bloco de funções
JXR 10-13 lógica ladder
LBL 10-2 lógica ladder
LDL2 controle de 
processo
texto estruturado
bloco de funções
Instrução: Local: Linguagens:
Publicação 1756-RM003F-PT-P - Maio 2002
Localizador de Instrução 3
LDLG controle de 
processo
texto estruturado
bloco de funções
LEQ 4-18 lógica ladder
texto estruturado
bloco de funções
LES 4-22 lógica ladder
texto estruturado
bloco de funções
LFL 8-20 lógica ladder
LFU 8-26 lógica ladder
LIM 4-26 lógica ladder
bloco de funções
LN 14-2 lógica ladder
texto estruturado
bloco de funções
LOG 14-4 lógica ladder
texto estruturado
bloco de funções
LOWER 18-13 lógica ladder
texto estruturado
LPF controle de 
processo
texto estruturado
bloco de funções
MAAT controle de 
posicionamento 
(motion)
lógica ladder
texto estruturado
MAFR controle de 
posicionamento
lógica ladder
texto estruturado
MAG controle de 
posicionamento
lógica ladder
texto estruturado
MAH controle de 
posicionamento
lógica ladder
texto estruturado
MAHD controle de 
posicionamento
lógica ladder
texto estruturado
MAJ controle de 
posicionamento
lógica ladder
texto estruturado
MAM controle de 
posicionamento
lógica ladder
texto estruturado
MAOC controle de 
posicionamento
lógica ladder
texto estruturado
MAPC controle de 
posicionamento
lógica ladder
texto estruturado
MAR controle de 
posicionamento
lógica ladder
texto estruturado
Instrução: Local: Linguagens:
MAS controle de 
posicionamento
lógica ladder
texto estruturado
MASD controle de 
posicionamento
lógica ladder
texto estruturado
MASR controle de 
posicionamento
lógica ladder
texto estruturado
MATC controle de 
posicionamento
lógica ladder
texto estruturado
MAVE controle de 
processo
texto estruturado
bloco de funções
MAW controle de 
posicionamento
lógica ladder
texto estruturado
MAXC controle de 
processo
texto estruturado
bloco de funções
MCCP controle de 
posicionamento
lógica ladder
texto estruturado
MCD controle de 
posicionamento
lógica ladder
texto estruturado
MCR 10-18 lógica ladder
MDF controle de 
posicionamento
lógica ladder
texto estruturado
MDO controle de 
posicionamento
lógica ladder
texto estruturado
MDOC controle de 
posicionamento
lógica ladder
texto estruturado
MDR controle de 
posicionamento
lógica ladder
texto estruturado
MDW controle de 
posicionamento
lógica ladder
texto estruturado
MEQ 4-32 lógica ladder
texto estruturado
bloco de funções
MGS controle de 
posicionamento
lógica ladder
texto estruturado
MGSD controle de 
posicionamento
lógica ladder
texto estruturado
MGSP controle de 
posicionamento
lógica ladder
texto estruturado
MGSR controle de 
posicionamento
lógica ladder
texto estruturado
MID 17-11 lógica ladder
texto estruturado
Instrução: Local: Linguagens:
Publicação 1756-RM003F-PT-P - Maio 2002
4 Localizador de Instrução 
MINC controle de 
processo
texto estruturado
bloco de funções
MOD 5-18 lógica ladder
texto estruturado
bloco de funções
MOV 6-3 lógica ladder
MRAT controle de 
posicionamento
lógica ladder
texto estruturado
MRHD controle de 
posicionamento
lógica ladder
texto estruturado
MRP controle de 
controle de 
posicionamento
lógica ladder
texto estruturado
MSF controle de 
controle de 
posicionamento
lógica ladder
texto estruturado
MSG 3-2 lógica ladder
texto estruturado
MSO controle de 
controle de 
posicionamento
lógica ladder
texto estruturado
MSTD controle de 
processo
texto estruturado
bloco de funções
MUL 5-11 lógica ladder
texto estruturado
bloco de funções
MUX controle de 
processo
bloco de funções
MVM 6-5 lógica ladder
MVMT 6-8 texto estruturado
bloco de funções
NEG 5-24 lógica ladder
texto estruturado
bloco de funções
NEQ 4-37 lógica ladder
texto estruturado
bloco de funções
NOP 10-23 lógica ladder
NOT 6-30 lógica ladder
texto estruturado
bloco de funções
NTCH controle de 
processo
texto estruturado
bloco de funções
Instrução: Local: Linguagens:
ONS 1-11 lógica ladder
OR 6-24 lógica ladder
texto estruturado
bloco de funções
OSF 1-16 lógica ladder
OSFI 1-16 texto estruturado
bloco de funções
OSR 1-14 lógica ladder
OSRI 1-14 texto estruturado
bloco de funções
OTE 1-6 lógica ladder
OTL 1-7 lógica ladder
OTU 1-9 lógica ladder
PI controle de 
processo
texto estruturado
bloco de funções
PID 12-19 lógica ladder
texto estruturado
PIDE controle de 
processo
texto estruturado
bloco de funções
PMUL controle de 
processo
texto estruturado
bloco de funções
POSP controle de 
processo
texto estruturado
bloco de funções
RAD 15-4 lógica ladder
texto estruturado
bloco de funções
RES 2-33 lógica ladder
RESD controle de 
processo
texto estruturado
bloco de funções
RET 10-4 e 11-6 lógica ladder
texto estruturado
bloco de funções
RLIM controle de 
processo
texto estruturado
bloco de funções
RMPS controle de 
processo
texto estruturado
bloco de funções
RTO 2-9 lógica ladder
RTOR 2-19 texto estruturado
bloco de funções
RTOS 18-9 lógica ladder
texto estruturado
Instrução: Local: Linguagens:
Publicação 1756-RM003F-PT-P - Maio 2002
Localizador de Instrução 5
SBR 10-4 lógica ladder
texto estruturado
bloco de funções
SCL controle de 
processo
texto estruturado
bloco de funções
SCRV controle de 
processo
texto estruturado
bloco de funções
SEL controle de 
processo
bloco de funções
SETD controle de 
processo
texto estruturado
bloco de funções
SFP 10-26 lógica ladder
texto estruturado
SFR 10-28 lógica ladder
texto estruturado
SIN 13-2 lógica ladder
texto estruturado
bloco de funções
SIZE 7-50 lógica ladder
texto estruturado
SNEG controle de 
processo
texto estruturado
bloco de funções
SOC controle de 
processo
texto estruturado
bloco de funções
SQI 9-2 lógica ladder
SQL 9-10 lógica ladder
SQO 9-6 lógica ladder
SQR 5-21 lógica ladder
bloco de funções
SQRT 5-21 texto estruturado
SRT 7-40 lógica ladder
texto estruturado
SRTP controle de 
processo
texto estruturado
bloco de funções
SSUM controle de 
processo
texto estruturado
bloco de funções
SSV 3-29 lógica ladder
texto estruturado
STD 7-45 lógica ladder
STOD 18-3 lógica ladder
texto estruturado
Instrução: Local: Linguagens:
STOR 18-5 lógica ladder
texto estruturado
SUB 5-8 lógica ladder
texto estruturado
bloco de funções
SWPB 6-18 lógica ladder
texto estruturado
TAN 13-6 lógica ladder
texto estruturado
bloco de funções
TND 10-16 lógica ladder
TOD 15-6 lógica ladder
bloco de funções
TOF 2-5 lógica ladder
TOFR 2-16 texto estruturado
bloco de funções
TON 2-2 lógica ladder
TONR 2-13 texto estruturado
bloco de funções
TOT controle de 
processo
texto estruturado
bloco de funções
TRN 15-11 lógica ladder
bloco de funções
TRUNC 15-11 texto estruturado
UID 10-20 lógica ladder
texto estruturado
UIE 10-20 lógica ladder
texto estruturado
UPDN controle de 
processo
texto estruturado
bloco de funções
UPPER 18-11 lógica ladder
texto estruturado
XIC 1-2 lógica ladder
XIO 1-4 lógica ladder
XOR 6-27 lógica ladder
texto estruturado
bloco de funções
XPY 14-6 lógica ladder
texto estruturado
bloco de funções
Instrução: Local: Linguagens:
Publicação 1756-RM003F-PT-P - Maio 2002
6 Localizador de Instrução 
Notas:
Publicação 1756-RM003F-PT-P - Maio 2002
Prefácio
Introdução Este manual é um dos diversosdocumentos de instrução baseado em 
Logix.
Quem Deve Utilizar este 
Manual
Este documento fornece ao programador detalhes sobre cada 
instrução disponível para um controlador baseado em Logix. Você já 
deve estar familiarizado sobre como o controlador baseado em Logix 
armazena e processa dados.
Os programadores novos devem ler todos os detalhes sobre uma 
instrução antes de usá-la. Já programadores mais experientes podem 
consultar as informações sobre as instruções para verificar os detalhes.
Tarefa/Meta: Documentos:
Programação do controlador para aplicações 
seqüenciais
Logix5000 Controllers General Instructions Reference Manual, publicação 
1756-RM003
Programação do controlador para aplicações 
de processo ou inversores 
Manual de Referência do Conjunto de Instruções dos Inversores e Controle de 
Processo dos Controladores Logix5000 , publicação 1756-RM006
Programação do controlador para aplicações 
de posicionamento (motion)
Logix5000 Controllers Motion Instructions Set Reference Manual, 
publicação 1756-RM007
Importação de um arquivo de texto ou tags 
em um projeto
Logix5000 Controllers Import/Export Reference Manual, publicação 1756-RM084
Exportação de um projeto ou tags para um 
arquivo texto
Conversão de uma aplicação CLP-5 ou 
SLC 500 para uma aplicação Logix5000
Logix5550 Controller Converting PLC-5 ou SLC 500 Logic to Logix5550 Logic Reference 
Manual, publicação 1756-RM085
Você está aqui
1 Publicação 1756-RM003F-PT-P - Maio 2002
2 Prefácio 
Objetivo do Manual Este manual fornece uma descrição de cada instrução neste formato.
Os ícones a seguir ajudam a identificar as informações específicas da 
linguagem:
Essa seção: Fornece este tipo de informação:
Nome da instrução identifica a instrução
define se a instrução é de entrada ou de saída
Operandos lista todos os operandos da instrução
Estrutura da instrução lista os valores e os bits de status de controle da instrução, se houver
Descrição descreve o uso da instrução
define quaisquer diferenças quando a instrução estiver habilitada e desabilitada, se apropriado
Flags de Status Aritmético: define se a instrução interfere ou não nos flags de status aritmético
consulte o apêndice Atributos Comuns
Condições de Falha: define se a instrução gera falhas graves ou de advertência
se necessário, define o código e o tipo da falha
Execução define a maneira como a instrução opera
EXEMPLO fornece pelo menos um exemplo de programação em cada linguagem de programação disponível
inclui uma descrição explicando cada exemplo
se disponível em lógica ladder, descreve os operandos
se disponível em bloco de funções, descreve os operandos
Os pinos mostrados no bloco de funções padrão são somente pinos básicos. A 
tabela de operandos lista todos os pinos possíveis para um bloco de funções.
se disponível em texto estruturado, descreve os operandos
Este ícone: Indica esta linguagem de 
programação:
lógica ladder
texto estruturado
bloco de funções
Publicação 1756-RM003F-PT-P - Maio 2002
Prefácio 3
Informações Comuns para 
Todas as Instruções
O conjunto de instruções do Logix5000 possui alguns atributos 
comuns:
Convenções e Termos 
Relacionados
Energizar e desenergizar
Este manual usa energizar e desenergizar para definir o status de bits 
(booleanos) e valores (não booleanos):
Se um operando ou parâmetro suporta mais do que um tipo de dados, 
os tipos de dados em negrito indicam os tipos de dados ótimos. Uma 
instrução executa mais rapidamente e requer menos memória se todos 
os operandos da instrução usarem o mesmo tipo de dados ótimo, 
geralmente, DINT ou REAL.
Condição de linha de lógica ladder 
O controlador avalia as instruções de lógica ladder com base na 
condição da linha que antecede a instrução (entrada da condição da 
linha). Com base na entrada da condição da linha e na instrução, o 
controlador define a condição da linha seguindo a instrução (saída da 
condição da linha) que, por sua vez, afeta qualquer instrução 
subseqüente.
Para obter esta informação: Consulte este apêndice:
atributos comuns apêndice Atributos Comuns define:
• flags de status aritmético:
• tipos de dados
• palavras-chaves
atributos do bloco de funções apêndice Atributos do Bloco de Funções define:
• controle do programa e operador
• modos de temporização
Este termo: Significa:
energizar o bit está energizado em 1 (ON)
um valor está energizado em um número diferente de 
zero
desenergizar o bit está desenergizado em 0 (OFF)
todos os bits em um valor são desenergizados em 0
instrução de entrada
condição da 
entrada da linha
instrução de saída
condição da 
saída da linha
Publicação 1756-RM003F-PT-P - Maio 2002
4 Prefácio 
Se a condição da entrada da linha para uma instrução de entrada for 
verdadeira, o controlador avalia a instrução e energiza a condição da 
saída da linha com base nos resultados da instrução. Se a instrução for 
avaliada como verdadeira, a condição da saída da linha é verdadeira; 
Se a instrução for avaliada como falsa, a condição da saída da linha é 
falsa.
O controlador também efetua o prescan das instruções. O prescan é 
um scan especial de todas as rotinas no controlador. O controlador 
efetua o scan de todas as rotinas e sub-rotinas principais durante o 
prescan, mas ignora os saltos que poderiam pular a execução das 
instruções. O controlador executa todas as malhas FOR e chamadas 
de sub-rotinas. Se uma sub-rotina for chamada mais do que uma vez, 
ela é executada toda vez que é chamada. O controlador usa o prescan 
de instruções de lógica ladder para resetar as E/S não retentivas e os 
valores internos.
Durante o prescan, os valores de entrada não são atuais e as saídas 
não são escritas. As condições a seguir geram a prescan:
• Passagem de modo de Programa para Operação
• Entrada automática no modo de Operação de uma condição de 
energização.
A prescan não ocorre para um programa quando:
• O programa se torna determinado enquanto o controlador está 
operando.
• O programa não é determinado quando o controlador entra no 
modo Run.
Estados do bloco de funções
O controlador avalia as instruções do bloco de funções baseado no 
estado de diferentes condições.
Condição Possível: Descrição:
prescan O prescan para as rotinas do bloco de funções é igual a das rotinas de lógica ladder. A 
única diferença é que o parâmetro EnableIn para cada instrução do bloco de funções é 
desenergizada durante a prescan. 
primeiro scan da instrução O primeiro scan da instrução se refere à primeira vez que uma instrução é executada após o 
prescan. O controlador usa o primeiro scan da instrução para ler as entradas em corrente e 
determinar o estado apropriado em que se deve estar.
primeira execução da 
instrução
A primeira operação da instrução se refere a primeira vez que a instrução executa com uma 
nova instância de estrutura de dados. O controlador usa a primeira operação da instrução 
para gerar coeficientes e outros armazenamentos de dados que não se alteram para um 
bloco de funções após o descarregamento inicial.
Publicação 1756-RM003F-PT-P - Maio 2002
Prefácio 5
Toda instrução do bloco de funções também inclui os parâmetros 
EnableIn e EnableOut:
• as instruções do bloco de funções executam normalmente 
quando o EnableIn é energizado.
• Quando o EnableIn é desenergizado, a instrução do bloco de 
funções executa a lógica da prescan, a lógica da postscan ou 
apenas pula a execução do algoritmo normal.
• O EnableOut espelha o EnableIn, porém, se a execução do 
bloco de funções detecta uma condição de overflow, o 
EnableOut também é desenergizado.
• A execução do bloco de funções reinicia onde parou quando o 
EnableIn passa de desenergizado para energizado. Porém 
existem algumas instruções de bloco de funções que 
especificam funcionalidade especial, como reinicialização, 
quando o EnableIn passa de desenergizado para energizado. 
Para instruções do bloco de funções com parâmetros baseados 
no tempo, sempre quando o modo de temporização estiver no 
Oversample,a instrução sempre reiniciará onde parou quando o 
EnableIn passa de desenergizado para energizado.
Se o parâmetro EnableIn não estiver conectado, a instrução sempre 
executa como normal e o EnableIn se mantém energizado. Se 
desenergizar o EnableIn, este se alterará para energizar na próxima 
vez que a instrução executar.
IMPORTANTE Ao programar o bloco de funções, limite a amplitude das unidades 
de medida para +/-10+/-15 pois os cálculos de ponto flutuante 
interno são feitos através de um único ponto flutuante de precisão. 
As unidades de medida fora desta amplitude podem resultar em 
perda de precisão se os resultados ficarem próximos às limitações 
do único ponto flutuante de precisão (+/-10+/-38).
Publicação 1756-RM003F-PT-P - Maio 2002
6 Prefácio 
Notas:
Publicação 1756-RM003F-PT-P - Maio 2002
Conteúdo
Capítulo 1
Instruções Binárias
(XIC, XIO, OTE, OTL, OTU, ONS, 
OSR, OSF, OSRI, OSFI)
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1
Examinar Se Energizado (XIC) . . . . . . . . . . . . . . . . . . . . . . 1-2
Examinar Se Desenergizado (XIO) . . . . . . . . . . . . . . . . . . . 1-4
Energizar Saída (OTE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-6
Energizar Saída com Retenção (OTL) . . . . . . . . . . . . . . . . . 1-7
Desenergizar Saída com Retenção (OTU) . . . . . . . . . . . . . . 1-9
Monoestável (ONS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-11
Monoestável Sensível à Borda de Subida (OSR) . . . . . . . . . 1-14
Monoestável Sensível à Borda de Descida (OSF) . . . . . . . . 1-16
Monoestável Sensível à Borda de Subida com 
Entrada (OSRI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-18
Monoestável Sensível à Borda de Descida com 
Entrada (OSFI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-20
Capítulo 2
Instruções de Temporizador e 
Contador
(TON, TOF, RTO, TONR, TOFR, 
RTOR, CTU, CTD, CTUD, RES)
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1
Temporizador na Energização (TON). . . . . . . . . . . . . . . . . 2-2
Temporizador na Desenergização (TOF) . . . . . . . . . . . . . . 2-5
Temporizador Retentivo (RTO) . . . . . . . . . . . . . . . . . . . . . 2-9
Temporizador na Energização com Reset (TONR) . . . . . . . 2-13
Temporizador na Desenergização com Reset (TOFR) . . . . . 2-16
Temporizador Retentivo com Reset (RTOR) . . . . . . . . . . . . 2-19
Contador Crescente (CTU). . . . . . . . . . . . . . . . . . . . . . . . . 2-22
Contagem Decrescente (CTD) . . . . . . . . . . . . . . . . . . . . . . 2-25
Contagem Crescente/Decrescente (CTUD) . . . . . . . . . . . . . 2-29
Reset (RES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-33
Capítulo 3
Instruções de Entrada/Saída
(MSG, GSV, SSV)
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1
Mensagem (MSG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2
Códigos de Erro MSG . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-7
Códigos de Erro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-8
Códigos de Erro Estendido . . . . . . . . . . . . . . . . . . . . . . 3-9
Códigos de Erro do CLP e do SLC (.ERR) . . . . . . . . . . . 3-11
Códigos de Erro de Block-transfer . . . . . . . . . . . . . . . . 3-12
Especificação dos Detalhes da Configuração . . . . . . . . . . . 3-13
Especificação das Mensagens de Leitura e Escrita 
da Tabela de Dados CIP. . . . . . . . . . . . . . . . . . . . . . . . 3-14
Reconfiguração de um Módulo de E/S . . . . . . . . . . . . . 3-14
Especificar Mensagens CIP Generic. . . . . . . . . . . . . . . . 3-16
Especificação das mensagens do CLP-5. . . . . . . . . . . . . 3-17
Especificação das Mensagens do SLC . . . . . . . . . . . . . . 3-18
Especificação das Mensagens Block-transfer . . . . . . . . . 3-18
Especificação de Mensagens do CLP-3 . . . . . . . . . . . . . 3-19
Especificação das mensagens do CLP-2. . . . . . . . . . . . . 3-20
Exemplos de Configuração MSG . . . . . . . . . . . . . . . . . . . . 3-21
Especificação de Detalhes de Comunicação . . . . . . . . . . . . 3-22
Especificar um caminho . . . . . . . . . . . . . . . . . . . . . . . . 3-22
i Publicação 1756-RM003F-PT-P - Maio 2002
ii Conteúdo 
Especificar um Módulo de Comunicação ou Endereço do 
Módulo:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-26
Escolha de uma opção de cache: . . . . . . . . . . . . . . . . . 3-27
Obtenção do Valor do Sistema (GSV) e Definição 
do Valor do Sistema (SSV) . . . . . . . . . . . . . . . . . . . . . . . . . 3-29
Objetos GSV/SSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-30
Acesso ao objeto CONTROLLER . . . . . . . . . . . . . . . . . 3-31
Acesso ao objeto CONTROLLERDEVICE . . . . . . . . . . . . 3-32
Acesso ao objeto CST. . . . . . . . . . . . . . . . . . . . . . . . . . 3-34
Acesso ao objeto DF1 . . . . . . . . . . . . . . . . . . . . . . . . . 3-35
Acesso ao objeto FAULTLOG . . . . . . . . . . . . . . . . . . . . 3-38
Acesso ao objeto MESSAGE . . . . . . . . . . . . . . . . . . . . . 3-39
Acesso ao objeto MODULE . . . . . . . . . . . . . . . . . . . . . 3-41
Acesso ao objeto MOTIONGROUP . . . . . . . . . . . . . . . 3-42
Acesso ao objeto PROGRAM . . . . . . . . . . . . . . . . . . . . 3-43
Acesso ao objeto ROUTINE . . . . . . . . . . . . . . . . . . . . . 3-44
Acesso ao objeto SERIALPORT . . . . . . . . . . . . . . . . . . . 3-44
Acesso ao objeto TASK . . . . . . . . . . . . . . . . . . . . . . . . 3-46
Acesso ao objeto WALLCLOCKTIME . . . . . . . . . . . . . . . 3-46
Exemplo de Programação GSV/SSV . . . . . . . . . . . . . . . . . . 3-48
Obtenção de informações de falha . . . . . . . . . . . . . . . . 3-48
Configuração de flags de habilitação e desabilitação . . . 3-49
Capítulo 4
Instruções de Comparação 
(CMP, EQU, GEQ, GRT, LEQ, LES, 
LIM, MEQ, NEQ)
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1
Comparação (CMP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2
Expressões CMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4
Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4
Formatação de expressões . . . . . . . . . . . . . . . . . . . . . . 4-4
Determinação da seqüência da operação . . . . . . . . . . . 4-5
Uso de strings em uma expressão. . . . . . . . . . . . . . . . . 4-5
Igual (EQU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-7
Maior ou Igual a (GEQ). . . . . . . . . . . . . . . . . . . . . . . . . . . 4-10
Maior que (GRT). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-14
Menor ou Igual a (LEQ) . . . . . . . . . . . . . . . . . . . . . . . . . . 4-18
Menor Que (LES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-22
Limite (LIM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-26
Máscara Igual a (MEQ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-32
Inserção de um valor de máscara imediato . . . . . . . . . . 4-33
Diferente de (NEQ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-37
Capítulo 5
Instruções de 
Cálculo/Matemáticas
(CPT, ADD, SUB, MUL, DIV, MOD, 
SQR, SQRT, NEG, ABS)
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-1
Cálculo (CPT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-2
Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-3
Formatação de expressões . . . . . . . . . . . . . . . . . . . . . . 5-4
Determinação da seqüência da operação . . . . . . . . . . . 5-4
Adição (ADD). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-5
Subtração (SUB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-8
Publicação 1756-RM003F-PT-P - Maio 2002
Conteúdo iii
Multiplicação (MUL) . . . . . . . .. . . . . . . . . . . . . . . . . . . . . 5-11
Divisão (DIV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-14
Módulo (MOD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-18
Raiz Quadrada (SQR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-21
Negação (NEG). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-24
Valor Absoluto (ABS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-26
Capítulo 6
Instruções de 
Movimentação/Lógica
(MOV, MVM, BTD, MVMT, BTDT, 
CLR, SWPB, AND, OR, XOR, NOT, 
BAND, BOR, BXOR, BNOT)
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1
Movimentação (MOV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-3
Movimento com Máscara (MVM) . . . . . . . . . . . . . . . . . . . . 6-5
Inserção de um valor de máscara imediato . . . . . . . . . . 6-6
Movimentação com Máscara Com Arquivo-Alvo (MVMT) . . 6-8
Distribuição de Bits (BTD). . . . . . . . . . . . . . . . . . . . . . . . . 6-11
Distribuição de Bits com Arquivo-alvo (BTDT). . . . . . . . . . 6-14
Zeramento (CLR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-17
Swap (inversão) de Byte (SWPB) . . . . . . . . . . . . . . . . . . . . 6-18
AND (E) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-21
OR (OU). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-24
Ou Exclusivo (XOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-27
Complementação (NOT) . . . . . . . . . . . . . . . . . . . . . . . . . . 6-30
E Booleano (BAND) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-33
 (OU) Booleano (BOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-35
(Ou Exclusivo) Booleano (BXOR) . . . . . . . . . . . . . . . . . . . 6-38
NOT Booleano (BNOT). . . . . . . . . . . . . . . . . . . . . . . . . . . 6-40
Capítulo 7
InstruçõesInstruções de Array 
(Arquivo)/Miscelânea
(FAL, FSC, COP, CPS, FLL, AVE, 
SRT, STD, SIZE)
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-1
Seleção do Modo de Operação . . . . . . . . . . . . . . . . . . . . . 7-2
Modo ALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-2
Modo Numerical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-3
Modo Incremental . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-4
Aritmética de Arquivos (FAL). . . . . . . . . . . . . . . . . . . . . . . 7-6
expressões FAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-15
Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-15
Formatação de expressões . . . . . . . . . . . . . . . . . . . . . . 7-16
Determinação da seqüência da operação . . . . . . . . . . . 7-16
Comparação e Busca de Arquivo (FSC) . . . . . . . . . . . . . . . 7-17
Expressões FSC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-21
Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-22
Formatação de expressões . . . . . . . . . . . . . . . . . . . . . . 7-22
Determinação da seqüência da operação . . . . . . . . . . . 7-23
Uso de strings em uma expressão. . . . . . . . . . . . . . . . . 7-23
Cópia de Arquivo (COP) Arquivo de Cópia Síncrono (CPS). 7-25
Preenchimento de Arquivo (FLL) . . . . . . . . . . . . . . . . . . . . 7-31
Média de Arquivo (AVE) . . . . . . . . . . . . . . . . . . . . . . . . . . 7-35
Classificação de Arquivo (SRT) . . . . . . . . . . . . . . . . . . . . . 7-40
Desvio Padrão do Arquivo (STD) . . . . . . . . . . . . . . . . . . . 7-45
Tamanho em Elementos (SIZE) . . . . . . . . . . . . . . . . . . . . . 7-50
Publicação 1756-RM003F-PT-P - Maio 2002
iv Conteúdo 
Capítulo 8
Instruções de Array 
(Arquivo)/Deslocamento
(BSL, BSR, FFL, FFU, LFL, LFU)
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-1
Deslocamento de Bit para a Esquerda (BSL). . . . . . . . . . . . 8-2
Deslocamento de Bit para a Direita (BSR) . . . . . . . . . . . . . 8-5
Carga FIFO (FFL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-8
Descarga FIFO (FFU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-14
Carga LIFO (LFL). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-20
Descarga LIFO (LFU). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-26
Capítulo 9
Instruções do Seqüenciador
(SQI, SQO, SQL)
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-1
Entrada do Seqüenciador (SQI) . . . . . . . . . . . . . . . . . . . . . 9-2
Inserção de um valor de máscara imediato . . . . . . . . . . 9-3
Uso de SQI sem SQO. . . . . . . . . . . . . . . . . . . . . . . . . . 9-5
Saída do Seqüenciador (SQO) . . . . . . . . . . . . . . . . . . . . . . 9-6
Inserção de um valor de máscara imediato . . . . . . . . . . 9-7
Uso de SQI com SQO . . . . . . . . . . . . . . . . . . . . . . . . . 9-9
Reset da posição de SQO. . . . . . . . . . . . . . . . . . . . . . . 9-9
Carga do Seqüenciador (SQL) . . . . . . . . . . . . . . . . . . . . . . 9-10
Capítulo 10
Instruções de Controle do 
Programa
(JMP, LBL, JSR, RET, SBR, JXR, 
TND, MCR, UID, UIE, AFI, 
NOP, EOT, SFP, SFR)
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-1
Salto para Label (JMP)
Label (LBL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-2
Salto para Sub-rotina (JSR)
Sub-rotina (SBR)
Retorno da Sub-rotina (RET) . . . . . . . . . . . . . . . . . . . . . . . 10-4
Salto para a Rotina Externa (JXR) . . . . . . . . . . . . . . . . . . . 10-13
Fim Temporário (TND) . . . . . . . . . . . . . . . . . . . . . . . . . . 10-16
Rearme do Controle Mestre (MCR). . . . . . . . . . . . . . . . . . 10-18
Interrupção Desabilitada (UID) Interrupção 
Habilitada (UIE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-20
Instrução Sempre Falsa (AFI) . . . . . . . . . . . . . . . . . . . . . . 10-22
Sem Operação (NOP) . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-23
Fim da Transição (EOT) . . . . . . . . . . . . . . . . . . . . . . . . . 10-24
Pausa de SFC (SFP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-26
Reset de SFC (SFR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-28
Capítulo 11
Instruções For/Break
(FOR, FOR...DO, BRK, EXIT, RET)
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-1
De... (FOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-2
Break (BRK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-5
Return (RET). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-6
Capítulo 12
Instruções Especiais
(FBC, DDT, DTR, PID)
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-1
Comparação Entre os Bits de Arquivo (FBC) . . . . . . . . . . . 12-2
Seleção do modo de busca. . . . . . . . . . . . . . . . . . . . . . 12-3
Publicação 1756-RM003F-PT-P - Maio 2002
Conteúdo v
Detecção de Diagnóstico (DDT) . . . . . . . . . . . . . . . . . . . . 12-9
Seleção do modo de busca. . . . . . . . . . . . . . . . . . . . . 12-10
Dados Transacionais (DTR) . . . . . . . . . . . . . . . . . . . . . . . 12-16
Inserção de um valor de máscara imediato . . . . . . . . . 12-16
Instrução PID (PID) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-19
Configuração de uma Instrução PID. . . . . . . . . . . . . . . . . 12-23
Especificação de ajuste. . . . . . . . . . . . . . . . . . . . . . . . 12-24
Especificação de configuração . . . . . . . . . . . . . . . . . . 12-24
Especificação de alarmes . . . . . . . . . . . . . . . . . . . . . . 12-25
Especificação de conversão de escala . . . . . . . . . . . . . 12-25
Uso das Instruções PID . . . . . . . . . . . . . . . . . . . . . . . . . . 12-26
Disparo anti-reset e transferência sem interrupção 
de manual para automático. . . . . . . . . . . . . . . . . . . . 12-28
Temporização da instrução PID . . . . . . . . . . . . . . . . . 12-29
Reinícialização Sem Interrupção . . . . . . . . . . . . . . . . . 12-32
Suavização do derivativo . . . . . . . . . . . . . . . . . . . . . . 12-33
Definição da zona morta . . . . . . . . . . . . . . . . . . . . . . 12-33
Utilização da limitação de saída . . . . . . . . . . . . . . . . . 12-34
Feedforward ou bias de saída. . . . . . . . . . . . . . . . . . . 12-34
Malhas em cascata . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-35
Controle de uma razão. . . . . . . . . . . . . . . . . . . . . . . . 12-35
Teoria PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-37
processo PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-37
Processo PID com malhas mestre/escravo. . . . . . . . . . 12-37
Capítulo 13
Instruções Trigonométricas
(SIN, COS, TAN, ASN, ASIN, ACS, 
ACOS, ATN, ATAN)
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-1
Seno (SIN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-2
Co-seno (COS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-4
Tangente (TAN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-6
Arco Seno (ASN). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-8
Arco Co-seno (ACS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-10
Arco Tangente (ATN) . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-12
Capítulo 14
Instruções de Matemática 
Avançada
(LN, LOG, XPY)
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-1
Log Neperiano (LN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-2
Log Base 10 (LOG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-4
X Elevado a Y (XPY). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-6
Capítulo 15
Instruções de Conversão 
Matemática
(DEG, RAD, TOD, FRD, TRN, 
TRUNC)
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-1
Graus (DEG). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-2
Radianos (RAD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-4
Conversão para BCD (TOD) . . . . . . . . . . . . . . . . . . . . . . . 15-6
Conversão em Inteiro (FRD) . . . . . . . . . . . . . . . . . . . . . . . 15-9
Truncar (TRN). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-11
Publicação 1756-RM003F-PT-P - Maio 2002
vi Conteúdo 
Capítulo 16
Instruções da Porta Serial ASCII 
(ABL, ACB, ACL, AHL, ARD, ARL, 
AWA, AWT)
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-1
Execução da Instrução . . . . . . . . . . . . . . . . . . . . . . . . . 16-2
Códigos de Erro ASCII . . . . . . . . . . . . . . . . . . . . . . . . . 16-4
Tipos de Dados da String . . . . . . . . . . . . . . . . . . . . . . . 16-4
Teste ASCII Para Linha do Buffer (ABL) . . . . . . . . . . . . . . . 16-5
Caracteres ASCII no Buffer (ACB) . . . . . . . . . . . . . . . . . . . 16-8
Limpeza do Buffer ASCII (ACL) . . . . . . . . . . . . . . . . . . . . 16-10
Linhas de Handshake ASCII (AHL). . . . . . . . . . . . . . . . . . 16-12
Leitura ASCII (ARD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-15
Linha de Leitura ASCII (ARL) . . . . . . . . . . . . . . . . . . . . . . 16-18
Anexar Leitura ASCII (AWA) . . . . . . . . . . . . . . . . . . . . . . 16-22
Escrita ASCII (AWT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-26
Capítulo 17
Instruções de String ASCII 
(CONCAT, DELETE, FIND, INSERT, 
MID)
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-1
Tipos de Dados da String . . . . . . . . . . . . . . . . . . . . . . . 17-2
Concatenação de String (CONCAT) . . . . . . . . . . . . . . . . . . 17-3
Exclusão de String (DELETE) . . . . . . . . . . . . . . . . . . . . . . . 17-5
Localização de String (FIND) . . . . . . . . . . . . . . . . . . . . . . . 17-7
Inserção de String (INSERT). . . . . . . . . . . . . . . . . . . . . . . . 17-9
String Média (MID) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-11
Capítulo 18
Instruções de Conversão ASCII 
(STOD, STOR, DTOS, RTOS, UPPER, 
LOWER)
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-1
Tipos de Dados da String . . . . . . . . . . . . . . . . . . . . . . . 18-2
String Para DINT (STOD) . . . . . . . . . . . . . . . . . . . . . . . . . 18-3
String Para REAL (STOR) . . . . . . . . . . . . . . . . . . . . . . . . . . 18-5
DINT Para String (DTOS) . . . . . . . . . . . . . . . . . . . . . . . . . 18-7
REAL Para String (RTOS) . . . . . . . . . . . . . . . . . . . . . . . . . . 18-9
Letra Maiúscula (UPPER) . . . . . . . . . . . . . . . . . . . . . . . . . 18-11
Letra Minúscula (LOWER) . . . . . . . . . . . . . . . . . . . . . . . . 18-13
Apêndice A
Atributos Comuns Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-1
Valores Imediatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-1
Conversões de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-1
SINT ou INT para DINT . . . . . . . . . . . . . . . . . . . . . . . . A-3
Inteiro para REAL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-4
DINT para SINT ou INT . . . . . . . . . . . . . . . . . . . . . . . . A-5
REAL para um inteiro . . . . . . . . . . . . . . . . . . . . . . . . . . A-5
Publicação 1756-RM003F-PT-P - Maio 2002
Conteúdo vii
Apêndice B
Atributos do Bloco de Funções Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-1
Lançamento de Dados. . . . . . . . . . . . . . . . . . . . . . . . . . . . B-2
Seqüência de Execução . . . . . . . . . . . . . . . . . . . . . . . . . . . B-3
Respostas do Bloco de Funções para as Condições 
de Overflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-5
Modos de Temporização . . . . . . . . . . . . . . . . . . . . . . . . . . B-5
Parâmetros de instrução comum para os modos de 
temporização. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-7
Características Gerais dos modos de temporização . . . . B-9
Controle de Program/Operator . . . . . . . . . . . . . . . . . . . . B-10
Apêndice C
Programação de Texto 
Estruturado
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-1
Sintaxe do Texto Estruturado. . . . . . . . . . . . . . . . . . . . . . . C-1
Atributos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-2
Especificação de um atributo não retentivo . . . . . . . . . . C-3
Atribuição de um caractere ASCII para um string. . . . . . C-3
Expressões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-4
Use os operadores e funções aritméticas . . . . . . . . . . . . C-5
Uso dos operadores relacionados . . . . . . . . . . . . . . . . . C-6
Uso dos operadores lógicos . . . . . . . . . . . . . . . . . . . . . C-8
Uso de operadores bitwise . . . . . . . . . . . . . . . . . . . . . . C-9
Determinação da seqüência de execução . . . . . . . . . . . C-9
Instruções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-10
Construções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-11
IF...THEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-12
CASE...OF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-15
FOR…DO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-17
WHILE…DO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-20
REPEAT…UNTIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-22
Comentários . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-24
Index
Códigos do Caractere ASCII
Publicação 1756-RM003F-PT-P- Maio 2002
viii Conteúdo 
Publicação 1756-RM003F-PT-P - Maio 2002
Capítulo 1
Instruções Binárias
(XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Introdução Use as instruções binárias (tipo com relé) para monitorar e controlar o 
status dos bits.
Se você quiser: Use esta instrução: Disponível nessas linguagens: Consulte 
página:
habilitar as saídas quando um bit estiver 
energizado
XIC lógica ladder
texto estruturado(1)
1-2
habilitar as saídas quando um bit estiver 
desenergizado
XIO lógica ladder
texto estruturado(1)
1-4
energizar um bit OTE lógica ladder
texto estruturado(1)
1-6
energizar um bit (retentivo) OTL lógica ladder
texto estruturado(1)
1-7
desenergizar um bit (retentivo) OTU lógica ladder
texto estruturado(1)
1-9
habilitar as saídas para um scan toda vez que a 
linha tornar-se verdadeira
ONS lógica ladder
texto estruturado(1)
1-11
energizar um bit para um scan toda vez que a 
linha tornar-se verdadeira
OSR lógica ladder 1-14
energizar um bit para um scan toda vez que a 
linha tornar-se falsa
OSF lógica ladder 1-16
energizar um bit para um scan toda vez que o 
bit de entrada for verdadeiro no bloco de 
funções
OSRI texto estruturado
bloco de funções
1-14
energizar um bit para um scan toda vez que o 
bit de entrada estiver desenergizado no bloco 
de funções
OSFI texto estruturado
bloco de funções
1-16
(1) Não há instrução de texto estruturado equivalente. Use outra programação de texto estruturado para obter o mesmo resultado. Veja a descrição para a instrução.
1 Publicação 1756-RM003F-PT-P - Maio 2002
1-2 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Examinar Se Energizado 
(XIC)
A instrução XIC examina o bit de dados para verificar se ele está 
energizado.
Operandos:
Lógica Ladder 
Texto Estruturado
O texto estruturado não possui uma instrução XIC, mas é possível 
obter os mesmos resultados usando uma construção IF...THEN. 
IF data_bit THEN
<statement>;
END_IF;
Consulte ApêndiceC para informações sobre a sintaxe de construções 
no texto estruturado.
Descrição: A instrução XIC examina o bit de dados para verificar se ele está 
energizado.
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução:
Operando: Tipo: Formato: Descrição:
data bit BOOL tag bit a ser testado
Condição: Ação da Lógica Ladder:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
postscan A saída da condição da linha é definida como falsa.
examinar o bit de 
dados
bit de dados = 0
bit de dados = 1
saída da condição da linha 
é definida como falsa
saída da condição da linha é 
definida como verdadeira
entrada da condição da linha é verdadeira
fim
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-3
Exemplo 1: Se limit_switch_1 está energizado, isso habilita a próxima instrução (a 
saída da condição da linha é verdadeira).
Lógica Ladder
Texto Estruturado
IF limit_switch THEN
<statement>;
END_IF;
Exemplo 2: Se S:V está energizado (indica que um overflow ocorreu), isso habilita 
a próxima instrução (a saída da condição da linha é verdadeira).
Lógica Ladder
Texto Estruturado
IF S:V THEN
<statement>;
END_IF;
Publicação 1756-RM003F-PT-P - Maio 2002
1-4 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Examinar Se 
Desenergizado (XIO)
A instrução XIO examina o bit de dados para verificar se ele está 
desenergizado.
Operandos:
Lógica Ladder
Texto Estruturado
O texto estruturado não possui uma instrução XIO, mas é possível 
alcançar os mesmos resultados usando uma construção IF...THEN. 
IF NOT data_bit THEN
<statement>;
END_IF;
Consulte ApêndiceC para informações sobre a sintaxe de construções 
no texto estruturado.
Descrição: A instrução XIO examina o bit de dados para verificar se ele está 
desenergizado.
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução:
Operando: Tipo: Formato: Descrição:
data bit BOOL tag bit a ser testado
Condição: Ação da Lógica Ladder:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
postscan A saída da condição da linha é definida como falsa.
examinar o bit de dados
bit de dados = 0
bit de dados = 1
saída da condição da linha é 
definida como verdadeira
saída da condição da linha é 
definida como falsa
entrada da condição da linha é verdadeira
fim
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-5
Exemplo 1: Se limit_switch_2 está desenergizado, isso habilita a próxima 
instrução (a saída da condição da linha é verdadeira).
Lógica Ladder
Texto Estruturado
IF NOT limit_switch_2 THEN
<statement>;
END_IF;
Exemplo 2: Se S:V está desenergizado (indica que um overflow não ocorreu), isso 
habilita a próxima instrução (a saída da condição da linha é 
verdadeira).
Lógica Ladder
Texto Estruturado
IF NOT S:V THEN
<statement>;
END_IF;
Publicação 1756-RM003F-PT-P - Maio 2002
1-6 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Energizar Saída (OTE) A instrução OTE energiza ou desenergiza o bit de dados.
Operandos: Lógica Ladder
Texto Estruturado
O texto estruturado não possui uma instrução OTE, mas é possível 
obter os mesmos resultados usando um atributo não retentivo. 
data_bit [:=] BOOL_expression;
Consulte ApêndiceC para informações sobre a sintaxe de atributos e 
expressões no texto estruturado.
Descrição: Quando a instrução OTE está habilitada, o controlador energiza o bit 
de dados. Quando a instrução OTE está desabilitada, o controlador 
desenergiza o bit de dados.
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução:
Exemplo: Quando switch está energizado, a instrução OTE energiza (acende) 
light_1. Quando switch é desenergizado, a instrução OTE desenergiza 
(apaga) light_1.
Lógica Ladder
Texto Estruturado
light_1 [:=] switch;
Operando: Tipo: Formato: Descrição:
data bit BOOL tag bit a ser energizado ou desenergizado
Condição: Ação da Lógica Ladder:
prescan O bit de dados é desenergizado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa O bit de dados é desenergizado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira O bit de dados é energizado.
A saída da condição da linha é definida como verdadeira.
postscan O bit de dados é desenergizado.
A saída da condição da linha é definida como falsa.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-7
Energizar Saída com 
Retenção (OTL)
A instrução OTL energiza (retém) o bit de dados.
Operandos:
Lógica Ladder
Texto Estruturado
O texto estruturado não possui uma instrução OTL, mas é possível 
obter os mesmos resultados usando uma construção e um atributo 
IF...THEN. 
IF bool_expression THEN
data_bit := 1;
END_IF;
Consulte ApêndiceC para informações sobre a sintaxe de construções, 
atributos e expressões no texto estruturado.
Descrição: Quando habilitada, a instrução OTL energiza o bit de dados. O bit de 
dados permanece energizado até ser desenergizado, normalmente, 
por uma instrução OTU. Quando desabilitada, a instrução OTL não 
altera o status do bit de dados.
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução:
Operando: Tipo: Formato: Descrição:
data bit BOOL tag bit a ser energizado
Condição: Ação da Lógica Ladder:
prescan O bit de dados não é modificado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa O bit de dados não é modificado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira O bit de dados é energizado.A saída da condição da linha é definida como verdadeira.
postscan O bit de dados não é modificado.
A saída da condição da linha é definida como falsa.
Publicação 1756-RM003F-PT-P - Maio 2002
1-8 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Exemplo: Quando habilitada, a instrução OTL energiza light_2. Esse bit 
permanece energizado até ser desenergizado, normalmente, por uma 
instrução OTU.
Lógica Ladder
Texto Estruturado
IF BOOL_expression THEN
light_2 := 1;
END_IF;
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-9
Desenergizar Saída com 
Retenção (OTU)
A instrução OTU desenergiza (não retém) o bit de dados.
Operandos:
Lógica Ladder
Texto Estruturado
O texto estruturado não possui uma instrução OTU, mas é possível 
alcançar os mesmos resultados usando uma construção e um atributo 
IF...THEN 
IF bool_expression THEN
data_bit := 0;
END_IF;
Consulte ApêndiceC para informações sobre a sintaxe de construções, 
atributos e expressões no texto estruturado.
Descrição: Quando habilitada, a instrução OTU desenergiza o bit de dados. 
Quando desabilitada, a instrução OTU não altera o status do bit de 
dados.
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução:
Operando: Tipo: Formato: Descrição:
data bit BOOL tag bit a ser desenergizado
Condição: Ação da Lógica Ladder:
prescan O bit de dados não é modificado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa O bit de dados não é modificado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira O bit de dados é desenergizado.
A saída da condição da linha é definida como verdadeira.
postscan O bit de dados não é modificado.
A saída da condição da linha é definida como falsa.
Publicação 1756-RM003F-PT-P - Maio 2002
1-10 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Exemplo: Quando habilitada, a instrução OTU desenergiza light_2.
Lógica Ladder
Texto Estruturado
IF bool_expression THEN
light_2 := 0;
END_IF;
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-11
Monoestável (ONS) A instrução ONS habilita ou desabilita o resto da linha dependendo 
do status do bit de armazenamento.
Operandos:
Lógica Ladder
Texto Estruturado
O texto estruturado não possui uma instrução ONS, mas é possível 
obter os mesmos resultados usando uma construção IF...THEN. 
IF BOOL_expression AND NOT storage_bit THEN
<statement>;
END_IF;
storage_bit := BOOL_expression;
Consulte ApêndiceC para informações sobre a sintaxe de construções, 
atributos e expressões no texto estruturado.
Descrição: Quando habilitada e o bit de armazenamento está desenergizado, a 
instrução ONS habilita o resto da linha. Quando habilitada ou o bit de 
armazenamento está energizado, a instrução ONS desabilita o resto da 
linha.
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Operando: Tipo: Formato: Descrição:
storage bit BOOL tag bit de armazenamento interno
armazena a entrada da condição da linha 
desde a última vez que a instrução foi 
executada
Publicação 1756-RM003F-PT-P - Maio 2002
1-12 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Execução:
Exemplo: Normalmente, uma instrução de entrada precede a instrução ONS, 
pois você varre esta instrução quando ela está habilitada e quando é 
desabilitada para que opere corretamente. Uma vez que a instrução 
ONS é habilitada, a entrada da condição da linha deve desenergizar 
ou o bit de armazenamento deve ser desenergizado para que a 
instrução ONS seja habilitada novamente.
Condição: Ação da Lógica Ladder:
prescan O bit de armazenamento é energizado para evitar um disparo inválido durante o primeiro 
scan.
A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa O bit de armazenamento é desenergizado.
A saída da condição da linha é definida como falsa.
postscan O bit de armazenamento é desenergizado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira
fim
examinar o bit de 
armazenamento
bit de armazenamento = 0
bit de armazenamento = 1
bit de armazenamento é 
energizado
saída da condição da linha 
é definida como 
verdadeira
o bit de armazenamento 
permanece energizado
saída da condição da linha 
é definida como falsa
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-13
Em qualquer scan cujo limit_switch_1 é desenergizado ou storage_1 é 
energizado, essa linha não tem efeito. Em qualquer scan cujo 
limit_switch_1 é energizado e storage_1 é desenergizado, a instrução 
ONS energiza storage_1 e a instrução ADD incrementa sum por 1. 
Enquanto limit_switch_1 permanecer energizado, sum fica com o 
mesmo valor. O limit_switch_1 deve passar de desenergizado para 
energizado novamente para que sum seja incrementado novamente.
Lógica Ladder
Texto Estruturado
IF limit_switch_1 AND NOT storage_1 THEN
sum := sum + 1;
END_IF;
storage_1 := limit_switch_1;
Publicação 1756-RM003F-PT-P - Maio 2002
1-14 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Monoestável Sensível à 
Borda de Subida (OSR)
A instrução OSR energiza ou desenergiza o bit de saída, dependendo 
do status do bit de armazenamento.
Essa instrução está disponível no texto estruturado e bloco de funções 
como OSRI, consulte a página 1-14.
Operandos:
Lógica Ladder
Descrição: Quando habilitada e o bit de armazenamento está desenergizado, a 
instrução OSR energiza o bit de saída. Quando habilitada e o bit de 
armazenamento está energizado ou quando desabilitada, a instrução 
OSR desenergiza o bit de saída 
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Operando: Tipo: Formato: Descrição:
storage bit BOOL tag bit de armazenamento interno
armazena a entrada da condição da linha da 
última vez que a instrução foi executada
output bit BOOL tag bit a ser energizado
entrada da condição da 
linha
bit de armazenamento
bit de saída
instrução é
executada
instrução reseta durante a 
execução do próximo scan
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-15
Execução:
Exemplo: Cada vez que limit_switch_1 passar de desenergizado para 
energizado, a instrução OSR energiza output_bit_1 e a instrução ADD 
incrementa sum por 5. Enquanto limit_switch_1 estiver energizado, 
sum permanece com o mesmo valor. O limit_switch_1 deve passar de 
desenergizado para energizado novamente para sum ser 
incrementado novamente. É possível usar output_bit_1 em linhas 
múltiplas para disparar outras operações
Condição: Ação da Lógica Ladder:
prescan O bit de armazenamento é energizado para evitar um disparo inválido durante o primeiro 
scan.
O bit de saída é desenergizado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa O bit de armazenamento é desenergizado.
O bit de saída não é modificado.
A saída da condição da linha é definida como falsa.
postscan O bit de armazenamento é desenergizado.
O bit de saída não é modificado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira
fim
examinar o bit de 
armazenamento
bit de 
armazenamento = 0
bit de armazenamento = 1
bit de armazenamento é 
energizado
bit de saída é energizado
saída da condição da linha é 
definida como verdadeira
o bit de armazenamento 
permanece energizado
bit de saída é desenergizado.
saída da condição da linha é 
definida como verdadeira
Publicação 1756-RM003F-PT-P - Maio 2002
1-16 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Monoestável Sensível à 
Borda de Descida (OSF)
A instrução OSF energiza ou desenergiza o bit de saídadependendo 
do status do bit de armazenamento.
Essa instrução está disponível no texto estruturado e bloco de funções 
como OSFI, consulte a página 1-16.
Operandos:
Operandos de Lógica Ladder
Descrição: Quando desabilitada e o bit de armazenamento está energizado, a 
instrução OSF energiza o bit de saída. Quando desabilitada e o bit de 
armazenamento está desenergizado ou quando habilitada, a instrução 
OSF desenergiza o bit de saída 
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Operando: Tipo: Formato: Descrição:
storage bit BOOL tag bit de armazenamento interno
armazena a entrada da condição da linha 
desde a última vez que a instrução foi 
executada
output bit BOOL tag bit a ser energizado
entrada da 
condição da linha
bit de 
armazenamento
bit de saída
instrução é
executada
instrução reseta durante a 
execução do próximo scan
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-17
Execução:
Exemplo: Cada vez que limit_switch_1 passa de energizado para desenergizado, 
a instrução OSF energiza output_bit_2 e a instrução ADD incrementa 
sum por 5. Enquanto limit_switch_1 estiver desenergizado, sum 
permanece com o mesmo valor. O limit_switch_1 deve passar de 
energizado para desenergizado novamente para que sum seja 
incrementado novamente. É possível usar output_bit_2 em linhas 
múltiplas para disparar outras operações
Condição: Ação da Lógica Ladder:
prescan O bit de armazenamento é desenergizado para evitar um disparo inválido durante o 
primeiro scan.
O bit de saída é desenergizado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira O bit de armazenamento é energizado.
O bit de saída é desenergizado.
A saída da condição da linha é definida como verdadeira.
postscan Veja se a entrada da condição da linha acima é falsa.
entrada da condição da linha é falsa
fim
examinar o bit de 
armazenamento
bit de 
armazenamento = 0
bit de armazenamento = 1
o bit de armazenamento 
permanece desenergizado
bit de saída é 
desenergizado.
saída da condição da linha é 
definida como falsa
bit de armazenamento é 
desenergizado.
bit de saída é energizado
saída da condição da linha 
é definida como falsa
Publicação 1756-RM003F-PT-P - Maio 2002
1-18 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Monoestável Sensível à 
Borda de Subida com 
Entrada (OSRI)
A instrução OSRI energiza o bit de saída para um ciclo de execução 
quando o bit de entrada alternar de desenergizado para energizado.
Esta instrução está disponível em lógica ladder como OSR, consulte a 
página 1-14.
Operandos:
Texto Estruturado
Bloco de Funções 
Estrutura FBD_ONESHOT
Descrição: Quando InputBit está energizado e InputBitn-1 está desenergizado, a 
instrução OSRI energiza OutputBit. Quando InputBit é energizado ou 
quando InputBit é desenergizado, a instrução OSRI desenergiza 
OutputBit.
Operando: Tipo: Formato: Descrição:
OSRI tag FBD_ONESHOT estrutura estrutura OSR
Operando: Tipo: Formato: Descrição:
OSRI tag FBD_ONESHOT estrutura estrutura OSR
OSRI(OSRI_tag);
Parâmetro de Entrada: Tipo de Dados: Descrição:
EnableIn BOOL Bloco de Funções
Se desenergizada, a instrução não executa e as saídas não são atualizadas.
Se energizada, a instrução executa.
O valor inicial é energizado
Texto Estruturado:
Sem efeito. A instrução executa.
InputBit BOOL Bit de entrada. Isto equivale à condição da linha para a instrução OSR de Lógica Ladder.
O valor inicial é desenergizado.
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
OutputBit BOOL Bit de saída
InputBit
OutputBit
40048
instrução é
executada
instrução reseta durante a 
execução do próximo scan
InputBitn-1
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-19
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução:
Exemplo: Quando limit_switch1 passa de desenergizado para energizado, a 
instrução OSRI energiza OutputBit para um scan.
Texto Estruturado
OSRI_01.InputBit := limit_switch1;
OSRI(OSRI_01);
State := OSRI_01.OutputBit;
Bloco de Funções
Condição: Ação do Bloco de Funções: Ação do Texto Estruturado:
prescan Nenhuma ação tomada. Nenhuma ação tomada.
primeiro scan da instrução InputBit n-1 é energizado. InputBit n-1 é energizado.
primeira execução da 
instrução
InputBit n-1 é energizado. InputBit n-1 é energizado.
EnableIn está 
desenergizado
EnableOut é desenergizado, a instrução não faz nada 
e as saídas não são atualizadas.
na
EnableIn está energizado Em uma transição de InputBit de desenergizado para 
energizado, a instrução energiza InputBit n-1.
A instrução executa.
EnableOut está energizado.
Em uma transição de InputBit de desenergizado para 
energizado, a instrução energiza InputBit n-1.
EnableIn está sempre energizado
A instrução executa.
postscan Nenhuma ação tomada. Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
1-20 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Monoestável Sensível à 
Borda de Descida com 
Entrada (OSFI)
A instrução OSFI energiza o OutputBit para um ciclo de execução 
quando InputBit alternar de energizado para desenergizado.
Esta instrução está disponível em lógica ladder como OSF, consulte a 
página 1-16.
Operandos:
Texto Estruturado
Bloco de Funções
Estrutura FBD_ONESHOT
Descrição: Quando InputBit está desenergizado e InputBit n-1 está energizado, a 
instrução OSFI energiza OutputBit. Quando InputBit n-1 está 
desenergizado ou quando InputBit está energizado, a instrução OSFI 
desenergiza OutputBit.
Operando: Tipo: Formato: Descrição:
OSFI tag FBD_ONESHOT estrutura estrutura OSFI
Operando: Tipo: Formato: Descrição:
tag OSFI FBD_ONESHOT estrutura estrutura OSFI
OSFI(OSFI_tag);
Parâmetro de 
Entrada:
Tipo de Dados: Descrição:
EnableIn BOOL Bloco de Funções
Se desenergizada, a instrução não executa e as saídas não são atualizadas.
Se energizada, a instrução executa.
O valor inicial é energizado
Texto Estruturado:
Sem efeito. A instrução executa.
InputBit BOOL Bit de entrada. Isto equivale à condição da linha para a instrução OSF de lógica ladder.
O valor inicial é desenergizado.
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
OutputBit BOOL bit de saída
InputBit
OutputBit
instrução é
executada
instrução reseta durante a 
execução do próximo scan
InputBit n-1
40047
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-21
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução:
Exemplo: Quando limit_switch1 passa de energizado para desenergizado, a 
instrução OSFI energiza OutputBit para um scan.
Texto Estruturado
OSFI_01.InputBit := limit_switch1;
OSFI(OSFI_01);
Output_state := OSFI_01.OutputBit;
Bloco de Funções
Condição: Ação do Bloco de Funções: Ação do Texto Estruturado:
prescan Nenhuma ação tomada. Nenhuma ação tomada.
primeiro scan da instrução InputBit n-1 é desenergizado. InputBit n-1 é desenergizado.
primeira execução da 
instrução
InputBit n-1 é desenergizado. InputBit n-1 é desenergizado.
EnableIn está 
desenergizado
EnableOut é desenergizado, a instrução não faz nada 
e as saídas não são atualizadas.
na
EnableIn está energizado Em uma transição de InputBit de desenergizado para 
energizado, a instrução desenergiza InputBit n-1.
A instrução executa.
EnableOut está energizado.
Em uma transição de InputBit de desenergizado para 
energizado, a instrução desenergiza InputBit n-1.
EnableIn está sempre energizado
A instrução executa.
postscan Nenhuma ação tomada. Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
1-22 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)
Notas:
Publicação 1756-RM003F-PT-P- Maio 2002
Capítulo 2
Instruções de Temporizador e Contador
(TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Introdução As operações de temporizadores e contadores são baseadas no tempo 
ou no número de eventos.
A base de tempo para todos os temporizadores é 1 mseg.
Se você quiser: Use esta instrução: Disponível nestas linguagens: Consulte página:
saber por quanto tempo o temporizador está 
habilitado
TON lógica ladder 2-2
saber por quanto tempo o temporizador está 
desabilitado
TOF lógica ladder 2-5
acumular o tempo RTO lógica ladder 2-9
saber por quanto tempo o temporizador está 
habilitado com o reset incorporado no bloco de 
funções 
TONR texto estruturado
bloco de funções 
2-13
saber por quanto tempo o temporizador está 
desabilitado com o reset integrado em um 
bloco de funções 
TOFR texto estrutural
bloco de funções 
2-16
acumular o tempo com o reset incorporado no 
bloco de funções 
RTOR texto estruturado
bloco de funções 
2-19
fazer a contagem crescente CTU lógica ladder 2-22
fazer a contagem decrescente CTD lógica ladder 2-25
fazer a contagem crescente e decrescente no 
bloco de funções 
CTUD texto estruturado
bloco de funções 
2-29
resetar um temporizador ou um contador RES lógica ladder 2-33
1 Publicação 1756-RM003F-PT-P - Maio 2002
2-2 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Temporizador na 
Energização (TON)
A instrução TON é um temporizador não retentivo que acumula 
tempo quando a instrução está habilitada (entrada da condição da 
linha é verdadeira).
A instrução está disponível em texto estruturado e bloco de funções 
como TONR, consulte a página 2-13.
Operandos:
Lógica Ladder
Estrutura TIMER
Descrição: A instrução TON acumulou o tempo até:
• a instrução TON está desabilitada
• o .ACC ≥ .PRE
A base de tempo é sempre 1 mseg. Por exemplo, para um 
temporizador de 2 segundos, digite 2000 para o valor de .PRE.
Quando a instrução TON é desabilitada, o valor de .ACC é removido.
Operando: Tipo: Formato: Descrição:
Timer TIMER tag estrutura do temporizador
Preset DINT imediato quanto tempo atrasar (tempo acumulado)
Accum DINT imediato total de mseg que o temporizador contou
normalmente, valor inicial é 0
Mnemônico: Tipo de Dados: Descrição:
.EN BOOL O bit habilitado indica que a instrução TON está habilitada.
.TT BOOL O bit de temporização indica que uma operação de temporização está em execução
.DN BOOL O bit executado está energizado quando .ACC ≥ .PRE.
.PRE DINT O valor de preset especifica o valor (unidades de 1 mseg) que o valor acumulado deve atingir 
antes que a instrução energize o bit .DN.
.ACC DINT O valor acumulado especifica o número de milissegundos que transcorreram desde que a 
instrução TON foi habilitada.
entrada da condição da linha
bit habilitado do temporizador (.EN)
bit executado do temporizador (.DN)
valor acumulado do temporizador (.ACC)
bit de temporização do temporizador (.TT)
preset
0 16649
o temporizador não 
alcançou o valor de .PRE
atraso 
na 
ENER-
GIZA-
ÇÃO
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-3
Flags de Status Aritmético: não afetados
Condições de Falha:
Execução
Uma falha grave ocorrerá se: Tipo de falha: Código de falha:
.PRE < 0 4 34
.ACC < 0 4 34
Condição: Ação da Lógica Ladder:
prescan Os bits .EN, .TT e .DN estão desenergizados.
O valor de .ACC é removido.
A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa Os bits .EN, .TT e .DN estão desenergizados.
O valor de .ACC é removido.
A saída da condição da linha é definida como falsa.
postscan A saída da condição da linha é definida como falsa.
examinar bit .DN
bit .DN = 1
bit .DN = 0
bit .EN é energizado
bit .TT é energizado.
last_time = current_time
entrada da condição da linha é verdadeira
examinar .ACC
.ACC ≥ .PRE
.ACC < .PRE
bit .TT é energizado.
.ACC = .ACC + (current_time - last_time)
last_time = current_time
o valor .ACC 
ultrapassa
não
sim
.ACC = 2,147,483,647
examinar bit .EN
bit .EN = 0
bit .EN = 1
saída da condição da linha é 
definida como verdadeira
fim
.DN é energizado
bit .TT é 
desenergizado.
bit .EN é energizado
Publicação 1756-RM003F-PT-P - Maio 2002
2-4 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Exemplo: Quando limit_switch_1 é energizado, light_2 acende por 180 mseg 
(timer_1 está temporizando). Quando timer_1.acc alcança 180, light_2 
apaga e light_3 acende. Light_3 permanece aceso até que a instrução 
TON seja desabilitada. Se limit_switch_1 for desenergizado enquanto 
timer_1 estiver temporizando, light_2 desliga.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-5
Temporizador na 
Desenergização (TOF)
A instrução TOF é um temporizador não retentivo que acumula tempo 
quando a instrução está habilitada (entrada da condição da linha é 
falsa).
A instrução está disponível em texto estruturado e bloco de funções 
como TOFR, consulte a página 2-16.
Operandos:
Lógica Ladder 
Estrutura TIMER
Descrição: A instrução TOF acumulou o tempo até:
• a instrução TOF está desabilitada
• a .ACC ≥ .PRE
A base de tempo é sempre 1 mseg. Por exemplo, para um 
temporizador de 2 segundos, digite 2000 para o valor de .PRE.
Operando: Tipo: Formato: Descrição:
Timer TIMER tag estrutura do temporizador
Preset DINT imediato quanto tempo atrasar (tempo acumulado)
Accum DINT imediato total de mseg que o temporizador contou
normalmente, o valor inicial é 0
Mnemônico: Tipo de Dados: Descrição:
.EN BOOL O bit habilitado indica que a instrução TOF está habilitada.
.TT BOOL O bit de temporização indica que uma operação de temporização está em execução
.DN BOOL O bit executado é desenergizado quando .ACC ≥ .PRE.
.PRE DINT O valor preset especifica o valor (unidades de 1 mseg) que o valor acumulado deve atingir 
antes que a instrução energize o bit .DN.
.ACC DINT O valor acumulado especifica o número de milissegundos que transcorreram desde que a 
instrução TOF foi habilitada.
Publicação 1756-RM003F-PT-P - Maio 2002
2-6 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Quando a instrução TOF está desativada, o valor de .ACC é 
desenergizado.
Flags de Status Aritmético: não afetados
Condições de Falha:
entrada da condição da linha
bit habilitado do temporizador (.EN)
bit executado do temporizador (.DN)
valor acumulado do temporizador (.ACC)
bit de temporização do temporizador (.TT)
0 16650
o temporizador não atingiu o valor de .PRE
preset
atraso na DESE-
NERGIZAÇÃO
Uma falha grave ocorrerá se: Tipo de falha: Código de falha:
.PRE < 0 4 34
.ACC < 0 4 34
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-7
Execução
Condição: Ação da Lógica Ladder:
prescan Os bits .EN, .TT e .DN estão desenergizados.
O valor de .ACC é ajustado para ser igual ao valor de .PRE.
A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira Os bits .EN, .TT, e .DN estão energizados.
O valor de .ACC está desenergizado.
A saída da condição da linha é definida como verdadeira.
postscan A saída da condição da linha é definida como falsa.
examinar bit .DN bit .DN = 0
bit .DN = 1
bit .EN é desenergizado.
bit .TT é energizado.
last_time = current_time
entrada da condição da linha é falsa
examinar .ACC
.ACC ≥ .PRE
.ACC < .PRE
bit .TT é energizado.
.ACC = .ACC + (current_time - last_time)
last_time = current_time
o valor de 
.ACC 
ultrapassa
não
sim
.ACC = 2,147,483,647
examinar bit .EN
bit .EN = 1
bit .EN = 0
saída da condição da linha é 
definida como falsa
fim
bit .DN é desenergizado.
bit .TT é desenergizado.
bit .EN é desenergizado.
Publicação 1756-RM003F-PT-P - Maio2002
2-8 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Exemplo: Quando limit_switch_2 é desenergizado, light_2 acende por 180 mseg 
(timer_2 está temporizando). Quando timer_2.acc atinge 180, light_2 
apaga e light_3 acende. Light_3 permanece aceso até que a instrução 
TOF seja habilitada. Se limit_switch_2 for energizada enquanto 
timer_2 estiver temporizando, light_2 apaga.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-9
Temporizador Retentivo 
(RTO)
A instrução RTO é um temporizador retentivo que acumula tempo 
quando a instrução é habilitada.
A instrução está disponível em texto estruturado e bloco de funções 
como RTOR, consulte a página 2-19.
Operandos:
Lógica Ladder
Estrutura TIMER
Descrição: A instrução RTO acumula os tempos até que ela seja desabilitada. 
Quando a instrução RTO é desabilitada, os seus valores de .ACC são 
retidos. Você deve remover o valor de .ACC, geralmente, com uma 
instrução RES referenciando a mesma estrutura TIMER.
Operando: Tipo: Formato: Descrição:
Timer TIMER tag estrutura do temporizador
Preset DINT imediato quanto tempo atrasar (tempo acumulado)
Accum DINT imediato número de mseg que o temporizador contou
normalmente, valor inicial é 0
Mnemônico: Tipo de Dados: Descrição:
.EN BOOL O bit habilitado indica que a instrução RTO está habilitada.
.TT BOOL O bit de temporização indica que uma operação de temporização está em execução
.DN BOOL O bit executado indica .ACC ≥ .PRE.
.PRE DINT O valor de preset especifica o valor (unidades de 1 mseg) que o valor acumulado deve atingir 
antes que a instrução energize o bit .DN.
.ACC DINT O valor acumulado especifica o número de milissegundos que transcorreram desde que a 
instrução RTO foi habilitada.
Publicação 1756-RM003F-PT-P - Maio 2002
2-10 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
A base de tempo é sempre 1 mseg. Por exemplo, para um 
temporizador de 2 segundos, digite 2000 para o valor de .PRE.
Flags de Status Aritmético: não afetados
Condições de Falha:
entrada da condição da linha
bit habilitado do temporizador (.EN)
bit executado do temporizador (.DN)
valor acumulado do temporizador (.ACC)
bit de temporização do temporizador (.TT)
preset
0
16651
condição da linha que controla a instrução RES
o temporizador não alcançou o valor .PRE
Uma falha grave ocorrerá se: Tipo de falha: Código de falha:
.PRE < 0 4 34
.ACC < 0 4 34
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-11
Execução
Exemplo: Quando limit_switch_1 é energizado, light_1 acende por 180 mseg 
(timer_2 está temporizando). Quando timer_3.acc atinge 180, light_1 
apaga e light_2 acende. Light_2 permanece aceso até que timer_3 
seja energizado novamente. Se limit_switch_2 for desenergizada 
enquanto timer_3 estiver temporizando, light_1 permanece ligado. 
Quando limit_switch_2 está energizado, a instrução RES energiza 
novamente timer_3 (energiza os bits de status e o valor de .ACC).
Condição: Ação da Lógica Ladder:
prescan Os bits .EN, .TT e .DN estão desenergizados.
O valor de .ACC não é modificado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa Os bits .EN e .TT estão desenergizados.
O bit .DN não é modificado.
O valor de .ACC não é modificado.
A saída da condição da linha é definida como falsa.
postscan A saída da condição da linha é definida como falsa.
examinar bit .DN
bit .DN = 1
bit .DN = 0
bit .EN é energizado
bit .TT é energizado.
last_time = current_time
entrada da condição da linha é verdadeira
verificar .ACC .ACC ≥ .PRE
.ACC < .PRE
bit .TT é energizado.
.ACC = .ACC + (current_time - last_time)
last_time = current_time
o valor de .ACC 
ultrapassa
não
sim
.ACC = 2,147,483,647
examinar bit .EN bit .EN = 0
bit .EN = 1
saída da condição da linha é 
definida como verdadeira
fim
.DN é energizado
bit .TT é 
desenergizado.
bit .EN é energizado
Publicação 1756-RM003F-PT-P - Maio 2002
2-12 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-13
Temporizador na 
Energização com Reset 
(TONR)
A instrução TONR é um temporizador retentivo que acumula tempos 
quando TimerEnable está energizado.
Esta instrução está disponível na lógica ladder como duas instruções 
separadas: TON (consulte a página 2-2) e RES (consulte a 
página 2-33).
Operandos:
Texto Estruturado
Bloco de Funções 
Estrutura FBD_TIMER
Variável: Tipo: Formato: Descrição:
TONR tag FBD_TIMER estrutura estrutura TONR
Operando: Tipo: Formato: Descrição:
TONR tag FBD_TIMER estrutura estrutura TONR
TONR(TONR_tag);
Parâmetro de 
Entrada:
Tipo de Dados: Descrição:
EnableIn BOOL Bloco de Funções :
Se desenergizada, a instrução não é executada e as saídas não são atualizadas.
Se energizada, a instrução é executada.
Valor inicial está energizado
Texto Estruturado
Sem efeito. A instrução é executada.
TimerEnable BOOL Se estiver energizado, habilita o temporizador a executar e acumular tempos.
Valor inicial está desenergizado.
PRE DINT Valor de preset de temporizador. Este é o valor em unidades de 1 mseg que ACC deve atingir 
antes que a temporização termine. Se for inválido, a instrução energiza o bit apropriado em 
Status e o temporizador não executa.
Válido = 0 para o inteiro positivo máximo
Reset BOOL Solicitação para resetar o temporizador novamente. Quando energizado, o temporizador 
reseta novamente.
Valor inicial está desenergizado.
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
ACC BOOL Tempo acumulado em milissegundos.
EN BOOL Saída do temporizador habilitada. Indica que a instrução do temporizador está habilitada.
TT BOOL Saída de temporização do temporizador. Quando energizada, uma operação de temporização 
está em execução.
DN BOOL Saída de temporização executada. Indica quando o tempo acumulado é maior ou igual ao 
valor de preset.
Publicação 1756-RM003F-PT-P - Maio 2002
2-14 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Descrição: A instrução TONR acumula tempo até o:
• A instrução TONR está desabilitada
• ACC * PRE
A base de tempo é sempre 1 mseg. Por exemplo, para um 
temporizador de 2 segundos, digite 2000 para o valor PRE.
Ajusta os parâmetros de entrada Reset para resetar a instrução. Se 
TimerEnable for energizado quando Reset estiver energizado, a 
instrução TONR começa a temporização novamente assim que Reset 
for removido.
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução
Status DINT Status do bloco de funções .
InstructFault (Status.0) BOOL A instrução detectou um dos seguintes erros de execução: Isto não é um controlador de erro 
grave ou de advertência. Verifique os bits de status restantes para determinar o que ocorreu.
PresetInv (Status.1) BOOL O valor de preset é inválido.
Parâmetro de 
Entrada:
Tipo de Dados: Descrição:
TimerEnable 
bit habilitado (EN)
bit de temporização executado (DN)
valor acumulado do temporizador (ACC)
bit de temporização do temporizador (TT)
Preset
0
16649
atraso 
NO
o temporizador não 
atingiu o valor de PRE
Condição: Ação do Bloco de Funções : Ação de Texto Estruturado:
prescan Nenhuma ação tomada. Nenhuma ação tomada.
primeiro scan da instrução EN, TT e DN estão desenergizados.
O valor de ACC é ajustado em zero.
EN, TT e DN estão desenergizados.
o valor ACC é definido como zero.
primeira execução da 
instrução
EN, TT e DN estão desenergizados.
O valor ACC é ajustado em zero.
EN, TT e DN estão desligados.
o valor ACC é definido como zero.
EnableIn está 
desenergizadoO EnableOut é desenergizado, a instrução não faz 
nada e as saídas não são atualizadas.
na
EnableIn está energizado Quando EnableIn muda de desenergizado para 
energizado, a instrução inicializa conforme descrito 
no primeiro scan da instrução.
A instrução executa.
EnableOut está energizado.
EnableIn é sempre energizado
A instrução executa.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-15
Exemplo: A cada scan que limit_switch1 energiza, a instrução TONR incrementa 
o tempo decorrido ao valor de ACC, até que ele atinja o valor de PRE. 
Quando em ACC ≥ PRE, o parâmetro DN é energizado e timer_state é 
energizado.
Texto Estruturado
TONR_01.Preset := 500;
TONR_01.Reset : = reset;
TONR_O1.TimerEnable := limit_switch1;
TONR(TONR_01);
timer_state := TONR_01.DN;
Exemplo de bloco de funções 
Reset Quando o parâmetro de entrada Reset é energizado, 
a instrução desenergizado EN, TT e DN e energiza
ACC = zero.
Quando o parâmetro de entrada Reset é energizado, 
a instrução desliga EN, TT e DN e define 
ACC = zero.
postscan Nenhuma ação tomada. Nenhuma ação tomada.
Condição: Ação do Bloco de Funções : Ação de Texto Estruturado:
Publicação 1756-RM003F-PT-P - Maio 2002
2-16 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Temporizador na 
Desenergização com Reset 
(TOFR)
A instrução TOFR é um temporizador retentivo que acumula tempos 
quando TimerEnable é desenergizado.
Esta instrução está disponível na lógica ladder como duas instruções 
separadas. TOF (consulte a página 2-5) e RES (consulte a 
página 2-33).
Operandos:
Texto Estruturado
Operandos do bloco de funções 
Estrutura FBD_TIMER
Variável: Tipo: Formato: Descrição:
TOFR tag FBD_TIMER estrutura estrutura TOF
Operando: Tipo: Formato: Descrição:
TOFR tag FBD_TIMER estrutura estrutura TOF
TOFR(TOFR_tag);
Parâmetro de 
Entrada
Tipo de Dados: Descrição:
EnableIn BOOL Bloco de Funções :
Se desabilitada, a instrução não é executada e as saídas não são atualizadas.
Se energizada, a instrução é executada.
Valor inicial está energizado
Texto Estruturado
Sem efeito. A instrução executa.
TimerEnable BOOL Se estiver desenergizado, habilita o temporizador a executar e acumular tempos.
Valor inicial está desenergizado.
PRE DINT Valor de preset do temporizador. Este é o valor em unidades de 1 mseg que o ACC deve 
atingir antes que a temporização termine. Se for inválido, as instruções energizam o bit 
apropriado em Status e o temporizador não executa.
Válido = 0 para o inteiro positivo máximo
Reset BOOL Solicitação para resetar o temporizador. Quando energizado, o temporizador reseta.
Valor inicial está desenergizado.
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
ACC BOOL Tempo acumulado em milissegundos.
EN BOOL Saída habilitada de temporizador. Indica que a instrução temporizador está habilitada.
TT BOOL Saída de temporização do temporizador. Quando energizada, uma operação de 
temporização está em progresso.
DN BOOL Saída de temporização executada. Indica quando o tempo acumulado é maior ou igual ao 
valor de preset.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-17
Descrição: A instrução TOFR acumula tempo até o:
• A instrução TOFR
está desabilitada
• ACC * PRE
A base de tempo é sempre 1 mseg. Por exemplo, para um 
temporizador de 2 segundos, digite 2000 para o valor PRE.
Define os parâmetros de entrada de Reset para rearmar a instrução. Se 
o TimerEnable estiver desenergizado quando o Reset for energizado, a 
instrução TOFR não começa temporização novamente quando o Reset 
for desenergizado.
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução
Status DINT Status do bloco de funções .
InstructFault (Status.0) BOOL A instrução detectou um dos seguintes erros de execução: Isto não é um controlador de erro 
grave ou de advertência. Verifique os bits de status restantes para determinar o que ocorreu.
PresetInv (Status.1) BOOL O valor de preset é inválido.
Parâmetro de 
Entrada
Tipo de Dados: Descrição:
TimerEnable 
bit habilitado (EN)
bit do temporizador executado (DN)
valor do temporizador acumulado (ACC)
bit de temporização do temporizador (TT)
0
atraso no estado 
DESENERGIZADO
16650
o temporizador não atingiu o valor de PRE
Preset
Condição: Ação do Bloco de Funções : Ação de Texto Estruturado:
prescan Nenhuma ação tomada. Nenhuma ação tomada.
primeiro scan da instrução EN, TT e DN estão desenergizados.
o valor ACC é definido em PRE.
EN, TT e DN estão desenergizados.
o valor ACC é definido em PRE.
primeira execução da 
instrução
EN, TT e DN estão desenergizados.
o valor ACC é definido em PRE.
EN, TT e DN estão desligados.
o valor ACC é definido em PRE.
EnableIn está 
desenergizado
O EnableOut é desenergizado, a instrução não faz 
nada e as saídas não são atualizadas.
na
Publicação 1756-RM003F-PT-P - Maio 2002
2-18 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Exemplo: A cada scan após limit_switch1 ser removido, a instrução TOFR 
incrementa o valor de ACC através do tempo transcorrido até que ele 
atinja o valor de PRE. Quando o parâmetro ACC ≥ PRE é removido e 
timer_state2 é energizado.
Texto Estruturado
TOFR_01.Preset := 500
TOFR_01.Reset := reset;
TOFR_O1.TimerEnable := limit_switch1;
TOFR(TOFR_01);
timer_state2 := TOFR_01.DN;
Bloco de Funções 
EnableIn está energizado Quando o EnableIn muda de desenergizado para 
energizado, a instrução inicializa como descrito na 
instrução do primeiro scan.
A instrução executa.
EnableOut está energizado.
EnableIn é sempre energizado
A instrução executa.
Reset Quando o parâmetro de entrada Reset é energizado, 
a instrução desliga EN, TT e DN e energiza
ACC = PRE. Observe que é diferente de utilizar uma 
instrução RES em uma instrução TOF.
Quando o parâmetro de entrada Reset é energizado, 
a instrução desliga EN, TT e DN e energiza
ACC = PRE
 é energizado
. Observe que é diferente de utilizar uma instrução 
RES em uma instrução TOF.
postscan Nenhuma ação tomada. Nenhuma ação tomada.
Condição: Ação do Bloco de Funções : Ação de Texto Estruturado:
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-19
Temporizador Retentivo 
com Reset (RTOR)
A instrução RTOR é um temporizador retentivo que acumula tempos 
quando TimerEnable é energizado.
Esta instrução está disponível na lógica ladder como duas instruções 
separadas: RTO (consulte a página 2-9) e RES (consulte a 
página 2-33).
Operandos:
Texto Estruturado 
Operandos do bloco de funções 
FBD_TIMER Structure
Variável: Tipo: Formato: Descrição:
RTOR tag FBD_TIMER estrutura estrutura RTOR
Operando: Tipo Formato Descrição:
RTOR tag FBD_TIMER estrutura estrutura RTOR
RTOR(RTOR_tag);
Parâmetro de 
Entrada
Tipo de Dados: Descrição:
EnableIn BOOL Bloco de Funções 
Se desenergizada, a instrução não é executada e as saídas não são atualizadas.
Se energizada, a instrução é executada.
Valor inicial é energizado
Texto Estruturado
Sem efeito. A instrução executa.
TimerEnable BOOL Se estiver energizado, habilita o temporizador executar e acumular tempos.
Valor inicial é desenergizado.
PRE DINT Valor de preset do temporizador. Este é o valor em unidades de 1 mseg que ACC deve atingir 
antes que a temporização termine. Se for inválido, a instrução energiza o bit apropriado em 
Status e o temporizador não executa.
Válido = 0 para o inteiro positivo máximo
Reset BOOL Solicitação para resetar o temporizador novamente. Quando energizado, o temporizador 
reseta.
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
ACC DINT Tempo acumulado em milissegundos. Este valor é retidomesmo enquanto a entrada 
TimerEnable estiver desenergizada. Isto torna o comportamento deste bloco diferente do 
bloco TONR.
EN BOOL Saída do temporizador habilitada. Indica que a instrução do temporizador está habilitada.
TT BOOL Saída de temporização do temporizador. Quando energizada, uma operação de temporização 
está em execução.
DN BOOL Temporização da saída executada. Indica quando o tempo acumulado é maior ou igual ao 
valor de preset.
Publicação 1756-RM003F-PT-P - Maio 2002
2-20 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Descrição A instrução RTOR acumula os tempos até que ela seja desabilitada. 
Quando a instrução RTOR é desabilitada, os seus valores de .ACC são 
retidos. Você deve desligar o valor de .ACC usando a entrada Reset.
A base de tempo é sempre 1 mseg. Por exemplo, para um 
temporizador de 2 segundos, digite 2000 para o valor PRE.
Define os parâmetros de entrada de Reset para resetar a instrução. Se 
TimerEnable for energizado quando o Reset estiver energizado, a 
instrução RTOR começa, novamente, a temporização quando o Reset 
for desenergizado.
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Status DINT Status do bloco de funções .
InstructFault (Status.0) BOOL A instrução detectou um dos seguintes erros de execução: Isto não é um controlador de erro 
grave ou de advertência. Verifique os bits de status restantes para determinar o que ocorreu.
PresetInv (Status.1) BOOL O valor de preset é inválido.
Parâmetro de 
Entrada
Tipo de Dados: Descrição:
TimerEnable
bit habilitado (EN)
bit de temporização executado (DN)
valor acumulado do temporizador (ACC)
bit de temporização do temporizador (TT)
Preset
0
16651
Reset
o temporizador não atingiu o valor de .PRE
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-21
Execução:
Exemplo: A cada scan que limit_switch1 energiza, a instrução RTOR incrementa 
o tempo transcorrido ao valor de ACC, até que ele atinja o valor de 
PRE. Quando em ACC ≥ PRE, o parâmetro DN é energizado e 
timer_state3 é energizado.
Texto Estruturado
RTOR_01.Preset := 500
RTOR_01.Reset := reset;
RTOR_O1.TimerEnable := limit_switch1;
RTOR(RTOR_01);
timer_state3 := RTOR_01.DN;
Bloco de Funções 
Condição: Ação do Bloco de Funções : Ação de Texto Estruturado:
prescan Nenhuma ação tomada. Nenhuma ação tomada.
primeiro scan da instrução EN, TT e DN estão desenergizados.
O valor de .ACC não é modificado.
EN, TT e DN estão desenergizados.
O valor de .ACC não é modificado.
primeira execução da 
instrução
EN, TT e DN estão desenergizados.
O valor de .ACC não é modificado.
EN, TT e DN estão desenergizados.
O valor de .ACC não é modificado.
EnableIn está 
desenergizado
EnableOut é desenergizado, a instrução não faz nada 
e as saídas não são atualizadas.
na
EnableIn está energizado Bloco de Funções :
Quando o EnableIn muda de desenergizado para 
energizado, a instrução inicializa como descrito na 
instrução do primeiro scan.
A instrução executa.
EnableOut está energizado.
EnableIn é sempre energizado
A instrução executa.
Reset Quando o parâmetro de entrada Reset é energizado, 
a instrução desenergiza EN, TT e DN e energiza
ACC = zero.
Quando o parâmetro de entrada Reset é definido, a 
instrução desenergiza EN, TT e DN e energiza
ACC = zero.
postscan Nenhuma ação tomada. Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
2-22 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Contador Crescente (CTU) A instrução CTU conta ascendente.
A instrução está disponível no texto estruturado e no bloco de 
funções como CTUD, consulte a página 2-29.
Operandos:
Lógica Ladder
Estrutura COUNTER
Descrição: Quando habilitada e o bit .CU está desenergizado, a instrução CTU 
incrementa o contador em um. Quando habilitada e o bit .CU está 
energizado, ou quando desabilitada, a instrução CTU retém o seu 
valor de .ACC.
O valor acumulado continua incrementando mesmo depois que o bit 
.DN está energizado. Para remover o valor acumulado, use a instrução 
RES que referencia a estrutura do contador ou escreva 0 para o valor 
acumulado.
Operando: Tipo: Formato: Descrição:
Counter COUNTER tag estrutura do contador
Preset DINT imediato até quanto contar
Accum DINT imediato número de vezes que o contador contou
valor inicial é normalmente 0
Mnemônico: Tipo de Dados: Descrição:
.CU BOOL O bit habilitado de contagem crescente indica que a instrução CTU está habilitada.
.DN BOOL O bit executado indica .ACC ≥ .PRE.
.OV BOOL O bit de overflow indica que o contador excedeu o limite superior de 2,147,483,647. O contador 
então ultrapassa -2,147,483,648 e recomeça a contagem crescente.
.UN BOOL O bit de underflow indica que o contador excedeu o limite inferior de -2,147,483,648. O contador 
então ultrapassa 2,147,483,647 e recomeça a contagem decrescente.
.PRE DINT O valor de preset especifica qual o valor que o valor acumulado deve atingir antes que a instrução 
energize o bit .DN.
.ACC DINT O valor acumulado especifica o número de transições que a instrução contou.
entrada da condição da linha
bit de contagem crescente habilitado (.CU)
bit de contagem crescente executado (.DN)
valor acumulado do contador (.ACC)
Preset
16636
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-23
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução
Condição: Ação da Lógica Ladder:
prescan O bit .CU é energizado para prevenir incrementos inválidos durante o primeiro scan do 
programa.
A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa O bit .CU é desenergizado.
A saída da condição da linha é definida como falsa.
postscan A saída da condição da linha é definida como falsa.
examinar o bit .CU bit .CU = 0
bit .CU = 1
entrada da condição da linha é verdadeira
ultrapassa o valor 
.ACC
sim
não
verifique o bit .UN
bit .UN = 0
bit .UN = 1
bit .CU é energizado.
.ACC = .ACC + 1
examinar o bit .OV
bit .OV = 0
examinar o bit .UN
bit .UN = 1
bit .UN = 0
bit .UN é 
desenergizado.
bit .DN é 
desenergizado.
bit .OV é desenergizado.
bit .OV é energizado.
examinar .ACC .ACC ≥ .PRE
.ACC < .PRE
bit .DN é energizado.
saída da condição da linha é 
definida como verdadeira
fim
bit .OV = 1
bit .DN é desenergizado.
Publicação 1756-RM003F-PT-P - Maio 2002
2-24 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Exemplo: Depois que limit_switch_1 passar de desabilitado para habilitado por 
10 vezes, o bit .DN é energizado e light_1 acende. Se limit_switch_1 
continuar a mudar de desabilitado para habilitado, counter_1 continua 
a incrementar a sua contagem e o bit .DN permanece energizado. 
Quando limit_switch_2 está habilitado, a instrução RES reseta 
counter_1 (desenergiza os bits de status e o valor .ACC) e light_1 
apaga.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-25
Contagem Decrescente 
(CTD)
A instrução CTD conta de forma decrescente.
A instrução está disponível em texto estruturado e bloco de funções 
como CTUD, consulte a página 2-29.
Operandos:
Lógica Ladder
Estrutura COUNTER
Descrição: A instrução CTD, geralmente, é usada com a instrução CTU que 
referencia a mesma estrutura do contador.
Quando habilitada e o bit .CD está desenergizado, a instrução CTD 
decrementa o contador em um. Quando habilitada e o bit .CD está 
energizado, ou quando desabilitada, a instrução CTD retém o seu 
valor .ACC.
Operando: Tipo: Formato: Descrição:
Counter COUNTER tag estrutura do contador
Preset DINT imediato até onde contar
Accum DINT imediato número de vezes que o contador executou a contagem
normalmente o valor inicialé 0
Mnemônico: Tipo de Dados: Descrição:
.CD BOOL O bit habilitado de contagem decrescente indica que a instrução CTD está habilitada.
.DN BOOL O bit executado indica que .ACC ≥ .PRE.
.OV BOOL O bit de overflow indica que o contador excedeu o limite superior de 2,147,483,647. O contador 
então ultrapassa -2,147,483,648 e recomeça a contagem crescente.
.UN BOOL O bit de underflow indica que o contador excedeu o limite inferior de -2,147,483,648. O contador 
então ultrapassa 2,147,483,647 e recomeça a contagem decrescente.
.PRE DINT O valor de preset especifica qual valor que o valor acumulado deve atingir antes que a instrução 
energize o bit .DN.
.ACC DINT O valor acumulado especifica o número de transições que a instrução contou.
entrada da condição da linha
bit habilitado da contagem decrescente (.CD)
bit executado da contagem decrescente (.DN)
valor acumulado do contador (.ACC)
Preset
16637
Publicação 1756-RM003F-PT-P - Maio 2002
2-26 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
O valor acumulado continua decrementando mesmo depois que o bit 
.DN é energizado. Para remover o valor acumulado, use a instrução 
RES que referencia a estrutura do contador ou escreva 0 para o valor 
acumulado.
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-27
Condição: Ação da Lógica Ladder:
prescan O bit .CD é energizado para prevenir decrementos inválidos durante o primeiro scan do 
programa.
A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa O bit .CD é desligado.
A saída da condição da linha é definida como falsa.
postscan A saída da condição da linha é definida como falsa.
examinar o bit .CD
.CU bit = 0
.CU bit = 1
entrada da condição da linha é verdadeira
o valor de 
.ACC 
ultrapassa
sim
não
examinar o bit .UN bit .UN = 0
bit .UN = 1
bit .CD é energizado.
.ACC = .ACC - 1
examinar o bit .OV bit .OV = 0
examinar o bit .OV
bit .OV = 1
bit .OV = 0
bit .OV é desenergizado.
bit .DN é desenergizado.
bit .UN é desenergizado.
bit .UN é energizado.
examinar .ACC
.ACC ≥ .PRE
bit .DN é energizado.
saída da condição da linha é 
definida como verdadeira
fim
bit .OV = 1
.ACC < .PRE
bit .DN é desenergizado.
Publicação 1756-RM003F-PT-P - Maio 2002
2-28 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Exemplo: Uma transportadora traz peças para uma zona de buffer. Cada vez que 
uma peça entra, limit_switch_1 é habilitado e counter_1 incrementa 
em 1. Cada vez que uma peça sai, limit_switch_2 é habilitado e 
counter_1 decrementa em 1. Se houver 100 peças na zona de buffer 
(counter_1.dn está energizado), conveyor_a liga e impede que a 
transportadora traga mais peças até que o buffer tenha espaço.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-29
Contagem 
Crescente/Decrescente 
(CTUD)
A instrução CTUD conta de forma crescente de um em um quando as 
transições CUEnable passa de desenergizado para energizado. A 
instrução CTUD conta de forma decrescente de um em um quando 
CDEnable muda de desenergizado para energizado.
Esta instrução está disponível na lógica ladder como três instruções 
separadas. CTU (consulte a página 2-22), CTD (consulte a 
página 2-25) e RES (consulte a página 2-33).
Operandos:
Texto Estruturado
Bloco de Funções 
Estrutura FBD_COUNTER
Variável: Tipo: Formato: Descrição:
CTUD tag FBD_COUNTER estrutura estrutura CTUD
Operando: Tipo: Formato: Descrição:
CTUD tag FBD_COUNTER estrutura estrutura CTUD
CTUD(CTUD_tag);
Parâmetro 
de Entrada:
Tipo de Dados: Descrição:
EnableIn BOOL Bloco de Funções :
Se desenergizado, a instrução não é executada e as saídas não são atualizadas.
Se energizado, a instrução é executada.
Valor inicial está energizado
Texto Estruturado
Sem efeito. A instrução executa.
CUEnable BOOL Habilita contagem crescente. Quando a entrada passa de desenergizado para energizado, o acumulador 
conta de forma crescente de um em um. 
Valor inicial está desenergizado.
CDEnable BOOL Habilita contagem decrescente. Quando a entrada passa de desenergizado para energizado, o 
acumulador conta de forma decrescente de um em um. 
Valor inicial está desenergizado.
PRE DINT Valor de preset do contador. Este é o valor que o valor acumulado deve atingir antes que DN seja 
energizado.
Válido = qualquer inteiro
Valor inicial é 0.
Reset BOOL Solicitação para resetar o temporizador. Quando energizado, o temporizador reseta novamente.
Valor inicial está desenergizado.
Publicação 1756-RM003F-PT-P - Maio 2002
2-30 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Descrição: Quando habilitadas e a instrução CUEnable está energizada, as 
instruções CTUD incrementam o contador em um. Quando habilitada 
e a instrução CDEnable está energizada, a instrução CTUD 
decrementa o contador em um.
Ambos os parâmetros de entrada CUEnable e CDEnable, podem ser 
comutados durante o mesmo scan. A instrução executa a contagem 
crescente antes da contagem decrescente.
Contagem crescente
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
ACC DINT Valor acumulado.
CU BOOL Contagem crescente habilitada.
CD BOOL Contagem decrescente habilitada.
DN BOOL Contagem executada. Define quando o valor acumulado é maior ou igual ao valor de preset.
OV BOOL Overflow do contador. Indica que o contador excedeu o limite superior de 2,147,483,647.
O contador então ultrapassa −2,147,483,648 e começa a contagem decrescente novamente.
UN BOOL Underflow do contador. Indica que o contador excedeu o limite inferior de −2,147,483,648.
O contador então ultrapassa 2,147,483,647 e recomeça a contagem decrescente.
CUEnable
bit de contagem crescente habilitado (CU)
bit de contagem crescente executado (DN)
valor acumulado do contador (ACC)
preset
16636
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-31
Contagem decrescente
Quando desabilitada, a instrução CTUD retém o seu valor acumulado. 
Define o parâmetro de entrada Reset da estrutura FBD_COUNTER 
para resetar a instrução.
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução
CDEnable 
bit de contagem decrescente habilitado (CD)
bit de contagem decrescente executado (DN)
valor acumulado do contador (ACC)
preset
16637
Condição: Ação do Bloco de Funções : Ação de Texto Estruturado:
prescan Não é necessária a inicialização. Não é necessária a inicialização.
primeiro scan da instrução CUEnablen-1 e CDEnablen-1 estão energizados. CUEnablen-1 e CDEnablen-1 estão energizados.
primeira execução da 
instrução
CUEnablen-1 e CDEnablen-1 estão energizados. CUEnablen-1 e CDEnablen-1 estão energizados.
EnableIn está 
desenergizado
O EnableOut é desenergizado, a instrução não faz 
nada e as saídas não são atualizadas.
na
EnableIn está energizado a instrução energiza CUEnablen-1 e CDEnablen-1.
De transição de energizado para energizado do 
EnableIn:
• A instrução executa.
• EnableOut está energizado.
a instrução energiza CUEnablen-1 e CDEnablen-1.
EnableIn é sempre energizado
A instrução executa.
Reset Quando energizada, a instrução desliga CUEnablen-1, 
CDEnablen-1, CU, CD, DN, OV e UN e energiza
ACC = zero.
Quando energizada, a instrução desliga CUEnablen-1, 
CDEnablen-1, CU, CD, DN, OV e UN e energiza
ACC = zero.
postscan Nenhuma ação tomada. Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
2-32 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Exemplo: Quando limit_switch1 passa de desenergizado para energizado, 
CUEnable é definidocomo um scan e a instrução CTUD incrementa o 
valor ACC em 1. Quando em ACC ≥ PRE, o parâmetro DN é 
energizado, o que habilita a instrução bloco de funções CTUD.
Texto Estruturado
CTUD_01.Preset := 500;
CTUD_01.Reset := Restart;
CTUD_O1.CUEnable := limit_switch1;
CTUD(CTUD_01);
counter_state := CTUD_01.DN;
Bloco de Funções 
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-33
Reset (RES) A instrução RES reseta uma estrutura TIMER, COUNTER ou CONTROL.
Operandos:
Lógica Ladder 
Descrição: Quando habilitada, a instrução RES desenergiza estes elementos:
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução
Operando: Tipo: Formato: Descrição:
estrutura TIMER
CONTROL
COUNTER
tag estrutura para reset
Quando estiver usando a instrução 
RES para um: A instrução desliga:
TIMER valor de .ACC
bits de controle de status
COUNTER valor de .ACC
bits de controle de status
CONTROL valor .POS
bits de controle de status
ATENÇÃO
!
Desde que a instrução RES remova o valor de .ACC , 
desenergize os bits .DN e .TT bit, não use a instrução 
RES para resetar o temporizador TOF.
Condição: Ação da Lógica Ladder:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira A instrução RES rearma a estrutura especificada.
A saída da condição da linha está definida como verdadeira.
postscan A saída da condição da linha é definida como falsa.
Publicação 1756-RM003F-PT-P - Maio 2002
2-34 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)
Exemplos:
Exemplo: Descrição:
Quando habilitado, reseta timer_3.
Quando habilitado, reseta counter_1.
Quando habilitado, reseta control_1.
Publicação 1756-RM003F-PT-P - Maio 2002
Capítulo 3
Instruções de Entrada/Saída
(MSG, GSV, SSV)
Introdução As instruções de entrada/saída lêem ou escrevem dados a partir do 
controlador ou para o controlador, ou lêem um bloco de dados a 
partir de ou para um outro módulo, em uma outra rede.
Se você quiser: Use esta instrução: Disponível nestas linguagens: Consulte a 
página:
enviar dados de/para outro módulo MSG lógica ladder
texto estruturado
3-2
obter informações de status do controlador GSV lógica ladder
texto estruturado
3-29
definir informações de status do controlador SSV lógica ladder
texto estruturado
3-29
1 Publicação 1756-RM003F-PT-P - Maio 2002
3-2 Instruções de Entrada/Saída (MSG, GSV, SSV)
Mensagem (MSG) A instrução MSG realiza a leitura ou escreve de forma assíncrona em 
um bloco de dados para outro módulo em uma rede.
Operandos:
Lógica Ladder 
Texto Estruturado
Os operandos são os mesmos, como aqueles da instrução MSG da 
lógica ladder.
Estrutura MESSAGE
Operando: Tipo: Formato: Descrição:
Controle de 
mensagem
MESSAGE tag estrutura da mensagem
MSG(MessageControl);
Mnemônico: Tipo de 
Dados:
Descrição:
.FLAGS INT O membro .FLAGS fornece acesso aos membros de status (bits) em uma palavra de 16 bits.
Este bit: Corresponde a este membro:
2 .EW
4 .ER
5 .DN
6 .ST
7 .EN
8 .TO
9 .EN_CC
Importante: O reset de qualquer bit de status da MSG enquanto ela estiver habilitada pode 
interromper as comunicações. 
.ERR INT Se o bit .ER for energizado, a palavra de código de erro identifica os códigos de erro para a instrução 
MSG.
.EXERR INT A palavra de código de erro estendido especifica as informações de código de erro adicionais para 
alguns códigos de erro.
.REQ_LEN INT O comprimento requisitado especifica quantas palavras a instrução de mensagem tentará transferir.
.DN_LEN INT O comprimento executado identifica quantas palavras realmente foram transferidas.
.EW BOOL O bit de espera habilitado está energizado quando o controlador detecta a entrada de um pedido de 
mensagem na fila. O controlador reseta o bit .EW quando o bit .ST estiver energizado.
.ER BOOL O bit de erro é energizado quando o controlador detecta uma falha na transferência. O bit .ER é 
resetado na próxima vez que a entrada da condição da linha passar de falsa para verdadeira.
.DN BOOL O bit executado é energizado quando o último pacote de mensagens for transferido com sucesso. O 
bit .DN é resetado na próxima vez que a entrada da condição da linha passar de falsa para verdadeira.
.ST BOOL O bit de partida é energizado quando o controlador começar a executar a instrução MSG. O bit .ST é 
resetado quando o bit .DN ou o bit .ER for energizado.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-3
.EN BOOL O bit habilitado é energizado quando a entrada da condição da linha se tornar verdadeira e 
permanecer energizada até o bit .DN ou .ER ser energizado e a entrada da condição da linha se tornar 
falsa. Se a entrada da condição da linha se tornar falsa, mas os bits .DN e .ER forem desenergizados, 
o bit .EN permanecerá energizado.
.TO BOOL Se você energizar o bit .TO manualmente, o controlador interrompe o processamento da mensagem e 
energiza o bit .ER.
.EN_CC BOOL O bit habilitado de cache determina como controlar a conexão MSG. Consulte Escolha de uma opção 
de cache: na página 3-27 As conexões para as instruções MSG que saem da porta serial não estão em 
memória cache, mesmo que o bit .EN_CC esteja energizado.
.ERR_SRC SINT Usado pelo software RSLogix 5000 para apresentar o caminho de erro na caixa de seleção Message 
Configuration
.DestinationLink INT Para mudar o Link Destination de um DH+ ou CIP com a mensagem Source ID, ajuste o membro para o 
valor solicitado.
.DestinationNode INT Para mudar o Nó de Destino de um DH+ ou CIP com a mensagem Source ID, ajuste o membro para o 
valor solicitado.
.SourceLink INT Para mudar o Link Source de um DH+ ou CIP com a mensagem Source ID, ajuste o membro para o 
valor solicitado.
.Class INT Para mudar o parâmetro Class de uma mensagem CIP Generic, ajuste o membro para o valor 
solicitado.
.Attribute INT Para mudar o parâmetro Attribute de uma mensagem CIP Generic, ajuste o membro para o valor 
solicitado.
.Instance DINT Para mudar o parâmetro Instance de uma mensagem CIP Generic, ajuste o membro para o valor 
solicitado.
.LocalIndex DINT Caso use um asterisco [*] para designar o número do elemento do array local, o LocalIndex fornece o 
número do elemento. Para alterar o número do elemento, ajuste o membro para o valor solicitado.
Se a mensagem: Logo, o array local:
lê os dados o Elemento Destino
escreve os dados O Elemento Fonte
.Channel SINT Para enviar a mensagem de um outro canal diferente do módulo 1756-DHRIO, ajuste este membro 
para o valor solicitado. Use o caracter ASCII A ou B.
.Rack SINT Para alterar o número do rack para uma mensagem de block-transfer, ajuste este membro para o 
número do rack requisitado (octal).
.Group SINT Para alterar o número do grupo para uma mensagem de block-transfer, ajuste este membro para o 
número de grupo requisitado (octal).
.Slot SINT Para alterar o número do slot para uma mensagem de block-transfer, ajuste este membro para o 
número do slot requisitado (octal).
Se a mensagem 
passar direto pela 
rede:
Especifique o número do slot em:
remote I/O octal
ControlNet decimal (0-15)
.Path STRING Para enviar a mensagem para um controlador diferente, ajuste este membro para um novo caminho.
• Insira o caminho como valores decimais.
• Omita as vírgulas [,] 
Por exemplo, para um caminho de 1, 0, 2, 42, 1, 3, insira $01$00$02$2A$01$03.
Para navegar para um dispositivo e criar automaticamente uma parte ou toda uma nova string, clique 
com o botão direito do mouse sobre o tag da string e selecione Go to Message Path Editor.
Mnemônico: Tipo de 
Dados:
Descrição:
Publicação 1756-RM003F-PT-P - Maio 2002
3-4 Instruções de Entrada/Saída (MSG, GSV, SSV)
Descrição: A instrução MSG transfere os elementos dos dados.
Esta é uma instrução transicional:
• Na lógica ladder,comute a entrada da condição da linha de 
desenergizada para energizada toda vez que a instrução tiver 
que ser executada.
• Em texto estruturado, condicione a instrução de forma que só 
seja executada em uma transição. Consulte o Apêndice C
.RemoteIndex DINT Caso use um asterisco [*] para designar o número do elemento do array local, o LocalIndex fornece o 
número do elemento. Para alterar o número do elemento, ajuste o membro para o valor solicitado.
Se a mensagem: Logo, o array remoto é:
lê os dados O elemento Source
escreve os dados O elemento Destination
.RemoteElement STRING Para especificar um tag ou endereço diferente no controlador para o qual a mensagem é enviada, 
ajuste este membro para o valor requisitado. Insira o tag ou endereço como caracteres ASCII.
Se a mensagem: Logo, o array remoto é:
lê os dados O elemento Source
escreve os dados O elemento Destination
.UnconnnectedTimeout DINT O timeout para mensagens desconectadas. O valor padrão é 30 segundos.
.ConnectionRate DINT O ConnectionRate vezes o TimeoutMultiplier produz o timeout para mensagens conectadas.
• O ConnectionRate padrão é 7,5 segundos.
• O TimeoutMultiplier padrão é 0 (que equivale a um fator de multiplicação por 4).
• O timeout padrão para as mensagens conectadas é 30 segundos (7,5 segundos x 4 = 30 
segundos).
• Para alterar o timeout, altere o ConnectionRate e deixe o TimeoutMultiplier no valor padrão.
.TimeoutMultiplier SINT
Mnemônico: Tipo de 
Dados:
Descrição:
ATENÇÃO
!
O controlador processa os bits .ST, .EW, .DN e .ER de uma 
maneira assíncrona a do scan. Para verificar estes bits em 
lógica ladder, copie as palavras .FLAGS para um tag INT e 
verifique os bits a partir deste ponto. Caso contrário, 
problemas de temporização podem invalidar a sua aplicação 
com possíveis danos ao equipamento e ferimentos pessoais.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-5
O tamanho de cada elemento depende dos tipos de dados 
especificados e do tipo de comando de mensagem usado.
Execução
conexão com .EN_CC = 1
entrada da condição da linha
bit .EW
conexão com .EN_CC = 0
41382
bit .ST
bit .DN ou .ER
bit .EN
1 2 3 4 5 6 7
Onde: Descrição: Onde: Descrição:
1 entrada da condição da linha é verdadeira
.EN está energizado
.EW está energizado
a conexão está aberta*
5 a mensagem é enviada
.ST está energizado
.EW é desenergizado.
2 a mensagem é enviada
.ST está energizado
.EW está desenergizado.
6 a mensagem é executada ou está errada
a entrada da condição da linha continua verdadeira
.DN ou .ER está energizado
.ST é desenergizado.
a conexão é fechada (se .EN_CC = 0)
3 a mensagem é executada ou está errada
entrada da condição da linha é falsa
.DN ou .ER está energizado
.ST é desenergizado.
a conexão é fechada (se .EN_CC = 0)
.EN está energizado(a entrada da condição da linha 
é falsa)
7 a entrada da condição da linha se torna falsa e .DN 
ou .ER é energizado
.EN é desenergizado.
4 entrada da condição da linha é verdadeira
.DN ou .ER foi energizado anteriormente
.EN está energizado
.EW está energizado
a conexão está aberta*
.DN ou .ER está desenergizado
Condição: Ação da Lógica Ladder: Ação de Texto Estruturado:
prescan A saída da condição da linha é definida como falsa. Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
3-6 Instruções de Entrada/Saída (MSG, GSV, SSV)
entrada da condição da 
linha é verdadeira
A instrução executa.
A saída da condição da linha é definida como 
verdadeira.
na
Condição: Ação da Lógica Ladder: Ação de Texto Estruturado:
entrada da condição da linha é falsa
(não se aplica a texto estruturado)
fim
saída da condição da 
linha é definida como 
examinar bit .EN
bit .EN = 1
bit .EN = 0
examinar o bit 
.EW
bit .EW = 1
bit .EW = 0
examinar o bit .ST
bit .ST = 1
bit .ST = 0
examinar bit .DN
bit .DN = 1
bit .DN = 0
examinar bit .DN
bit .DN = 1
bit .DN = 0
examinar bit .ER
bit .ER = 1
bit .ER = 0
bit .EN é desenergizado.
examinar bit .ER
bit .ER = 1 bit .ER = 0 comando de 
block-transfer caminho válido do módulo
sim não
não
executar pedido de 
mensagem
bit .EW está energizado
conexão do 
módulo em 
operação
não
sim
sim
bit .ER é energizado
Condição: Ação da Lógica Ladder: Ação de Texto Estruturado:
EnableIn está energizado na EnableIn é sempre energizado
A instrução executa.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-7
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Códigos de Erro MSG Os códigos de erro dependem do tipo de instrução MSG.
postscan A saída da condição da linha é definida como falsa. Nenhuma ação tomada.
Condição: Ação da Lógica Ladder: Ação de Texto Estruturado:
execução da instrução
fim
saída da condição da linha é 
definida como falsa
bit .EN = 0
examinar o bit 
.EW
bit .EW = 1
bit .EW = 0
examinar o bit .ST
bit .ST = 1
bit .ST = 0
examinar bit .DN
bit .DN = 1
bit .DN = 0
examinar bit .ER
bit .ER = 1 bit .ER = 0 comando de 
block-transfer caminho válido do módulo
sim não
não
bits .EW, .ST, .TO, .DN e .ER são 
desenergizados
bit .EN é energizado
executar pedido de mensagem
bit .EW está energizado
conexão do 
módulo em 
operação
não
sim
sim
bit .ER é energizado
examinar bit .EN
bit .EN = 1
examinar o bit 
.EW
bit .EW = 0
examinar o bit .ST
bit .ST = 0
bits .EW, .ST, .TO, .DN e .ER são 
desenergizados
bit .EN é energizado
bit .EN é energizado
bit .EW = 1
bit .ST = 1
Publicação 1756-RM003F-PT-P - Maio 2002
3-8 Instruções de Entrada/Saída (MSG, GSV, SSV)
Códigos de Erro
O software RSLogix 5000 nem sempre exibe a descrição completa.
Código de erro (hex): Descrição: Display do software:
0001 Falha de conexão (consulte os códigos de erro estendidos) igual à descrição
0002 Recurso insuficiente igual à descrição
0003 Valor inválido igual à descrição
0004 Erro de sintaxe IOI (consulte os códigos de erro estendidos) igual à descrição
0005 Destino desconhecido, classe não suportada, instância indefinida ou 
elemento de estrutura indefinida (consulte os códigos de erro 
estendidos)
igual à descrição
0006 Espaço insuficiente no pacote igual à descrição
0007 Perda de conexão igual à descrição
0008 Serviço não suportado igual à descrição
0009 Erro no segmento de dados ou valor de atributo inválido igual à descrição
000A Erro na lista de atributo igual à descrição
000B Estado já existe igual à descrição
000C Conflito no modelo do objeto igual à descrição
000D Objeto já existe igual à descrição
000E Atributo não configurável igual à descrição
000F Permissão negada igual à descrição
0010 Conflito com o estado do dispositivo igual à descrição
0011 A resposta não será adequada igual à descrição
0012 Fragmento primitivo igual à descrição
0013 Dados de comando insuficientes igual à descrição
0014 Atributo não suportado igual à descrição
0015 Excesso de dados igual à descrição
001A Pedido de ponte muito grande igual à descrição
001B Resposta da ponte muito grande igual à descrição
001C Escassez de lista de atributos igual à descrição
001D Lista de atributos inválidos igual à descrição
001E Erro no serviço incorporado igual à descrição
001F Falha relacionada à conexão (consulte os códigos de erro 
estendidos)
igual à descrição
0022 Resposta recebida inválida igual à descrição
0025 Erro de segmento principal igual à descrição
0026 Erro de IOI inválido igual à descrição
0027 Atributo inesperado na lista igual à descrição
0028 Erro na DeviceNet - Identificação de membro inválido igual à descrição
0029 Erro na DeviceNet - membro não configurável igual à descrição
00D1 Módulo não está no estado de operação erro desconhecido
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-9
Códigos de Erro Estendido
O software RSLogix 5000 não exibe texto para os códigos de erro 
estendidos.
Estes são os códigos de erro estendidos para o código de erro 0001.
Estes são os códigos de erro estendidospara o código de erro 001F.
Estes são os códigos de erro estendidos para os códigos de erro 0004 
e 0005.
00FB Porta de mensagem não suportada erro desconhecido
00FC Tipo de dados não suportados pela mensagem erro desconhecido
00FD Mensagem não inicializada erro desconhecido
00FE timeout de mensagem erro desconhecido
00FF Erro geral (consulte os códigos de erro estendidos) erro desconhecido
Código de erro (hex): Descrição: Display do software:
Código 
de erro 
estendid
o (hex):
Descrição:
0100 Conexão em uso
0103 Transporte não suportado
0106 Conflito de Dispositivo de Armazenamento de 
Configuração
0107 Conexão não encontrada
0108 Tipo de conexão inválida
0109 Tamanho de conexão inválida
0110 Módulo não configurado
0111 EPR não suportado
0114 Módulo errado
0115 Tipo de dispositivo errado
0116 Revisão errada
0118 Formato de configuração inválido
011A Aplicação fora das conexões
0203 Timeout da conexão
0204 Timeout de mensagem não conectada
0205 Erro de parâmetro enviado não conectado
0206 Mensagem muito grande
0301 Sem espaço de memória no buffer
0302 Largura de faixa não disponível
0303 Não há disponibilidade de screeners
0305 Correspondência de assinatura
0311 Porta não disponível
0312 Endereço de rede não disponível
0315 Tipo de segmento inválido
0317 Conexão não programada
Código 
de erro 
estendid
o (hex):
Descrição:
Código de erro estendido (hex): Descrição:
0203 Timeout da conexão
Código de erro estendido (hex): Descrição
0000 status estendido fora da memória
0001 status estendido fora dos exemplos
Publicação 1756-RM003F-PT-P - Maio 2002
3-10 Instruções de Entrada/Saída (MSG, GSV, SSV)
Estes são os códigos de erro estendidos para o código de erro 00FF.
Código 
de erro 
estendid
o (hex):
Descrição:
2001 Excesso de IOI
2002 Valor do parâmetro deficiente
2018 Sinalização rejeitada
201B Tamanho muito pequeno
201C Tamanho inválido
2100 Falha de privilégio
2101 Posição da chave seletora de modo inválida
2102 Senha inválida
2103 Sem emissão de senha
2104 Endereço fora da faixa
2105 Endereço e quantos estão fora da faixa
2106 Dados em uso
2107 Tipo inválido ou não suportado
2108 Controlador no modo de carga ou descarga
2109 Tentativa de alterar o número das dimensões do 
array
210A Nome inválido do símbolo
210B Símbolo não existe
210E Busca apresentou falha
210F Tarefa não pode ser iniciada
2110 Não há condições de escrita
2111 Não há condições de leitura
2112 Rotina compartilhada que não pode ser editada
2113 Controlador no modo de falha
2114 Modo de operação inibido
Código 
de erro 
estendid
o (hex):
Descrição:
P
ublicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-11
Códigos de Erro do CLP e do SLC (.ERR)
Para os códigos de erro do CLP e SLC, o software de programação não 
exibe a descrição completa.
Código de 
erro (hex):
Descrição:
1000 Comando ilegal ou formato do controlador local
2000 Módulo de comunicação não está funcionando
3000 Nó remoto está faltando, desconectado ou 
desligado
4000 Controlador conectado, mas com falha (hardware)
5000 Número de estação errado
6000 Função requisitada não está disponível
7000 Controlador está no modo Program
8000 Arquivo de compatibilidade do controlador não 
existe
9000 Nó remoto não consegue comandar o buffer
B000 Controlador está executando um download, 
portanto não pode ser acessado
F001 Controlador converteu incorretamente o endereço
F002 Endereço incompleto
F003 Endereço incorreto
F004 Formato ilegal do endereço - símbolo não 
encontrado
F005 Formato ilegal do endereço - o símbolo tem o valor 0 
ou maior do que o número máximo de caracteres 
suportados pelo dispositivo
F006 Arquivo de endereço não existe no controlador alvo.
F007 Arquivo de destino é muito pequeno para o número 
de palavras solicitado.
F008 Não consegue completar o pedido
Situação alterada durante operação com vários 
pacotes
F009 Dados ou arquivo muito grande
Memória não disponível
F00A Controlador alvo não consegue colocar as 
informações requisitadas em pacotes
F00B Erro de privilégio; acesso negado
F00C Função requisitada não está disponível
F00D Pedido redundante
F00E Comando não pode ser executado
F00F Overflow; histograma de overflow
F010 Sem acesso
F011 Tipo de dados requisitados não corresponde aos 
dados disponíveis
F012 Parâmetros de comando incorretos
F013 Referência de endereço existe para uma área 
apagada
F014 Falha na execução do comando por motivo 
desconhecido
Overflow do histograma do CLP-3
F015 Erro na conversão dos dados
F016 Scanner não está disponível para comunicação com 
um adaptador de rack 1771
F017 Adaptador não está disponível para comunicação 
com o módulo
F018 Resposta do módulo 1771 não foi válida
F019 Etiqueta duplicada
F01A Controlador que armazena a configuração do 
arquivo ativo - o arquivo está sendo usado
F01B Controlador que armazena a configuração do 
programa ativo - alguém está fazendo o download 
de dados ou a edição on-line
F01C Arquivo do disco está protegido contra escrita ou 
não pode ser acessado (somente off-line)
F01D Arquivo do disco está sendo usado por outra 
aplicação
Atualização não realizada (somente off-line)
Código de 
erro (hex):
Descrição:
Publicação 1756-RM003F-PT-P - Maio 2002
3-12 Instruções de Entrada/Saída (MSG, GSV, SSV)
Códigos de Erro de Block-transfer
Estes são os códigos de erros específicos de block-transfer no 
Logix5000.
Código de erro 
(hex):
Descrição: Display do software:
00D0 O scanner não recebeu uma resposta de block-transfer do módulo de block-transfer dentro 
de 3,5 s do pedido
erro desconhecido
00D1 O checksum da resposta de leitura não corresponde ao checksum do conjunto de dados erro desconhecido
00D2 O scanner solicitou uma leitura ou escrita, mas o módulo de block-transfer forneceu uma 
resposta contrária.
erro desconhecido
00D3 O scanner solicitou um comprimento e o módulo de block-transfer respondeu com um 
comprimento diferente.
erro desconhecido
00D6 O scanner recebeu uma resposta do módulo de block-transfer, indicando que o pedido de 
escrita apresentou falha.
erro desconhecido
00EA O scanner não foi configurado para comunicar-se com o rack deste módulo de 
block-transfer
erro desconhecido
00EB O slot lógico específico não está disponível para o tamanho de rack determinado erro desconhecido
00EC No momento, há um pedido de block-transfer em andamento e uma resposta é solicitada 
antes que outro pedido possa ser iniciado
erro desconhecido
00ED O tamanho de pedido de block-transfer não está de acordo com os pedidos de tamanho 
válidos para block-transfer
erro desconhecido
00EE O tipo de pedido de block-transfer não está de acordo com o BT_READ ou BT_WRITE 
previsto
erro desconhecido
00EF O scanner não conseguiu encontrar um slot disponível na tabela de block-transfer para 
acomodar o pedido de block-transfer
erro desconhecido
00F0 O scanner recebeu um pedido para resetar os canais de E/S remota enquanto houvesse 
block-transfers em aberto.
erro desconhecido
00F3 As filas para block-transfers remotos estão cheias erro desconhecido
00F5 Nenhum canal de comunicação está configurado para o slot ou rack solicitado erro desconhecido
00F6 Nenhum canal de comunicação está configurado para E/S remota erro desconhecido
00F7 O timeout de block-transfer configurado na instrução encerrou a temporização antes da 
conclusão
erro desconhecido
00F8 Erro no protocolo de block-transfer - block-transfer não solicitado erro desconhecido
00F9 Os dados de block-transfer foram perdidos devido a um canal de comunicação em más 
condições
erro desconhecido
00FA O módulo de block-transfer solicitou um comprimento diferente daquele associado à 
instrução de block-transfer.
erro desconhecido
00FB O checksum dos dados de leitura do block-transfer estava errado erro desconhecido
00FC Houve uma transferência inválida dos dados de escrita de block-transfer entre o adaptador 
e o módulo de block-transfer
erro desconhecido00FD O tamanho do block-transfer mais o tamanho do índice na tabela de dados de 
block-transfer era maior do que o tamanho do arquivo da tabela de dados de block-transfer
erro desconhecido
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-13
Especificação dos Detalhes 
da Configuração
Depois de inserir a instrução MSG e especificar a estrutura MESSAGE, 
use a caixa de diálogo Message Configuration para especificar os 
detalhes da mensagem.
Os detalhes de configuração dependem do tipo de mensagem 
selecionado.
Clique aqui para configurar a instrução MSG
42976
Se o dispositivo alvo for um: Selecione um dos seguintes tipos de 
mensagens:
Consulte a 
página:
Controlador Logix5000 CIP Data Table Read 3-14
CIP Data Table Write
Módulo de E/S que você configura usando 
o software RSLogix 5000
Module Reconfigure 3-14
CIP Generic 3-16
Controlador CLP-5 PLC5 Typed Read 3-17
PLC5 Typed Write
PLC5 Word Range Read
PLC5 Word Range Write
Controlador SLC
Controlador MicroLogix
SLC Typed Read 3-18
SLC Typed Write
Módulo de block-transfer Block-Transfer Read 3-18
Block-Transfer Write
Controlador CLP-3 PLC3 typed read 3-19
PLC3 typed write
PLC3 word range read
PLC3 word range write
Controlador CLP-2 PLC2 unprotected read 3-20
PLC2 unprotected write
Publicação 1756-RM003F-PT-P - Maio 2002
3-14 Instruções de Entrada/Saída (MSG, GSV, SSV)
Você deve especificar essa informação de configuração:
Especificação das Mensagens de Leitura e Escrita da Tabela de 
Dados CIP
Os tipos de mensagens Leitura e Escrita da Tabela de Dados CIP 
transferem dados entre os controladores Logix5000.
Reconfiguração de um Módulo de E/S
Use a mensagem Module Reconfigure para enviar as novas 
informações de configuração para um módulo de E/S. Durante a 
reconfiguração:
• Os módulos de entrada continuam a enviar dados de entrada 
para o controlador.
• Os módulos de saída continuam a enviar para o controlador 
seus dispositivos de saída.
Uma mensagem de Module Reconfigure solicita estas propriedades de 
configuração:
Para esta propriedade: Especifique
Source Element • Se você selecionar um tipo de mensagem de leitura, Source Element é o endereço de dados que você 
quer ler no dispositivo alvo. Use a sintaxe de endereçamento do dispositivo alvo.
• Se você selecionar um tipo de mensagem de escrita, Source Tag é o primeiro elemento do tag que 
você quer enviar para o dispositivo alvo.
Number of Elements O número de elementos que você lê/escreve depende do tipo de dados que está sendo usado. Um elemento 
se refere a um "fragmento" dos dados relacionados. Por exemplo, o tag timer1 é um elemento composto por 
uma estrutura de controle do temporizador.
Destination Element • Se você selecionar um tipo de mensagem de leitura, o Destination Element é o primeiro elemento do 
tag no controlador Logix5000 no qual você quer armazenar os dados que você lê a partir do dispositivo 
alvo.
• Se você selecionar o tipo de mensagem de escrita, o Destination Element é o endereço do local no 
dispositivo alvo onde você escreverá os dados.
Selecione este comando: Se você quiser:
CIP Data Table Read ler os dados a partir de outro controlador.
Os tipos Source e Destination devem corresponder.
CIP Data Table Write escrever os dados em outro controlador.
Os tipos Source e Destination devem corresponder.
Nesta propriedade: Selecione:
Message Type Module Reconfigure
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-15
Exemplo: Para reconfigurar um módulo de E/S:
1. Configure o membro requisitado do tag de configuração do 
módulo para o novo valor.
2. Envie uma mensagem Module Reconfigure para o módulo.
Quando reconfigure[5] é energizado, ajusta o alarme em 60 para o 
módulo local no slot 4. A mensagem Module Reconfigure envia o 
novo valor de alarme para o módulo. A instrução de uma etapa 
previne que a linha envie mensagens múltiplas para o módulo 
enquanto o reconfigure[5] estiver ligado.
Lógica Ladder
Texto Estruturado
IF reconfigure[5] AND NOT reconfigure[6]THEN
Local:4:C.Ch0Config.HAlarmLimit := 60;
IF NOT change_Halarm.EN THEN
MSG(change_Halarm);
END_IF;
END_IF;
reconfigure[6] := reconfigure[5];
Publicação 1756-RM003F-PT-P - Maio 2002
3-16 Instruções de Entrada/Saída (MSG, GSV, SSV)
Especificar Mensagens CIP Generic
Uma mensagem CIP Generic realiza uma ação específica em um 
módulo de E/S.
Se você quiser Nesta propriedade: Digite ou selecione:
Realizar um teste de pulso em um 
módulo de saída digital
Message Type CIP Generic
Service Type Pulse Test
Source tag_name do tipo INT [5]
Este array contém:
tag_name[0] máscara de bit dos pontos para teste (teste 
somente um ponto de cada vez)
tag_name[1] reservado, deixe 0 
tag_name[2] largura do pulso (centenas de µ segundos, 
normalmente 20)
tag_name[3] atraso no cruzamento zero para ControlLogix 
I/O (centenas deµsegundos, normalmente 
40)
tag_name[4] verifique o atraso
Destination deixe em branco
Resetar os fusíveis eletrônicos em um 
módulo de saída digital
Message Type CIP Generic
Service Type Reset Electronic Fuse
Source tag_name do tipo DINT
Este tag representa uma máscara de bit dos pontos para resetar os 
fusíveis para energizado.
Destination deixe em branco
Resetar diagnósticos travados em um 
módulo de entrada digital
Message Type CIP Generic
Service Type Reset Latched Diagnostics (I)
Source tag_name do tipo DINT
Esse tag representa uma máscara de bit dos pontos para resetar o 
diagnóstico para energizado.
Resetar diagnósticos em um módulo de 
saída digital
Message Type CIP Generic
Service Type Reset Latched Diagnostics (O)
Source tag_name do tipo DINT
Esse tag representa uma máscara de bit dos pontos para resetar o 
diagnóstico para energizado.
Destravar o alarme de um módulo de 
entrada analógica
Message Type CIP Generic
Service Type Selecione qual alarme você quer destravar:
• Unlatch All Alarms (I)
• Unlatch Analog High Alarm (I)
• Unlatch Analog High High Alarm (I)
• Unlatch Analog Low Alarm (I)
• Unlatch Analog Low Low Alarm (I)
• Unlatch Rate Alarm (I)
Instance O canal do alarme que você quer destravar
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-17
Especificação das mensagens do CLP-5
Use os tipos de mensagem CLP-5 para comunicar-se com os 
controladores CLP-5.
A tabela a seguir mostra os tipos de dados para usar com as 
mensagens PLC5 Typed Read e PLC5 Typed Write. 
Os comandos Typed Read e Typed Write também funcionam com os 
controladores SLC 5/03 (OS303 e acima), controladores SLC 5/04 
(OS402 e acima) e os controladores SLC 5/05. 
Destravar o alarme de um módulo de 
saída analógica
Message Type CIP Generic
Service Type Selecione qual alarme você quer destravar:
• Unlatch All Alarms (O)
• Unlatch High Alarm (O)
• Unlatch Low Alarm (O)
• Unlatch Ramp Alarm (O)
Instance O canal do alarme que você quer destravar
Se você quiser Nesta propriedade: Digite ou selecione:
Selecione este comando: Se você quiser:
PLC5 Typed Read Ler o inteiro de 16 bits, ponto flutuante ou os dados do tipo da string e manter a integridade dos dados. 
Veja a Tabela3.1 na página 3-17.
PLC5 Typed Write Escrever o inteiro de 16 bits, ponto flutuante ou os dados do tipo da string e manter a integridade dos 
dados.Veja a Tabela3.1 na página 3-17
PLC5 Word Range Read Ler uma faixa contínua de palavras de 16 bits na memória do CLP-5, independente do tipo dos dados.
Este comando começa no endereço especificado como Source Element e realiza uma leitura seqüencial 
das palavras de 16 bits solicitadas.
Os dados do Source Element são armazenados, iniciando no endereço especificado como Destination Tag.
PLC5 Word Range Write Escrever uma faixa contínua de palavras de 16 bits da memória do Logix5000, independente do tipo de 
dados para a memória do CLP-5.
Este comando começa no endereço especificado como Source Tag e realiza uma leitura seqüencial das 
palavras de 16 bits solicitadas.
Osdados de Source Tag são armazenados, iniciando no endereço especificado como Destination Element 
no controlador CLP-5.
Tabela 3.1 Tipos de dados para mensagens PLC5 Typed Read e Typed Write
Para este tipo de dados 
do CLP-5:
Use este tipo de dados do Logix5000:
B INT
F REAL
N INT
DINT (Escreve somente valores DINT para um controlador 
CLP-5 se o valor for ≥ −32,768 e ≤ 32,767.)
S INT
ST STRING
Publicação 1756-RM003F-PT-P - Maio 2002
3-18 Instruções de Entrada/Saída (MSG, GSV, SSV)
Os diagramas a seguir mostram como os comandos de faixa de 
palavra e de tipo são diferentes. O exemplo usa comandos de leitura 
de um controlador CLP-5 para um controlador Logix5000.
Especificação das Mensagens do SLC
Use os tipos da mensagem SLC para comunicar-se com os 
controladores SLC e MicroLogix. A tabela a seguir mostra quais os 
tipos de dados a instrução permite que você acesse. A tabela também 
mostra o tipo correspondente de dados do Logix5000. 
Especificação das Mensagens Block-transfer
Os tipos de mensagem de block-transfer são usados para 
comunicação com módulos de block-transfer em uma rede Universal 
Remote I/O.
palavras de 16 bits no 
controlador CLP-5
palavras de 32 bits no 
controlador Logix5000
Os comandos de tipo mantêm o valor e a estrutura dos dados.
1
2
3
4
Comando de leitura de tipo
1
2
3
4
palavras de 16 bits no 
controlador CLP-5
palavras de 32 bits no 
controlador Logix5000
Os comandos de faixa de palavra preenchem o tag de destino de forma 
contínua. O valor e a estrutura dos dados são modificados dependendo 
do tipo de dado de destino.
1
2
3
4
Comando de leitura da faixa de palavra
1
3
2
4
Para este tipo de dados do SLC ou 
MicroLogix:
Use este tipo de dados do Logix5000:
F REAL
L (controladores MicroLogix 1200 e 1500) DINT
N INT
Se você quiser: Selecione este comando:
ler dados de um módulo de block-transfer.
Este tipo de mensagem substitui a instrução BTR.
Block-Transfer Read
escrever dados em um módulo de block-transfer.
Este tipo de mensagem substitui a instrução BTW.
Block-Transfer Write
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-19
Para configurar uma mensagem block-transfer, siga as orientações:
• Os tags de fonte (para BTW) e destino (para BTR) devem ter um 
tamanho suficiente para aceitar os dados solicitados, exceto para 
as estruturas MESSAGE, AXIS e MODULE.
• Especifique quantos inteiros de 16 bits (INT) enviar ou receber. 
É possível especificar de 0 a 64 inteiros.
Especificação de Mensagens do CLP-3
Os tipos de mensagem do CLP-3 são determinados para os 
controladores CLP-3.
Se você quiser o: Especifique:
Módulo block-transfer para determinar quantos 
inteiros de 16 bits enviar (BTR).
0 para o número de 
elementos
O controlador para enviar 64 inteiros (BTW).
Selecione este comando: Se você quiser:
PLC3 Typed Read ler inteiros ou dados do tipo REAL .
Para inteiros, este comando lê inteiros de 16 bits a partir do controlador CLP-3 e armazena-os nos arrays 
de dados SINT, INT ou DINT no controlador Logix5000 mantém a integridade dos dados.
Este comando também lê os dados do ponto flutuante do CLP-3 e armazena-os em um tag do tipo de 
dados REAL no controlador Logix5000.
PLC3 Typed Write escrever de inteiros ou dados do tipo REAL.
Este comando escreve os dados SINT ou INT em um arquivo de inteiros do controlador CLP-3 e mantém a 
integridade dos dados. É possível escrever dados DINT até onde eles se ajustem em um tipo de dados INT 
(−32,768 ≥ data ≤ 32,767).
Este comando também escreve os dados do tipo REAL do controlador Logix5000 para um arquivo de ponto 
flutuante do CLP-3.
PLC3 Word Range Read ler uma faixa contínua de palavras de 16 bits na memória do CLP-3, independente do tipo de dados.
Este comando começa no endereço especificado como Source Element e realiza uma leitura seqüencial 
das palavras de 16 bits solicitadas.
Os dados do Source Element são armazenados, iniciando no endereço especificado como Destination Tag .
PLC3 Word Range Write Escrever uma faixa contínua de palavras de 16 bits da memória do Logix5000, independente do tipo de 
dados para a memória do CLP-3.
Este comando começa no endereço especificado como Source Tag e realiza uma leitura seqüencial das 
palavras de 16 bits solicitadas.
Os dados de Source Tag são armazenados, iniciando no endereço especificado como Destination Element 
no controlador CLP-3.
Publicação 1756-RM003F-PT-P - Maio 2002
3-20 Instruções de Entrada/Saída (MSG, GSV, SSV)
Os diagramas a seguir mostram como os comandos de faixa de 
palavra e de tipo são diferentes. O exemplo usa os comandos de 
leitura de um controlador CLP-3 para um controlador Logix5000.
Especificação das mensagens do CLP-2
Os tipos de mensagem do CLP-2 são determinados para os 
controladores CLP-2.
A transferência da mensagem usa palavras de 16 bits, então, 
certifique-se de que o tag do Logix5000 armazena adequadamente os 
dados transferidos (normalmente como um array INT).
palavras de 16 bits no 
controlador CLP-3
palavras de 32 bits no 
controlador Logix5000
Os comandos de tipo mantêm o valor e a estrutura dos dados.
1
2
3
4
Comando de leitura de tipo
1
2
3
4
palavras de 16 bits no 
controlador CLP-3
palavras de 32 bits no 
controlador Logix5000
Os comandos de faixa de palavra preenchem o tag de destino de forma 
contínua. O valor e a estrutura dos dados são modificados dependendo 
do tipo de dado de destino.
1
2
3
4
Comando de leitura de faixa de palavra
1
3
2
4
Selecione este comando: Se você quiser:
PLC2 Unprotected Read realizar a leitura de palavras de 16 bits de qualquer área da tabela de dados do CLP-2 ou 
do arquivo de compatibilidade do CLP-2 de outro controlador.
PLC2 Unprotected Write escrever palavras de 16 bits para qualquer área da tabela de dados do CLP-2 ou do 
arquivo de compatibilidade do CLP-2 de outro controlador.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-21
Exemplos de Configuração 
MSG
Os exemplos a seguir mostram os tags e elementos source e 
destination para combinações de controladores diferentes.
Para instruções MSG originadas em um controlador Logix5000 e 
escrevendo para um outro controlador:
Para instruções MSG originárias de um controlador Logix5000 e lidas 
de um outro controlador:
Percurso da Mensagem: Exemplo de Fonte e Destino:
Logix5000 → Logix5000 tag da fonte array_1[0]
tag de destino array_2[0]
Você pode usar um tag alias para o tag fonte (no controlador Logix5000 original).
Você não pode usar um nome alternativo para o tag de destino. O destino deve ser um tag de base.
Logix5000 → PLC-5
Logix5000 → SLC
tag da fonte array_1[0]
elemento de destino N7:10
Você pode usar um tag alias para o tag fonte (no controlador Logix5000 original).
Logix5000 → PLC-2 tag da fonte array_1[0]
elemento de destino 010
Percurso da Mensagem: Exemplo de Fonte e Destino:
Logix5000 → Logix5000 tag da fonte array_1[0]
tag de destino array_2[0]
Você não pode usar um tag com nome alternativo para o tag de fonte. A fonte deve ser um tag de base.
Você pode usar um tag alias para o tag destino (no controlador Logix5000 original).
Logix5000 → PLC-5
Logix5000 → SLC
elemento fonte N7:10
tag de destino array_1[0]
Você pode usar um tag alias para o tag destino (no controlador Logix5000 original). 
Logix5000 → PLC-2 elemento fonte 010
tag de destino array_1[0]
Publicação 1756-RM003F-PT-P - Maio 2002
3-22 Instruções de Entrada/Saída (MSG, GSV, SSV)
Especificação de Detalhes 
de Comunicação
Ao configurar uma instrução MSG, você especifica estes detalhes na 
guia Communication.
Especificar um caminho
O caminho descreve a rota que a mensagem pega para chegar ao 
destino.
• Se você adicionar o módulo de comunicação local, o módulo de 
comunicação remoto e o controlador ou dispositivo de destino à 
configuração da E/S do controlador, o botão Browse permite 
que você selecione o destino.
43008
Message Path BrowserPath: peer_controller
peer_controller
I/O Configuration
[0] 1756-CNB/x Local_CNB
2 [0] 1756-CNB/x chassis_b
[1] 1756-L55/x peer_controller
−
−
−
peer_controller
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-23
• Alguns módulos ou dispositivos de comunicação não estão 
disponíveis para a configuração da E/S do controlador. Para 
aquelas situações, conclua o caminho conforme segue:
• Para mensagens block-transfer, adicione os seguintes módulos à 
configuração da E/S do controlador:
Onde: Para: É:
port backplane de qualquer controlador ou módulo 1756 1
Porta DF1 de um controlador Logix5000 2
a porta ControlNet de um módulo 1756-CNB
Porta Ethernet de um módulo 1756-ENBx ou -ENET
Porta DH+ em um canal A de um módulo 1756-DHRIO
Porta DH+ em um canal B de um módulo 1756-DHRIO 3
address backplane ControlLogix número do slot
rede DF1 endereço da estação (0-254)
rede ControlNet número do nó (1-99 decimal)
rede DH+ 8# seguido pelo número do nó (1-77 octal)
Por exemplo, para especificar o endereço do nó octal de 
37, tipo 8#37.
Rede EtherNet/IP Você pode especificar um módulo em uma rede 
EtherNet/IP usando qualquer um destes formatos:
endereço IP (ex.: 130.130.130.5)
endereço IP:Porta (ex.: 130.130.130.5:24)
nome DNS (ex.: tanks)
nome DNS:Porta (ex.: tanks:24)
1. Use o botão Browse para selecionar o módulo de comunicação local.
2. Na caixa de texto Path, insira a porta pela qual a mensagem sai do 
módulo.
3. Digite o endereço do próximo módulo pelo caminho até o 
destino.
local_module,port,address,port,address
4. Digite combinações adicionais de portas e 
endereços, se necessário.
Para block-transfers nesta 
rede:
Adicione estes módulos à configuração da E/S:
ControlNet • módulo de comunicação local (ex.: módulo 1756-CNB)
• módulo adaptador remoto (ex.: módulo 1771-ACN)
Remote I/O • módulo de comunicação local (ex.: módulo 1756-DHRIO)
• um módulo adaptador remoto (ex.: módulo 1771-ASB) para cada rack ou parte do rack no chassi
• módulo block-transfer (opcional)
Publicação 1756-RM003F-PT-P - Maio 2002
3-24 Instruções de Entrada/Saída (MSG, GSV, SSV)
As páginas seguintes mostram exemplos de caminhos:
• na ControlNet, página 3-24
• na EtherNet/IP, página 3-25
• para uma mensagem DH+, página 3-25
EXEMPLO Especificação de um caminho na ControlNet
Percurso: peer_controller
Onde:
peer_controller é o nome do controlador que recebe a mensagem. 
42042rede ControlNet
Mensagem
I/O Configuration
[0] 1756-CNB/x Local_CNB
2 [0] 1756-CNB/x chassis_b
[3] 1756-L55/x peer_controller
−
−
−
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-25
EXEMPLO Especificação de um caminho na EtherNet/IP
Percurso: Local_ENB,2,127.127.127.12
Mensagem
switch
I/O Configuration
[1] 1756-ENBx Local_ENB
−
−
Onde: É:
Local_ENB nome do módulo 1756-ENBx no chassi local
2 porta da Ethernet do módulo 1756-ENBx no chassi local
127.127.127.12 endereço IP do controlador SLC 5/05
EXEMPLO Especificação de um caminho na DH+
Percurso: Local_DHRIO
Onde:
Local_DHRIO é o nome no módulo 1756-DHRIO no mesmo chassi como o controlador 
que envia a mensagem.
rede DH+
Mensagem
I/O Configuration
[1] 1756-DHRIO Local_DHRIO
−
−
Publicação 1756-RM003F-PT-P - Maio 2002
3-26 Instruções de Entrada/Saída (MSG, GSV, SSV)
Especificar um Módulo de Comunicação ou Endereço do Módulo:
Use a seguinte tabela para selecionar um método de comunicação ou 
endereço de módulo para a mensagem.
Se o dispositivo de destino for um: Então selecione: E especifique:
Controlador Logix5000 CIP outras especificações não são necessárias
Controlador CLP-5 na rede 
EtherNet/IP
Controlador CLP-5 na rede ControlNet
Controlador SLC 5/05
Controlador CLP-5 na rede DH+ DH+ Canal: Canal A ou B do módulo 1756-DHRIO que está 
conectado à rede DH+
Controlador SLC na rede DH+ Source Link: Identificação da rede atribuída ao backplane do 
controlador na tabela de roteamento do módulo 
1756-DHRIO. (O source node na tabela de 
roteamento corresponde automaticamente ao 
número do slot do controlador.)
Controlador CLP-3 Destination Link Identificação da rede DH+ remota onde o 
dispositivo alvo reside
Controlador CLP-2 Destination 
Node:
Endereço da estação do dispositivo alvo, em 
octal
Se houver somente um link DH+ e você não usou o software RSLinx 
para configurar o módulo DH/RIO para os links remotos, especifique 
0 para o Source Link e para o Destination Link.
Aplicação em uma estação de 
trabalho que está recebendo uma 
mensagem não solicitada 
encaminhada em uma rede 
EtherNet/IP ou ControlNet através do 
RSLinx
CIP com Fonte de ID
(Isto permite que a 
aplicação receba dados de 
um controlador.)
Source Link: ID remota do tópico no software RSLinx
Destination Link: Destination Link virtual configurado em RSLinx 
(0-65535)
Destination 
Node:
Destination ID (0-77 octal) fornecido pela 
aplicação ao RSLinx. Para um tópico DDE em 
RSLinx, use 77.
O número do slot do controlador ControlLogix é usada como o Nó 
Fonte.
módulo block-transfer na rede remota 
I/O
RIO Canal: Canal A ou B do módulo 1756-DHRIO que está 
conectado à rede RIO
Rack Número do rack (octal) do módulo
Group Número do grupo do módulo
Slot Número do slot que o módulo está
módulo de block-transfer em uma 
rede ControlNet
ControlNet Slot Número do slot em que o módulo está
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-27
Escolha de uma opção de cache:
Alguns tipos de mensagens usam uma conexão para enviar ou receber 
dados. Alguns possibilitam duas opções: deixar a conexão aberta 
(cache) ou fechar a conexão quando a transmissão da mensagem 
terminar. A tabela a seguir mostra quais mensagens usam uma 
conexão e se você pode ou não copiar no cache a conexão:
1 Somente certos tipos de módulo alvo requisitam uma conexão.
2 Considere como cache somente se o módulo alvo requisitar uma 
conexão.
Use o seguinte procedimento para escolher uma opção de cache para 
uma mensagem que você pode gravar em cache.
1. Sua lógica altera o caminho de uma mensagem? (ou seja, uma 
instrução MSG se comunica com mais de um dispositivo?)
Esse tipo de mensagem: Usando esse método de 
comunicação:
Usa uma 
conexão:
Que você 
pode colocar 
no cache:
leitura ou escrita da tabela de dados CIP CIP ✓ ✓
CLP2, CLP3, CLP5 ou SLC (todos os tipos) CIP
CIP com Source ID
DH+ ✓ ✓
CIP generic N/A ✓ 1 ✓ 2
leitura ou escrita em block-transfer N/A ✓ ✓
Se: Então:
sim A. Limpe a caixa de verificação Cache Connection .
B. Pule a etapa 2.
não Vá para etapa 2.
Publicação 1756-RM003F-PT-P - Maio 2002
3-28 Instruções de Entrada/Saída (MSG, GSV, SSV)
2. Seleção de uma opção cache:
Se a mensagem for para um: Então:
controlador Para quantos controladores este controlador envia as mensagens para aquele que você pode gravar 
em cache?
Se: Então:
16 ou menos 
controladores
Deixe a caixa verificação Cache Connection selecionada (marcada).
mais de 16 
controladores
1. Selecione os 16 controladores que requisitem as mensagens mais 
freqüentes.
2. A mensagem é para um daqueles controladores?
módulo de block-transfer Quantos dispositivos requerem as instruções block-transfer?
Se: Então:
16 ou menos 
dispositivos
Deixe a caixa verificação Cache Connection selecionada (verificada).
mais de 16 dispositivos 1. Selecione 16 dispositivos que requisitem as atualizações mais 
recentes.
2. A mensagem é para um daqueles dispositivos?
Se: Então:
sim Deixe a caixa de verificação Cache Connection 
selecionada.
não Limpe a caixa de verificação Cache Connection .
Se: Então:
sim Deixe a caixa de verificação Cache Connection 
selecionada.
não Limpe a caixa de verificação Cache Connection .
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-29
Obtenção do Valor do 
Sistema (GSV) e Definição 
do Valor do Sistema (SSV)
As instruções GSV/SSV obtêm e definem os dados do sistemado 
controlador que estão armazenados nos objetos.
Operandos:
Lógica Ladder
Texto Estruturado
Os operandos são os mesmos que aqueles para as instruções GSV e SSV.
Descrição: As instruções GSV/SSV obtêm e definem os dados do sistema do 
controlador que estão armazenados nos objetos. O controlador 
armazena os dados do sistema nos objetos. Não há arquivo de status, 
como no controlador CLP-5.
Quando habilitada, a instrução GSV recupera a informação específica 
e a coloca no destino. Quando habilitada, a instrução SSV define o 
atributo especificado com os dados da fonte.
Ao inserir uma instrução GSV/SSV, o software de programação exibe 
as classes válidas de objeto, os nomes do objeto e os nomes de 
Operando: Tipo: Formato: Descrição:
Class name nome nome do objeto
Instance name nome nome do objeto específico, quando o objeto requisitar um 
nome
Attribute Name nome atributo do objeto
tipo dos dados dependem do atributo que você seleciona
Destination (GSV) SINT
INT
DINT
REAL
tag destino para dados de atributo
Source (SSV) SINT
INT
DINT
REAL
tag tag que contenha dados que você quer copiar para o 
atributo
GSV(ClassName,InstanceName,AttributeName,Dest);
SSV(ClassName,InstanceName,AttributeName,Source);
Publicação 1756-RM003F-PT-P - Maio 2002
3-30 Instruções de Entrada/Saída (MSG, GSV, SSV)
atributo para cada instrução. Para a instrução GSV, você pode obter 
valores para todos os atributos disponíveis. Para a instrução SSV, o 
software exibe somente aqueles atributos, cuja configuração é 
permitida
Se o tamanho da Fonte ou Destino for muito pequeno, a instrução 
não executa e uma falha de advertência é registrada. A seção a seguir, 
Objetos GSV/SSV , define os atributos de cada objeto e seus tipos de 
dados associados. Por exemplo, o atributo MajorFaultRecord do 
objeto Programa requer um tipo de dado DINT[11].
Flags de Status Aritmético: não afetados
Condições de Falha:
Execução
Objetos GSV/SSV Ao inserir uma instrução GSV/SSV, você especifica o objeto e atributo 
que você acessará. Em alguns casos, haverá mais do que um exemplo 
do mesmo tipo de objeto, de forma que você também possa 
ATENÇÃO
!
Use as instruções GSV/SSV cuidadosamente. As 
alterações realizadas nos objetos podem causar 
operação inesperada do controlador ou ferimentos 
pessoais.
Uma falha de advertência ocorrerá se: Tipo de falha: Código de falha:
endereço de objeto inválido 4 5
objeto especificado que não suporta GSV/SSV 4 6
atributo inválido 4 6
informações suficientes não foram fornecidas 
para uma instrução SSV
4 6
o destino GSV não era grande o suficiente para 
suportar os dados requisitados.
4 7
Condição: Ação da Lógica Ladder: Ação de Texto Estruturado:
prescan A saída da condição da linha é definida como falsa. Nenhuma ação tomada.
entrada da condição da 
linha é falsa
A saída da condição da linha é definida como falsa. na
entrada da condição da 
linha é verdadeira
A instrução executa.
A saída da condição da linha é definida como 
verdadeira.
na
EnableIn está energizado na EnableIn é sempre energizado
A instrução executa.
a instrução executa Obtenha ou configure o valor especificado. Obtenha ou configure o valor especificado.
postscan A saída da condição da linha é definida como falsa. Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-31
especificar o nome do objeto. Por exemplo, a sua aplicação pode ter 
várias tarefas. Cada tarefa tem o seu próprio objeto TASK que é 
acessado pelo nome da tarefa.
É possível acessar estes objetos:
Acesso ao objeto CONTROLLER 
O objeto CONTROLLER fornece as informações de status sobre a 
execução do controlador.
ATENÇÃO
!
Para a instrução GSV, somente o tamanho 
especificado do dado é copiado para o destino. Por 
exemplo, se o atributo for especificado como um 
SINT e o destino é um DINT, somente os 8 bits 
menos significativos do destino DINT são 
atualizados, sendo que os 24 bits restantes 
permanecem inalterados.
Para informações sobre este objeto: Consulte esta página ou a publicação:
AXIS ControlLogix Motion Module Setup and 
Configuration Manual, publicação 1756-UM006
CONTROLLER 3-31
CONTROLLERDEVICE 3-32
CST 3-34
DF1 3-35
FAULTLOG 3-38
MESSAGE 3-39
MODULE 3-41
MOTIONGROUP 3-42
PROGRAM 3-43
ROUTINE 3-44
SERIALPORT 3-44
TASK 3-46
WALLCLOCKTIME 3-46
Atributo: Tipo de Dados: Instrução: Descrição:
TimeSlice INT GSV
SSV
Porcentagem de CPU disponível atribuída para a comunicação.
Os valores válidos são 10-90. Este valor não pode ser alterado 
quando a chave seletora de modo estiver posicionada em Run.
Publicação 1756-RM003F-PT-P - Maio 2002
3-32 Instruções de Entrada/Saída (MSG, GSV, SSV)
Acesso ao objeto CONTROLLERDEVICE
O objeto CONTROLLERDEVICE identifica o hardware do controlador.
Atributo: Tipo de Dados: Instrução: Descrição:
DeviceName SINT[33] GSV String ASCII que identifica o código de catálogo do controlador 
e placa de memória.
O primeiro byte contém uma contagem do número de 
caracteres ASCII que retornaram na string do array.
ProductCode INT GSV Identifica o tipo de controlador
ProductRev INT GSV Identifica a revisão atual do produto. O display deve ser 
hexadecimal.
O byte menos significativo contém a revisão principal; o byte 
mais significativo contém a revisão principal.
SerialNumber DINT GSV Número serial do dispositivo.
O número serial é atribuído quando o dispositivo é construído.
Este código de 
produto:
Identifica este controlador 
Logix:
3 5550
15 5860
41 5433
42 5434
43 5320
50 5553
51 5555
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-33
Status INT GSV Os bits identificam o status:
Os bits 3-0 são reservados
Bits de Status do Dispositivo
Bits 7-4: Significado:
0000 reservado
0001 atualização flash em andamento
0010 reservado
0011 reservado
0100 flash está deficiente
0101 em falha
0110 operação
0111 programa
Bits de Status de Falha
Bits 11-8: Significado:
0001 falha de advertência recuperável
0010 falha de advertência não recuperável
0100 falha grave recuperável
1000 falha grave não recuperável
Bits de Status Específicos do Logix5000
Bits 13-12: Significado:
01 chave seletora em Run
10 chave seletora em Program
11 chave seletora em Remote
Bits 15-14: Significado:
01 controlador está alterando os modos
10 modo de depuração se o controlador 
estiver no modo Run
Type INT GSV Identifica o dispositivo como um controlador.
Controlador = 14
Vendor INT GSV Identifica o fornecedor do dispositivo.
Allen-Bradley = 0001
Atributo: Tipo de Dados: Instrução: Descrição:
Publicação 1756-RM003F-PT-P - Maio 2002
3-34 Instruções de Entrada/Saída (MSG, GSV, SSV)
Acesso ao objeto CST
O objeto CST (coordinated system time) fornece um tempo de sistema 
coordenado para os dispositivos em um chassi.
Atributo: Tipo de Dados: Instrução: Descrição:
CurrentStatus INT GSV Status atual do tempo de sistema coordenado. Os bits identificam o 
status:
Bit: Significado:
0 falha no hardware do temporizador: o hardware do 
temporizador interno do dispositivo está em falha
1 rampa habilitada: o valor atual dos 16 bits menos 
significativos do temporizador aumentam em rampa até o 
valor requisitado, ao invés de permanecer no valor menor. 
Estes bits são manipulados pelo método de sincronização 
de seleção específica da rede.
2 mestre do tempo do sistema: o objeto CST é uma fonte de 
tempo mestre no sistema ControlLogix
3 sincronizado: o CurrentValue de 64 bits do objeto CST é 
sincronizado por um objeto CST mestre através de uma 
atualização de tempo do sistema.
4 mestre da rede local: o objeto CST é a fonte de tempo 
mestre da rede local
5 modo do relé de entrada: o objeto CST está agindo em um 
modo de relé de tempo
6 detecção de mestre duplicado: um mestre de tempo 
duplicado na rede local foi detectado. Este bit é sempre 0 
para os nós que dependem do tempo.
7 não usado
8-9 00 = nó que depende do tempo
01 = nó do mestre de tempo
10 = nó do relé de tempo
11 = nãousado
10-15 não usado
CurrentValue DINT[2] GSV Valor atual do temporizador. DINT[0] contém os bits 32 menos 
significativos; DINT[1] contém os bits 32 mais significativos.
A fonte do temporizador é ajustada para corresponder ao valor 
fornecido nos serviços de atualização e da sincronização da rede de 
comunicação local. O ajuste pode ser tanto um aumento em rampa 
até atingir o valor requisitado como uma configuração imediata no 
valor requisitado, conforme definido no atributo CurrentStatus.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-35
Acesso ao objeto DF1
O objeto DF1 fornece uma interface para o driver de comunicação 
DF1 que pode ser configurada para a porta serial.
Atributo: Tipo de 
Dados:
Instrução: Descrição:
ACKTimeout := , DINT GSV Quantidade de tempo que se espera para se reconhecer uma 
transmissão de mensagem (somente mestre e ponto-a-ponto)
Valor válido 0-32.767. Atraso nas contagens de períodos de 20 
mseg. O valor inicial é de 50 (1 segundo).
DiagnosticCounters INT[19] GSV Série de contadores de diagnóstico para o driver de comunicação 
DF1.
offset da palavra DF1 ponto-a-ponto DF1 escravo mestre
0 assinatura (0x0043) assinatura (0x0042)assinatura (0x0044)
1 bits do modem bits do modembits do modem
2 pacotes enviados pacotes enviadospacotes enviados
3 pacotes recebidos pacotes recebidospacotes recebidos
4 pacotes não entregues pacotes não entreguespacotes não entregues
5 não usado tentativas de mensagenstentativas de mensagens
6 NAKs recebidos NAKs recebidosnão usado
7 ENQs recebidos poll de pacotes recebidosnão usado
8 pacotes NAKed defeituosospacotes not ACKed defeituosospacotes não ACKed defeituosos
9 nenhuma memória enviou um NAKnenhuma memória não ACKednão usado
10 pacotes duplicados recebidospacotes duplicados recebidospacotes duplicados recebidos
11 caracteres defeituosos recebidosnão usadonão usado
12 contagem de recuperações DCDcontagem de recuperações DCDcontagem de recuperações DCD
13 contagem de modem perdidacontagem de modem perdidacontagem de modem perdida
14 não usado não usado prioridade do tempo máximo de scan
15 não usado não usado última prioridade do tempo de scan
16 não usado não usado tempo de scan normal máximo
17 não usado não usado último tempo normal de scan
18 ENQs enviados não usado não usado
DuplicateDetection SINT GSV Habilita a detecção de mensagem duplicada.
Valor: Significado:
0 detecção de mensagem duplicada desabilitada
diferente de zero detecção de mensagem duplicada desabilitada
EmbeddedResponseEnable SINT GSV Habilita funcionalidade de resposta incorporada (somente 
ponto-a-ponto).
Valor: Significado:
0 iniciado somente depois que um é recebido
 (padrão)
1 habilitado incondicionalmente
ENQTransmitLimit SINT GSV O número de pedidos (ENQs) a serem enviados após um timeout 
ACK (somente ponto-a-ponto).
Valor válido 0-127. Ajuste inicial é 3.
EOTSuppression SINT GSV Habilita a supressão de transmissões EOT em resposta ao poll de 
pacotes (somente escravo).
Valor: Significado:
0 supressão de EOT desabilitada (desabilitado)
diferente de zero supressão de EOT habilitada
ErrorDetection SINT GSV Especifica o esquema de detecção de erro.
Valor: Significado:
0 BCC (padrão)
1 CRC
Publicação 1756-RM003F-PT-P - Maio 2002
3-36 Instruções de Entrada/Saída (MSG, GSV, SSV)
MasterMessageTransmit SINT GSV Valor atual da transmissão de mensagem mestre (somente 
mestre).
Valor: Significado:
0 entre os polls da estação
1 na seqüência do poll (no lugar do número da 
estação do mestre)
Valor inicial é 0.
NAKReceiveLimit SINT GSV O número de NAKs recebidos em resposta a uma mensagem 
antes da interrupção da transmissão (somente comunicação 
ponto-a-ponto).
Valor válido 0-127. Ajuste inicial é 3.
NormalPollGroupSize INT GSV Número de estações para ser distribuído no array normal de nós 
do poll, depois de realizar um polling de todas as estações no 
array de nós de polling de prioridade (somente mestre).
Valor válido 0-255. Valor inicial é 0.
PollingMode SINT GSV Modo de polling atual (somente mestre).
Valor: Significado:
0 baseado em mensagem, mas não permite
 escravos para iniciar as mensagens
1 baseado em mensagens, mas permite
 escravos para iniciar as mensagens (padrão)
2 transferência padrão de uma única mensagem
 por scan do nó
3 transferência padrão de várias mensagens por
 scan do nó
O valor inicial é 1.
ReplyMessageWait DINT GSV O tempo (atuando como mestre) para esperar o recebimento de 
um ACK antes de realizar um polling do escravo para uma 
resposta (somente mestre).
Valor válido 0-65.535. Atraso nas contagens de períodos de 20 ms. 
O valor inicial é de 5 períodos (100 ms).
StationAddress INT GSV Endereço atual da estação da porta serial.
Valor válido 0-254. O valor inicial é 0.
SlavePollTimeout DINT GSV A quantidade de tempo em mseg que o escravo espera pelo 
mestre para realizar um polling, antes que o escravo declare que 
não tem condições de transmitir porque o mestre está inativo 
(somente escravo).
Valor válido 0-32.767. Atraso nas contagens de períodos de 20 ms. 
O valor inicial é de 3000 períodos (1 minuto).
TransmitRetries SINT GSV Número de vezes para reenviar uma mensagem sem obter um 
reconhecimento (somente mestre e escravo)
Valor válido 0-127. Ajuste inicial é 3.
PendingACKTimeout DINT SSV Valor pendente para o atributo ACKTimeout.
PendingDuplicateDetection SINT SSV Valor pendente para o atributo DuplicateDetection.
PendingEmbeddedResponse
Enable
SINT SSV Valor pendente para o atributo EmbeddedResponse.
PendingENQTransmitLimit SINT SSV Valor pendente para o atributo ENQTransmitLimit.
PendingEOTSuppression SINT SSV Valor pendente para o atributo EOTSuppression.
PendingErrorDetection SINT SSV Valor pendente para o atributo ErrorDetection.
PendingNormalPollGroupSize INT SSV Valor pendente para o atributo NormalPollGroupSize.
PendingMasterMessage
Transmit
SINT SSV Valor pendente para o atributo MasterMessageTransmit.
Atributo: Tipo de 
Dados:
Instrução: Descrição:
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-37
Para aplicar os valores para qualquer um dos atributos pendentes de 
DF1:
1. Use uma instrução SSV para definir o valor para o atributo 
pendente.
É possível definir a quantidade de atributos que desejar, usando 
uma instrução SSV para cada atributo pendente.
2. Use uma instrução MSG para aplicar o valor. A instrução MSG se 
aplica a todos atributos pendentes configurados. Configure a 
instrução MSG da seguinte forma:
PendingNAKReceiveLimit SINT SSV Valor pendente para o atributo NAKReceiveLimit.
PendingPollingMode SINT SSV Valor pendente para o atributo PollingMode .
PendingReplyMessageWait DINT SSV Valor pendente para o atributo ReplyMessageWait.
PendingStationAddress INT SSV Valor pendente para o atributo StationAddress.
PendingSlavePollTimeout DINT SSV Valor pendente para o atributo SlavePollTimeout.
PendingTransmitRetries SINT SSV Valor pendente para o atributo TransmitRetries.
Atributo: Tipo de 
Dados:
Instrução: Descrição:
Guia MSG Configuration: Campo: Valor:
Configuration Message Type CIP Generic
Service Code 0d hex
Object Type a2
Object ID 1
Object Attribute deixe em branco
Source deixe em branco
Number of Elements 0
Destination deixe em branco
Communication Path percurso de comunicação 
automático 
( 1,s onde s = número do 
slot do controlador)
Publicação 1756-RM003F-PT-P - Maio 2002
3-38 Instruções de Entrada/Saída (MSG, GSV, SSV)
Acesso ao objeto FAULTLOG
O objeto FAULTLOG fornece informações de falha sobre o 
controlador.
Atributo: Tipo de Dados: Instrução: Descrição:
MajorEvents INT GSV
SSV
Quantas falhas graves ocorreram desde a última vez que este 
contador foi resetado.
MinorEvents INT GSV
SSV
Quantas falhas de advertência ocorreram desde a última vez 
que este contador foi resetado.
MajorFaultBits DINT GSV
SSV
Os bits individuais indicam o motivo da falha grave atual.
Bit: Significado:
1 perda de alimentação
3 E/S
4 execução da instrução(programa)
5 rotina de falhas
6 watchdog
7 stack
8 alteração de modo
11 movimento
MinorFaultBits DINT GSV
SSV
Os bits individuais indicam o motivo da falha de advertência 
atual.
Bit: Significado:
4 execução da instrução (programa)
6 watchdog
9 porta serial
10 bateria
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-39
Acesso ao objeto MESSAGE
É possível acessar o objeto MESSAGE através das instruções GSV/SSV. 
Especifique o nome do tag da mensagem para determinar qual objeto 
MESSAGE você quer. O objeto MESSAGE fornece uma interface para 
configuração e disparo das comunicações peer-to-peer. Este objeto 
substitui o tipo de dados MG do controlador CLP-5.
Para alterar o atributo MESSAGE, siga essas etapas:
1. Use uma instrução GSV para obter o atributo MessageType e 
salvá-lo em um tag.
2. Use uma instrução SSV para configurar MessageType em 0.
3. Use uma instrução SSV para configurar um atributo MESSAGE 
que você deseja alterar.
4. Use uma instrução SSV para configurar o atributo MessageType 
no valor original novamente obtido na etapa 1.
Exemplo: O seguinte exemplo a seguir muda o atributo ConnectionPath, de 
forma que a mensagem vá para um controlador diferente.Quando 
msg_path estiver energizado, configure o caminho da mensagem 
Atributo: Tipo de Dados: Instrução: Descrição:
ConnectionPath SINT[130] GSV
SSV
Dados para configuração do percurso de conexão. Os primeiros 
dois bytes (byte desenergizado e byte energizado) são o 
comprimento em bytes do percurso de conexão.
ConnectionRate DINT GSV
SSV
Taxa (velocidade) requisitada para o pacote da conexão.
MessageType SINT GSV
SSV
Especifica o tipo de mensagem.
Valor: Significado:
0 não inicializado
Port SINT GSV
SSV
Indica por qual porta a mensagem deve ser enviada.
Valor: Significado:
1 backplane
2 porta serial
TimeoutMultiplier SINT GSV
SSV
Determina o término da temporização de uma conexão e quando 
deve ser fechada.
Valor: Significado:
0 conexão interromperá o timeout em 4 vezes a
 taxa de atualização padrão)
1 conexão interromperá o timeout em 8 vezes a
 taxa de atualização
2 conexão interromperá o timeout em 16 vezes a
 taxa de atualização
UnconnectedTimeout DINT GSV
SSV
Timeout em microssegundos para todas as mensagens não 
conectadas. O valor inicial é de 30.000.000 microssegundos (30 
segundos).
Publicação 1756-RM003F-PT-P - Maio 2002
3-40 Instruções de Entrada/Saída (MSG, GSV, SSV)
msg_1 para o valor de msg_1_path. Isto envia a mensagem para um 
controlador diferente.
Lógica Ladder
Texto Estruturado
IF msg_path THEN
GSV(MESSAGE,msg_1,MessageType,msg_1_type);
SSV(MESSAGE,msg_1,MessageType,tag_a);
SSV(MESSAGE,msg_1,ConnectionPath,msg_1_path[0]);
SSV(MESSAGE,msg_1,MessageType,msg_1_type);
END_IF;
IF NOT msg_1.EN THEN
MSG(msg_1);
END_IF;
Onde: É:
msg_1 mensagem cujo atributo você quer alterar
msg_1_type tag que armazena o valor do atributo MessageType
tag_a tag que armazena um 0.
msg_1_path tag do array que armazena o novo caminho da conexão para mensagem 
0 
msg_path
Get System Value
Class name MESSAGE
Instance name msg_1
Attribute Name MessageType
Dest msg_1_type
 2
GSV
Set System Value
Class name MESSAGE
Instance name msg_1
Attribute Name MessageType
Source tag_a
 0
SSV
Set System Value
Class name MESSAGE
Instance name msg_1
Attribute Name ConnectionPath
Source msg_1_path[0]
 6
SSV
Set System Value
Class name MESSAGE
Instance name msg_1
Attribute Name MessageType
Source msg_1_type
 2
SSV
1 /
msg_1.EN
EN
DN
ER
Type - CIP Data Table Write
Message Control msg_1 ... 
MSG
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-41
Acesso ao objeto MODULE
O objeto MODULE fornece as informações de status sobre um módulo. 
Para selecionar um determinado objeto MODULE, configure o operando 
Object Name da instrução GSV/SSV no nome do módulo. O módulo 
especificado deve estar presente na seção I/O Configuration do 
organizador do controlador e deve ter um nome de dispositivo.
Atributo: Tipo de Dados: Instrução: Descrição:
EntryStatus INT GSV Especifica o estado atual da entrada do mapa especificado. Os 12 bits menos 
significativos devem ser filtrados pela máscara na execução de uma operação 
de comparação. Somente os bits de 12 a 15 são válidos.
Valor: Significado:
16#0000 Standby: o controlador está energizando.
16#1000 Em Falha: quaisquer uma das conexões do objeto
 MODULE com a falha do módulo associado. Este valor
 não deve ser usado para determinar se o módulo
 apresentou falha porque o objeto MODULE sai deste
 estado periodicamente ao tentar reconectar-se ao
 módulo. Ao invés disso, verifique Running state (16#4000). 
Verifique se FaultCode não é igual a 0 para determinar
 se um módulo apresenta falha. 
Quando estiver na condição de Falha (Faulted), os
 atributos FaultCode e FaultInfo
são válidos até que a condição de falha seja corrigida.
16#2000 Validação: o objeto MODULE está verificando a
 integridade 
do objeto MODULE antes de estabelecer as conexões
para o módulo.
16#3000 Conexão: o objeto MODULE está iniciando as
conexões para o módulo.
16#4000 Em Operação: todas as conexões com o módulo são
estabelecidas e os dados são transferidos com
 sucesso.
16#5000 Desligamento: o objeto MODULE está 
no processo de desligar todas as conexões para o
 módulo.
16#6000 Inibido: o objeto MODULE está inibido (o
bit inibido no atributo Mode está energizado).
16#7000 Na Espera: o objeto-pai MODULE do qual este 
objeto MODULE depende não está em operação.
FaultCode INT GSV Número que identifica uma falha no módulo, em caso de ocorrência.
FaultInfo DINT GSV Fornece informações específicas sobre o código de falha do objeto MODULE.
ForceStatus INT GSV Especifica o status dos pontos forçados.
Bit: Significado:
0 pontos forçados instalados (1=sim, 0-não)
1 pontos forçados habilitados (1=sim, 0=não)
2-15 não usado
Publicação 1756-RM003F-PT-P - Maio 2002
3-42 Instruções de Entrada/Saída (MSG, GSV, SSV)
Acesso ao objeto MOTIONGROUP 
O objeto MOTIONGROUP fornece as informações de status sobre um 
grupo de eixos para o servo módulo. Especifique o nome do tag do 
grupo de posicionamento (motion) para determinar qual objeto 
MOTIONGROUP você quer.
Instance DINT GSV Fornece o número de instância deste objeto MODULE.
LEDStatus INT GSV Especifica o estado atual do LED de E/S localizado na parte frontal do 
controlador.
Valor: Significado:
0 LED desligado: Nenhum objeto MODULE foi 
configurado para o controlador (não há módulos na
 seção I/O Configuration do organizador do
 controlador).
1 Vermelho piscando: Nenhum dos objetos MODULE
 está em operação.
2 Verde piscando: Pelo menos um objeto MODULE não
 está em operação.
3 Verde permanente: Todos os objetos MODULE estão
 em operação.
Nota: Não é possível inserir um nome de objeto com este atributo porque este 
atributo se aplica a todo o conjunto de módulos.
Mode INT GSV
SSV
Especifica o modo atual do objeto MODULE.
Bit: Significado:
0 Se configurado, causa uma falha grave se uma das
conexões do objeto MODULE apresentar falha
 enquanto o controlador estiver no modo de operação.
2 Se configurado, faz com que o objeto MODULE seja
 introduzido no estado Inibido depois de desligar todas
 as conexões do módulo.
Atributo: Tipo de Dados: Instrução: Descrição:
Atributo: Tipo de Dados: Instrução: Descrição:
Instance DINT GSV Fornece o número de exemplo deste objeto MOTION_GROUP.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-43
Acesso ao objeto PROGRAM
O objeto PROGRAM fornece as informações de status sobre um 
programa. Especifique o nome do programa para determinar qual 
objeto PROGRAM você quer.
Atributo: Tipo de Dados: Instrução: Descrição:
DisableFlag SINT GSV
SSV
Controla essa execução do programa.
Valor: Significado:
0 execução habilitada
1 execução desabilitada
Instance DINT GSV Fornece o número de instância deste objeto PROGRAM.
LastScanTime DINT GSV
SSV
Tempo que a execuçãodo programa demorou da última vez. O 
tempo está em microssegundos.
MajorFaultRecord DINT[11] GSV
SSV
Registra as falhas graves para este programa
Recomendamos que você crie uma estrutura definida pelo usuário 
para simplificar o acesso ao atributo MajorFaultRecord:
Nome Tipo de Dados: Estilo: Descrição:
TimeLow DINT Decimal 32 bits menos significativos de valor de registro de data e hora da falha
TimeHIgh DINT Decimal 32 bits mais significativos de valor de registro de data e hora da falha
Type INT Decimal tipo de falha (programa, E/S etc.)
Code INT Decimal código exclusivo para a falha (depende do tipo de falha)
Info DINT[8] Hexadecimal informação específica sobre a falha (depende do tipo e do código de falha)
MaxScanTime DINT GSV
SSV
Tempo máximo de execução registrado para este programa. O 
tempo está em microssegundos.
MinorFaultRecord DINT[11] GSV
SSV
Registra as falhas de advertência para este programa
Recomendamos que você crie uma estrutura definida pelo usuário 
para simplificar o acesso ao atributo MinorFaultRecord:
Nome Tipo de Dados: Estilo: Descrição:
TimeLow DINT Decimal 32 bits menos significativos de valor de registro de data e hora da falha
TimeHIgh DINT Decimal 32 bits mais significativos de valor de registro de data e hora da falha
Type INT Decimal tipo de falha (programa, E/S etc.)
Code INT Decimal código exclusivo para a falha (depende do tipo de falha)
Info DINT[8] Hexadecimal informações específicas sobre a falha (depende do tipo e do código de falha)
SFCRestart INT GSV
SSV
não usado - reservado para uso futuro
Publicação 1756-RM003F-PT-P - Maio 2002
3-44 Instruções de Entrada/Saída (MSG, GSV, SSV)
Acesso ao objeto ROUTINE
O objeto ROUTINE fornece as informações de status sobre uma 
rotina. Especifique o nome da rotina para determinar qual objeto 
ROUTINE você quer.
Acesso ao objeto SERIALPORT
O objeto SERIALPORT fornece uma interface com a porta de 
comunicação serial.
Atributo: Tipo de Dados: Instrução: Descrição:
Instance DINT GSV Fornece o número de instância deste objeto ROUTINE.
Valores válidos são 0-65.535.
Atributo: Tipo de Dados: Instrução: Descrição:
BaudRate DINT GSV Especifica a taxa de transmissão.
Os valores válidos são 110, 300, 600, 1200, 2400, 4800, 9600 e 
19200 (padrão).
DataBits SINT GSV Especifica o número de bits de dados por caracter.
Valor: Significado:
7 7 bits de dados (somente ASCII)
8 8 bits de dados (padrão)
Paridade SINT GSV Especifica a paridade.
Valor: Significado:
0 sem paridade (sem padrão)
1 paridade ímpar (somente ASCII)
2 paridade par
RTSOffDelay INT GSV Quantidade de tempo para retardar o desligamento da linha RTS 
depois da transmissão do último caracter.
Valor válido 0-32.767. Atraso nas contagens de períodos de 20 ms. 
O valor inicial é 0 ms.
RTSSendDelay INT GSV Quantidade de tempo para retardar a transmissão do primeiro 
caracter de uma mensagem depois de se energizar a linha RTS.
Valor válido 0-32.767. Atraso nas contagens de períodos de 20 ms. 
O valor inicial é 0 ms.
StopBits SINT GSV Especifica o número de bits de parada.
Valor: Significado:
1 1 bit de parada (padrão)
2 2 bits de parada (somente ASCII)
PendingBaudRate DINT SSV Valor pendente para o atributo BaudRate.
PendingDataBits SINT SSV Valor pendente para o atributo DataBits.
PendingParity SINT SSV Valor pendente para o atributo Parity.
PendingRTSOffDelay INT SSV Valor pendente para o atributo RTSOffDelay.
PendingRTSSendDelay INT SSV Valor pendente para o atributo RTSSendDelay.
PendingStopBits SINT SSV Valor pendente para o atributo StopBits.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-45
Para aplicar os valores para qualquer um dos atributos pendentes 
SERIALPORT:
1. Use uma instrução SSV para definir o valor para o atributo 
pendente.
É possível definir a quantidade de atributos que desejar, usando 
uma instrução SSV para cada atributo pendente.
2. Use uma instrução MSG para aplicar o valor. A instrução MSG se 
aplica para cada atributo pendente configurado. Configure as 
instruções MSG da seguinte forma:
Guia MSG Configuration: Campo: Valor:
Configuration Message Type CIP Generic
Service Code 0d hex
Object Type 6f hex
Object ID 1
Object Attribute deixe em branco
Source deixe em branco
Number of Elements 0
Destination deixe em branco
Communication Path percurso de comunicação automático (1,s 
onde s = número do slot do controlador)
Publicação 1756-RM003F-PT-P - Maio 2002
3-46 Instruções de Entrada/Saída (MSG, GSV, SSV)
Acesso ao objeto TASK
O objeto TASK fornece as informações de status sobre uma tarefa. 
Especifique o nome do programa para determinar qual objeto TASK 
você quer.
Acesso ao objeto WALLCLOCKTIME
O objeto WALLCLOCKTIME fornece um registro de data e hora que o 
controlador pode usar para programação.
Atributo: Tipo de Dados: Instrução: Descrição:
Instance DINT GSV Fornece o número de instância deste objeto TASK.
Valores válidos são 0-31.
LastScanTime DINT GSV
SSV
Tempo que a execução desta tarefa demorou da última vez. O tempo está em 
microssegundos.
MaxInterval DINT[2] GSV
SSV
O tempo máximo de intervalo entre as execuções sucessivas da tarefa. DINT[0] 
contém os bits 32 menos significativos do valor; DINT[1] contém os bits 32 mais 
significativos do valor;
Um valor de 0 indica 1 ou menos execuções da tarefa.
MaxScanTime DINT GSV
SSV
Tempo máximo de execução registrado para este programa. O tempo está em 
microssegundos.
MinInterval DINT[2] GSV
SSV
O tempo mínimo de intervalo entre as execuções sucessivas da tarefa. DINT[0] 
contém os bits 32 menos significativos do valor; DINT[1] contém os bits 32 mais 
significativos do valor;
Um valor de 0 indica 1 ou menos execuções da tarefa.
Priority INT GSV Prioridade relativa dessa tarefa comparada com outras tarefas.
Valores válidos são 0-15.
Rate DINT GSV O intervalo de tempo entre as execuções sucessivas da tarefa. O tempo está em 
microssegundos.
StartTime DINT[2] GSV
SSV
O valor de WALLCLOCKTIME quando a última execução da tarefa foi iniciada. 
DINT[0] contém os bits 32 menos significativos do valor; DINT[1] contém os 32 bits 
32 mais significativos do valor;
Watchdog DINT GSV
SSV
Limite de tempo para a execução de todos os programas associados a essa tarefa. 
O tempo está em microssegundos.
Se você inserir 0, estes valores serão atribuídos:
Tempo: Tipo de Tarefa:
0,5 s periódico
5,0 s contínuo
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-47
Atributo: Tipo de Dados: Instrução: Descrição:
CSTOffset DINT[2] GSV
SSV
Desvio positivo do CurrentValue do objeto CST (tempo do sistema coordenado, 
consulte a página 3-34). DINT[0] contém os 32 bits menos significativos do 
valor; DINT[1] contém os 32 bits mais significativos do valor;
Valor em µsegundos. O valor inicial é 0.
CurrentValue DINT[2] GSV
SSV
O valor atual de WALLCLOCKTIME. DINT[0] contém os 32 bits menos 
significativos do valor; DINT[1] contém os 32 bits mais significativos do valor;
O valor é a quantidade de microssegundos que decorreram desde 0000 hs 1 
janeiro de 1972.
Os objetos CST e WALLCLOCKTIME são relacionados matematicamente no 
controlador. Por exemplo, se você acrescentar CST CurrentValue e 
WALLCLOCKTIME CTSOffset, terá como resultado WALLCLOCKTIME 
CurrentValue.
DateTime DINT[7] GSV
SSV
Data e hora em formato que possibilita a leitura.
DINT[0] ano
DINT[1] representação do mês através de inteiros (1-12)
DINT[2] representação do dia através de inteiros (1-31)
DINT[3] hora (0-23)
DINT[4] minuto (0-59)
DINT[5] segundos (0-59)
DINT[6] microssegundos (0-999.999)
Publicação 1756-RM003F-PT-P - Maio 2002
3-48 Instruções de Entrada/Saída (MSG, GSV, SSV)
Exemplo de Programação 
GSV/SSV
Obtenção de informações de falha
Os exemplos a seguir usam as instruções GSV para obter informações 
de falha.
Exemplo 1: Neste exemplo, as informações de falha do módulo de E/S são obtidas 
em disc_in_2 e colocadas nos dados em uma estrutura definida pelo 
usuárioem disc_in_2_info.
Lógica Ladder
Texto Estruturado
GSV(MODULE,disc_in_2,FaultCode,disc_in_2_info.FaultCode);
GSV(MODULE,disc_in_2,FaultInfo,disc_in_2_info.FaultInfo);
GSV(MODULE,disc_in_2,Mode,disc_in_2info.Mode);
Exemplo 2: Neste exemplo, as informações de status são obtidas sobre o 
programa discrete e colocadas nos dados em uma estrutura definida 
pelo usuário em discrete_info.
Lógica Ladder
Texto Estruturado
GSV(PROGRAM,DISCRETE,LASTSCANTIME,
discrete_info.LastScanTime);
GSV(PROGRAM,DISCRETE,MAXSCANTIME,discrete_info.MaxScanTime);
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Entrada/Saída (MSG, GSV, SSV) 3-49
Exemplo 3: Neste exemplo, as informações de status são obtidas sobre a tarefa 
IO_test e colocadas nos dados em uma estrutura definida pelo usuário 
em io_test_info.
Lógica Ladder
Texto Estruturado
GSV(TASK,IO_TEST,LASTSCANTIME,io_test_info.LastScanTime);
GSV(TASK,IO_TEST,MAXSCANTIME,io_test_info.MaxScanTime);
GSV(TASK,IO_TEST,WATCHDOG,io_test_info.WatchDog);
Configuração de flags de habilitação e desabilitação
O exemplo a seguir usa a instrução SSV para habilitar ou desabilitar 
um programa. É possível também, utilizar este método para habilitar 
ou desabilitar um módulo E/S, o que é similar à utilização de bits 
inibidos em um controlador CLP-5.
Exemplo: Com base no status de SW.1, coloque o valor apropriado no atributo 
disableflag do programa discrete.
Lógica Ladder
Publicação 1756-RM003F-PT-P - Maio 2002
3-50 Instruções de Entrada/Saída (MSG, GSV, SSV)
Texto Estruturado
IF SW.1 THEN
discrete_prog_flag := enable_prog;
ELSE
discrete_prog_flag := disable_prog;
END_IF;
SSV(PROGRAM,DISCRETE,DISABLEFLAG,discrete_prog_flag);
Publicação 1756-RM003F-PT-P - Maio 2002
Capítulo 4
Instruções de Comparação 
(CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Introdução As instruções de comparação permitem a comparação de valores 
através do uso de uma expressão ou uma instrução de comparação 
específica.
Você pode comparar valores de diferentes tipos de dados como, por 
exemplo, ponto flutuante e inteiro.
Para instruções de lógica ladder, os tipos de dados em negrito 
indicam tipos de dados ótimos. Uma instrução executa mais 
rapidamente e requer menos memória, se todos os operandos da 
instrução usarem o mesmo tipo de dados ótimos, geralmente DINT ou 
REAL.
Se você quiser: Use esta instrução: Disponível nestas linguagens: Consulte a 
página:
comparar valores com base em uma expressão CMP lógica ladder
texto estruturado(1)
4-2
testar se dois valores são iguais EQU lógica ladder
texto estruturado(2)
bloco de funções
4-7
testar se um valor é maior ou igual a um segundo valor GEQ lógica ladder
texto estruturado(1)
bloco de funções
4-10
testar se um valor é maior que um segundo valor GRT lógica ladder
texto estruturado(1)
bloco de funções
4-14
testar se um valor é menor ou igual a um segundo valor LEQ lógica ladder
texto estruturado(1)
bloco de funções
4-18
testar se um valor é menor que um segundo valor LES lógica ladder
texto estruturado(1)
bloco de funções
4-22
testar se um valor está entre outros dois valores LIM lógica ladder
bloco de funções
texto estruturado(1)
4-26
passar dois valores por uma máscara e testar se são iguais MEQ lógica ladder
bloco de funções
texto estruturado(1)
4-32
testar se um valor é diferente a um segundo valor NEQ lógica ladder
texto estruturado(1)
bloco de funções
4-37
(1) Não há instrução de texto estruturado equivalente. Use outra programação de texto estruturado para obter o mesmo resultado. Consulte a descrição da instrução.
(2) Não há instrução de texto estruturado equivalente. Use o operador em uma expressão.
1 Publicação 1756-RM003F-PT-P - Maio 2002
4-2 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Comparação (CMP) A instrução CMP realiza uma comparação nas operações aritméticas 
especificadas na expressão.
Operandos:
Lógica Ladder 
Texto Estruturado
O texto estruturado não tem um a instrução CMP, mas você pode 
obter o mesmo resultado usando uma construção e expressão 
IF...THEN. 
IF BOOL_expression THEN
<statement>;
END_IF;
Consulte o Apêndice C para informações de sintaxe de atribuições e 
expressões em textos estruturados.
Descrição: Define a expressão CMP usando operadores, tags e valores imediatos. 
Use parênteses ( ) para definir as seções das expressões mais 
complexas.
A execução de uma instrução CMP é um pouco mais lenta e usa mais 
memória que a execução de outras instruções de comparação. A 
vantagem da instrução CMP é que a mesma permite a inserção de 
expressões complexas em uma instrução.
Flags de Status Aritmético: A instrução CMP afeta apenas os flags de status aritmético se a 
expressão contiver um operador (ex: +, −, *, /) que os afete.
Condições de Falha: nenhuma
Operando: Tipo: Formato: Descrição:
Expression SINT
INT
DINT
REAL
string
imediato
tag
uma expressão composta por tags e/ou 
valores imediatos separados por operadores
Um tag SINT ou INT converte em um valor DINT pela extensão de sinal.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-3
Execução
Exemplos: Se a instrução CMP encontrar a expressão verdadeira, a saída da 
condição da linha será verdadeira.
Caso uma expressão seja inserida sem um operador de comparação 
como, por exemplo, value_1 + value_2 ou value_1, a instrução 
avaliará a expressão como:
Condição: Ação da Lógica Ladder:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
postscan A saída da condição da linha é definida como falsa.
fim
avaliar a expressão
a expressão é 
verdadeira
a expressão é falsa
saída da condição da 
linha é definida como 
verdadeira
saída da condição da linha 
é definida como falsa
entrada da condição da linha é verdadeira
Se a expressão: A saída da condição da linha é definida em:
diferente de zero verdadeira
zero falsa
Publicação 1756-RM003F-PT-P - Maio 2002
Expressões CMP
As expressões das instruções CMP são programadas da mesma forma 
que as expressões nas instruções FSC. Use as seções a seguir para 
mais informações sobre operadores válidos, formato e seqüência de 
operação que são comuns nas duas instruções.
Operadores válidos
Formatação de expressões
Para cada operador utilizador, você deve fornecer um ou dois 
operandos (tags ou valores imediatos). Use a tabela a seguir para 
formatar os operadores e os operandos em uma expressão:
Operador: Descrição: Ótimo:
+ adição DINT, REAL
- subtração/negativo DINT, REAL
* multiplicação DINT, REAL
/ divisão DINT, REAL
= igual DINT, REAL
< menor que DINT, REAL
<= menor ou igual a DINT, REAL
> maior que DINT, REAL
<= maior ou igual a DINT, REAL
<> diferente de DINT, REAL
** expoente (x elevado a 
y)
DINT, REAL
ABS valor absoluto DINT, REAL
ACS arcos co-seno
AND AND DINT
ASN arco seno
ATN arco tangente
COS co-seno
DEG radianos em graus DINT, REAL
FRD BCD para inteiro DINT
LN log neperiano REAL
LOG log base 10 REAL
MOD módulo DINT, REAL
NOT complementação DINT
OR OR DINT
RAD graus em radianos DINT, REAL
SIN seno REAL
SQR raiz quadrada DINT, REAL
TAN tangente REAL
TOD inteiro para BCD DINT
TRN trancar DINT, REAL
XOR XOR DINT
Operador: Descrição: Ótimo:
Para operadores 
que operam em:
Use este formato: Exemplos:
um operando operator(operand) ABS(tag_a)
dois operandos operand_a operator operand_b • tag_b + 5
• tag_c AND tag_d
• (tag_e ** 2) MOD 
(tag_f / tag_g)
4-4 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-5
Determinação da seqüência da operação
As operações que você escreve na expressão são executadas pela 
instrução na seqüência prescrita e não, necessariamente, na ordem 
que você as escreveu. É possível suprimir a seqüência da operaçãoagrupando-se os termos dentro de parênteses, forçando a instrução 
para realizar uma operação dentro dos parênteses, antes de outras 
operações.
As operações com a mesma seqüência são executadas da esquerda 
para a direita.
Uso de strings em uma expressão
Use uma expressão em lógica ladder ou em texto estruturado para 
comparar os tipos de dados da string. Para usar strings em uma 
expressão, siga estas orientações:
• Uma expressão permite que você compare dois tags da string.
• Você não pode inserir caracteres ASCII em uma expressão 
diretamente.
• Somente os operadores a seguir são permitidos 
Seqüência: Operação:
1. ( )
2. ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG, RAD, SIN, 
SQR, TAN, TOD, TRN
3. **
4. − (negativo), NOT
5. *, /, MOD
6. <, <=, >, >=, =
7. − (subtração), +
8. AND
9. XOR
10. OR
Operador: Descrição:
= igual
< menor que
<= menor ou igual a
> maior que
>= maior ou igual a
<> diferente de
Publicação 1756-RM003F-PT-P - Maio 2002
4-6 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
• As strings são iguais se os caracteres corresponderem.
• Os caracteres ASCII são sensíveis ao contexto. A letra “A” ($41) 
maiúscula não é igual à letra "a" minúscula ($61).
• Os valores hexadecimais dos caracteres determinam se um 
string é menor ou maior que outro. Para o código hexadecimal 
de caractere, consulte a parte de trás deste manual.
• Quando duas strings são classificadas em um diretório de 
telefones, a seqüência das strings determina qual é maior 
Caracteres ASCII Códigos Hex
1ab $31$61$62
1b $31$62
a $41
AB $41$42
B $42
a $61
ab $61$62
m
ai
or 
q
u
e
m
e
n
or 
q
u
e
AB < B
a > B
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-7
Igual (EQU) A instrução EQU testa se Source A é igual a Source B.
Operandos:
Lógica Ladder 
• Se você inserir um tag SINT ou INT, o valor converte em um 
valor DINT pelo sinal de extensão.
• Valores REAL raramente são absolutamente iguais. Caso seja 
necessário determinar a igualdade de dois valores do tipo REAL, 
use a instrução LIM.
• Os tipos de dados da string são:
– tipo de dados STRING padrão
– qualquer novo tipo de dados da string que você criar
• Para testar os caracteres de uma string, insira um tag da string 
para Source A e Source B.
Texto Estruturado
Use um sinal igual “=” como um operador em uma expressão. Esta 
expressão avalia se sourceA é igual a sourceB.
Consulte o Apêndice C para informações sobre a sintaxe de 
expressões de texto estruturado.
Bloco de Funções
Operando: Tipo: Formato: Descrição:
Source A SINT
INT
DINT
REAL
string
imediato
tag
valor a ser testado em 
relação Source B
Source B SINT
INT
DINT
REAL
string
imediato
tag
valor a ser testado em 
relação Source A
Operando: Tipo: Formato: Descrição:
EQU tag FBD_COMPARE estrutura estrutura EQU
IF sourceA = sourceB THEN
<statements>;
Publicação 1756-RM003F-PT-P - Maio 2002
4-8 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
estrutura FBD_COMPARE
Descrição: Use a instrução EQU para comparar dois números ou duas strings de 
caracteres ASCII. Quando comparar strings:
• As strings são iguais se os caracteres corresponderem.
• Os caracteres ASCII são sensíveis ao contexto. O "A" maiúsculo 
($41) não é igual ao "a" minúsculo ($61).
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução
Lógica Ladder 
Parâmetro de Entrada: Tipo de Dados: Descrição:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não é executada e as saídas não são 
atualizadas.
Valor inicial está energizado
SourceA REAL Valor para comparar com SourceB.
Válido = qualquer flutuante
SourceB REAL Valor para comparar com SourceA.
Válido = qualquer flutuante
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest BOOL Resultado da instrução. Isto equivale à saída da condição da linha da instrução EQU da 
lógica ladder.
Condição: Ação:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
postscan A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira
fim
Source A = Source B;
sim
não
saída da condição da 
linha é definida como 
verdadeira
saída da condição da 
linha é definida como 
falsa
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-9
Bloco de Funções
Exemplo: Se value_1 for igual a value_2, energize light_a. Se value_1 não for 
igual a value_2, desligue light_a.
Lógica Ladder
Texto Estruturado
light_a := (value_1 = value_2);
Bloco de Funções
Condição: Ação:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
4-10 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Maior ou Igual a (GEQ) A instrução GEQ testa se Source A é maior ou igual a Source B.
Operandos:
Lógica Ladder 
• Se você inserir um tag SINT ou INT, o valor converte a um valor 
DINT pelo sinal de extensão.
• Tipos de dados da string são:
– tipo de dados STRING padrão
– qualquer novo tipo de dados da string que você criar
• Para testar os caracteres de uma string, insira um tag da string 
para Source A e Source B.
Texto Estruturado
Use sinais 'maior que', adjacentes e iguais “>=” como operador em 
uma expressão. Esta expressão avalia se sourceA é maior ou igual a 
sourceB.
Consulte o Apêndice C para informações sobre a sintaxe de 
expressões de texto estruturado.
Bloco de Funções 
Operando: Tipo: Formato: Descrição:
Source A SINT
INT
DINT
REAL
string
imediato
tag
valor a ser testado em relação a Source B
Source B SINT
INT
DINT
REAL
string
imediato
tag
valor a ser testado em relação a Source A
Operando: Tipo: Formato: Descrição:
GEQ tag FBD_COMPARE estrutura estrutura GEQ
IF sourceA >= sourceB THEN
<statements>;
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-11
Estrutura FBD_COMPARE 
Descrição: A instrução GEQ testa se Source A é maior ou igual a Source B.
Quando comparar strings:
• Os valores hexadecimais dos caracteres determinam se uma 
string é menor ou maior que outro. Para o código hexadecimal 
de caractere, consulte a quarta capa deste manual.
• Quando duas strings estão classificadas como em um diretório 
de telefone, a ordem das strings determina qual é o maior.
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução
Parâmetro de Entrada: Tipo de Dados: Descrição:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não executa e as saídas não são 
atualizadas.
Valor inicial está energizado
SourceA REAL Valor para comparar a SourceB.
Válido = qualquer flutuante
SourceB REAL Valor para comparar a SourceA.
Válido = qualquer flutuante
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest BOOL Resultado da instrução. Isto é equivalente à saída da condição da linha para a instrução 
GEQ da lógica ladder.
Caracteres ASCII Códigos 
Hexadecimais
1ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
ab $61$62
m
ai
or 
q
u
e
m
e
n
or 
q
u
e
AB < B
a > B
Publicação 1756-RM003F-PT-P - Maio 2002
4-12 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Lógica Ladder 
Bloco de Funções
Condição: Ação:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
postscan A saída da condição da linha é definida como falsa.
entradada condição da linha é verdadeira
fim
Source A ≥ Source B
sim
não
saída da condição da 
linha é definida como 
verdadeira
saída da condição da 
linha é definida como 
falsa
Condição: Ação:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-13
Exemplo: Se value_1 for maior ou igual a value_2, energiza light_b. Se value_1 
for menor que value_2, desligue light_a.
Lógica Ladder
Texto Estruturado
light_b := (value_1 >= value_2);
Bloco de Funções
Publicação 1756-RM003F-PT-P - Maio 2002
4-14 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Maior que (GRT) A instrução GRT testa se Source A é maior que Source B.
Operandos:
Lógica Ladder 
• Se você inserir um tag SINT ou INT, o valor converte em um 
valor DINT pelo sinal de extensão.
• Tipos de dados da string são:
– tipo de dados STRING padrão
– qualquer novo tipo de dados da string que você criar
• Para testar os caracteres de uma string, insira um tag da string 
para Source A e Source B.
Texto Estruturado
Use o sinal maior que ">" como um operador em uma expressão. Esta 
expressão avalia se sourceA é maior que sourceB.
Consulte o Apêndice C para informações sobre a sintaxe de 
expressões de texto estruturado.
Bloco de Funções 
Operando: Tipo: Formato: Descrição:
Source A SINT
INT
DINT
REAL
string
imediato
tag
valor a ser testado em relação a Source B
Source B SINT
INT
DINT
REAL
string
imediato
tag
valor a ser testado em relação a Source A
Operando: Tipo: Formato: Descrição:
GRT tag FBD_COMPARE estrutura estrutura GRT
IF sourceA > sourceB THEN
<statements>;
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-15
estrutura FBD_COMPARE 
Descrição: A instrução GRT testa se Source A é maior ou igual a Source B.
Ao comparar strings:
• Os valores hexadecimais dos caracteres determinam se uma 
string é menor ou maior que outro. Para o código hexadecimal 
de caractere, consulte a quarta capa deste manual.
• Quando duas strings estão classificadas como em um diretório 
de telefone, a ordem dos strings determina qual é o maior.
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução
Parâmetro de Entrada: Tipo de Dados: Descrição:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não é executada e as saídas não são 
atualizadas.
Valor inicial está energizado
SourceA REAL Valor para comparar com SourceB.
Válido = qualquer flutuante
SourceB REAL Valor para comparar com SourceA.
Válido = qualquer flutuante
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest BOOL Resultado da instrução. Isto equivale à saída da condição da linha para instrução 
GRT da lógica ladder.
Caracteres ASCII Códigos 
Hexadecimais
1ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
ab $61$62
m
ai
or 
q
u
e
m
e
n
or 
q
u
e
AB < B
a > B
Publicação 1756-RM003F-PT-P - Maio 2002
4-16 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Lógica Ladder 
Bloco de Funções
Condição: Ação:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
postscan A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira
fim
Source A * Source B
sim
não
saída da condição da 
linha é definida como 
verdadeira
saída da condição da 
linha é definida como 
falsa
Condição: Ação:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-17
Exemplo: Se value_1 for maior que value_2, energize light_1. Se value_1 for 
menor ou igual a value_2, desligue light_1.
Lógica Ladder
Texto Estruturado
light_1 := (value_1 > value_2);
Bloco de Funções
Publicação 1756-RM003F-PT-P - Maio 2002
4-18 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Menor ou Igual a (LEQ) A instrução LEQ testa se Source A é menor ou igual a Source B.
Operandos:
Lógica Ladder
• Se você inserir um tag SINT ou INT, o valor converte em um 
valor DINT pelo sinal de extensão.
• Tipos de dados da string são:
– tipo de dados STRING padrão
– qualquer novo tipo de dados da string que você criar
• Para testar os caracteres de uma string, insira um tag da string 
para Source A e Source B.
Texto Estruturado
Use sinais 'menor que', adjacentes e iguais “<=" como operadores em 
uma expressão. Esta expressão avalia se sourceA é menor ou igual a 
sourceB.
Consulte o Apêndice C para informações sobre a sintaxe de 
expressões de texto estruturado.
Bloco de Funções 
Operando: Tipo: Formato: Descrição:
Source A SINT
INT
DINT
REAL
string
imediato
tag
valor a ser testado em relação Source B
Source B SINT
INT
DINT
REAL
string
imediato
tag
valor a ser testado em relação Source A
Operando: Tipo: Formato: Descrição:
LEQ tag FBD_COMPARE estrutura estrutura LEQ
IF sourceA <= sourceB THEN
<statements>;
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-19
estrutura FBD_COMPARE 
Descrição: A instrução LEQ testa se Source A é menor ou igual a Source B.
Quando comparar strings:
• Os valores hexadecimais dos caracteres determinam se uma 
string é menor ou maior que outra. Para o código hexadecimal 
de caractere, consulte a quarta capa deste manual.
• Quando duas strings estão classificadas como em um diretório 
de telefone, a ordem das strings determina qual é maior.
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução
Parâmetro de Entrada: Tipo de Dados: Descrição:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não é executada e as saídas não são 
atualizadas.
Valor inicial está energizado
SourceA REAL Valor para comparar a SourceB.
Válido = qualquer flutuante
SourceB REAL Valor para comparar a SourceA.
Válido = qualquer flutuante
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest BOOL Resultado da instrução. Isto equivale à saída da condição da saída para a instrução 
LEQ de lógica ladder.
Caracteres ASCII Códigos 
Hexadecimais
1ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
ab $61$62
m
ai
or 
q
u
e
m
e
n
or 
q
u
e
AB < B
a > B
Publicação 1756-RM003F-PT-P - Maio 2002
4-20 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Lógica Ladder 
Bloco de Funções
Condição: Ação:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
postscan A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira
fim
Source A * Source B
sim
não
saída da condição da 
linha é definida como 
verdadeira
saída da condição da linha 
é definida como falsa
Condição: Ação:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)4-21
Exemplo: Se value_1 for menor ou igual a value_2, energize light_2. Se value_1 
for maior que value_2, desenergize light_2.
Lógica Ladder
Texto Estruturado
light_2 := (value_1 <= value_2);
Bloco de Funções
Publicação 1756-RM003F-PT-P - Maio 2002
4-22 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Menor Que (LES) A instrução LES testa se Source A é menor que Source B.
Operandos:
Lógica Ladder 
• Se você inserir um tag SINT ou INT, o valor converte em um 
valor DINT pelo sinal de extensão.
• Tipos de dados da string são:
– tipo de dados STRING padrão
• qualquer novo tipo de dados da string que você criar
• Para testar os caracteres de uma string, insira um tag da string 
para Source A e Source B.
Texto Estruturado
Use o sinal menor que "<" como um operador em uma expressão. 
Esta expressão avalia se sourceA é menor que sourceB.
Consulte o Apêndice C para informações sobre a sintaxe de 
expressões de texto estruturado.
Bloco de Funções
Operando: Tipo: Formato: Descrição:
Source A SINT
INT
DINT
REAL
string
imediato
tag
valor a ser testado em relação a Source B
Source B SINT
INT
DINT
REAL
string
imediato
tag
valor a ser testado em relação a Source A
Operando: Tipo: Formato: Descrição:
LES tag FBD_COMPARE estrutura estrutura LES
IF sourceA < sourceB THEN
<statements>;
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-23
Estrutura FBD_COMPARE 
Descrição: A instrução LES testa se Source A é menor que Source B.
Quando comparar strings:
• Os valores hexadecimais dos caracteres determinam se uma 
string é menor ou maior que outra. Para o código hexadecimal 
de caractere, consulte a quarta capa deste manual.
• Quando duas strings estão classificadas como em um diretório 
de telefone, a ordem das strings determina qual é maior.
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução
Parâmetro de Entrada: Tipo de Dados: Descrição:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não é executada e as saídas não são 
atualizadas.
Valor inicial está energizado
SourceA REAL Valor para comparar a SourceB.
Válido = qualquer flutuante
SourceB REAL Valor para comparar com SourceA.
Válido = qualquer flutuante
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest BOOL Resultado da instrução. Isto equivale à saída da condição da linha da instrução LES da 
lógica ladder.
Caracteres ASCII Códigos 
Hexadecimais
1ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
ab $61$62
m
ai
or 
q
u
e
m
e
n
or 
q
u
e
AB < B
a > B
Publicação 1756-RM003F-PT-P - Maio 2002
4-24 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Lógica Ladder 
Bloco de Funções
Condição: Ação:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
postscan A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira
fim
Source A * Source B
sim
não
saída da condição da 
linha é definida como 
verdadeira
saída da condição da 
linha é definida como 
falsa
Condição: Ação:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn é falso EnableOut é desenergizado.
EnableIn é verdadeiro A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-25
Exemplo: Se value_1 for menor que value_2, energize light_3. Se value_1 for 
maior ou igual a value_2, desenergize light_3.
Lógica Ladder
Texto Estruturado
light_3 := (value_1 < value_2);
Bloco de Funções
Publicação 1756-RM003F-PT-P - Maio 2002
4-26 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Limite (LIM) A instrução LIM testa se o valor de teste está dentro da faixa de Limite 
Inferior a Limite Superior.
Operandos:
Lógica Ladder 
Texto Estruturado
Texto estruturado não tem uma instrução LIM, mas é possível obter os 
mesmos resultados usando texto estruturado.
IF (LowLimit <= HighLimit AND
(Test >= LowLimit AND Test <= HighLimit)) OR
(LowLimit >= HighLimit AND
(Test <= LowLimit OR Test >= HighLimit)) THEN
<statement>;
END_IF;
Bloco de Funções 
Operando: Tipo: Formato: Descrição:
Low Limit SINT
INT
DINT
REAL
imediato
tag
valor do limite inferior
Um tag SINT ou INT é convertido para um valor DINT pela extensão de 
sinal.
Test SINT
INT
DINT
REAL
imediato
tag
valor de acordo com o teste
Um tag SINT ou INT é convertido para um valor DINT pela extensão de 
sinal.
High Limit SINT
INT
DINT
REAL
imediato
tag
valor do limite superior
Um tag SINT ou INT é convertido para um valor DINT pela extensão de 
sinal.
Operando: Tipo: Formato: Descrição:
LIM tag FBD_LIMIT estrutura estrutura LIM
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-27
Estrutura FBD_LIMIT 
Descrição: A instrução LIM testa se o valor de Test está dentro da faixa do Limite 
Inferior ao Limite Superior.
Os inteiros com sinal mudam do número positivo máximo para o 
número negativo máximo quando o bit mais significativo estiver 
energizado. Por exemplo, em inteiros com 16 bits (tipo INT), o inteiro 
positivo máximo é 32.767, que é representado em hexadecimal como 
16#7FFF (bits 0 a 14 estão todos energizados). Se você incrementar esse 
número em um, o resultado é 16#8000 (bit 15 está energizado). Para 
inteiros com sinal, o hexadecimal 16#8000 é igual ao decimal -32.768. 
Incremente a partir desse ponto até que todos os 16 bits estejam 
energizados e terminem em 16#FFFF, que é igual ao decimal -1.
Parâmetro de Entrada: Tipo de Dados: Descrição:
EnableIn BOOL Se desenergizada, a instrução não é executada e as saídas não são atualizadas.
Se energizada, a instrução é executada como descrito em Execution.
Valor inicial está energizado
LowLimit REAL Valor do limite inferior.
Válido = qualquer flutuante
Test REAL Valor para comparar aos limites
Válido = qualquer flutuante
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest BOOL Resultado da instrução. Isto equivale à saída da condição da linha para a instrução 
LIM da lógica ladder.
HighLimit REAL Valor do limite superior.
Válido = qualquer flutuante
Se o Limite 
Inferior:
E o valor de Teste for: A saída da condição da linha 
é definida em:
≤ limite superior igual a ou entre os limites verdadeira
diferente ou fora dos limites falsa
≥limite superior igual a ou fora dos limites verdadeira
diferente ou dentro dos limites falsa
Publicação 1756-RM003F-PT-P - Maio 2002
4-28 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Isto pode ser representado como uma linha de número circular 
(consulte os seguintes diagramas). A instrução LIM começa no Limite 
Inferior e incrementa no sentido horário até atingir o Limite Superior. 
Qualquer valor de teste na faixa de sentido horário, desde o Limite 
Inferior até o Limite Superior define a saída da condição da linha 
como verdadeira. Qualquer valor de teste na faixa de sentido horário 
desde o Limite Superior até o Limite Inferior define a saída da 
condição da linha como falsa.
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução
−1
0
+1
limite inferior
limite superior
+n−(n+1)
n = valor máximo
Limite Inferior ≤ Limite Superior
A instrução é verdadeira se o valor de teste 
for igual ou situar-se entre os limites 
superior e inferior.
Limite Inferior * Limite Superior
A instrução é verdadeira se o valor de teste for 
igual ou estiver fora da faixa entre os limites 
superior e inferior.
−1
0
+1
limite superior
limite inferior
+n−(n+1)
n = valor máximo
Publicação 1756-RM003F-PT-P- Maio 2002
Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-29
Lógica Ladder 
Bloco de Funções
Exemplo 1: Limite Inferior * Limite Superior
Quando 0 ≤ value ≥ 100, energiza light_1. Se value < 0 ou value >100, 
desenergize light_1.
Lógica Ladder
Condição: Ação:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
postscan A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira
fim
avalia limite
a comparação é 
verdadeira
a comparação é falsa
saída da condição da linha é 
definida como verdadeira
saída da condição da 
linha é definida como 
falsa
Condição: Ação:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado O EnableOut é desenergizado, a instrução não faz nada e as saídas não são atualizadas.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
4-30 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Texto Estruturado
IF (value <= 100 AND(value >= 0 AND value <= 100)) OR
(value >= 100 AND value <= 0 OR value >= 100)) THEN
light_1 := 1;
ELSE
light_1 := 0;
END_IF;
Bloco de Funções
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-31
Exemplo 2: Limite Inferior ≥ Limite Superior
Quando value ≥ 0 ou value ≤ −100, energiza light_1. Se value < 0 ou 
value >−100, desenergize light_1.
Lógica Ladder
Texto Estruturado
IF (0 <= -100 AND value >= 0 AND value <= -100)) OR
(0 >= -100 AND(value <= 0 OR value >= -100)) THEN
light_1 := 1;
ELSE
light_1 := 0;
END_IF;
Bloco de Funções
Publicação 1756-RM003F-PT-P - Maio 2002
4-32 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Máscara Igual a (MEQ) A instrução MEQ passa os valores de Source e Compare através de 
uma Máscara e compara os resultados.
Operandos:
Lógica Ladder 
Texto Estruturado
Texto estruturado não tem uma instrução MEQ, mas é possível obter 
os mesmos resultados usando texto estruturado.
IF (Source AND Mask) = (Compare AND Mask) THEN
<statement>;
END_IF;
Bloco de Funções
Operando: Tipo: Formato: Descrição:
Source SINT
INT
DINT
imediato
tag
valor para ser testado comparando-se a 
Compare
Um tag SINT ou INT é convertido para um valor DINT por preenchimento 
com zero.
Mask SINT
INT
DINT
imediato
tag
define que bits são bloqueados ou os que 
passam
Um tag SINT ou INT é convertido para um valor DINT por preenchimento 
com zero.
Compare SINT
INT
DINT
imediato
tag
valor a ser testado em relação a Source
Um tag SINT ou INT é convertido para um valor DINT por preenchimento 
com zero.
Operando: Tipo: Formato: Descrição:
MEQ tag FBD_MASK_EQUAL estrutura estrutura MEQ
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-33
estrutura FBD_MASK_EQUAL 
Descrição: “1“ na máscara significa que o bit de dados passou. “0“ na máscara 
significa que o bit de dados foi bloqueado. Geralmente, os valores 
Source, Mask e Compare são todos do mesmo tipo de dados.
Se houver uma combinação dos tipos de dados de inteiros, a instrução 
preencherá os bits mais significativos dos tipos de dados de inteiros 
menores com 0s, de forma que fiquem com o mesmo tamanho dos 
tipos de dados maiores.
Inserção de um valor de máscara imediato
Ao inserir uma máscara, o software de programação retorna ao 
padrão dos valores decimais. Caso você queira inserir uma máscara 
usando outro formato, coloque o prefixo correto antes do valor.
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução
Parâmetro de Entrada: Tipo de Dados: Descrição:
EnableIn BOOL Se desenergizado, a instrução não é executada e as saídas não são atualizadas.
Se energizado, a instrução é executada como descrito em Execution.
Valor inicial está energizado
Source DINT Valor para testar com Compare.
Válido = qualquer inteiro
Mask DINT Define quais bits bloquear (máscara).
Válido = qualquer inteiro
Compare DINT Comparação de valor.
válido = qualquer inteiro
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest BOOL Resultado da instrução. Isto equivale à saída da condição da linha para a instrução 
MEQ de lógica ladder.
Prefixo: Descrição:
16# hexadecimal
por exemplo: 16#0F0F
8# octal
por exemplo: 8#16
2# binário
por exemplo: 2#00110011
Publicação 1756-RM003F-PT-P - Maio 2002
4-34 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Lógica Ladder 
Bloco de Funções
Condição: Ação:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
postscan A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira
fim
fonte mascarada = 
comparação 
mascarada
sim
não
saída da condição da 
linha é definida como 
verdadeira
saída da condição da 
linha é definida como 
falsa
Condição: Ação:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado O EnableOut é desenergizado, a instrução não faz nada e as saídas não são atualizadas.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-35
Exemplo 1: Se value_1 mascarado for igual a value_2 mascarado, energize 
light_1. Se a value_1 mascarada não for igual a value_2 mascarada, 
desligue light_1. Este exemplo mostra que os valores mascarados são 
iguais. Um 0 na máscara impede que ela compare aquele bit 
(mostrado por x no exemplo).
Lógica Ladder
Texto Estruturado
light_1 := ((value_1 AND mask_1)=(value_2 AND mask_2));
Bloco de Funções
value_1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 value_2 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0
mask_1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 mask_1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
value_1 
mascarado
0 1 0 1 0 1 0 1 1 1 1 1 x x x x value_2 mascarado 0 1 0 1 0 1 0 1 1 1 1 1 x x x x
Publicação 1756-RM003F-PT-P - Maio 2002
4-36 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Exemplo 2: Se value_1 mascarado for igual a value_2 mascarado, energize 
light_1. Se value_1 mascarado não for igual a value_2 mascarado, 
desligue light_1. Este exemplo mostra que os valores mascarados não 
são iguais. Um 0 na máscara impede que ela compare aquele bit 
(mostrado por x no exemplo).
Lógica Ladder
Texto Estruturado
light_1 := ((value_1 AND mask_1)=(value_2 AND mask_2));
Bloco de Funções
value_1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 value_2 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0
mask_1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 mask_1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
value_1 
mascarado
x x x x x x x x x x x x 1 1 1 1 value_2 mascarado x x x x x x x x x x x x 0 0 0 0
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-37
Diferente de (NEQ) A instrução NEQ testa se Source A é diferente de Source B.
Operandos:
Lógica Ladder 
• Se você inserir um tag SINT ou INT, o valor converte a um valor 
DINT pelo sinal de extensão.
• Tipos de dados da string são:
– tipo de dados STRING padrão
– qualquer novo tipo de dados da string que você criar
• Para testar os caracteres de uma string, insira um tag da string 
para Source A e Source B.
Texto Estruturado
Use os sinais maior que e menor que “<>“ juntos como operador em 
uma expressão. Esta expressão avalia se sourceA é diferente de 
sourceB.
Consulte o Apêndice C para informações sobre a sintaxe de 
expressões de textoestruturado.
Bloco de Funções
Operando: Tipo: Formato: Descrição:
Source A SINT
INT
DINT
REAL
string
imediato
tag
valor a ser testado em relação Source B
Source B SINT
INT
DINT
REAL
string
imediato
tag
valor a ser testado em relação Source A
Operando: Tipo: Formato: Descrição:
NEQ tag FBD_COMPARE estrutura estrutura NEQ
IF sourceA <> sourceB THEN
<statements>;
Publicação 1756-RM003F-PT-P - Maio 2002
4-38 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
estrutura FBD_COMPARE 
Descrição: A instrução NEQ testa se Source A é diferente de Source B.
Quando comparar strings:
• As strings são diferentes se algum caractere não corresponder.
• Os caracteres ASCII são sensíveis ao contexto. O "A" maiúsculo 
($41) não é igual ao "a" minúsculo ($61).
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução
Parâmetro de Entrada: Tipo de Dados: Descrição:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são 
atualizadas.
Valor inicial está energizado
SourceA REAL Valor para comparar com SourceB.
Válido = qualquer flutuante
SourceB REAL Valor para comparar com SourceA.
Válido = qualquer flutuante
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest BOOL Resultado da instrução. Isto equivale à saída da condição da linha para a instrução 
NEQ de lógica ladder.
Caracteres ASCII Códigos 
Hexadecimais
1ab $31$61$62
1b $31$62
A $41
AB $41$42
B $42
a $61
ab $61$62
m
ai
or 
q
u
e
m
e
n
or 
q
u
e
AB < B
a > B
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-39
Lógica Ladder 
Bloco de Funções 
Condição: Ação:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
postscan A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira
fim
Source A = Source B;
sim
não
saída da condição da 
linha é definida como 
verdadeira
saída da condição da 
linha é definida como 
falsa
Condição: Ação:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
4-40 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)
Exemplo: Se value_1 não for igual a value_2, energize light_4. Se value_1 for 
igual a value_2, desenergize light_4.
Lógica Ladder
Texto Estruturado
light_4 := (value_1 <> value_2);
Bloco de Funções
Publicação 1756-RM003F-PT-P - Maio 2002
Capítulo 5
Instruções de Cálculo/Matemáticas
(CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Introdução As instruções de cálculo/matemáticas avaliam as operações aritméticas 
usando uma expressão ou uma instrução aritmética específica.
É possível combinar tipos de dados, mas perda de precisão e erros de 
arredondamentos podem ocorrer, bem como demora na execução da 
instrução. Verifique o bit S:V para observar se o resultado foi 
truncado.
Para instruções de lógica ladder, os tipos de dados em negrito 
indicam tipos de dados otimizados. Uma instrução executa mais 
rapidamente e requer menos memória se todos os operandos da 
instrução usarem o mesmo tipo de dados otimizados, geralmente, 
DINT ou REAL.
Se você quiser: Use esta instrução: Disponível nessas linguagens: Consulte página:
avaliar uma expressão CPT lógica ladder
texto estruturado(1)
5-2
somar dois valores ADD lógica ladder
texto estruturado(2)
bloco de funções
5-5
subtrair dois valores SUB lógica ladder
texto estruturado(2)
bloco de funções
5-8
multiplicar dois valores MUL lógica ladder
texto estruturado(2)
bloco de funções
5-11
dividir dois valores DIV lógica ladder
texto estruturado(2)
bloco de funções
5-14
determinar o resto após a divisão de um 
valor por outro
MOD lógica ladder
texto estruturado(2)
bloco de funções
5-18
calcular a raiz quadrada de um valor SQR
SQRT(3)
lógica ladder
texto estruturado
bloco de funções
5-21
considerar o sinal oposto de um valor NEG lógica ladder
texto estruturado(2)
bloco de funções
5-24
considerar o valor absoluto de um valor ABS lógica ladder
texto estruturado
bloco de funções
5-26
(1) Não há instrução de texto estruturado equivalente. Use outra programação de texto estruturado para alcançar o mesmo resultado. Veja a descrição para a instrução.
(2) Não há instrução de texto estruturado equivalente. Use o operador em uma expressão.
(3) Texto estruturado somente.
1 Publicação 1756-RM003F-PT-P - Maio 2002
5-2 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Cálculo (CPT) A instrução CPT realiza as operações aritméticas definidas na expressão.
Operandos:
Lógica Ladder 
Texto Estruturado
O texto estruturado não possui uma instrução CPT, mas é possível 
alcançar os mesmos resultados usando um atributo e expressão. 
destination := numeric_expresion;
Consulte ApêndiceC para informações sobre a sintaxe de atributos e 
expressões no texto estruturado.
Descrição: A instrução CPT realiza as operações aritméticas definidas na 
expressão. Quando habilitada, a instrução CPT avalia a expressão 
específica e coloca o resultado em Destination.
A execução de uma instrução CPT é um pouco mais lenta e usa mais 
memória do que a execução de outras instruções de 
cálculo/matemáticas. A vantagem da instrução CPT é que a mesma 
permite a inserção de expressões complexas em uma instrução.
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha: nenhuma
Operando: Tipo: Formato: Descrição:
Destination SINT
INT
DINT
REAL
tag tag para armazenar o resultado
Expression SINT
INT
DINT
REAL
imediato
tag
uma expressão composta por tags e/ou valores 
imediatos separados por operadores
Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal.
DICA Não há limite para o comprimento de uma 
expressão.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-3
Execução:
Exemplo 1: Quando habilitada, a instrução CPT avalia o value_1 multiplicado por 
5 e divide esse resultado pelo resultado do value_2 dividido por 7 e 
coloca o resultado final em result_1.
Exemplo 2: Quando habilitada, a instrução CPT trunca float_value_1 e 
float_value_2, eleva float_value_2 truncado ao quadrado, divide por 
float_value_1 truncado pelo resultado e armazena o resto dessa 
operação da divisão em float_value_result_cpt.
Operadores válidos
Condição: Ação da Lógica Ladder:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira A instrução avalia Expression e coloca o resultado em Destination.
A saída da condição da linha é definida como verdadeira.
postscan A saída da condição da linha é definida como falsa.
Operadores: Descrição: Ótimo:
+ adição DINT, REAL
- subtração/negativo DINT, REAL
* multiplicação DINT, REAL
/ divisão DINT, REAL
** expoente (x elevado a y) DINT, REAL
ABS valor absoluto DINT, REAL
ACS arco co-seno REAL
AND AND (E) DINT
ASN arco seno REAL
ATN arco tangente REAL
COS co-seno REAL
DEG radianos em graus DINT, REAL
FRD BCD para inteiro DINT
LN log neperiano REAL
LOG log base 10 REAL
MOD módulo DINT, REAL
NOT complementação DINT
OR OR (OU) DINT
RAD graus em radianos DINT, REAL
SIN seno REAL
SQR raiz quadrada DINT, REAL
TAN tangente REAL
TOD inteiro para BCD DINT
TRN truncamento DINT, REAL
XOR OR exclusivo DINT
Operadores: Descrição: Ótimo:
Publicação 1756-RM003F-PT-P - Maio 2002
5-4 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB,MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Formatação de expressões
Para cada operador utilizador, você deve fornecer um ou dois 
operandos (tags ou valores imediatos). Use a tabela a seguir para 
formatar os operadores e os operandos em uma expressão:
Determinação da seqüência da operação
As operações que você escreve na expressão são executadas pela 
instrução na seqüência prescrita e não, necessariamente, na ordem 
que você as escreveu. É possível suprimir a seqüência da operação 
agrupando-se os termos dentro de parênteses, forçando a instrução 
para realizar uma operação dentro dos parênteses, antes de outras 
operações.
As operações com a mesma seqüência são executadas da esquerda 
para a direita.
Para operadores 
que operam em:
Use este formato: Exemplos:
um operando operator(operand) ABS(tag_a)
dois operandos operand_a operator operand_b • tag_b + 5
• tag_c AND tag_d
• (tag_e ** 2) MOD 
(tag_f / tag_g)
Seqüência: Operação:
1. ( )
2. ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG, RAD, SIN, SQR, 
TAN, TOD, TRN
3. **
4. − (negativo), NOT
5. *, /, MOD
6. − (subtração), +
7. AND
8. XOR
9. OR
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-5
Adição (ADD) A instrução ADD soma Source A e Source B e coloca o resultado em 
Destination
Operandos:
Lógica Ladder 
Texto Estruturado
Use o sinal mais “+” como um operador em uma expressão. Essa 
expressão adiciona sourceA a sourceB e armazena o resultado em 
dest.
Consulte ApêndiceC para informações sobre a sintaxe de expressões 
no texto estruturado.
Bloco de Funções
Operando: Tipo: Formato: Descrição:
Source A SINT
INT
DINT
REAL
imediato
tag
valor a ser somado à Source B
Um tag SINT ou INT é convertido para um valor DINT pela extensão de 
sinal.
Source B SINT
INT
DINT
REAL
imediato
tag
valor a ser adicionado à Source A
Um tag SINT ou INT é convertido para um valor DINT pela extensão de 
sinal.
Destination SINT
INT
DINT
REAL
tag tag para armazenar o resultado
Operando: Tipo: Formato: Descrição:
tag ADD FBD_MATH estrutura estrutura ADD
dest := sourceA + sourceB;
Publicação 1756-RM003F-PT-P - Maio 2002
5-6 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Estrutura FBD_MATH
Descrição: A instrução ADD soma Source A e Source B e coloca o resultado em 
Destination
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha: nenhuma
Execução:
Lógica Ladder 
Bloco de Funções
Parâmetro de Entrada: Tipo de Dados: Descrição:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são 
atualizadas.
Valor inicial é energizado
SourceA REAL Valor para adicionar a SourceB.
Válido = qualquer flutuante
SourceB REAL Valor para adicionar a SourceA.
Válido = qualquer flutuante
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest REAL Resultado da instrução matemática. Os flags de status aritmético são energizados para 
esta saída.
Condição: Ação:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira Destination = Source A + Source B
A saída da condição da linha é definida como verdadeira.
postscan A saída da condição da linha é definida como falsa.
Condição: Ação:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-7
Exemplo: Adicione float_value_1 a float_value_2 e coloque o resultado em 
add_result.
Lógica Ladder
Texto Estruturado
add_result := float_value_1 + float_value_2;
Bloco de Funções
Publicação 1756-RM003F-PT-P - Maio 2002
5-8 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Subtração (SUB) A instrução SUB subtrai Source B de Source A e coloca o resultado em 
Destination
Operandos:
Lógica Ladder 
Texto Estruturado
Use o sinal de menos (“−”) como um operador em uma expressão. 
Essa expressão subtrai sourceA da sourceB e armazena o resultado em 
dest.
Consulte ApêndiceC para informações sobre a sintaxe de expressões 
no texto estruturado.
Bloco de Funções
Operando: Tipo: Formato: Descrição:
Source A SINT
INT
DINT
REAL
imediato
tag
valor a partir do qual se subtrai a FonteB
Um tag SINT ou INT é convertido para um valor DINT pela extensão de 
sinal.
Source B SINT
INT
DINT
REAL
imediato
tag
valor a ser subtraído de Source A
Um tag SINT ou INT é convertido para um valor DINT pela extensão de 
sinal.
Destination SINT
INT
DINT
REAL
tag tag para armazenar o resultado
Operando: Tipo: Formato: Descrição:
tag SUB FBD_MATH estrutura estrutura SUB
dest := sourceA - sourceB;
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-9
Estrutura FBD_MATH
Descrição: A instrução SUB subtrai Source B de Source A e coloca o resultado em 
Destination
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha: nenhuma
Execução:
Lógica Ladder 
Bloco de Funções
Parâmetro de 
Entrada:
Tipo de Dados: Descrição:
EnableIn BOOL Habilita entrada. Se desenergizado, a instrução não executa e as saídas não são atualizadas.
Valor inicial é energizado
SourceA REAL Valor do qual se subtrai SourceB.
Válido = qualquer flutuante
SourceB REAL Valor do qual se subtrai SourceA.
Válido = qualquer flutuante
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest REAL Resultado da instrução matemática. Os flags de status aritmético são energizados para esta 
saída.
Condição: Ação:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira Destination = Source B - Source A
A saída da condição da linha é definida como verdadeira.
postscan A saída da condição da linha é definida como falsa.
Condição: Ação:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
5-10 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Exemplo: Subtraia float_value_2 de float_value_1 e coloque o resultado em 
subtract_result.
Lógica Ladder
Texto Estruturado
subtract_result := float_value_1 - float_value_2;
Bloco de Funções
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-11
Multiplicação (MUL) A instrução MUL multiplica Source A por Source B e coloca o 
resultado em Destination
Operandos:
Lógica Ladder 
Texto Estruturado
Use o sinal de multiplicar (“∗ ”) como um operador em uma 
expressão. Essa expressão multiplica sourceA por sourceB e 
armazena o resultado em dest.
Consulte ApêndiceC para informações sobre a sintaxe de expressões 
no texto estruturado.
Bloco de Funções
Operando: Tipo: Formato: Descrição:
Source A SINT
INT
DINT
REAL
imediato
tag
valor do multiplicando
Um tag SINT ou INT é convertido para um valor DINT pela extensão de 
sinal.
Source B SINT
INT
DINT
REAL
imediato
tag
valor do multiplicador
Um tag SINT ou INT é convertido para um valor DINT pela extensão de 
sinal.
Destination SINT
INT
DINT
REALtag tag para armazenar o resultado
Operando: Tipo: Formato: Descrição:
tag MUL FBD_MATH estrutura estrutura MUL
dest := sourceA * sourceB;
Publicação 1756-RM003F-PT-P - Maio 2002
5-12 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Estrutura FBD_MATH
Descrição: A instrução MUL multiplica Source A por Source B e coloca o 
resultado em Destination
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha: nenhuma
Execução:
Lógica Ladder 
Bloco de Funções
Parâmetro de Entrada: Tipo de Dados: Descrição:
EnableIn BOOL Habilita entrada. Se desenergizado, a instrução não executa e as saídas não são 
atualizadas.
Valor inicial é energizado
Source A REAL Valor do multiplicando.
Válido = qualquer flutuante
Source B REAL Valor do multiplicador.
Válido = qualquer flutuante
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest REAL Resultado da instrução matemática. Os flags de status aritmético são energizados para 
esta saída.
Condição: Ação:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira Destination = Source B x Source A
A saída da condição da linha é definida como verdadeira.
postscan A saída da condição da linha é definida como falsa.
Condição: Ação:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-13
Exemplo: Multiplique float_value_1 por float_value_2 e coloque o resultado em 
multiply_result.
Lógica Ladder
Texto Estruturado
multiply_result := float_value_1 ∗ float_value_2;
Bloco de Funções
Publicação 1756-RM003F-PT-P - Maio 2002
5-14 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Divisão (DIV) A instrução DIV divide Source A por Source B e coloca o resultado em 
Destination.
Operandos:
Lógica Ladder 
Texto Estruturado
Use o sinal de dividir (“/”) como um operador em uma expressão. 
Essa expressão divide sourceA por sourceB e armazena o resultado 
em dest.
Consulte ApêndiceC para informações sobre a sintaxe de expressões 
no texto estruturado.
Bloco de Funções
Operando: Tipo: Formato: Descrição:
Source A SINT
INT
DINT
REAL
imediato
tag
valor do dividendo
Um tag SINT ou INT é convertido para um valor DINT pela extensão de 
sinal.
Source B SINT
INT
DINT
REAL
imediato
tag
valor do divisor
Um tag SINT ou INT é convertido para um valor DINT pela extensão de 
sinal.
Destination SINT
INT
DINT
REAL
tag tag para armazenar o resultado
Operando: Tipo: Formato: Descrição:
tag DIV FBD_MATH estrutura estrutura DIV
dest := sourceA / sourceB;
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-15
Estrutura FBD_MATH
Descrição: Se Destination não for REAL, a instrução trabalha com a porção 
fracionária do resultado da seguinte forma:
Se Source B (o divisor) for zero:
• uma falha de advertência ocorre:
– Tipo 4: falha no programa
– Código 4: overflow aritimético
• Destination é definido conforme segue:
Para detectar uma divisão por zero possível, examine o bit de falha de 
advertência (S:MINOR). Consulte Logix5000 Controllers Common 
Procedures, publicação 1756-PM001.
Parâmetro de Entrada: Tipo de Dados: Descrição:
EnableIn BOOL Habilita entrada. Se desenergizado, a instrução não executa e as saídas não são 
atualizadas.
Valor inicial é energizado
Source A REAL Valor do dividendo.
Válido = qualquer flutuante
Source B REAL Valor do divisor.
Válido = qualquer flutuante
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest REAL Resultado da instrução matemática. Os flags de status aritmético são energizados 
para esta saída.
Se Source A: Então a parte fracionária 
do resultado:
Exemplo:
e Source B não 
forem do tipo 
REAL
trunca Source A DINT 5
Source B DINT 3
Destination DINT 1
ou Source B for do 
tipo REAL
é arredondada Source A REAL 5.0
Source B DINT 3
Destination DINT 2
Se Source B for zero e: E o Destination for um: E o resultado for: Então Destination será definido 
em:
todos os operandos são inteiros 
(SINT, INT ou DINT)
Source A
pelo menos um operando é um REAL SINT, INT ou DINT positivo -1
negativo 0
REAL positivo 1.$ (infinito positivo)
negativo -1.$ (infinito negativo)
Publicação 1756-RM003F-PT-P - Maio 2002
5-16 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha:
Execução:
Lógica Ladder
Bloco de Funções
Exemplo 1: Divida float_value_1 por float_value_2 e coloque o resultado em 
divide_result.
Lógica Ladder
Texto Estruturado
divide_result := float_value_1 / float_value_2;
Uma falha de advertência ocorrerá se: Tipo de falha: Código de falha:
o divisor for zero 4 4
Condição: Ação:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira Destination = Source A / Source B
A saída da condição da linha é definida como verdadeira.
postscan A saída da condição da linha é definida como falsa.
Condição: Ação:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-17
Bloco de Funções
Exemplo 2: As instruções DIV e MOV trabalham juntas para dividir dois inteiros, 
arredondar o resultado e colocá-lo em um tag inteiro:
• A instrução DIV divide dint_a por dint_b.
• Para arredondar o resultado, o Destination é um tag REAL. (Se o 
destino fosse um tag inteiro (SINT, INT ou DINT), a instrução 
truncaria o resultado.)
• A instrução MOV muda o resultado arredondado (real_temp) de 
DIV para divide_result_rounded.
• Como divide_result_rounded é um tag DINT o valor de 
real_temp é arredondado e colocado no DINT destino.
Lógica Ladder
43009
Publicação 1756-RM003F-PT-P - Maio 2002
5-18 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Módulo (MOD) A instrução MOD divide Source A por Source B e coloca o resto em 
Destination
Operandos:
Lógica Ladder 
Texto Estruturado
Use MOD como um operador em uma expressão. Essa expressão 
divide sourceA por sourceB e armazena o restante em dest.
Consulte ApêndiceC para informações sobre a sintaxe de expressões 
no texto estruturado.
Bloco de Funções
Operando: Tipo: Formato: Descrição:
Source A SINT
INT
DINT
REAL
imediato
tag
valor do dividendo
Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal.
Source B SINT
INT
DINT
REAL
imediato
tag
valor do divisor
Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal.
Destination SINT
INT
DINT
REAL
tag tag para armazenar o resultado
Operando: Tipo: Formato: Descrição:
tag MOD FBD_MATH estrutura estrutura MOD
dest := sourceA MOD
sourceB;
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-19
Estrutura FBD_MATH
Descrição: Se Source B (o divisor) for zero:
• uma falha de advertência ocorre:
– Tipo4: falha no programa
– Código 4: overflow aritimético
• o Destination é definido conforme segue:
Para detectar uma divisão por zero possível, examine o bit de falha de 
advertência (S:MINOR). Consulte Logix5000 Controllers Common 
Procedures, publicação 1756-PM001.
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha:
Parâmetro de Entrada: Tipo de Dados: Descrição:
EnableIn BOOL Habilita entrada. Se desenergizado, a instrução não executa e as saídas não são 
atualizadas.
Valor inicial é energizado.
Source A REAL Valor do dividendo.
Válido = qualquer flutuante
Source B REAL Valor do divisor.
Válido = qualquer flutuante
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest REAL Resultado da instrução matemática. Os flags de status aritmético são energizados 
para esta saída.
Se Source B for zero e: E o destino for um: E o resultado for: Então o destino será definido em:
todos os operandos são inteiros 
(SINT, INT ou DINT)
Source A
pelo menos um operando é um REAL SINT, INT ou DINT positivo -1
negativo 0
REAL positivo 1.$ (infinito positivo)
negativo -1.$ (infinito negativo)
Uma falha de advertência ocorrerá se: Tipo de falha: Código de falha:
o divisor é zero 4 4
Publicação 1756-RM003F-PT-P - Maio 2002
5-20 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Execução:
Lógica Ladder 
Bloco de Funções 
Exemplo: Divide dividend por divisor e coloca o resto em remainder. Nesse 
exemplo, 10 é dividido por 3, com um resto de um.
Lógica Ladder
Texto Estruturado
remainder := dividend MOD divisor;
Bloco de Funções
Condição: Ação:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira Destination = Source A – ( TRN ( Source A / Source B ) * Source B )
A saída da condição da linha é definida como verdadeira.
postscan A saída da condição da linha é definida como falsa.
Condição: Ação:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
postscan Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-21
Raiz Quadrada (SQR) A instrução SQR calcula a raiz quadrada de Source e coloca o 
resultado em Destination.
Operandos:
Lógica Ladder 
Texto Estruturado
Use SQRT como uma função. Esta expressão calcula a raiz quadrada 
de source e armazena o resultado em dest.
Consulte ApêndiceC para informações sobre a sintaxe de expressões 
no texto estruturado.
Bloco de Funções
Estrutura FBD_MATH_ADVANCED
Operando: Tipo: Formato: Descrição:
Source SINT
INT
DINT
REAL
imediato
tag
calcula a raiz quadrada desse valor
Um tag SINT ou INT é convertido para um valor DINT pela extensão de 
sinal.
Destination SINT
INT
DINT
REAL
tag tag para armazenar o resultado
Operando: Tipo: Formato: Descrição:
SQR tag FBD_MATH_ADVANCED estrutura estrutura SQR
dest := SQRT(source);
Parâmetro de Entrada: Tipo de Dados: Descrição:
EnableIn BOOL Habilita entrada. Se desenergizado, a instrução não executa e as saídas não são 
atualizadas.
Valor inicial é energizado.
Source REAL Encontre a raiz quadrada deste valor.
Válido = qualquer flutuante
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest REAL Resultado da instrução matemática. Os flags de status aritmético são energizados 
para esta saída.
Publicação 1756-RM003F-PT-P - Maio 2002
5-22 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Descrição: Se Destination não for REAL, a instrução trabalha com a porção 
fracionária do resultado da seguinte forma:
Se Source for negativo, a instrução retira o valor absoluto de Source, 
antes de calcular a raiz quadrada.
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha: nenhuma
Execução:
Lógica Ladder 
Bloco de Funções 
Se Source for: Então a parte fracionária do 
resultado:
Exemplo:
diferente do 
tipo REAL
trunca Source DINT 3
Destination DINT 1
do tipo REAL é arredondada Source REAL 3,0
Destination DINT 2
Condição: Ação:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira
A saída da condição da linha é definida como verdadeira.
postscan A saída da condição da linha é definida como falsa.
Destination Source=
Condição: Ação:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-23
Exemplo: Calcule a raiz quadrada de value_1 e coloque o resultado em 
sqr_result.
Lógica Ladder
Texto Estruturado
multiply_result := SQRT(value_1);
Bloco de Funções
Publicação 1756-RM003F-PT-P - Maio 2002
5-24 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Negação (NEG) A instrução NEG altera o sinal de Source e coloca o resultado em 
Destination.
Operandos:
Lógica Ladder 
Texto Estruturado
Use o sinal menos (“−”) como um operador em uma expressão. Esta 
expressão altera o sinal de source e armazena o resultado em dest.
Consulte ApêndiceC para informações sobre a sintaxe de expressões 
no texto estruturado.
Bloco de Funções
Estrutura FBD_MATH
Descrição: Se você tornar negativo um valor negativo, o resultado será positivo. 
Se você tornar negativo um valor positivo, o resultado será negativo.
Operando: Tipo: Formato: Descrição:
Source SINT
INT
DINT
REAL
imediato
tag
valor a ser transformado em negativo
Um tag SINT ou INT é convertido para um valor DINT pela extensão de 
sinal.
Destination SINT
INT
DINT
REAL
tag tag para armazenar o resultado
Operando: Tipo: Formato: Descrição:
tag NEG FBD_MATH_ADVANCED estrutura estrutura NEG
dest := -source;
Parâmetro de 
Entrada:
Tipo de Dados: Descrição:
EnableIn BOOL Habilita entrada. Se desenergizado, a instrução não executa e as saídas não são atualizadas.
Valor inicial é energizado
Source REAL Valor para negar.
Válido = qualquer flutuante
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest REAL Resultado da instrução matemática. Os flags de status aritmético são energizados para esta 
saída.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-25
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha: nenhuma
Execução:
Lógica Ladder 
Bloco de Funções
Exemplo: Altere o sinal de value_1 e coloque o resultado em negate_result.
Lógica Ladder
Texto Estruturado
negate_result := -value_1;
Bloco de Funções
Condição: Ação:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira Destination = 0 − Source
A saída da condição da linha é definida como verdadeira.
postscan A saída da condição da linha é definida como falsa.
Condição: Ação:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.Publicação 1756-RM003F-PT-P - Maio 2002
5-26 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Valor Absoluto (ABS) A instrução ABS retira o valor absoluto de Source e coloca o resultado 
em Destination.
Operandos:
Lógica Ladder 
Texto Estruturado
Use ABS como uma função. Esta expressão calcula o valor absoluto 
de source e armazena o resultado em dest.
Consulte ApêndiceC para informações sobre a sintaxe de expressões 
no texto estruturado.
Bloco de Funções
Estrutura FBD_MATH_ADVANCED
Descrição: A instrução ABS retira o valor absoluto de Source e coloca o resultado 
em Destination.
Operando: Tipo: Formato: Descrição:
Source SINT
INT
DINT
REAL
imediato
tag
valor do qual se tira o valor absoluto
Um tag SINT ou INT é convertido para um valor DINT pela extensão de 
sinal.
Destination SINT
INT
DINT
REAL
tag tag para armazenar o resultado
Operando: Tipo: Formato: Descrição:
tag ABS FBD_MATH_ADVANCED estrutura estrutura ABS
dest := ABS(source);
Parâmetro de 
Entrada:
Tipo de Dados: Descrição:
EnableIn BOOL Habilita entrada. Se desenergizado, a instrução não executa e as saídas não são atualizadas.
Valor inicial é energizado
Source REAL Valor do qual se tira o valor absoluto.
Válido = qualquer flutuante
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest REAL Resultado da instrução matemática. Os flags de status aritmético são energizados para esta 
saída.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-27
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha: nenhuma
Execução:
Lógica Ladder
Bloco de Funções
Exemplo: Coloque o valor absoluto de value_1 em value_1_absolute. Nesse 
exemplo, o valor absoluto de quatro negativo é quatro positivo.
Lógica Ladder
Texto Estruturado
value_1_absolute := ABS(value_1);
Condição: Ação:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira Destination = | Source |
A saída da condição da linha é definida como verdadeira.
postscan A saída da condição da linha é definida como falsa.
Condição: Ação:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
5-28 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS)
Bloco de Funções
Publicação 1756-RM003F-PT-P - Maio 2002
Capítulo 6
Instruções de Movimentação/Lógica
(MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, 
BOR, BXOR, BNOT)
Introdução É possível combinar tipos de dados, mas perda de precisão e erros de 
arredondamentos podem ocorrer, bem como demora na execução da 
instrução. Verifique o bit S:V para observar se o resultado foi 
truncado.
Para instruções de lógica ladder, os tipos de dados em negrito 
indicam tipos de dados otimizados. Uma instrução executa mais 
rapidamente e requer menos memória se todos os operandos da 
instrução usam o mesmo tipo de dado otimizado, geralmente DINT 
ou REAL.
As instruções de movimentação modificam e movimentam os bits.
Se você quiser: Use esta instrução: Disponível nessas linguagens: Consulte 
página:
copiar um valor MOV lógica ladder
texto estruturado(1)
6-3
copiar uma parte específica de um inteiro MVM lógica ladder 6-5
copiar uma parte específica de um inteiro no bloco de 
funções
MVMT texto estruturado
bloco de funções
6-8
mover bits dentro de um inteiro ou entre inteiros BTD lógica ladder 6-11
movimentar bits dentro de um inteiro ou entre inteiros 
no bloco de funções
BTDT texto estruturado
bloco de funções
6-14
zerar um valor CLR texto estruturado(1)
lógica ladder
6-17
reorganizar os bytes de um tag INT, DINT ou REAL SWPB lógica ladder
texto estruturado
6-18
(1) Não há instrução de texto estruturado equivalente. Use outra programação de texto estruturado para alcançar o mesmo resultado. Veja a descrição para a instrução.
1 Publicação 1756-RM003F-PT-P - Maio 2002
6-2 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
As instruções de lógica executam operações em bits.
Se você quiser: Use esta instrução: Disponível nessas linguagens: Consulte 
página:
operação AND (E) AND
&(1)
lógica ladder
texto estruturado(2)
bloco de funções
6-21
operação OR (OU) OR lógica ladder
texto estruturado(2)
bloco de funções
6-24
operação XOR XOR lógica ladder
texto estruturado(2)
bloco de funções
6-27
operação NOT NOT lógica ladder
texto estruturado(2)
bloco de funções
6-30
AND logicamente com oito entradas booleanas. BAND texto estruturado(2)
bloco de funções
6-33
OR logicamente com oito entradas booleanas. BOR texto estruturado(2)
bloco de funções
6-35
executar uma XOR em duas entradas 
booleanas.
BXOR texto estruturado(2)
bloco de funções
6-38
complementar uma entrada booleana. BNOT texto estruturado(2)
bloco de funções
6-40
(1) Texto estruturado somente.
(2) No texto estruturado, as operações AND, OR, XOR e NOT podem ser de bitwise ou de lógica.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-3
Movimentação (MOV) A instrução MOV copia Source em Destination. Source permanece 
inalterado.
Operandos:
Lógica Ladder
Texto Estruturado
Use um atributo “:=” com uma expressão. Este atributo movimenta o 
valor em source para dest.
Consulte Apêndice C para informações sobre a sintaxe de expressões 
e atributos no texto estruturado.
Descrição: A instrução MOV copia Source em Destination. Source permanece 
inalterado.
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha: nenhuma
Operando: Tipo: Formato: Descrição:
Source SINT
INT
DINT
REAL
imediato
tag
valor a ser movido (copiar)
Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal.
Destination SINT
INT
DINT
REAL
tag tag para armazenar o resultado
dest := source;
Publicação 1756-RM003F-PT-P - Maio 2002
6-4 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Execução:
Exemplo: Movimenta os dados em value_1 para value_2.
Lógica Ladder
Texto Estruturado
value_2 := value_1
Condição: Ação da Lógica Ladder:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira A instrução copia Source em Destination.
A saída da condição da linha é definida como verdadeira.
postscan A saída da condição da linha é definida como falsa.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-5
Movimento com Máscara 
(MVM)
A instrução MVM copia Source em Destination e permite que parte 
dos dados sejam mascarados.
Essa instrução está disponível no texto estruturado e bloco de funções 
como MVMT, consulte a página 6-8.
Operandos:
Lógica Ladder
Texto Estruturado
Esta instrução está disponível no texto estruturado como MVMT. Ou 
você combina a lógica bitwise em uma expressão e atribui o resultado 
ao destino. Esta expressão realiza um movimento com máscara em 
Source.
Consulte Apêndice C para informações sobre a sintaxe de expressões 
e atributos no texto estruturado.
Descrição: A instrução MVM usa Mask para passar ou bloquear os bits de dados 
Source. Um “1“ na máscara significa que o bit de dados passou. Um 
“0“ namáscara significa que o bit de dados foi bloqueado.
Se houver uma mistura dos tipos de dados de inteiros, a instrução 
preenche os bits mais significativos dos tipos de dados de inteiros 
menores com 0, de forma que fiquem com o mesmo tamanho dos 
tipos de dados maiores.
Operando: Tipo: Formato: Descrição:
Source SINT
INT
DINT
imediato
tag
valor a ser movido
Um tag SINT ou INT é convertido para um valor DINT por preenchimento 
com zero.
Mask SINT
INT
DINT
imediato
tag
quais bits devem ser bloqueados ou podem passar
Um tag SINT ou INT é convertido para um valor DINT por preenchimento 
com zero.
Destination SINT
INT
DINT
tag tag para armazenar o resultado
dest := (Dest AND NOT
(Mask)
OR (Source AND Mask);
Publicação 1756-RM003F-PT-P - Maio 2002
6-6 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Inserção de um valor de máscara imediato
Ao inserir uma máscara, o software de programação retorna ao 
padrão dos valores decimais. Caso você queira inserir uma máscara 
usando outro formato, coloque o prefixo correto antes do valor.
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha: nenhuma
Execução:
Prefixo: Descrição:
16# hexadecimal
por exemplo; 16#0F0F
8# octal
por exemplo; 8#16
2# binário
por exemplo; 2#00110011
Condição: Ação da Lógica Ladder:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira A instrução passa o valor de Source por Mask e copia o resultado em Destination. Os 
bits não mascarados em Destination permanecem inalterados.
A saída da condição da linha é definida como verdadeira.
postscan A saída da condição da linha é definida como falsa.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-7
Exemplo: Copia os dados de value_a para value_b, enquanto permite que os 
dados sejam mascarados ( 0 mascara os dados em value_a).
Lógica Ladder
Texto Estruturado
value_b := (value_b AND NOT (mask_2)) OR
(value_a AND mask_2);
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1
As caixas sombreadas mostram os bits alterados em value_b.
Publicação 1756-RM003F-PT-P - Maio 2002
6-8 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Movimentação com 
Máscara Com Arquivo-Alvo 
(MVMT)
A instrução MVMT primeiro copia o Target para Destination. Em 
seguida, a instrução compara Source mascarado com Destination e 
efetua as alterações solicitadas para Destination. Target e Source 
permanecem inalterados.
Esta instrução está disponível em lógica ladder como MVM, consulte a 
página 6-5.
Operandos:
Texto Estruturado
Bloco de Funções
Estrutura FBD_MASKED_MOVE
Variável: Tipo: Formato: Descrição:
MVMT tag FBD_MASKED_MOVE estrutura estrutura MVMT
Operando: Tipo: Formato: Descrição:
tag MVMT FBD_MASKED_MOVE estrutura estrutura MVMT
MVMT(MVMT_tag);
Parâmetro de Entrada: Tipo de Dados: Descrição:
EnableIn BOOL Bloco de Funções
Se desenergizado, a instrução não executa e as saídas não são atualizadas.
Se energizado, a instrução executa.
Valor inicial é energizado
Texto Estruturado
Sem efeito. A instrução executa.
Source DINT Insira o valor para movimentar para Destination baseado no valor de Mask.
Válido = qualquer inteiro
Mask DINT Mask de bits para movimentar de Source para Dest. Todos os bits energizados para um 
fazer que os bits correspondentes se movimentem de Source para Dest. Todos os bits 
energizados como zero fazem com que os bits correspondentes se movimentem de 
Source para Dest.
Válido = qualquer inteiro
Target DINT Insira valor para movimentar para Dest antes de mover os bits Source através de Mask.
Válido = qualquer inteiro
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest DINT Resultado da instrução de movimentação mascarada. Os flags de status aritmético são 
energizados para esta saída.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-9
Descrição: Quando habilitada, a instrução MVMT usa Mask para passar ou 
bloquear os bits de dados Source. Um “1“ na máscara significa que o 
bit de dados passou. Um “0“ na máscara significa que o bit de dados 
foi bloqueado.
Se houver uma combinação dos tipos de dados de inteiros, a instrução 
preencherá os bits mais significativos dos tipos de dados de inteiros 
menores com 0s, de forma que fiquem com o mesmo tamanho dos 
tipos de dados maiores.
Inserção de um valor de máscara imediato usando uma Referência de 
Entrada
Ao inserir uma máscara, o software de programação retorna os valores 
decimais. Caso você queira inserir uma máscara usando outro 
formato, coloque o prefixo correto antes do valor.
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha: nenhuma
Execução:
Prefixo: Descrição:
16# hexadecimal
por exemplo; 16#0F0F
8# octal
por exemplo; 8#16
2# binário
por exemplo; 2#00110011
Condição: Ação do Bloco de Funções: Ação do Texto Estruturado:
prescan Nenhuma ação tomada. Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada. Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada. Nenhuma ação tomada.
EnableIn está desenergizado EnableOut é desenergizado, a instrução não faz nada e as 
saídas não são atualizadas.
na
EnableIn está energizado A instrução executa.
EnableOut está energizado.
EnableIn está sempre energizado
A instrução executa.
postscan Nenhuma ação tomada. Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
6-10 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Exemplo: 1. Copia Target em Dest.
2. Mascara Source e compara a Dest. Não são feitas alterações 
necessárias em Dest. O Source e o Target se mantêm 
inalterados. Um 0 na máscara impede que a máscara compare 
aquele bit (mostrado por x no exemplo).
Texto Estruturado
MVMT_01.Source := value_1;
MVMT_01.Mask := mask1;
MVMT_01.Target := target;
MVMT(MVMT_01);
value_masked := MVMT_01.Dest;
Bloco de Funções
Target 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Dest 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Source 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
Mask1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
Dest 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1
As caixas sombreadas mostram os bits que foram alterados.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-11
Distribuição de Bits (BTD) A instrução BTD copia os bits especificados de Source, muda os bits 
para a posição adequada e escreve os bits em Destination.
Essa instrução está disponível no texto estruturado e bloco de funções 
como BTDTI, consulte a página 6-14.
Operandos:
Lógica Ladder
Descrição: Quando habilitada, a instrução BTD copia um grupo de bits de Source 
para Destination. O grupo de bits é identificado pelo bit Source 
(número de bit menos significativo do grupo) e Length (número de 
bits a serem copiados). O bit Destination identifica o número de bit 
menos significativo para iniciar em Destination. Source permanece 
inalterado.
Se o comprimento do campo do bit ultrapassar Destination, a 
instrução não salvará os bits extras. Qualquer bit extra não dá 
seqüência à próximapalavra.
Se houver uma combinação dos tipos de dados de inteiros, a instrução 
preencherá os bits mais significativos dos tipos de dados de inteiros 
menores com 0s, de forma que fiquem com o mesmo tamanho dos 
tipos de dados maiores.
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha: nenhuma
Operando: Tipo: Formato: Descrição:
Source SINT
INT
DINT
imediato
tag
tag que contém os bits a serem movimentados
Um tag SINT ou INT é convertido para um valor DINT por preenchimento 
com zero.
Source bit DINT imediato
(0-31 DINT)
(0-15 INT) 
(0-7 SINT)
número do bit (número do bit menos significativo) 
a partir do qual a movimentação foi iniciada
deve estar dentro da faixa válida de tipos de 
dados Source
Destination SINT
INT
DINT
tag tag para onde os bits serão movidos
Detination 
bit
DINT imediato
(0-31 DINT)
(0-15 INT)
(0-7 SINT)
o número do bit (número de bit menos 
significativo) em que se inicia a cópia de bits 
Source
deve estar dentro da faixa válida de tipos de 
dados Destination
Length DINT imediato 
(1-32)
número de bits a ser movido
Publicação 1756-RM003F-PT-P - Maio 2002
6-12 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Execução:
Exemplo 1: Quando habilitada, a instrução BTD movimenta os bits dentro de 
value_1.
Condição: Ação da Lógica Ladder:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira A instrução copia e muda os bits de Source para Destination.
A saída da condição da linha é definida como verdadeira.
postscan A saída da condição da linha é definida como falsa.
value_1 antes da instrução BTD 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
value_1 depois da instrução 
BTD
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
As caixas sombreadas mostram os bits alterados em value_1.
Bit SourceBit Destination
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-13
Exemplo 2: Quando habilitada, a instrução BTD move 10 bits de value_1 para 
value_2.
value_1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
value_2 antes da instrução BTD 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
value_2 depois da instrução BTD 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
As caixas sombreadas mostram os bits que foram alterados em value_2.
source bit
destination bit
Publicação 1756-RM003F-PT-P - Maio 2002
6-14 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Distribuição de Bits com 
Arquivo-alvo (BTDT)
A instrução BTDT primeiro copia Target para Destination. Em seguida, 
copia os bits específicos de Source, muda os bits para a posição 
apropriada e os escreve os bits em Destination. Target e Source se 
mantêm inalterados.
Esta instrução está disponível em lógica ladder como BTD, consulte a 
página 6-11.
Operandos:
Texto Estruturado
Bloco de Funções
Estrutura FBD_BIT_FIELD_DISTRIBUTE
Variável: Tipo: Formato: Descrição:
BTDT tag FBD_BIT_FIELD_DISTRIBUTE estrutura estrutura BTDT
Operando: Tipo: Formato: Descrição:
tag BTDT FBD_BIT_FIELD_DISTRIBUTE estrutura estrutura BTDT
BTDT(BTDT_tag);
Parâmetro de Entrada: Tipo de Dados: Descrição:
EnableIn BOOL Bloco de Funções:
Se desenergizada, a instrução não executa e as saídas não são atualizadas.
Se energizada, a instrução executa.
Valor inicial é energizado
Texto Estruturado:
Sem efeito. A instrução executa.
Source DINT Insira o valor que contém os bits a serem movidos para Destination.
Válido = qualquer inteiro
SourceBit DINT A posição do bit em Source (menor número de bit a partir do qual s inicia a 
movimentação).
Válido = 0-31
Length DINT Número de bits a movimentar
Válido = 1-32
DestBit DINT A posição do bit em Dest (menor número para iniciar a cópia dos bits).
Válido = 0-31
Target DINT Insira o valor para movimentar para Dest antes de movimentar bits de Source.
Válido = qualquer inteiro
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest DINT Resultado da operação de movimentação do bit. Os flags de status aritmético são 
energizados para esta saída.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-15
Descrição: Quando habilitada, a instrução BTD copia um grupo de bits de Source 
para Destination. O grupo de bits é identificado pelo bit Source 
(número de bit menos significativo do grupo) e Length (número de 
bits a serem copiados). O bit Destination identifica o número de bit 
menos significativo para iniciar em Destination. Source permanece 
inalterado.
Se o comprimento do campo do bit ultrapassar Destination, a 
instrução não salvará os bits extras. Qualquer bit extra não dá 
seqüência à próxima palavra.
Flags de Status Aritmético: Os flags de status aritmético são afetados
Condições de Falha: nenhuma
Execução:
Condição: Ação do Bloco de Funções: Ação do Texto Estruturado:
prescan Nenhuma ação tomada. Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada. Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada. Nenhuma ação tomada.
EnableIn está desenergizado EnableOut é desenergizado, a instrução não faz nada e 
as saídas não são atualizadas.
na
EnableIn está energizado A instrução executa.
EnableOut está energizado.
EnableIn está sempre energizado
A instrução executa.
postscan Nenhuma ação tomada. Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
6-16 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Exemplo: 1. O controlador copia Target para Dest.
2. SourceBit e Length especificam quais bits em Source devem ser 
copiados em Dest, começando por DestBit. Source e Target se 
mantêm inalterados.
Texto Estruturado
BTDT_01.Source := source
BTDT_01.SourceBit := source_bit;
BTDT_01.Length := length;
BTDT_01.DestBit := dest_bit;
BTDT_01.Target := target
BTDT(BTDT_01);
distributed_value := BTDT_01.Dest;
Bloco de Funções
Target 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
Dest 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
Source 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
Dest 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
As caixas sombreadas mostram os bits que foram alterados.
SourceBitDestBit
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-17
Zeramento (CLR) A instrução CLR zera todos os bits de Destination.
Operandos:
Lógica Ladder
Texto Estruturado
O texto estruturado não possui uma instrução CLR. Entretanto, atribui 
0 ao tag que você quer desenergizar. Esta declaração de atributo 
desenergiza dest.
Consulte Apêndice C para informações sobre a sintaxe declarações de 
atributos no texto estruturado.
Descrição: A instrução CLR zera todos os bits de Destination.
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha: nenhuma
Execução:
Exemplo: Desenergiza todos os bits de value para 0.
Lógica Ladder
Texto Estruturado
value := 0;
Operando: Tipo: Formato: Descrição:
Destination SINT
INT
DINT
REAL
tag tag a ser zerado
dest := 0;
Condição: Ação da Lógica Ladder:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira A instrução zera Destination.
A saída da condição da linha é definida como verdadeira.postscan A saída da condição da linha é definida como falsa.
Publicação 1756-RM003F-PT-P - Maio 2002
6-18 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Swap (inversão) de Byte 
(SWPB)
A instrução SWPB reorganiza os bytes de um valor.
Operandos:
Lógica Ladder
Texto Estruturado
Os operandos são os mesmos que aqueles para a instrução de lógica 
ladder SWPB. Se você selecionar o modo HIGH/LOW, insira-o como 
HIGHLOW ou HIGH_LOW (sem slash).
Descrição: A instrução SWPB redistribui a seqüência de bytes do Source. Ele 
coloca o resultado em Destination.
Quando você lê ou escreve os caracteres ASCII, geralmente, você não 
precisa trocar os caracteres. As instruções de leitura e escrita ASCII 
(ARD, ARL, AWA, AWT) troca os caracteres automaticamente, 
conforme mostrado abaixo.
Operando: Tipo: Formato: Insira:
Source INT
DINT
REAL
tag tag que contém os bytes que você quer reorganizar
Order Mode Se o Source for 
um:
E você quer alterar os bytes para este modelo 
(cada letra representa um byte diferente):
Então selecione:
INT n/a alguma das opções
DINT
REAL
ABCD ⇒ DCBA REVERSE (ou insira 0)
ABCD ⇒ CDAB WORD (ou insira 1)
ABCD ⇒ BADC HIGH/LOW (ou insira 2)
Destination INT
DINT
REAL
tag tag para armazenar os bytes em uma nova ordem
Se Source for um: Destination deve ser um:
INT INT
DINT
DINT DINT
REAL REAL
SWPB(Source,OrderMode,Dest);
42969
42968
B A Nome do Tag Valor Estilo Tipo
bar_code[0] AB ASCII INT
A B
leitor do código de barras
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-19
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução:
Exemplo 1: As três instruções SWPB reorganizam os bytes de DINT_1 de acordo 
com um modo de ordem diferente. O estilo do display é ASCII e cada 
caractere representa um byte. Cada instrução coloca os bytes, em uma 
nova ordem, em um Destination diferente.
Lógica Ladder
Texto Estruturado
SWPB(DINT_1,REVERSE,DINT_1_reverse);
SWPB(DINT_1,WORD,DINT_1_swap_word);
SWPB(DINT_1,HIGHLOW,DINT_1_swap_high_low);
Exemplo 2: O exemplo a seguir reverte os bytes em cada elemento de um array. 
Para um projeto RSLogix 5000 que contém este exemplo, abra a pasta 
RSLogix 5000\Projects\Samples, arquivo Swap_Bytes_in_Array.ACD.
1. Inicie os tags. A instrução SIZE encontra o número de elementos 
em array e armazena aquele valor em array_length. Uma 
instrução subseqüente usa esse valor para determinar quando a 
rotina agiu sobre todos os elementos no array.
2. Reverta os bytes em um elemento do array.
Condição: Ação da Lógica Ladder: Ação do Texto Estruturado:
prescan A saída da condição da linha é definida como falsa. Nenhuma ação tomada.
entrada da condição da linha é 
falsa
A saída da condição da linha é definida como falsa. na
entrada da condição da linha é 
verdadeira
A saída da condição da linha é definida como 
verdadeira.
na
EnableIn está energizado na EnableIn está sempre energizado
A instrução executa.
Execução da instrução A instrução redistribui os bytes especificados. A instrução redistribui os bytes especificados.
postscan A saída da condição da linha é definida como falsa. Nenhuma ação tomada.
Publicação 1756-RM003F-PT-P - Maio 2002
6-20 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
• A instrução SWPB reverte os bytes do número do elemento que 
é indicado pelo valor de index. Por exemplo, quando index 
igual a 0, a instrução SWPB age em array[0].
• A instrução ADD incrementa index. A próxima vez que a 
instrução executar, a instrução SWPB age sobre o próximo 
elemento em array.
3. Determine quando a instrução SWPB agiu sobre todos os 
elementos no array.
• Se index for menor que o número de elementos no array 
(array_length), continue com o próximo elemento no array.
• Se index for igual array_length, então SWPB agiu sobre todos 
os elementos no array.
Lógica Ladder
Texto Estruturado
index := 0;
SIZE (array[0],0,array_length);
REPEAT
SWPB(array[index],REVERSE,array_bytes_reverse[index]);
index := index + 1;
UNTIL(index >= array_length)END_REPEAT;
Inicie os tags.
Reverta os bytes.
Determine se a instrução SWPB agiu sobre todos os elementos no array.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-21
AND (E) A instrução AND realiza uma operação AND usando os bits em Source 
A e Source B e coloca o resultado em Destination.
Para realizar um AND de lógica, consulte a página 6-33.
Operandos:
Lógica Ladder
Texto Estruturado
Use AND ou o sinal “&” como um operador dentro de uma 
expressão. Esta expressão avalia sourceA E sourceB.
Consulte Apêndice C para informações sobre a sintaxe de expressões 
no texto estruturado.
Bloco de Funções
Operando: Tipo: Formato: Descrição:
Source A SINT
INT
DINT
imediato
tag
valor para AND com Source B
Um tag SINT ou INT é convertido para um valor DINT por preenchimento 
com zero.
Source B SINT
INT
DINT
imediato
tag
valor para AND com Source A
Um tag SINT ou INT é convertido para um valor DINT por preenchimento 
com zero.
Destination SINT
INT
DINT
tag armazena o resultado
Operando: Tipo: Formato: Descrição:
tag AND FBD_LOGICAL estrutura estrutura AND
dest := sourceA AND
sourceB
Publicação 1756-RM003F-PT-P - Maio 2002
6-22 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Estrutura FBD_LOGICAL
Descrição: Quando habilitada, a instrução avalia a operação AND
Se houver combinação dos tipos de dados de inteiros, a instrução 
preencherá os bits mais significativos dos tipos de dados de inteiros 
menores com 0 de forma que fiquem com o mesmo tamanho dos 
tipos de dados maiores.
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha: nenhuma
Execução:
Lógica Ladder
Parâmetro de 
Entrada:
Tipo de Dados: Descrição:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas.
Valor inicial é energizado
SourceA DINT Valor para AND com SourceB.
Válido = qualquer inteiro
SourceB DINT Valor para AND com SourceA.
Válido = qualquer inteiro
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest DINT Resultado da instrução. Os flags de status aritmético são energizados para esta saída.
Se o bit em Source A for: E o bit em Source B for: O bit em Destination será:
0 0 0
0 1 0
1 0 0
1 1 1
Condição: Ação:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira A instrução realiza uma operação AND.
A saída da condição da linha é definida como verdadeira.
postscan A saída da condição da linha é definida como falsa.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-23
Bloco de Funções
Exemplo: Quando habilitada, a instrução AND realiza uma operação AND em 
SourceA e SourceB e coloca o resultado em Dest.
Lógica Ladder
Texto Estruturado
value_result_and := value_1 AND value_2;
Bloco de Funções
Condição: Ação:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
SourceA 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1
SourceB 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
Dest 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 00 0 0 0 0 0 0
Publicação 1756-RM003F-PT-P - Maio 2002
6-24 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
OR (OU) A instrução OR realiza uma operação OR usando os bits em Source A 
e Source B e coloca o resultado em Destination.
Para realizar um OR lógico, consulte a página 6-35.
Operandos:
Lógica Ladder
Texto Estruturado
Use OR como um operador dentro de uma expressão. Esta expressão 
avalia sourceA OU sourceB.
Consulte Apêndice C para informações sobre a sintaxe de expressões 
no texto estruturado.
Bloco de Funções
Operando: Tipo: Formato: Descrição:
Source A SINT
INT
DINT
imediato
tag
valor para OR com Source B
Um tag SINT ou INT é convertido para um valor DINT por preenchimento 
com zero.
Source B SINT
INT
DINT
imediato
tag
valor para OR com Source A
Um tag SINT ou INT é convertido para um valor DINT por preenchimento 
com zero.
Destination SINT
INT
DINT
tag armazena o resultado
Operando: Tipo: Formato: Descrição:
tag OR FBD_LOGICAL estrutura estrutura OR
dest := sourceA OR sourceB
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-25
Estrutura FBD_LOGICAL
Descrição: Quando habilitada, a instrução avalia a operação OR
Se houver uma mistura dos tipos de dados de inteiros, a instrução 
preencherá os bits mais significativos dos tipos de dados de inteiros 
menores com 0, de forma que fiquem com o mesmo tamanho dos 
tipos de dados maiores.
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha: nenhuma
Execução:
Lógica Ladder
Parâmetro de 
Entrada:
Tipo de Dados: Descrição:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas.
Valor inicial é energizado
SourceA DINT Valor para OR com SourceB.
Válido = qualquer inteiro
SourceB DINT Valor para OR com SourceA.
Válido = qualquer inteiro
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest DINT Resultado da instrução. Os flags de status aritmético são energizados para esta saída.
Se o bit em Source A for: E o bit em Source B for: O bit em Destination será:
0 0 0
0 1 1
1 0 1
1 1 1
Condição: Ação:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira A instrução realiza uma operação OR.
A saída da condição da linha é definida como verdadeira.
postscan A saída da condição da linha é definida como falsa.
Publicação 1756-RM003F-PT-P - Maio 2002
6-26 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Bloco de Funções
Exemplo: Quando habilitada, a instrução OR realiza uma operação OR em 
SourceA e SourceB e coloca o resultado em Dest.
Lógica Ladder
Texto Estruturado
value_result_or := value_1 OR value_2;
Bloco de Funções
Condição: Ação:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
SourceA 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1
SourceB 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
Dest 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-27
Ou Exclusivo (XOR) A instrução XOR realiza uma operação XOR usando os bits em Source 
A e Source B e coloca o resultado em Destination.
Para realizar um XOR de lógica, consulte a página 6-38.
Operandos:
Lógica Ladder
Texto Estruturado
Use XOR como um operador dentro de uma expressão. Esta 
expressão avalia sourceA XOR sourceB.
Consulte Apêndice C para informações sobre a sintaxe de expressões 
no texto estruturado.
Bloco de Funções
Operando: Tipo: Formato: Descrição:
Source A SINT
INT
DINT
imediato
tag
valor para XOR com Source B
Um tag SINT ou INT é convertido para um valor DINT por preenchimento 
com zero.
Source B SINT
INT
DINT
imediato
tag
valor para XOR com Source A
Um tag SINT ou INT é convertido para um valor DINT por preenchimento 
com zero.
Destination SINT
INT
DINT
tag armazena o resultado
Operando: Tipo: Formato: Descrição:
tag XOR FBD_LOGICAL estrutura estrutura XOR
dest := sourceA XOR
Publicação 1756-RM003F-PT-P - Maio 2002
6-28 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Estrutura FBD_LOGICAL
Descrição: Quando habilitada, a instrução avalia a operação XOR:
Se houver uma combinação dos tipos de dados de inteiros, a instrução 
preencherá os bits mais significativos dos tipos de dados de inteiros 
menores com 0, de forma que fiquem com o mesmo tamanho dos 
tipos de dados maiores.
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha: nenhuma
Execução:
Lógica Ladder
Parâmetro de 
Entrada:
Tipo de Dados: Descrição:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas.
Valor inicial é energizado
SourceA DINT Valor para XOR com SourceB.
Válido = qualquer inteiro
SourceB DINT Valor para XOR com SourceA.
Válido = qualquer inteiro
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest DINT Resultado da instrução. Os flags de status aritmético são energizados para esta saída.
Se o bit em Source A for: E o bit em Source B for: O bit em Destination será:
0 0 0
0 1 1
1 0 1
1 1 0
Condição: Ação:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira A instrução realiza uma operação OR.
A saída da condição da linha é definida como verdadeira.
postscan A saída da condição da linha é definida como falsa.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-29
Bloco de Funções
Exemplo: Quando habilitada, a instrução XOR realiza uma operação XOR em 
SourceA e SourceB e coloca o resultado no tag Destination 
Lógica Ladder
Texto Estruturado
value_result_xor := value_1 XOR value_2;
Bloco de Funções
Condição: Ação:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
value_1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1
value_2 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
value_result_xor 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1
Publicação 1756-RM003F-PT-P - Maio 2002
6-30 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Complementação (NOT) A instrução NOT realiza uma operação NOT usando os bits em Source 
e coloca o resultado em Destination.
Para realizar um NOT de lógica, consulte a página 6-40.
Operandos:
Lógica Ladder
Texto Estruturado
Use NOT como um operador dentro de uma expressão. Esta 
expressão avalia NOT source.
Consulte Apêndice C para informações sobre a sintaxe de expressões 
no texto estruturado.
Bloco de Funções
Estrutura FBD_LOGICAL
Operando: Tipo: Formato: Descrição:
Source SINT
INT
DINT
imediato
tag
valor para NOT
Um tag SINT ou INT é convertido paraum valor DINT por preenchimento 
com zero.
Destination SINT
INT
DINT
tag armazena o resultado
Operando: Tipo: Formato: Descrição:
tag NOT FBD_LOGICAL estrutura estrutura NOT
dest := NOT source
Parâmetro de 
Entrada:
Tipo de Dados: Descrição:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas.
Valor inicial é energizado
Source DINT Valor para NOT.
Válido = qualquer inteiro
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL A instrução produziu um resultado válido.
Dest DINT Resultado da instrução. Os flags de status aritmético são energizados para esta saída.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-31
Descrição: Quando habilitada, a instrução avalia a operação NOT
Se houver uma combinação dos tipos de dados de inteiros, a instrução 
preencherá os bits mais significativos dos tipos de dados de inteiros 
menores com 0, de forma que fiquem com o mesmo tamanho dos 
tipos de dados maiores.
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha: nenhuma
Execução:
Lógica Ladder
Bloco de Funções
Exemplo: Quando habilitada, a instrução NOT realiza uma operação NOT sobre 
Source e coloca o resultado em Dest.
Se o bit em Source for: O bit em Destination será:
0 1
1 0
Condição: Ação:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira A instrução realiza uma operação NOT.
A saída da condição da linha é definida como verdadeira.
postscan A saída da condição da linha é definida como falsa.
Condição: Ação:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut é desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
value_1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1
value_result_not 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0
Publicação 1756-RM003F-PT-P - Maio 2002
6-32 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Lógica Ladder
Texto Estruturado
value_result_not := NOT value_1;
Bloco de Funções
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-33
E Booleano (BAND) A instrução BAND utiliza de forma lógica até 8 entradas booleanas.
Para realizar um bitwise AND, consulte a página 6-21.
Operandos:
Texto Estruturado
Use AND ou o sinal “&” como um operador dentro de uma 
expressão. Os operandos devem ser valores BOOL ou expressões que 
avaliem valores BOOL. Esta expressão avalia se operandA e operandB 
estão energizados (verdadeiro).
Consulte Apêndice C para informações sobre a sintaxe de expressões 
no texto estruturado.
Bloco de Funções
Estrutura FBD_BOOLEAN_AND
Operando: Tipo: Formato: Descrição:
tag BAND FBD_BOOLEAN_AND estrutura estrutura BAND
IF operandA AND operandB
THEN
<statement>;
Parâmetro de 
Entrada:
Tipo de Dados: Descrição:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas.
Valor inicial é energizado
In1 BOOL Primeira entrada booleana.
Valor inicial é energizado
In2 BOOL Segunda entrada booleana.
Valor inicial é energizado
In3 BOOL Terceira entrada booleana.
Valor inicial é energizado
In4 BOOL Quarta entrada booleana.
Valor inicial é energizado
In5 BOOL Quinta entrada booleana.
Valor inicial é energizado
In6 BOOL Sexta entrada booleana.
Valor inicial é energizado
In7 BOOL Sétima entrada booleana.
Valor inicial é energizado
In8 BOOL Oitava entrada booleana.
Valor inicial é energizado
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL Habilita saída.
Out BOOL A saída da instrução.
Publicação 1756-RM003F-PT-P - Maio 2002
6-34 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Descrição: A instrução BAND possui oito entradas booleanas ANDs. Se uma 
entrada não é usada, ela padroniza para energizada (1).
Out = In1 AND In2 AND In3 AND In4 AND In5 AND In6 AND In7 
AND In8
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução:
Exemplo 1: Este exemplo ANDs bool_in1 e bool_in2 e coloca o resultado em 
value_result_and.
Texto Estruturado
value_result_not := bool_in1 AND bool_in2;
Bloco de Funções
Exemplo 2: Se bool_in1 e bool_in2 estão energizados (verdadeiro), light1 é 
energizado (aceso). Ou, light1 é desenergizado (apagado).
Texto Estruturado
IF bool_in1 AND bool_in2 THEN
light1 := 1;
ELSE
light1 := 0;
END_IF;
Condição: Ação do Bloco de Funções:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
Se bool_in1 for: Se bool_in2 for: Então value_result_and é:
0 0 0
0 1 0
1 0 0
1 1 1
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-35
 (OU) Booleano (BOR) A instrução BOR possui oito entradas lógicas ORs booleanas 
possíveis.
Para realizar uma operação OR, consulte a página 6-24.
Operandos:
Texto Estruturado
Use OR como um operador dentro de uma expressão. Os operandos 
devem ser valores BOOL ou expressões que avaliem em valores 
BOOL. Esta expressão avalia se operandA ou operandB ou ambos 
estão energizados (verdadeiro).
Consulte Apêndice C para informações sobre a sintaxe de expressões 
no texto estruturado.
Bloco de Funções
Estrutura FBD_BOOLEAN_OR
Operando: Tipo: Formato: Descrição:
tag BOR FBD_BOOLEAN_OR estrutura estrutura BOR
IF operandA OR operandB
THEN
<statement>;
END_IF;
Parâmetro de 
Entrada:
Tipo de Dados: Descrição:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas.
Valor inicial é energizado
In1 BOOL Primeira entrada booleana.
Valor inicial é desenergizado.
In2 BOOL Segunda entrada booleana.
Valor inicial é desenergizado.
In3 BOOL Terceira entrada booleana.
Valor inicial é desenergizado.
In4 BOOL Quarta entrada booleana.
Valor inicial é desenergizado.
In5 BOOL Quinta entrada booleana.
Valor inicial é desenergizado.
In6 BOOL Sexta entrada booleana.
Valor inicial é desenergizado.
In7 BOOL Sétima entrada booleana.
Valor inicial é desenergizado.
In8 BOOL Oitava entrada booleana.
Valor inicial é desenergizado.
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL Habilita saída.
Out BOOL A saída da instrução.
Publicação 1756-RM003F-PT-P - Maio 2002
6-36 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Descrição: A instrução BOR l ORs possui oito entradas booleanas. Se uma 
entrada não é usada, ela retorna para desenergizada (0).
Out = In1 OR In2 OR In3 OR In4 OR In5 OR In6 OR In7 OR In8
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Execução
Exemplo 1: Este exemplo ORs bool_in1 e bool_in2 e coloca o resultado em 
value_result_or.
Texto Estruturado
value_result_not := bool_in1 OR bool_in2;
Bloco de Funções
Condição: Ação do Bloco de Funções:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
Se bool_in2 for: Sebool_in2 for: Então value_result_or é:
0 0 0
0 1 1
1 0 1
1 1 1
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-37
Exemplo 2: Nesse exemplo, light1 é energizado (aceso) se:
• somente bool_in1 estiver energizado (verdadeiro).
• somente bool_in2 estiver energizado (verdadeiro).
• bool_in1 e bool_in2 estiverem energizados (verdadeiro).
Ou, light1 é desenergizado (apagado).
Texto Estruturado
IF bool_in1 OR bool_in2 THEN
light1 := 1;
ELSE
light1 := 0;
END_IF;
Publicação 1756-RM003F-PT-P - Maio 2002
6-38 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
(Ou Exclusivo) Booleano 
(BXOR)
A BXOR realiza um OR exclusivo em duas entradas booleanas.
Para realizar uma operação XOR, consulte a página 6-27.
Operandos:
Texto Estruturado
Use XOR como um operador dentro de uma expressão. Os operandos 
devem ser valores BOOL ou expressões que avaliem em valores 
BOOL. Esta expressão avalia se somente operandA ou somente 
operandB está energizado (verdadeiro).
Consulte Apêndice C para informações sobre a sintaxe de expressões 
no texto estruturado.
Bloco de Funções
Estrutura FBD_BOOLEAN_XOR
Descrição: A instrução BXOR realiza um OU exclusivo em duas entradas 
booleanas.
Out = In1 XOR In2
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Operando: Tipo: Formato: Descrição:
BXOR tag FBD_BOOLEAN_XOR estrutura estrutura BXOR
IF operandA XOR operandB
THEN
<statement>;
END_IF;
Parâmetro de 
Entrada:
Tipo de Dados: Descrição:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas.
Valor inicial é energizado
In1 BOOL Primeira entrada booleana.
Valor inicial é desenergizado.
In2 BOOL Segunda entrada booleana.
Valor inicial é desenergizado.
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL Habilita saída.
Out BOOL A saída da instrução.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-39
Execução:
Exemplo 1: Este exemplo executa uma instrução XOR em bool_in1 e bool_in2 e 
coloca o resultado em value_result_xor.
Texto Estruturado
value_result_xor bool_in1 XOR bool_in2;
Bloco de Funções
Exemplo 2: Nesse exemplo, light1 é energizado (aceso) se: 
• somente bool_in2 estiver energizado (verdadeiro).
• somente bool_in1 estiver energizado (verdadeiro).
Ou, light1 é desenergizado (apagado).
Texto Estruturado
IF bool_in1 XOR bool_in2 THEN
light1 := 1;
ELSE
light1 := 0;
END_IF;
Condição: Ação do Bloco de Funções:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
Se bool_in1 for: Se bool_in2 for: Então value_result_xor é:
0 0 0
0 1 1
1 0 1
1 1 0
Publicação 1756-RM003F-PT-P - Maio 2002
6-40 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
NOT Booleano (BNOT) A instrução BNOT complementa uma entrada booleana.
Para executar uma instrução NOT, consulte a página 6-30.
Operandos:
Texto Estruturado
Use OR como um operador dentro de uma expressão. O operando 
deve ser valores BOOL ou expressões que avaliem em valores BOOL. 
Esta expressão avalia se operand está desenergizado (falso).
Consulte Apêndice C para informações sobre a sintaxe de expressões 
no texto estruturado.
Bloco de Funções
Estrutura FBD_BOOLEAN_NOT
Descrição: A instrução BNOT complementa uma entrada booleana.
Out = NOT In
Flags de Status Aritmético: não afetados
WD1 Writer Designed tag 1Condições de Falha:
nenhuma
Operando: Tipo: Formato: Descrição:
tag BNOT FBD_BOOLEAN_NOT estrutura estrutura BNOT
IF NOT operand THEN
<statement>;
END_IF;
Parâmetro de Entrada: Tipo de Dados: Descrição:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são 
atualizadas.
Valor inicial é energizado
In BOOL Entrada para a instrução.
Valor inicial é energizado
Parâmetro de Saída: Tipo de Dados: Descrição:
EnableOut BOOL Habilita saída.
Out BOOL A saída da instrução.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-41
Execução:
Exemplo 1: Este exemplo complementa bool_in1 e coloca o resultado em 
value_result_not.
Texto Estruturado
value_result_not NOT bool_in1;
Bloco de Funções
Exemplo 2: Se bool_in1 é desenergizado, light1 é desenergizado (apagado). Ou, 
light1 é energizado (aceso).
Texto Estruturado
IF NOT bool_in1 THEN
light1 := 0;
ELSE
light1 := 1;
END_IF;
Condição: Ação do Bloco de Funções:
prescan Nenhuma ação tomada.
primeiro scan da instrução Nenhuma ação tomada.
primeira execução da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.
postscan Nenhuma ação tomada.
Se bool_in1 for: Então value_result_not é:
0 1
1 0
Publicação 1756-RM003F-PT-P - Maio 2002
6-42 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT)
Notas:
Publicação 1756-RM003F-PT-P - Maio 2002
Capítulo 7
InstruçõesInstruções de Array 
(Arquivo)/Miscelânea
(FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)
Introdução As instruções de arquivo/miscelânea nos arrays de dados.
É possível combinar tipos de dados, mas a perda de precisão e erros 
de arredondamentos podem ocorrer, bem como demora na execução 
da instrução. Verifique o bit S:V para observar se o resultado foi 
truncado.
Para instruções de lógica ladder, os tipos de dados em negrito 
indicam tipos de dados otimizados. Uma instrução executa mais 
rapidamente e requer menos memória se todos os operandos da 
instrução usam o mesmo tipo de dados otimizados, geralmente DINT 
ou REAL.
Se você quiser: Use esta instrução: Disponível nessas linguagens: Consulte 
página:
realizar operações de função, desvio, lógica e 
aritmética nos valores dos arrays
FAL lógica ladder
texto estruturado(1)
7-6
buscar e comparar valores em arrays FSC lógica ladder 7-17
copiar o conteúdo de um array para outro array COP lógica ladder
texto estruturado
7-25
copiar o conteúdo de um array para outro array 
sem interrupção
CPS lógica ladder
texto estruturado
7-25
preencher um array com dados específicos FLL lógica ladder
texto estruturado(1)
7-31
calcular a média de um array de valores AVE lógica ladder
texto estruturado(1)
7-35
classificar uma dimensão de dados do array em 
ordem crescente
SRT lógica ladder
texto estruturado
7-40
calcular o desvio padrão de um array de valores STD lógica ladder
texto estruturado(1)
7-45
encontrar o tamanho de uma dimensão de um 
array
SIZE lógica ladder
texto estruturado
7-50
(1) Não há instrução de texto estruturado equivalente. Use outra programação de texto estruturado para alcançar o mesmo resultado. Veja a descrição para a instrução.
1 Publicação 1756-RM003F-PT-P - Maio 2002
7-2 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
Seleção do Modo de 
Operação
Para as instruções FAL e FSC, o modo informa o controlador sobre 
como distribuir a operação de array
Modo ALL
No modo All, todos os elementos especificados no array são operados 
antes de prosseguir para a próxima instrução. A operação começa 
quando a entrada da condição da linha da instrução passa de falsa 
para verdadeira. O valor de posição (.POS) na estrutura de controle 
indica o elemento no array que a instrução está usando atualmente. A 
operação pára quando o valor .POS for igual ao valor.LEN.
O diagrama de temporização a seguir mostra a relação entre os bits de 
status e a operação da instrução. Quando a execução da instrução 
estiver completa, o bit .DN será energizado. O bit .DN, o bit .EN e o 
valor .POS são zerados quando a entrada da condição da linha se 
torna falsa. Somente após isto é que outra execução da instrução 
Se você quiser: Selecione este modo:
operar em todos os elementos especificados em um array 
antes de prosseguir para a próxima instrução
All (Todos)
distribuir a operação de array em vários scans
inserir o número de elementos para operar por scan 
(1-2147483647)
Numerical (Numérico)
manipular um elemento do array cada vez que a entrada da 
condição da linha passa de falsa para verdadeira
Incremental (Incremento)
Array de dados um scan
16639
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-3
pode ser disparada por uma transição de falsa para verdadeira da 
entrada da condição da linha.
Modo Numerical
O modo Numerical distribui a operação de array em vários scans. Esse 
modo é útil quando se trabalha com dados críticos não temporizados 
ou um grande volume de dados. É necessário inserir o número de 
elementos para operar para cada scan, o que mantém o tempo de 
scan menor.
A execução é disparada quando a entrada da condição da linha passa 
de falsa para verdadeira. Após o disparo, a instrução é executada cada 
vez que se realiza o scan na mesma para o número de scans 
necessários para completar a operação em todo o array. Após o 
disparo, a entrada da condição da linha pode se alterar repetidamente 
sem interromper a execução da instrução.
um scan
operação completa
zera os bits de status e zera o 
valor .POS
entrada da condição da linha
bit .EN
bit DN
scan da instrução
40010
nenhuma execução ocorre
um scan
16641
segundo scan
próximo scan
Publicação 1756-RM003F-PT-P - Maio 2002
7-4 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
O diagrama de temporização a seguir mostra a relação entre os bits de 
status e a operação da instrução. Quando a execução da instrução 
estiver completa, o bit .DN será energizado.
Se a entrada da condição da linha se tornar verdadeira na conclusão, 
os bits .DN e .ER são energizados até que a entrada da condição da 
linha se torne falsa. Quando a entrada da condição da linha se torna 
falsa, esses bits são zerados e o valor .POS é desenergizado.
Se a entrada da condição da linha for falsa na conclusão, o bit .EN 
será zerado imediatamente. Um scan depois que o bit .EN é 
desenergizado, o bit .DN e o valor .POS são zerados.
Modo Incremental 
O modo Incremental manipula um elemento do array cada vez que a 
entrada da condição da linha da instrução passa de falsa para verdadeira.
IMPORTANTE Evite usar os resultados de uma instrução de arquivo 
quando em modo numérico até que o bit .DN fique 
energizado.
scans múltiplos scans múltiplos
entrada da condição da linha
bit .EN
bit .DN
scan da instrução
zera os bits de status e zera o 
valor .POS
zera os bits de status e 
zera o valor .POS
a linha se torna verdadeira na conclusão a linha se torna falsa na conclusão
40013operação completa operação completa
16643
1a. instrução habilitada
2a. instrução habilitada
3a. instrução habilitada
última instrução habilitada
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-5
O diagrama de temporização a seguir mostra a relação entre os bits de 
status e a operação da instrução. A execução ocorre somente em um 
scan no qual a entrada da condição da linha passa de falsa para 
verdadeira. Cada vez que isso ocorre, apenas um elemento do array é 
manipulado. Se a entrada da condição da linha permanecer 
verdadeira durante mais de um scan, a instrução executa somente 
durante o primeiro scan.
O bit .EN é energizado quando a entrada da condição da linha se 
torna verdadeira. O bit .DN é energizado quando o último elemento 
no array for manipulado. Quando o último elemento for manipulado 
e a entrada da condição da linha se tornar falsa, o bit .EN, o bit .DN e 
o valor .POS são removidos.
A diferença entre o modo Incremental e o modo Numerical a uma 
taxa de um elemento por scan é:
• O modo Numerical com qualquer número de elementos por 
scan requer somente uma transição de falsa para verdadeira da 
entrada da condição da linha para iniciar a execução. A 
instrução continua a executar o número especificado de 
elementos a cada scan até a conclusão, independente do estado 
da entrada da condição da linha.
• O modo Incremental requer que a entrada da condição da linha 
da instrução passe de falsa para verdadeira para manipular um 
elemento no array.
um scan
entrada da condição da linha
bit .EN
bit DN
scan da instrução
operação 
completa
zera os bits de status e zera 
o valor .POS
40014
Publicação 1756-RM003F-PT-P - Maio 2002
7-6 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
Aritmética de Arquivos 
(FAL)
A instrução FAL realiza as operações de cópia, aritmética, lógica e 
função nos dados armazenados em um array.
Operandos:
Lógica Ladder
Texto Estruturado
O texto estruturado não possui uma instrução FAL, mas é possível 
alcançar os mesmos resultados usando uma instrução SIZE e uma 
FOR...DO ou outra construção de malha. 
SIZE(destination,0,length-1);
FOR position = 0 TO length DO
destination[position] := numeric_expression;
END_FOR;
Consulte página C- para informações sobre a sintaxe de construções 
no texto estruturado.
Operando: Tipo: Formato: Descrição:
Control CONTROL tag estrutura de controle para a operação
Length DINT imediato número de elementos no array a 
serem manipulados
Position DINT imediato elemento atual no array
normalmente, o valor inicial é 0
Mode DINT imediato como distribuir a operação
seleccione INC, ALL ou insira um número
Destination SINTA
INT
DINT
REAL
tag tag para armazenar o resultado
Expression SINT
INT
DINT
REAL
imediato
tag
uma expressão composta por tags e/ou valores 
imediatos separados por operadores
Um tag SINT ou INT é convertido para um valor DINT pela extensão de 
sinal.
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-7
Estrutura CONTROL
Descrição: A instrução FAL realiza as mesmas operações nos arrays conforme a 
instrução CPT realiza as operações dos elementos.
Os exemplos que começam na página 7-13 mostram como usar o 
valor .POS para entrar em um array. Se o subscrito na expressão de 
Destination está fora da faixa, a instrução FAL gera uma falha grave 
(tipo 4, código 20).
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha:
Mnemônico: Tipo de Dados: Descrição:
.EN BOOL O bit habilitado indica que a instrução FAL está habilitada.
.DN BOOL O bit executado é energizado quando a instrução operou no último elemento (.POS = .LEN).
.ER BOOL O bit de erro é energizado se a expressão gerar um overflow (S:V é energizado). A instrução pára a 
execução até que o programa zere o bit .ER. O valor .POS contém a posição do elemento que provocou o 
overflow.
.LEN DINT O comprimento especifica o número dos elementos no array no qual a instrução FAL opera.
.POS DINT A posição contém a posição do elemento atual que a instrução está acessando.
Uma falha grave ocorrerá se: Tipo de falha: Código de falha:
subscrito estiver fora da faixa 4 20
.POS < 0 ou .LEN < 0 4 21
Publicação 1756-RM003F-PT-P - Maio 2002
7-8 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
Execução:
Condição: Ação da Lógica Ladder:
prescan A saída da condição da linha é definida como falsa.
examinar bit .DN
bit .DN = 0
bit .DN = 1
entrada da condição da linha é falsasaída da condição da linha é 
definida como falsa
fim
bit .EN é desenergizado.
bit .ER é desenergizado.
bit .DN é desenergizado.
valor .POS é desenergizado
modo INC
não
sim
modo ALL
não
sim
bit .EN é desenergizado.
.POS = .POS + 1
modo 
numérico
bit interno é 
desenergizado
.LEN < 0 ou 
.POS < 0
sim
não
falha grave
.POS = .POS -1
.POS = 0
sim
não
bit .DN é energizado. 
bit .EN é energizado
.POS < .LEN
não
sim
modo .LEN >
sim
não
modo .LEN>
.LEN = 0
sim
não
bit .DN é energizado. 
bit .EN é 
desenergizado.
página 7-12
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-9
Condição: Ação da Lógica Ladder:
entrada da condição da linha é verdadeira
saída da condição da linha é 
definida como verdadeira
fim
examinar bit .DN
bit .DN = 0
bit .DN = 1
.LEN = 0
não
sim
modo INC
não
sim
modo ALL
não
sim
loop_count = 
loop_count - 1
loop_count < 0
não
sim
.POS = .POS + 1
avaliar a expressão
.POS = .POS + 1
examine S:V
não
sim
bit .ER é energizado
.POS = .LEN
não
sim
bit .DN é energizado.
bit .EN é energizado .POS = .POS + 1
examinar bit .ER
bit .ER = 0
bit .ER = 1
bit .DN é energizado.
bit .EN é energizado modo 
INC
modo 
ALL
modo 
numérico
comum
página 7-12
página 7-10 página 7-11
.LEN < 0 ou 
.POS < 0
sim
não
falha grave
Publicação 1756-RM003F-PT-P - Maio 2002
7-10 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
Condição: Ação da Lógica Ladder:
examinar bit .EN
bit .EN = 1
bit .EN = 0
.POS = .POS + 1
.POS ≥ .LEN
sim
não
bit .EN é energizado
loop_count = 1
.POS = .POS -1
examinar
bit interno
bit = 1
bit = 0
bit interno é energizado
modo 
INC
comum
.POS = .POS -1
.POS = 0
sim
não
bit .DN é energizado. 
bit .EN é energizado
saída da condição da linha é 
definida como verdadeira
fim
página 7-9
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-11
Condição: Ação da Lógica Ladder:
examinar bit .EN
bit .EN = 0
bit .EN = 1
.POS = .POS + 1
.POS ≥ .LEN
sim
não
loop_count = .LEN - .POS
.POS = .POS -1
examinar
bit interno
bit = 1
bit = 0
bit .EN é energizado
modo 
ALL
comum
.POS = .POS -1
.POS = 0
sim
não
bit .DN é energizado. 
bit .EN é energizado
saída da condição da linha é 
definida como verdadeira
fim
página 7-9
Publicação 1756-RM003F-PT-P - Maio 2002
7-12 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
postscan A saída da condição da linha é definida como falsa.
Condição: Ação da Lógica Ladder:
examinar bit .EN
bit .EN = 1
bit .EN = 0
.POS = .POS + 1
.POS ≥ .LEN
sim
não
examinar
bit interno
bit = 1
bit = 0
bit interno é energizado
modo 
numérico
comum
.POS = .POS -1
.POS = 0
sim
não
bit .DN é energizado. 
bit .EN é energizado
saída da condição da linha é 
definida como verdadeira
fim
modo .LEN ≥
sim
não
modo .LEN>
bit .EN é energizado
loop_count = .LEN - .POS
.POS = .POS -1
modo ≥
loop_count
não
bit .EN é energizado
modo loop_count
sim
página 7-9
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-13
Exemplo 1: Quando habilitada, a instrução FAL copia cada elemento de array_2 
na mesma posição dentro de array_1.
Exemplo 2: Quando habilitada, a instrução FAL copia value_1 nas primeiras 10 
posições da segunda dimensão de array_2.
Exemplo 3: Cada vez que a instrução FAL é habilitada, ela copia o valor atual de 
array_1 para value_1. A instrução FAL usa o modo incremento, 
portanto, somente um valor de array é copiado a cada hora em que a 
instrução é habilitada. Na próxima vez em que a instrução é 
habilitada, ela sobrescreve value_1 sobre o próximo valor em array_1.
Exemplo 4: Quando habilitada, a instrução FAL adiciona value_1 e value_2 e 
armazena o resultado na posição atual de array_1.
cópia de array para array
Expressão:
array_2[control_2.pos]
Destination
array_1[control_2.pos]
cópia de elemento para array
Expressão:
value_1
Destination
array_2[0,control_2.pos]
cópia de array para elemento
Expressão:
array_1[control_1.pos]
Destination
value_1
operação aritmética:(elemento + elemento) para array
Expressão:
value_1 + value_2
Destination
array_1[control_1.pos]
Publicação 1756-RM003F-PT-P - Maio 2002
7-14 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
Exemplo 5: Quando habilitada, a instrução FAL divide o valor da posição atual de 
array_2 pelo valor da posição atual de array_3 e armazena o 
resultado na posição atual de array_1.
Exemplo 6: Quando habilitada, a instrução FAL adiciona o valor na posição atual 
em array_1 para value_1 e armazena o resultado na posição atual em 
array_3. A instrução deve executar 10 para o array_1 inteiro e array_3 
para ser manipulada.
Exemplo 7: Cada vez que a instrução FAL é habilitada, ela adiciona value_1 para o 
valor atual de array_1 e armazena o resultado em value_2. A 
instrução FAL usa o modo incremento, portanto, somente um valor de 
array é adicionado a value_1 cada hora que a instrução é habilitada. 
A próxima vez que a instrução é habilitada, a instrução sobrescreve 
value_2.
operação aritmética:(array / array) para array
Expressão:
array_2[control_2.pos] / array_3[control_2.pos]
Destination
array_1[control_2.pos]
operação aritmética:(array + elemento) para array
Expressão:
array_1[control_1.pos] + value_1
Destination
array_3[control_1.pos]
operação aritmética:(elemento + array) para elemento
Expressão
value_1 + array_1[control_1.pos]
Destination
value_2
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-15
Exemplo 8: Quando habilitada, a instrução FAL multiplica o valor atual de array_1 
pelo valor atual de array_3 e armazena o resultado em value_1. A 
instrução FAL usa o modo incremento, então somente um par de 
valores de array é multiplicado cada vez que a instrução é habilitada. 
A próxima vez que a instrução é habilitada, a instrução sobrescreve 
value_1.
expressões FAL
As expressões das instruções FAL são programadas da mesma forma 
que as expressões nas instruções CPT. Use as seções a seguir para 
mais informações sobre operadores válidos, formato e seqüência de 
operação que são comuns para as duas instruções.
Operadores válidos
operação aritmética:(array ∗ array) para elemento
Expressão:
array_1[control_1.pos] * array_3[control_1.pos]
Destination:
value_1
Operadores: Descrição: Ótimo:
+ adição DINT, REAL
- subtração/negativo DINT, REAL
* multiplicação DINT, REAL
/ divisão DINT, REAL
** expoente (x elevado a 
y)
DINT, REAL
ABS valor absoluto DINT, REAL
ACS arco co-seno REAL
AND AND (E) DINT
ASN arco seno REAL
ATN arco tangente REAL
COS co-seno REAL
DEG radianos em graus DINT, REAL
FRD BCD para inteiro DINT
LN log neperiano REAL
LOG log base 10 REAL
MOD módulo DINT, REAL
NOT complementação DINT
OR OR (OU) DINT
RAD graus em radianos DINT, REAL
SIN seno REAL
SQR raiz quadrada DINT, REAL
TAN tangente REAL
TOD inteiro para BCD DINT
TRN truncamento DINT, REAL
XOR OR exclusivo DINT
Operadores: Descrição: Ótimo:
Publicação 1756-RM003F-PT-P - Maio 2002
7-16 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
Formatação de expressões
Para cada operador utilizador, você deve fornecer um ou dois 
operandos (tags ou valores imediatos). Use a tabela a seguir para 
formatar os operadores e os operandos em uma expressão:
Determinação da seqüência da operação
As operações que você escreve na expressão são executadas pela 
instrução na seqüência prescrita e não, necessariamente, na ordem 
que você as escreveu. É possível suprimir a seqüência da operaçãoagrupando-se os termos dentro de parênteses, forçando a instrução 
para realizar uma operação dentro dos parênteses, antes de outras 
operações.
As operações com a mesma seqüência são executadas da esquerda 
para a direita.
Para operadores 
que operam em:
Use este formato: Exemplos:
um operando operator(operand) ABS(tag_a)
dois operandos operand_a operator operand_b • tag_b + 5
• tag_c AND tag_d
• (tag_e ** 2) MOD 
(tag_f / tag_g)
Seqüência: Operação:
1. ( )
2. ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG, 
RAD, SIN, SQR, TAN, TOD, TRN
3. **
4. − (negativo), NOT
5. *, /, MOD
6. − (subtração), +
7. AND
8. XOR
9. OR
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-17
Comparação e Busca de 
Arquivo (FSC)
A instrução FSC compara valores em um array, elemento por 
elemento.
Operandos:
Lógica Ladder
Estrutura CONTROL
Descrição: Quando a instrução FSC está habilitada e a comparação é verdadeira, 
a instrução energiza o bit .FD e o bit .POS reflete a posição do array 
onde a instrução encontrou a comparação verdadeira. A instrução 
energiza o bit .IN para evitar outra busca.
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha:
Operando: Tipo: Formato: Descrição:
Control CONTROL tag estrutura de controle para a operação
Length DINT imediato número de elementos no array a 
serem manipulados
Position DINT imediato offset no array
normalmente, valor inicial é 0
Mnemônico: Tipo de Dados: Descrição:
.EN BOOL O bit habilitado indica que a instrução FSC está habilitada.
.DN BOOL O bit executado é energizado quando a instrução operou no último elemento 
(.POS = .LEN).
.ER BOOL O bit de erro não é modificado.
.IN BOOL O bit inibido indica que a instrução FSC detectou uma comparação verdadeira. É necessário 
zerar esse bit para continuar a operação de busca.
.FD BOOL O bit encontrado indica que a instrução FSC detectou uma comparação verdadeira.
.LEN DINT O comprimento especifica o número dos elementos no array na qual a instrução opera.
.POS DINT A posição contém a posição do elemento atual que a instrução está acessando.
Uma falha grave ocorrerá se: Tipo de falha: Código de falha:
.POS < 0 ou .LEN < 0 4 21
Publicação 1756-RM003F-PT-P - Maio 2002
7-18 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
Execução:
Condição: Ação da Lógica Ladder:
prescan A saída da condição da linha é definida como falsa.
examinar bit .DN
bit .DN = 0
bit .DN = 1
entrada da condição da linha é falsa
saída da condição da linha é 
definida como falsa
fim
bit .EN é desenergizado.
bit .ER é desenergizado.
bit .DN é desenergizado.
valor .POS é 
desenergizado
modo INC
não
sim
modo ALL
não
sim
bit .EN é 
desenergizado.
.POS = .POS + 1
modo 
numérico
bit interno é 
desenergizado
.LEN < 0 ou 
.POS < 0
sim
não
falha grave
.POS = .POS -1
.POS = 0
sim
não
bit .DN é energizado. 
bit .EN é energizado
.POS < .LEN
não
sim
modo .LEN >
sim
não
modo .LEN>
.LEN = 0
sim
não
bit .DN é energizado. 
bit .EN é 
desenergizado.
página 7-12
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-19
postscan A saída da condição da linha é definida como falsa.
Condição: Ação da Lógica Ladder:
entrada da condição da linha for verdadeira
saída da condição da linha é 
definida como verdadeira
fim
examinar bit .IN
bit .DN = 0
bit .DN = 1
.LEN = 0
não
sim
modo INC
não
sim
modo ALL
não
sim
loop_count = 
loop_count - 1
loop_count < 0
não
sim
.POS = .POS + 1
avaliar comparação
.POS = .POS + 1
correspondência
não
sim
bit .EN é energizado
bit .FD é energizado.
bit .IN é energizado
.POS = .LEN
não
sim
bit .DN é energizado.
bit .EN é energizado .POS = .POS + 1
examinar bit .ER
bit .ER = 0
bit .ER = 1
bit .DN é energizado.
bit .EN é energizado modo 
INC
modo 
ALL
modo 
numérico
comum
página 7-12
página 7-10 página 7-11
.LEN < 0 ou 
.POS < 0
sim
não
falha grave
examinar bit .DN
bit .DN = 1
bit .IN = 0
bit .DN = 0
Publicação 1756-RM003F-PT-P - Maio 2002
7-20 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
Exemplo 1: Buscar uma combinação entre dois arrays. Quando habilitada, a 
instrução FSC compara cada um dos 10 primeiros elementos 
em array_1 com os elementos correspondentes em array_2.
Exemplo 2: Buscar uma combinação em um array. Quando habilitada, a instrução 
FSC compara MySearchKey com 10 elementos em array_1.
00000000000000000000000000000000 0
00000000000000000000000000000000 1
00000000000000000000000000000000 2
00000000000000000000000000000000 3
11111111111111110000000000000000 4
11111111111111111111111111111111 5
11111111111111111111111111111111 6
11111111111111111111111111111111 7
11111111111111111111111111111111 8
11111111111111111111111111111111 9
array_1 array_2
A instrução FSC descobre que esses elementos não 
são iguais. A instrução energiza os bits .FD e .IN. O 
valor .POS (4) indica a posição dos elementos que 
são diferentes. Para continuar a realizar a 
comparação no restante do array, zere o bit .IN.
control_3.pos
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000001111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
MySearchKey referência
A instrução FSC descobre que esse elemento do 
array é igual a MySearchKey. A instrução energiza 
os bits .FD e .IN. O valor .POS (4) indica a posição 
dos elementos iguais. Para continuar a realizar a 
comparação no restante do array, zere o bit .IN.
control_3.pos
00000000000000000000000000000000 0
00000000000000000000000000000000 1
00000000000000000000000000000000 2
00000000000000000000000000000000 3
11111111111111110000000000000000 4
11111111111111111111111111111111 5
11111111111111111111111111111111 6
11111111111111111111111111111111 7
11111111111111111111111111111111 8
11111111111111111111111111111111 9
11111111111111110000000000000000
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-21
Exemplo 3: Buscar uma string em um array de strings. Quando habilitada, a 
instrução FSC compara os caracteres em código para 10 elementos em 
code_table.
Expressões FSC
As expressões das instruções FSC são programadas da mesma forma 
que as expressões nas instruções CMP. Use as seções a seguir para 
mais informações sobre operadores válidos, formato e seqüência de 
operação que são comuns nas duas instruções.
SAM
AFG 0
BEH 1
HUO 2
SAK 3
SAM 4
FQG 5
CLE 6
CAK 7
DET 8
BWG 9
code code_table
A instrução FSC acha que este elemento de array é 
igual a code. A instrução energiza os bits .FD e .IN. 
O valor .POS (4) indica a posição dos elementos 
iguais. Para continuar a realizar a comparação no 
restante do array, zere o bit .IN.
code_table_search.POS
Publicação 1756-RM003F-PT-P - Maio 2002
Operadores válidos
Formatação de expressões
Para cada operador utilizador, você deve fornecer um ou dois 
operandos (tags ou valores imediatos). Use a tabela a seguir para 
formatar os operadores e os operandos em uma expressão:
Operador: Descrição: Ótimo:
+ adição DINT, REAL
- subtração/negativo DINT, REAL
* multiplicação DINT, REAL
/ divisão DINT, REAL
= igual DINT, REAL
< menor que DINT, REAL
<= menor ou igual a DINT, REAL
> maior que DINT, REAL
<= maior ou igual a DINT, REAL
<> diferente de DINT, REAL
** expoente (x elevado a 
y)
DINT, REAL
ABS valor absoluto DINT, REAL
ACS arcos co-seno
AND AND DINT
ASN arco seno
ATN arco tangente
COS co-seno
DEG radianos em graus DINT, REAL
FRDBCD para inteiro DINT
LN log neperiano REAL
LOG log base 10 REAL
MOD módulo DINT, REAL
NOT complementação DINT
OR OR DINT
RAD graus em radianos DINT, REAL
SIN seno REAL
SQR raiz quadrada DINT, REAL
TAN tangente REAL
TOD inteiro para BCD DINT
TRN trancar DINT, REAL
XOR XOR DINT
Operador: Descrição: Ótimo:
Para operadores 
que operam em:
Use este formato: Exemplos:
um operando operator(operand) ABS(tag_a)
dois operandos operand_a operator operand_b • tag_b + 5
• tag_c AND tag_d
• (tag_e ** 2) MOD 
(tag_f / tag_g)
7-22 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-23
Determinação da seqüência da operação
As operações que você escreve na expressão são executadas pela 
instrução na seqüência prescrita e não, necessariamente, na ordem 
que você as escreveu. É possível suprimir a seqüência da operação 
agrupando-se os termos dentro de parênteses, forçando a instrução 
para realizar uma operação dentro dos parênteses, antes de outras 
operações.
As operações com a mesma seqüência são executadas da esquerda 
para a direita.
Uso de strings em uma expressão
Use uma expressão em lógica ladder ou em texto estruturado para 
comparar os tipos de dados da string. Para usar strings em uma 
expressão, siga estas orientações:
• Uma expressão permite que você compare dois tags da string.
• Você não pode inserir caracteres ASCII em uma expressão 
diretamente.
• Somente os operadores a seguir são permitidos 
Seqüência: Operação:
1. ( )
2. ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG, RAD, SIN, 
SQR, TAN, TOD, TRN
3. **
4. − (negativo), NOT
5. *, /, MOD
6. <, <=, >, >=, =
7. − (subtração), +
8. AND
9. XOR
10. OR
Operador: Descrição:
= igual
< menor que
<= menor ou igual a
> maior que
>= maior ou igual a
<> diferente de
Publicação 1756-RM003F-PT-P - Maio 2002
7-24 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
• As strings são iguais se os caracteres corresponderem.
• Os caracteres ASCII são sensíveis ao contexto. A letra “A” ($41) 
maiúscula não é igual à letra "a" minúscula ($61).
• Os valores hexadecimais dos caracteres determinam se um 
string é menor ou maior que outro. Para o código hexadecimal 
de caractere, consulte a parte de trás deste manual.
• Quando duas strings são classificadas em um diretório de 
telefones, a seqüência das strings determina qual é maior 
Caracteres ASCII Códigos Hex
1ab $31$61$62
1b $31$62
a $41
AB $41$42
B $42
a $61
ab $61$62
m
ai
or 
q
u
e
m
e
n
or 
q
u
e
AB < B
a > B
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-25
Cópia de Arquivo (COP) 
Arquivo de Cópia Síncrono 
(CPS)
As instruções COP e CPS copiam o(s) valor(es) em Source para 
Destination. Source permanece inalterado.
Operandos:
Lógica Ladder
Texto Estruturado
Os operandos são os mesmos que aqueles para as instruções de 
lógica ladder COP e CPS.
Descrição: Durante a execução das instruções COP e CPS, outras ações do 
controlador podem tentar interromper a operação de cópia e mudar 
os dados de fonte ou destino:
O número de bytes copiados é:
Operando: Tipo: Formato: Descrição:
Source SINT
INT
DINT
REAL
string
estrutura
tag elemento inicial para cópia
Importante: os operandos Source e Destination 
devem ter o mesmo tipo de dados ou podem 
ocorrer resultados inesperados.
Destination SINT
INT
DINT
REAL
string
structure
tag elemento inicial a ser sobrescrito por Source
Importante: os operandos Source e Destination 
devem ter o mesmo tipo de dados ou podem 
ocorrer resultados inesperados.
Length DINT imediato
tag
número de elementos em Destination a 
serem copiados
COP(Source,Dest,Length);
CPS(Source,Dest,Length);
Se a fonte ou destino for: E você quiser: Então 
selecione:
Notas:
• tag produzido
• tag consumido
• dados de E/S
• dados que outra tarefa pode 
sobrescrever
prevenir que os dados mudem 
durante a operação de cópia
CPS • Tarefas que tentam interromper 
uma instrução CPS são atrasadas 
até que a instrução seja 
concluída.
• Para estimar o tempo de execução 
da instrução CPS, consulte 
ControlLogix System User 
Manual, publicação 1756-UM001.
permitir que os dados mudem 
durante a operação de cópia
COP
nenhum dos acima COP
Publicação 1756-RM003F-PT-P - Maio 2002
7-26 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
Contagem de Byte = Comprimento ∗ (número de bytes no tipo de 
dados de Destination)
As instruções COP e CPS operam na memória de dados contígua e 
realizam uma cópia de memória byte por byte, o que requisita um 
entendimento do layout da memória do controlador.
As instruções COP e CPS não escrevem após o final do array. Se 
Length for maior do que o número total de elementos no array 
Destination, as instruções COP e CPS param no final do array. 
Nenhuma falha grave é gerada.
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
ATENÇÃO
!
Se a contagem de byte for maior do que o 
comprimento de Source, dados não previstos serão 
copiados para os elementos restantes.
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-27
Execução:
Exemplo 1: Tanto array_4 como array_5 são o mesmo tipo de dados. Quando 
habilitada, a instrução COP copia os primeiros 10 elementos de 
array_4 nos primeiros 10 elementos de array_5.
Condição: Ação da Lógica Ladder: Ação do Texto Estruturado
prescan A saída da condição da linha é definida como falsa. Nenhuma ação tomada.
entrada da condição da 
linha é falsa
A saída da condição da linha é definida como falsa. na
entrada da condição da 
linha é verdadeira
A instrução executa.
A saída da condição da linha está definida como 
verdadeira.
na
EnableIn está energizado na EnableIn está sempre energizado
A instrução executa.
postscan A saída da condição da linha é definida como falsa. Nenhuma ação tomada.
execução da instrução
saída da condição da linha é 
definida como verdadeira
fim
end_address = start_address + (Comprimento ∗ 
número de bytes em um elemento de destino)
sim
não
end_address > fim do 
array destination
end_address = fim do array destination
source_address = Source
sim
não
destination_address = 
end_address
copiar os dados de source_address para 
destination _address
source_address = source _address + 1
destination_address = 
destination_address + 1
Publicação 1756-RM003F-PT-P - Maio 2002
7-28 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
Lógica Ladder
Texto Estruturado:
COP(array_4[0],array_5[0],10);
Exemplo 2: Quando habilitada, a instrução COP copia a estrutura timer_1 no 
elemento 5 de array_timer. A instrução copia somente uma estrutura 
para um elemento do array.
Lógica Ladder
Texto Estruturado:
COP(timer_1,array_timer[5],1);
Exemplo 3: O array project_data (100 elementos) armazena uma variedade de 
valores que mudam em momentos diferentes na aplicação. Para 
enviar uma imagem completa de project_data a uma instância por vez 
para outro controlador, a instrução CPS copia project_data para 
produced_array.
• Enquanto a instrução CPS copia os dados, nenhuma atualização 
de E/S ou outras tarefas podem mudar os dados.
• O tag produced_array produz os dados em uma rede 
ControlNet para o consumo por outros controladores.
• Para usar a mesma imagem de dados (ou seja, fazer uma cópia 
sincronizada de dados), o controlador consumidor usa uma 
instrução CPS para copiar os dados de um tag consumido para 
outro tag para uso na aplicação.
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE,SRT, STD, SIZE)- 7-29
Lógica Ladder
Texto Estruturado:
CPS(project_data[0],produced_array[0],100);
Exemplo 4: Local:0:I.Data armazena os dados de entrada para a rede DeviceNet 
que está conectada ao módulo 1756-DNB no slot 0. Para sincronizar 
as entradas com a aplicação, a instrução CPS copia os dados de 
entrada para input_buffer.
• Enquanto a instrução CPS copia os dados, nenhuma atualização 
de E/S pode mudar os dados.
• Conforme a aplicação executa, ela usa os dados de entrada em 
input_buffer para suas entradas.
Lógica Ladder
Texto Estruturado:
CPS(Local:0:I.Data[0],input_buffer[0],20);
Publicação 1756-RM003F-PT-P - Maio 2002
7-30 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
Exemplo 5: Esse exemplo inicializa um array de estruturas de temporizador. 
Quando habilitadas, as instruções MOV inicializam os valores .PRE e 
.ACC do primeiro elemento array_timer. Quando habilitada, a 
instrução COP copia um bloco contínuo de bytes, iniciando em 
array_timer[0]. O comprimento é de nove estruturas de temporizador.
Lógica Ladder
Texto Estruturado:
IF S:FS THEN
array_timer[0].pre := 500;
array_timer[0].acc := 0;
COP(array_timer[0],array_timer[1],10);
END_IF;
array_timer[0] Primeiro a instrução copia os valores 
timer[0] em timer[1]
array_timer[1] Então, a instrução copia os valores 
timer[1] em timer[2]
array_timer[2] Depois, a instrução copia os valores 
timer[2] em timer[3]
array_timer[3] Então, a instrução copia os valores 
timer[3] em timer[4]
array_timer[4]
•
•
•
array_timer[9] Finalmente, a instrução copia os valores 
timer[9] em timer[10]
array_timer[10]
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-31
Preenchimento de Arquivo 
(FLL)
A instrução FLL preenche os elementos de um array com o valor 
Source. Source permanece inalterado.
Operandos:
Lógica Ladder
Texto Estruturado
O texto estruturado não possui uma instrução FLL, mas é possível 
alcançar os mesmos resultados usando uma instrução SIZE e uma 
FOR...DO ou outra construção de malha. 
SIZE(destination,0,length);
FOR position = 0 TO length-1 DO
destination[position] := source;
END_FOR;
Consulte página C- para informações sobre a sintaxe de construções 
no texto estruturado.
Descrição: O número de bytes preenchidos é:
Contagem de Byte = Comprimento ∗ (número de bytes no tipo de 
dados de Destination)
A instrução FLL opera na memória de dados contínua.
A instrução FLL não gravará logo após o final de um array. Se o 
comprimento for maior do que o número total de elementos no array 
Destination, a instrução COP pára no final do array. Nenhuma falha 
grave é gerada.
Para obter resultados melhores, Source e Destination devem ser do 
mesmo tipo. Se você quiser preencher uma estrutura, use a instrução 
COP (consulte o exemplo 3 na página 7-28). Se você quiser combinar 
Operando: Tipo: Formato: Descrição:
Source SINT
INT
DINT
REAL
imediato
tag
elemento para cópia
Importante: os operandos Source e 
Destination devem ter o mesmo tipo de 
dados ou podem ocorrer resultados 
inesperados.
Destination SINT
INT
DINT
REAL
structure
tag elemento inicial a ser sobrescrito por Source
Importante: os operandos Source e 
Destination devem ter o mesmo tipo de 
dados ou podem ocorrer resultados 
inesperados.
O melhor jeito para inicializar uma estrutura 
é usar a instrução COP.
Length DINT imediato número de elementos a serem preenchidos
Publicação 1756-RM003F-PT-P - Maio 2002
7-32 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
os tipos de dados para Source e Destination, os elementos em 
Destination são preenchidos com os valores convertidos de Source.
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Se Source for: E Destination for: Source é convertido 
para:
SINT, INT, DINT ou REAL SINT SINT
SINT, INT, DINT ou REAL INT INT
SINT, INT, DINT ou REAL DINT DINT
SINT, INT, DINT ou REAL REAL REAL
SINT structure SINT (não convertido)
INT structure INT (não convertido)
DINT structure DINT (não convertido)
REAL structure REAL (não convertido)
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-33
Execução:
Exemplo: A instrução FLL copia o valor em value_1 para dest_1
Condição: Ação da Lógica Ladder:
prescan A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
postscan A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira
saída da condição da linha é 
definida como verdadeira
fim
end_address = start_address + (Comprimento ∗ 
número de bytes em um elemento de destino)
sim
não
end_address > fim do 
array destino
end_address = fim do array destino
source_address = Source
sim
não
destination_address = 
end_address
copiar os dados de source_address para 
destination _address
destination_address = 
destination_address + 1
Publicação 1756-RM003F-PT-P - Maio 2002
7-34 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
Lógica Ladder
Texto Estruturado:
dest_1 := value_1;
Tipo de dados 
(value_1) Source:
Valor (value_1) 
Source:
Destination 
(dest_1) tipo de 
dados:
Destination 
(dest_1) valor depois 
de FLL:
SINT 16#80 (-128) DINT 16#FFFF FF80 (-128)
DINT 16#1234 5678 SINT 16#78
SINT 16#01 REAL 1.0
REAL 2.0 INT 16#0002
SINT 16#01 TIMER 16#0101 0101
16#0101 0101
16#0101 0101
INT 16#0001 TIMER 16#0001 0001
16#0001 0001
16#0001 0001
DINT 16#0000 0001 TIMER 16#0000 0001
16#0000 0001
16#0000 0001
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-35
Média de Arquivo (AVE) A instrução AVE calcula a média de um conjunto de valores.
Operandos:
Lógica Ladder
Texto Estruturado
O texto estruturado não possui uma instrução AVE, mas é possível 
alcançar os mesmos resultados usando uma instrução SIZE e uma 
FOR...DO ou outra construção de malha. 
SIZE(array,0,length);
sum := 0;
FOR position = 0 TO length DO-1
sum := sum + array[position];
END_FOR;
Destination = sum / length;
Consulte página C- para informações sobre a sintaxe de construções 
no texto estruturado.
estrutura CONTROL
Operando: Tipo: Formato: Descrição:
Array SINT
INT
DINT
REAL
tag do array encontre a média dos valores nesse array
especifique o primeiro elemento do grupo de 
elementos para a média
não use CONTROL.POS no subscrito
Dimension 
to vary
DINT imediato
(0, 1, 2)
a dimensão a ser usada
depende do número de dimensões, a 
seqüência é
array[dim_0,dim_1,dim_2]
array[dim_0,dim_1]
array[dim_0]
Destination SINT
INT
DINT
REAL
tag resultado da operação
Control CONTROL tag estrutura de controle para a operação
Length DINT imediato número de elementos do array para a média
Position DINT imediato elemento atual no array
normalmente, valor inicial é 0
Mnemônico: Tipo de Dados: Descrição:
.EN BOOL O bit habilitado indica que a instrução AVE está habilitada.
.DN BOOL O bit executado é energizado quando a instrução operou no último elemento no Array (.POS = .LEN).
Publicação 1756-RM003F-PT-P - Maio 2002
7-36 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
Descrição: A instrução AVE calcula a média de um conjunto de valores.
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha:
.ER BOOL O bit de erro é energizado se a instrução gerar um overflow. A instrução pára a execução até que o 
programa zere o bit .ER. A posição do elemento que provocou o overflow está armazenada no valor .POS.
.LEN DINT O comprimento especifica o número dos elementos no array no qual a instrução opera.
.POS DINT Aposição contém a posição do elemento atual que a instrução está acessando.
Mnemônico: Tipo de Dados: Descrição:
IMPORTANTE Certifique-se de que Length não faça com que a 
instrução exceda o operando Dimension to vary 
especificado. Se isso ocorrer, Destination ficará 
incorreto.
Uma falha grave ocorrerá se: Tipo de falha: Código de falha:
.POS < 0 ou .LEN < 0 4 21
o operando Dimension to vary não existe 
para o array especificado
4 20
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-37
Execução:
Exemplo 1: Média array_dint, que é DINT[4,5].
Condição: Ação da Lógica Ladder:
prescan O bit .EN é desenergizado.
O bit .DN é desenergizado.
O bit .ER é desenergizado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira A instrução AVE calcula a média, adicionando todos os elementos especificados no 
array e dividindo pelo número de elementos.
Internamente, a instrução usa uma instrução FAL para calcular a média.
Expressão = cálculo da média
Modo = ALL
Para obter detalhes sobre como a instrução FAL executa, consulte a página 7-8.
postscan A saída da condição da linha é definida como falsa.
examinar bit .DN
bit .DN = 0
bit .DN = 1
entrada da condição da linha for falsa
saída da condição da linha é 
definida como falsa
fim
bit .EN é desenergizado.
bit .ER é desenergizado.
bit .DN é desenergizado.
valor .POS é desenergizado
dimensão 1
dimensão 0
0 20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
1
2
3
0 1 2 3 4
AVE 19 14 9 4+ + +
4
------------------------------------- 46
4
------ 11.5= = =
dint_ave = 12
subscritos
Publicação 1756-RM003F-PT-P - Maio 2002
7-38 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
Lógica Ladder
Texto Estruturado:
SIZE(array_dint,0,length);
sum := 0;
FOR position = 0 TO (length-1) DO
sum := sum + array_dint[position];
END_FOR;
dint_ave := sum / length;
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-39
Exemplo 2: Média array_dint, que é DINT[4,5].
Lógica Ladder
Texto Estruturado:
SIZE(array_dint,1,length);
sum := 0;
FOR position = 0 TO length-1 DO
sum := sum + array_dint[position];
END_FOR;
dint_ave = sum / length;
dimensão 1
dimensão 0
0 20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
1
2
3
0 1 2 3 4
AVE 5 4 3 2 1+ + + +
5
---------------------------------------- 15
5
------ 3= = =
subscritos
dint_ave = 3
Publicação 1756-RM003F-PT-P - Maio 2002
7-40 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
Classificação de Arquivo 
(SRT)
A instrução SRT classifica um conjunto de valores em uma dimensão 
(Dim to vary) do array em ordem crescente.
Operandos:
Lógica Ladder
Texto Estruturado
Os operandos são os mesmos que aqueles para a instrução de lógica 
ladder SRT. Entretanto, pode-se especificar os valores de Length e 
Position ao acessar os membros .LEN e .POS da estrutura CONTROL, 
ou ao incluir os valores na lista de operando.
Estrutura CONTROL
Operando: Tipo: Formato: Descrição:
Array SINT
INT
DINT
REAL
tag do array array para classificação
especifique o primeiro elemento do grupo de 
elementos para classificação
não use CONTROL.POS no subscrito
Dimension 
to vary
DINT imediato
(0, 1, 2)
a dimensão a ser usada
depende do número de dimensões, a 
seqüência é
array[dim_0,dim_1,dim_2]
array[dim_0,dim_1]
array[dim_0]
Control CONTROL tag estrutura de controle para a operação
Length DINT imediato número de elementos do array 
para classificação
Position DINT imediato elemento atual no array
normalmente, valor inicial é 0
SRT(Array,Dimtovary,
Control);
Mnemônico: Tipo de Dados: Descrição:
.EN BOOL O bit habilitado indica que a instrução SRT está habilitada.
.DN BOOL O bit executado é energizado quando os elementos especificados forem classificados.
.ER BOOL O bit de erro é energizado quando uma das condições .LEN < 0 ou .POS < 0 também gerar 
uma falha grave.
.LEN DINT O comprimento especifica o número dos elementos no array no qual a instrução opera.
.POS DINT A posição contém a posição do elemento atual que a instrução está acessando.
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-41
Descrição: A instrução SRT classifica um conjunto de valores em uma dimensão 
(Dim to vary) do array em ordem crescente.
Essa é uma instrução transicional:
• Na lógica ladder, alterna-se a entrada da condição de linha de 
desenergizado para energizado a cada hora que a instrução 
deveria ser executada.
• No texto estruturado, condicione a instrução para que ela 
somente execute em uma transição. Consulte página C-.
Flags de Status Aritmético: Os flags de status aritmético são afetados.
Condições de Falha:
IMPORTANTE Certifique-se de que Length não faça com que a 
instrução exceda o operando Dimension to vary 
especificado. Se isto acontecer, resultados 
inesperados ocorrerão.
Uma falha grave ocorrerá se: Tipo de falha: Código de falha:
.POS < 0 ou .LEN < 0 4 21
o operando Dimension to vary não existe 
para o array especificado
4 20
A instrução tenta acessar os dados 
localizados fora dos limites do array.
4 20
Publicação 1756-RM003F-PT-P - Maio 2002
7-42 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
Execução:
Condição: Ação da Lógica Ladder: Ação do Texto Estruturado
prescan O bit .EN é desenergizado.
O bit .DN é desenergizado.
O bit .ER é desenergizado.
A saída da condição da linha é definida como falsa.
O bit .EN é desenergizado.
O bit .DN é desenergizado.
O bit .ER é desenergizado.
na
entrada da condição da 
linha é verdadeira
A instrução executa.
A saída da condição da linha está definida como 
verdadeira.
na
EnableIn está energizado na EnableIn está sempre energizado
A instrução executa.
Execução da Instrução A instrução escolhe os elementos especificados 
do array em ordem ascendente.
A instrução escolhe os elementos especificados 
do array em ordem ascendente.
postscan A saída da condição da linha é definida como falsa. Nenhuma ação tomada.
examinar bit .DN
bit .DN = 0
bit .DN = 1
saída da condição da linha é 
definida como falsa
fim
bit .EN é desenergizado.
bit .ER é desenergizado.
bit .DN é desenergizado.
valor .POS é desenergizado
entrada da condição da linha é falsa
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-43
Exemplo 1: Classifique array_dint, que é DINT[4,5].
Lógica Ladder
Texto Estruturado:
control_1.LEN := 4;
control_1.POS := 0;
SRT(int_array[0,2],0,control_1);
dimensão 1
dimensão 0
0 20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
1
2
3
0 1 2 3 4
dimensão 1
dimensão 0
0 20 19 3 17 16
15 14 8 12 11
10 9 13 7 6
5 4 18 2 1
1
2
3
0 1 2 3 4
Antes Depois
subscritos
subscritos
Publicação 1756-RM003F-PT-P - Maio 2002
7-44 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
Exemplo 2: Classifique int _array, que é DINT[4,5].
Lógica Ladder
Texto Estruturado
control_1.POS := 5;
control_1.pos = 0;
SRT(int_array[2,0],1,control_1);
dimensão 1
dimensão 0
0 20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
1
2
3
0 1 2 3 4
dimensão 1
dimensão 0
0 20 19 18 17 16
15 14 13 12 11
6 7 8 9 10
5 4 3 2 1
1
2
3
0 1 2 3 4
Antes Depois
subscritos
subscritos
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-45
Desvio Padrão do Arquivo 
(STD) 
A instrução STD calcula o desvio padrão de um conjunto de valores 
em uma dimensão do Array e armazena o resultadoem Destination.
Operandos:
Lógica Ladder
estrutura CONTROL
Texto Estruturado
O texto estruturado não possui uma instrução STD, mas é possível 
alcançar os mesmos resultados usando uma instrução SIZE e uma 
FOR...DO ou outra construção de malha. 
SIZE(destination,0,length);
sum := 0;
FOR position = 0 TO length-1 DO
sum := sum + array[position];
Operando: Tipo: Formato: Descrição:
Array SINT
INT
DINT
REAL
tag do 
array
encontra o desvio padrão dos valores nesse array
especifica o primeiro elemento do grupo de 
elementos a serem usados no cálculo do desvio 
padrão
não use CONTROL.POS no subscrito
Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal.
Dimension 
to vary
DINT imediato
(0, 1, 2)
a dimensão a ser usada
depende do número de dimensões, a seqüência é
array[dim_0,dim_1,dim_2]
array[dim_0,dim_1]
array[dim_0]
Destination REAL tag resultado da operação
Control CONTROL tag estrutura de controle para a operação
Length DINT imediato número de elementos do array a serem usados no 
cálculo do desvio padrão
Position DINT imediato elemento atual no array
normalmente, valor inicial é 0
Mnemônico: Tipo de Dados: Descrição:
.EN BOOL O bit habilitado indica que a instrução STD está habilitada.
.DN BOOL O bit executado é energizado quando o cálculo é concluído.
.ER BOOL O bit de erro é energizado quando a instrução gerar um overflow. A instrução pára a 
execução até que o programa zere o bit .ER. A posição do elemento que provocou o overflow 
está armazenada no valor .POS.
.LEN DINT O comprimento especifica o número dos elementos no array no qual a instrução opera.
.POS DINT A posição contém a posição do elemento atual que a instrução está acessando.
Publicação 1756-RM003F-PT-P - Maio 2002
7-46 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
END_FOR;
average := sum / length;
sum := 0;
FOR position = 0 TO length-1 DO
sum := sum + ((array[position] - average)**2);
END_FOR;
destination := SQRT(sum /(length-1));
Consulte página C- para informações sobre a sintaxe de construções 
no texto estruturado.
Descrição: O desvio padrão é calculado de acordo com esta fórmula:
Onde:
• start = subscrito dimension-to-vary do operando array
• xi = elemento do tag no array
• N = número de elementos especificados no array
• AVE =
Flags de Status Aritmético: Os flags de status aritmético são afetados.
IMPORTANTE Certifique-se de que Length não faça com que a 
instrução exceda o operando Dimension to vary 
especificado. Se isso ocorrer, Destination ficará 
incorreto.
X start i+( ) AVE–〈 〉
2[ ]
i 1=
N
∑
 
 
 
 
N 1–( )
--------------------------------------------------------------------
Desvio Padrão =
x start i+( )
i 1=
N
∑
 
 
 
 
N
-----------------------------------------
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-47
Condições de Falha:
Execução:
Uma falha grave ocorrerá se: Tipo de falha: Código de falha:
.POS < 0 ou .LEN < 0 4 21
o operando Dimension to vary não existe 
para o array especificado
4 20
Condição: Ação da Lógica Ladder:
prescan O bit .EN é desenergizado.
O bit .DN é desenergizado.
O bit .ER é desenergizado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira A instrução STD calcula o desvio padrão dos elementos especificados.
Internamente, a instrução usa uma instrução FAL para calcular a média.
Expressão = cálculo do desvio padrão
Modo = ALL
Para obter detalhes sobre como a instrução FAL executa, consulte a página 7-8.
postscan A saída da condição da linha é definida como falsa.
examinar bit .DN
bit .DN = 0
bit .DN = 1
entrada da condição da linha for falsa
saída da condição da linha é 
definida como falsa
fim
bit .EN é desenergizado.
bit .ER é desenergizado.
bit .DN é desenergizado.
valor .POS é desenergizado
Publicação 1756-RM003F-PT-P - Maio 2002
7-48 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
Exemplo 1: Calcular o desvio padrão de dint_array, que é DINT[4,5].
Lógica Ladder
Texto Estruturado
SIZE(dint_array,0,length);
sum := 0;
FOR position = 0 TO (length-1) DO
sum := sum + dint_array[position];
END_FOR;
average := sum / length;
sum := 0;
FOR position = 0 TO (length-1) DO
sum := sum + ((dint_array[position] - average)**2);
END_FOR;
real_std := SQRT(sum /(length-1));
dimensão 1
dimensão 0
0 20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
1
2
3
0 1 2 3 4
STD 16 8.5–〈 〉
2
11 8.5–〈 〉2 6 8.5–〈 〉2 1 8.5–〈 〉2+ + +
4 1–〈 〉
--------------------------------------------------------------------------------------------------------------------------- 6.454972= =
AVE 16 11 6 1+ + +
4
------------------------------------- 34
4
------ 8.5= = =
subscritos
real_std = 6.454972
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-49
Exemplo 2: Calcular o desvio padrão de dint_array, que é DINT[4,5].
Lógica Ladder
Texto Estruturado
SIZE(dint_array,1,length);
sum := 0;
FOR position = 0 TO (length-1) DO
sum := sum + array_dint[position];
END_FOR;
average := sum / length;
sum := 0;
FOR position = 0 TO (length-1) DO
sum := sum + ((array[position] - average)**2);
END_FOR;
real_std = SQRT(sum /(length-1));
dimensão 1
dimensão 0
0 20 19 18 17 16
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
1
2
3
0 1 2 3 4
STD 20 18–〈 〉
2
19 18–〈 〉2 18 18–〈 〉2 17 18–〈 〉2 16 18–〈 〉2+ + + +
5 1–〈 〉
------------------------------------------------------------------------------------------------------------------------------------------------------------ 1.581139= =
AVE 20 19 18 17 16+ + + +
5
------------------------------------------------------- 90
5
------ 18= = =
subscritos
real_std = 1.581139
Publicação 1756-RM003F-PT-P - Maio 2002
7-50 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
Tamanho em Elementos 
(SIZE)
A instrução SIZE encontra o tamanho de uma dimensão de um array.
Operandos:
Lógica Ladder
Texto Estruturado
Os operandos são os mesmos que aqueles para a instrução da lógica 
ladder SIZE.
Descrição: A instrução SIZE encontra o número de elementos (tamanho) na 
dimensão determinada do array Source e coloca o resultado no 
operando Size.
• A instrução encontra o tamanho de uma dimensão de um array.
• A instrução opera em:
– array
– array em uma estrutura
– array que é parte de um array maior
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Operando: Tipo: Formato: Descrição:
Source SINT
INT
DINT
REAL
structure
string
tag do array array no qual a instrução é operar
Dimension 
to Vary
DINT imediato (0, 
1, 2)
dimensão a ser usada
Size SINT
INT
DINT
REAL
tag tag para armazenar o número de elementos 
na dimensão especificada do array
Para o tamanho da: Insira:
primeira dimensão 0
segunda dimensão 1
terceira dimensão 2
SIZE(Source,Dimtovary,Size);
Publicação 1756-RM003F-PT-P - Maio 2002
InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-51
Execução:
Exemplo 1: Encontrar o número de elementos na dimensão 0 (primeira dimensão) 
de array_a. Armazene o tamanho em array_a_size. Neste exemplo, a 
dimensão 0 de array_a tem 10 elementos.
Lógica Ladder
Texto Estruturado
SIZE(array_a,0,array_a_size);
Exemplo 2: Encontrar o número de elementos no membro DATA de string_1 que 
é uma string. Armazene o tamanho em string_1_size. Neste exemplo, 
o membro DATA da string_1 tem 82 elementos. (A string usa o tipo de 
dados STRING padrão.) Como cada elemento mantém um caracter, 
string_1 pode conter até 82 caracteres.
Lógica Ladder
Texto Estruturado
SIZE(string_1.DATA[0],0,string_1_size);
Condição: Ação da Lógica Ladder: Ação do Texto Estruturado
prescan A saída da condiçãoda linha é definida como falsa. Nenhuma ação tomada.
entrada da condição da 
linha é falsa
A saída da condição da linha é definida como falsa. na
entrada da condição da 
linha é verdadeira
A instrução executa.
A saída da condição da linha é definida como 
verdadeira.
na
EnableIn está energizado na EnableIn está sempre energizado
A instrução executa.
execução da instrução A instrução encontra o tamanho de uma dimensão. A instrução encontra o tamanho de uma dimensão.
postscan A saída da condição da linha é definida como falsa. Nenhuma ação tomada.
Size in Elements
Source array_a[0]
 255
Dim. To Vary 0
Size array_a_size
 10
SIZE
Size in Elements
Source string_1.DATA[0]
 '$00'
Dim. To Vary 0
Size string_1_size
 82
SIZE
Publicação 1756-RM003F-PT-P - Maio 2002
7-52 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)-
Exemplo 3: Strings_a é um array de estruturas da string. A instrução SIZE encontra 
o número de elementos no membro DATA da estrutura da string e 
armazena o tamanho em data_size_a. Neste exemplo, o membro 
DATA tem 24 elementos. (A estrutura de string tem um comprimento 
especificado pelo usuário de 24).
Lógica Ladder
Texto Estruturado
SIZE(strings_a[0].DATA[0],0,data_size_a);
Size in Elements
Source strings_a[0].DATA[0]
 '$00'
Dim. To Vary 0
Size data_size_a
 24
SIZE
Publicação 1756-RM003F-PT-P - Maio 2002
Capítulo 8
Instruções de Array (Arquivo)/Deslocamento
(BSL, BSR, FFL, FFU, LFL, LFU)
Introdução Use as instruções de array (arquivo)/deslocamento para modificar a 
localização dos dados dentro dos arrays.
É possível misturar os tipos de dados, mas podem ocorrer perda de 
precisão e erro de arredondamento.
Para instruções de lógica ladder, os tipos de dados em negrito 
indicam tipos de dados otimizados. Uma instrução executa mais 
rapidamente e requer menos memória se todos os operandos da 
instrução usam o mesmo tipo de dados otimizados, geralmente, DINT 
ou REAL.
Se você quiser: Use esta instrução: Disponível nessas linguagens: Consulte 
página:
carregar bits, deslocar bits e descarregar bits 
de um array de bits, um bit de cada vez.
BSL lógica ladder 8-2
BSR lógica ladder 8-5
carregar e descarregar os valores na 
mesma seqüência.
FFL lógica ladder 8-8
FFU lógica ladder 8-14
carregar e descarregar os valores em 
ordem reversa.
LFL lógica ladder 8-20
LFU lógica ladder 8-26
1 Publicação 1756-RM003F-PT-P - Maio 2002
8-2 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)
Deslocamento de Bit para a 
Esquerda (BSL)
A instrução BSL desloca os bits especificados dentro do Array uma 
posição para a esquerda.
Operandos:
Lógica Ladder 
Estrutura CONTROL
Descrição: Quando habilitada, a instrução descarrega o bit mais significativo dos 
bits especificados para o bit .UL, desloca os bits restantes uma posição 
para a esquerda e carrega o bit Source no bit 0 do Array.
A instrução BSL opera na memória de dados contínua.
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Operando: Tipo: Formato: Descrição:
Array DINT tag do array array a ser modificado
especifique o primeiro elemento do grupo de 
elementos
não use CONTROL.POS no subscrito
Control CONTROL tag estrutura de controle para a operação
Source bit BOOL tag bit a ser deslocado
Length DINT imediato número de bits do array a ser deslocado
Mnemônico: Tipo de Dados: Descrição:
.EN BOOL O bit habilitado indica que a instrução BSL está habilitada.
.DN BOOL O bit executado é energizado para indicar que os bits foram deslocados uma posição para a 
esquerda.
.UL BOOL O bit de descarga é a saída da instrução. O bit .UL armazena o status do bit que foi deslocado 
fora da faixa dos bits.
.ER BOOL O bit de erro é energizado quando .LEN < 0.
.LEN DINT O comprimento especifica o número de bits no array a ser deslocado.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-3
Execução
Condição: Ação da Lógica Ladder:
prescan O bit .EN é desenergizado.
O bit .DN é desenergizado.
O bit .ER é desenergizado.
O valor .POS é desenergizado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha é falsa O bit .EN é desenergizado.
O bit .DN é desenergizado.
O bit .ER é desenergizado.
O valor .POS é desenergizado.
A saída da condição da linha é definida como falsa.
postscan A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira
examinar bit .EN
bit .EN = 1
bit .EN = 0
fim
bit .DN é energizado.
deslocar array da esquerda uma posição para a 
esquerda
bit .EN é energizado
saída da condição da linha é 
definida como verdadeira
bit .DN é energizado.
.POS = .LEN
.LEN = 0
sim
não
.LEN < 0
sim
não
bit 
sourcebit .UL array
examinar bit source
.source bit = 1
.source bit = 0
bit .UL permanece 
energizado
bit .UL é energizado
bit .ER é 
energizado
Publicação 1756-RM003F-PT-P - Maio 2002
8-4 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)
Exemplo 1: Quando habilitada, a instrução BSL começa no bit 0 em array_dint[0]. 
A instrução descarrega array_dint[0].9 no bit .UL, desloca os bits 
remanescentes e carrega input_1 em array_dint[0].0. Os valores nos 
bits remanescentes (10-31) são inválidos.
Exemplo 2: Quando habilitada, a instrução BSL começa no bit 0 em array_dint[0]. 
A instrução descarrega array_dint[1].25 no bit .UL, desloca os bits 
remanescentes e carrega input_1 em array_dint[0].0. Os valores nos 
bits remanescentes (31-26 em array_dint[1]) são inválidos. Observe 
como array_dint[0].31 desloca-se através das palavras para 
array_dint[1].0.
9 8 7 6 5 4 3 2 1 0
array_dint[0] 
antes do 
deslocamento
1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
9 8 7 6 5 4 3 2 1 0
array_dint[0]dep
ois do 
deslocamento
0 1 1 1 1 0 0 0 0 1
1
input_10
bit .UL
esses bits foram deslocados à 
esquerda
31 0
array_dint[0] 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
31 0
array_dint[1] 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
1
input_1
esses bits foram deslocados para a esquerda
0
bit .UL
esses bits foram deslocados para a esquerda
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-5
Deslocamento de Bit para a 
Direita (BSR)
A instrução BSR desloca os bits especificados dentro do Array uma 
posição para a direita.
Operandos:
Lógica Ladder
Estrutura CONTROL
Descrição: Quando habilitada, a instrução descarrega o valor do bit do Array para 
o bit .UL, desloca os bits restantes uma posição para a direita e 
carrega o bit Source no bit mais significativo dos bits especificados.
A instrução BSR opera na memória de dados contínua.
Flags de Status Aritmético: não afetados
Condições de Falha: nenhuma
Operando: Tipo: Formato: Descrição:
Array DINT tag do array array a ser modificado
especifica o elemento em que o 
deslocamento deve começar
não use CONTROL.POS no subscrito
Control CONTROL tag estrutura de controle para a operação
Bit Source BOOL tag bit a ser deslocado
Length DINT imediato número de bits do array a ser deslocado
Mnemônico: Tipo de Dados: Descrição:
.EN BOOL O bit habilitado indica que a instrução BSR está habilitada.
.DN BOOL O bit executado é energizado para indicar que os bits foram deslocados uma posição para a 
direita.
.UL BOOL O bit de descarga é a saída da instrução. O bit .UL armazena o status do bit que foi deslocado 
fora da faixa dos bits.
.ER BOOL O bit de erro é energizado quando .LEN < 0.
.LEN DINT O comprimento especifica o número de bits no array a ser deslocado.
Publicação 1756-RM003F-PT-P - Maio 2002
8-6 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)
Execução
Condição: Ação da Lógica Ladder:
prescan O bit .EN é desenergizado.
O bit .DN é desenergizado.
O bit .ER é desenergizado.
O valor .POS é desenergizado.
A saída dacondição da linha é definida como falsa.
entrada da condição da linha for falsa O bit .EN é desenergizado.
O bit .DN é desenergizado.
O bit .ER é desenergizado.
O valor .POS é desenergizado.
A saída da condição da linha é definida como falsa.
postscan A saída da condição da linha é definida como falsa.
entrada da condição da linha é verdadeira
examinar bit .EN
bit .EN = 1
bit .EN = 0
fim
bit .DN é energizado.
deslocar array da esquerda uma posição para a 
esquerda
bit .EN é energizado
saída da condição da linha é 
definida como verdadeira
bit .DN é energizado.
.POS = .LEN
.LEN = 0
sim
não
.LEN < 0 sim
não
Bit 
Source
bit .ULarray
examinar bit source .source bit = 1
.source bit = 0
bit .UL permanece 
energizado
bit .UL é energizado
bit .ER é 
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-7
Exemplo 1: Quando habilitada, a instrução BSR começa no bit 9 em array_dint[0]. 
A instrução descarrega array_dint[0].0 no bit .UL, desloca os bits 
remanescentes à direita e carrega input_1 em array_dint[0].9. Os 
valores nos bits remanescentes (10-31) são inválidos.
Exemplo 2: Quando habilitada, a instrução BSR começa no bit 25 em array_dint[1]. 
A instrução descarrega array_dint[0].0 no bit .UL, desloca os bits 
remanescentes à direita e carrega input_1 em array_dint[1].25. Os 
valores nos bits remanescentes (31-26 em dint_array[1]) são inválidos. 
Observe como array_dint[1].0 desloca-se através das palavras para 
array_dint[1].31.
9 8 7 6 5 4 3 2 1 0
array_dint[0] 
antes do 
deslocamento
1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
9 8 7 6 5 4 3 2 1 0
array_dint[0]dep
ois do 
deslocamento
1 0 0 1 1 1 1 0 0 0
esses bits foram deslocados para a direita
0
bit .UL
1
input_1
31 0
array_dint[0] 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
31 0
array_dint[1] 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
esses bits foram deslocados para a direita
0
bit .UL
esses bits foram deslocados para a direita1
input_1
Publicação 1756-RM003F-PT-P - Maio 2002
8-8 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)
Carga FIFO (FFL) A instrução FFL copia o valor Source para FIFO.
Operandos:
Lógica Ladder 
Se você usar uma estrutura definida pelo usuário como tipo de dados 
para o operando Source ou FIFO, use a mesma estrutura para os dois 
operandos.
estrutura CONTROL
Descrição: Use a instrução FFL com a instrução FFU para armazenar e recuperar 
dados na seqüência primeiro a entrar, primeiro a sair. Quando usada 
em pares, as instruções FFL e FFU estabelecem um registro de 
deslocamento assíncrono.
Operando: Tipo: Formato: Descrição:
Source SINT
INT
DINT
REAL
string
structure
imediato
tag
dados a serem armazenados em FIFO
Source converte ao tipo de dados do tag do array. Um inteiro menor 
converte a um inteiro maior pela extensão do sinal.
FIFO SINT
INT
DINT
REAL
string
estrutura
tag do array FIFO a ser modificado
especifique o primeiro elemento de FIFO
não use CONTROL.POS no subscrito
Control CONTROL tag estrutura de controle para a operação
geralmente, usa o mesmo CONTROL, 
conforme associado a FFU
Length DINT imediato número máximo de elementos que FIFO pode 
controlar de uma vez.
Position DINT imediato próxima localização em FIFO em que a 
instrução carrega os dados.
normalmente, valor inicial é 0
Mnemônico: Tipo de Dados: Descrição:
.EN BOOL O bit habilitado indica que a instrução FFL está habilitada.
.DN BOOL O bit executado é energizado para indicar que FIFO está cheio (.POS=LEN). O bit .DN inibe a 
carga FIFO até .POS < .LEN.
.EM BOOL O bit vazio indica que FIFO está vazio. Se .LEN ≤ 0 ou .POS < 0, o bit .EM e o bit .DN são 
energizados.
.LEN DINT O comprimento especifica o número máximo de elementos que FIFO pode controlar de uma 
vez.
.POS DINT A posição identifica a localização em FIFO em que a instrução carregará o próximo valor.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-9
Geralmente, Source e FIFO são do mesmo tipo de dados.
Quando habilitada, a instrução FFL carrega o valor Source na posição 
FIFO identificada pelo valor .POS. A instrução carrega um valor cada 
vez que a instrução é habilitada até que FIFO fique cheio.
A instrução FFL opera na memória de dados contínua.
Flags de Status Aritmético: não afetados
Condições de Falha:
Uma falha grave ocorrerá se: Tipo de falha: Código de falha:
(elemento de início + .POS) > tamanho do array de 
FIFO
4 20
Publicação 1756-RM003F-PT-P - Maio 2002
8-10 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)
Execução
Condição: Ação da Lógica Ladder:
prescan
fim
o bit .EN é energizado para evitar uma 
carga falsa quando o scan começar
saída da condição da linha é 
definida como falsa
.LEN < 0 sim
não
.POS < 0
sim
.EM é desenergizado.
bit .DN é desenergizado.
não
.POS = 0 sim
não
.EM é energizado
.POS ≥ .LEN sim
não
.DN é energizado
.EM é energizado
.DN é energizado
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-11
Condição: Ação da Lógica Ladder:
entrada da condição da linha é falsa
fim
bit .EN é desenergizado.
saída da condição da linha é 
definida como falsa
.LEN < 0
sim
não
.POS < 0 sim
.EM é desenergizado.
bit .DN é desenergizado.
não
.POS = 0
sim
não
.EM é energizado
.POS ≥ .LEN sim
não
.DN é energizado
.EM é energizado
.DN é energizado
Publicação 1756-RM003F-PT-P - Maio 2002
8-12 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)
postscan A saída da condição da linha é definida como falsa.
Condição: Ação da Lógica Ladder:
entrada da condição da linha for verdadeira
fim
saída da condição da linha é 
definida como verdadeira
examinar bit .EN
.EN = 0
.EN = 1
bit .EN é energizado .LEN < 0
sim
não
.POS < 0
sim
não
bit .EM é energizado
.DN é energizadobit .EM é desenergizado.
bit .DN é desenergizado.
.POS = .POS + 1
.POS ≥ .LEN
sim
não
bit .DN é energizado.
.POS ou .LEN > 
tamanho do 
array
sim
não
falha grave
.POS > .LEN
sim
não
.POS = .POS -1
FIFO[.POS - 1] = source
.LEN < 0
sim
não
.POS < 0
sim
não
bit .EM é desenergizado.
bit .DN é desenergizado.
.POS = 0
sim
não
bit .EM é energizado
.POS ≥ .LEN
sim
não
bit .DN é energizado.
bit .EM é energizado
.DN é energizado
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-13
Exemplo: Quando habilitada, a instrução FFL carrega value_1 para a próxima 
posição em FIFO, que é array_dint[5] nesse exemplo.
antes da carga FIFO depois da carga FIFO
array_dint[0] 00000 00000
11111 11111
22222 22222
33333 control_1.pos = 5 33333
44444 value_1 = 55555 44444
array_dint[5] 00000 55555
00000 00000 control_1.pos = 6
00000 00000
00000 00000
00000 00000
Publicação 1756-RM003F-PT-P - Maio 2002
8-14 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)
Descarga FIFO (FFU) A instrução FFU descarrega o valor da posição 0 (primeira posição) de 
FIFO e armazena esse valor em Destination. Os dados restantes em 
FIFO se deslocam uma posição para baixo.
Operandos:
Lógica Ladder 
Se você usar uma estrutura definida pelo usuário como tipo de dados 
para o operando FIFO ou Destination, use a mesma estrutura para os 
dois operandos.
estrutura CONTROL
Operando: Tipo: Formato: Descrição:
FIFO SINT
INT
DINT
REAL
string
structure
tag do array FIFO a ser modificado
especifique o primeiro elemento de FIFO
não use CONTROL.POS no subscrito
Destination SINT
INT
DINT
REAL
string
structure
 tag valor que saiu de FIFO
O valor de Destination converte no tipo de dados do tag Destination. Um 
inteiro menor converte em um inteiro maior pela extensão do sinal.
Control CONTROL tag estrutura de controle para a operação
geralmente, usao mesmo CONTROL como a 
FFL associada
Length DINT imediato número máximo de elementos que FIFO pode 
controlar de uma vez.
Position DINT imediato próxima localização em FIFO onde a instrução 
descarrega os dados.
normalmente, valor inicial é 0
Mnemônico: Tipo de Dados: Descrição:
. EU BOOL O bit de descarga habilitado indica que a instrução FFU está habilitada. O bit .EU é 
energizado para pré-programar uma descarga falsa quando o scan do programa inicia.
.DN BOOL O bit executado é energizado para indicar que FIFO está cheio (.POS=LEN).
.EM BOOL O bit vazio indica que FIFO está vazio. Se .LEN ≤ 0 ou .POS < 0, o bit .EM e o bit .DN são 
definidos.
.LEN DINT O comprimento especifica o número máximo de elementos em FIFO.
.POS DINT A posição identifica o fim dos dados que foram carregados em FIFO.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-15
Descrição: Use a instrução FFU com a instrução FFL para armazenar e recuperar 
dados na seqüência primeiro a entrar, primeiro a sair (FIFO).
Quando habilitada, a instrução FFU descarrega os dados do primeiro 
elemento de FIFO e coloca esse valor em Destination. A instrução 
descarrega um valor cada vez que a instrução é habilitada, até que 
FIFO fique vazio. Se FIFO estiver vazio, FFU retorna 0 para 
Destination.
A instrução FFU opera na memória de dados contínua.
Flags de Status Aritmético: não afetados
Condições de Falha:
Uma falha grave ocorrerá se: Tipo de falha: Código de falha:
Length > FIFO tamanho do array 4 20
Publicação 1756-RM003F-PT-P - Maio 2002
8-16 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)
Execução
Condição: Ação da Lógica Ladder:
prescan
fim
o bit .EU é energizado para evitar uma 
descarga falsa quando o scan começar
saída da condição da linha é 
definida como falsa
.LEN < 0
sim
não
.POS < 0 sim
.EM é desenergizado.
bit .DN é desenergizado.
não
.POS = 0
sim
não
.EM é energizado
.POS ≥ .LEN sim
não
.DN é energizado
.EM é energizado
.DN é energizado
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-17
Condição: Ação da Lógica Ladder:
entrada da condição da linha é falsa
fim
bit .EU é desenergizado.
saída da condição da linha é 
definida como falsa
.LEN < 0
sim
não
.POS < 0 sim
.EM é desenergizado.
bit .DN é desenergizado.
não
.POS = 0
sim
não
.EM é energizado
.POS ≥ .LEN sim
não
.DN é energizado
.EM é energizado
.DN é energizado
Publicação 1756-RM003F-PT-P - Maio 2002
8-18 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)
postscan A saída da condição da linha é definida como falsa.
Condição: Ação da Lógica Ladder:
entrada da condição da linha for verdadeira
fim
examinar bit .EU
.EU = 0
.EU = 1
bit .EU é energizado .LEN < 0
sim
não
.POS < 0
sim
não
bit .EM é energizado
.DN é energizado
bit .EM é desenergizado.
bit .DN é desenergizado.
.LEN > 
tamanho do 
array
sim
não
falha grave
.POS ≤ 1
sim
não
bit .EM é energizado
.LEN < 0
sim
não
.POS < 0
sim
não
bit .EM é desenergizado.
bit .DN é desenergizado.
.POS = 0
sim
não
bit .EM é energizado
.POS ≥ .LEN
sim
não
bit .DN é energizado.
bit .EM é energizado
.DN é energizado
.POS < 1
sim
não
Destination = 0
.POS = .POS -1
Destination = FIFO[0]
i = 1
FIFO[i - 1] = FIFO[i]
i = i +1 
i < .LEN
sim
não
saída da condição da linha é 
definida como verdadeira
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-19
Exemplo: Quando habilitada, a instrução FFU descarrega array_dint[0] em 
value_2 e desloca os elementos restantes para array_dint.
antes da descarga FIFO depois da descarga FIFO
array_dint[0] 00000 11111
11111 22222
22222 33333
33333 44444
44444 55555
array_dint[5] 55555 00000 control_1.pos = 5
00000 control_1.pos = 6 00000 value_2 = 00000
00000 00000
00000 00000
00000 00000
Publicação 1756-RM003F-PT-P - Maio 2002
8-20 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)
Carga LIFO (LFL) A instrução LFL copia o valor Source para LIFO.
Operandos:
Lógica Ladder 
Se você usar uma estrutura definida pelo usuário como tipo de dados 
para o operando Source ou LIFO, use a mesma estrutura para os dois 
operandos.
estrutura CONTROL
Operando: Tipo: Formato: Descrição:
Source SINT
INT
DINT
REAL
string
structure
imediato
tag
dados a serem armazenados em LIFO
Source converte para o tipo de dados do tag do array. Um inteiro menor 
converte para um inteiro maior pela extensão do sinal.
LIFO SINT
INT
DINT
REAL
string
structure
tag do array LIFO a ser modificado
especifique o primeiro elemento de LIFO
não use CONTROL.POS no subscrito
Control CONTROL tag estrutura de controle para a operação
geralmente usa o mesmo CONTROL 
conforme a LFU associada
Length DINT imediato número máximo de elementos que LIFO pode 
controlar de uma vez.
Position DINT imediato próxima localização em LIFO em que a 
instrução carrega os dados.
normalmente, valor inicial é 0
Mnemônico: Tipo de Dados: Descrição:
.EN BOOL O bit habilitado indica que a instrução LFL está habilitada.
.DN BOOL O bit executado é energizado para indicar que LIFO está cheio (.POS=LEN). O bit .DN inibe a carga 
de LIFO até .POS < .LEN.
.EM BOOL O bit vazio indica que LIFO está vazio. Se .LEN ≤ 0 ou .POS < 0, o bit .EM e o bit .DN são energizados.
.LEN DINT O comprimento especifica o número máximo de elementos que LIFO pode controlar de uma vez.
.POS DINT A posição identifica a localização em LIFO em que a instrução carregará o próximo valor.
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-21
Descrição: Use a instrução LFL com a instrução LFU para armazenar e recuperar 
dados na seqüência último a entrar, primeiro a sair. Quando usada em 
pares, as instruções LFL e LFU estabelecem um registro de 
deslocamento assíncrono.
Geralmente, Source e LIFO são do mesmo tipo de dados.
Quando habilitada, a instrução LFL carrega o valor Source na posição 
LIFO identificada pelo valor .POS. A instrução carrega um valor cada 
vez que a instrução é habilitada, até que LIFO fique cheia.
A instrução LFL opera na memória de dados contínua.
Flags de Status Aritmético: não afetados
Condições de Falha:
Uma falha grave ocorrerá se: Tipo de falha: Código de falha:
(elemento de início + .POS) > tamanho do array de 
LIFO
4 20
Publicação 1756-RM003F-PT-P - Maio 2002
8-22 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)
Execução
Condição: Ação da Lógica Ladder:
prescan
fim
o bit .EN é energizado para 
evitar uma carga falsa 
saída da condição da linha é 
definida como falsa
.LEN < 0
sim
não
.POS < 0 sim
.EM é desenergizado.
bit .DN é desenergizado.
não
.POS = 0
sim
não
.EM é energizado
.POS ≥ .LEN sim
não
.DN é energizado
.EM é energizado
.DN é energizado
Publicação 1756-RM003F-PT-P - Maio 2002
Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-23
Condição: Ação da Lógica Ladder:
entrada da condição da linha é falsa
fim
bit .EN é desenergizado.
saída da condição da linha é 
definida como falsa
.LEN < 0
sim
não
.POS < 0 sim
.EM é desenergizado.
bit .DN é desenergizado.
não
.POS = 0
sim
não
.EM é energizado
.POS ≥ .LEN sim
não
.DN é energizado
.EM é energizado
.DN é energizado
Publicação 1756-RM003F-PT-P - Maio 2002
8-24 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)
postscan A saída da condição da linha é definida como falsa.
Condição: Ação da Lógica Ladder:
entrada da condição da linha é verdadeira
fim
saída da condição da linha é 
definida como verdadeira
examinar bit .EN
.EN = 0
.EN = 1
bit .EN é energizado .LEN < 0
sim
não
.POS < 0
sim
não
bit .EM é energizado
.DN é energizadobit .EM é desenergizado.
bit .DN

Mais conteúdos dessa disciplina