Você está na página 1de 536

Controladores

Logix5000
1756-L1, -L1Mx

Manual de Referência Geral do


Conjunto de Instruções
-2

Informações Importantes Por causa da diversidade de usos de produtos descritos nesta


publicação, os responsáveis pela aplicação e usos deste equipamento
ao Usuário de controle devem certificar-se de que todas as etapas necessárias
foram seguidas 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.

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 não assume a responsabilidade (incluindo
responsabilidade por propriedade intelectual) pelo uso baseado nos
exemplos mostrados nesta publicação.

A publicação Allen-Bradley SGI-1.1, Diretrizes de Segurança para


Aplicação, Instalação e Manutenção dos Dispositivos de Controle do
Estado Sólido (disponível no escritório local da Rockwell Automation),
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 notas para chamar a sua atenção para
considerações de segurança::

Identifica informações sobre práticas ou


ATENÇÃO
circunstâncias que podem causar ferimentos ou
morte, danos patrimoniais ou perda financeira.

!
As instruções de atenção ajudam você a :

• identificar e evitar um perigo


• reconhecer as conseqüências

IMPORTANTE Identifica informações críticas para a aplicação e


compreensão bem-sucedidas do produto.

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 da ControlNet International, Ltd.

Ethernet é uma marca da Digital Equipment Corporation, Intel e Xerox Corporation.

Publicação 1756-RM003D-PT-P - Junho 2001


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

Estas instruções: Consulte:


Obtenção do Valor do Sistema (GSV) e Definição do Valor do 3-28
Sistema (SSV)
Acesso ao objeto MESSAGE 3-47
Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, 4-1
MEQ, NEQ)
Tamanho em Elementos (SIZE) 7-53
Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, 8-1
FFU, LFL, LFU)
Salto para Sub-rotina (JSR) Sub-rotina (SBR) Retorno (RET) 10-4
For (FOR) 11-2

1 Publicação 1756-RM003D-PT-P - Junho 2001


2 Resumo das Alterações

Notas:

Publicação 1756-RM003D-PT-P - Junho 2001


Localizador de Instrução

Onde Encontrar uma 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
Instrução 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
posicionamento Logix5000 Controllers Motion Instruction Set Reference Manual,
publicação 1756-RM007

Instrução: Local: Linguagens: Instrução: Local: Linguagens:


ABL 16-7 lógica ladder BOR controle de bloco de função
processo
ABS 5-29 lógica ladder
bloco de função BRK 11-5 lógica ladder
ACB 16-10 lógica ladder BSL 8-2 lógica ladder
ACL 16-12 lógica ladder BSR 8-6 lógica ladder
ACS 13-14 lógica ladder BTD 6-10 lógica ladder
bloco de função
BTDT 6-13 bloco de função
adição 5-6 lógica ladder
bloco de função BTR (tipo MSG) 3-2 lógica ladder

AFI 10-20 lógica ladder BTW (tipo MSG) 3-2 lógica ladder

AHL 16-14 lógica ladder BXOR controle de bloco de função


processo
ALM controle de bloco de função
processo CLR 6-16 lógica ladder

AND 6-17 lógica ladder CMP 4-2 lógica ladder


bloco de função CONCAT 17-3 lógica ladder
ARD 16-17 lógica ladder COP 7-32 lógica ladder
ARL 16-20 lógica ladder COS 13-5 lógica ladder
ASN 13-11 lógica ladder bloco de função
bloco de função CPS 7-32 lógica ladder
ATN 13-16 lógica ladder CPT 5-2 lógica ladder
bloco de função
CTD 2-27 lógica ladder
AVE 7-41 lógica ladder
CTU 2-23 lógica ladder
AWA 16-24 lógica ladder
CTUD 2-31 bloco de função
AWT 16-28 lógica ladder
D2SD controle de bloco de função
BAND controle de bloco de função processo
processo
D3SD controle de bloco de função
BNOT controle de bloco de função processo
processo

1 Publicação 1756-RM003D-PT-P - Junho 2001


2 Localizador de Instrução

Instrução: Local: Linguagens: Instrução: Local: Linguagens:


DDT 12-10 lógica ladder INSERT 17-9 lógica ladder
DEDT controle de bloco de função INTG controle de bloco de função
processo processo
DEG 15-2 lógica ladder JKFF controle de bloco de função
bloco de função processo
DELETE 17-5 lógica ladder JMP 10-2 lógica ladder
DERV controle de bloco de função JSR 10-4 lógica ladder
processo
LBL 10-2 lógica ladder
DFF controle de bloco de função
processo LDL2 controle de bloco de função
processo
DIV 5-15 lógica ladder
bloco de função LDLG controle de bloco de função
processo
DTOS 18-7 lógica ladder
LEQ 4-19 lógica ladder
DTR 12-18 lógica ladder bloco de função
EQU 4-7 lógica ladder LES 4-23 lógica ladder
bloco de função bloco de função
ESEL controle de bloco de função LFL 8-22 lógica ladder
processo
LFU 8-28 lógica ladder
FAL 7-7 lógica ladder
LIM 4-27 lógica ladder
FBC 12-2 lógica ladder bloco de função
FFL 8-10 lógica ladder LN 14-2 lógica ladder
bloco de função
FFU 8-16 lógica ladder
LOG 14-4 lógica ladder
FGEN controle de bloco de função bloco de função
processo
LPF controle de bloco de função
FIND 17-7 lógica ladder processo
FLL 7-37 lógica ladder MAAT posicionamento lógica ladder
FOR 11-2 lógica ladder MAFR posicionamento lógica ladder
FRD 15-12 lógica ladder MAG posicionamento lógica ladder
bloco de função
MAH posicionamento lógica ladder
FSC 7-20 lógica ladder
MAHD posicionamento lógica ladder
GEQ 4-11 lógica ladder
bloco de função MAJ posicionamento lógica ladder
GRT 4-15 lógica ladder MAM posicionamento lógica ladder
bloco de função
MAPC posicionamento lógica ladder
GSV 3-28 lógica ladder
MAR posicionamento lógica ladder
HLL controle de bloco de função
processo MAS posicionamento lógica ladder

HPF controle de bloco de função MASD posicionamento lógica ladder


processo MASR posicionamento lógica ladder

Publicação 1756-RM003D-PT-P - Junho 2001


Localizador de Instrução 3

Instrução: Local: Linguagens: Instrução: Local: Linguagens:


MATC posicionamento lógica ladder MUX controle de bloco de função
processo
MAVE controle de bloco de função
processo MVM 6-4 lógica ladder
MAW posicionamento lógica ladder MVMT 6-7 bloco de função
MAXC controle de bloco de função NEG 5-26 lógica ladder
processo bloco de função
MCCP posicionamento lógica ladder NEQ 4-38 lógica ladder
bloco de função
MCD posicionamento lógica ladder
NOP 10-21 lógica ladder
MCR 10-15 lógica ladder
NOT 6-29 lógica ladder
MDF posicionamento lógica ladder bloco de função
MDO posicionamento lógica ladder NTCH controle de bloco de função
MDR posicionamento lógica ladder processo

MDW posicionamento lógica ladder ONS 1-8 lógica ladder

MEQ 4-33 lógica ladder OR 6-21 lógica ladder


bloco de função bloco de função

MGPS posicionamento lógica ladder OSF 1-13 lógica ladder

MGS posicionamento lógica ladder OSFI 1-17 bloco de função

MGSD posicionamento lógica ladder OSR 1-10 lógica ladder

MGSP posicionamento lógica ladder OSRI 1-15 bloco de função

MGSR posicionamento lógica ladder OTE 1-5 lógica ladder

MID 17-11 lógica ladder OTL 1-6 lógica ladder

MINC controle de bloco de função OTU 1-7 lógica ladder


processo PI controle de bloco de função
MOD 5-19 lógica ladder processo
bloco de função PID 12-21 lógica ladder
MOV 6-2 lógica ladder PIDE controle de bloco de função
MRAT posicionamento lógica ladder processo

MRHD posicionamento lógica ladder PMUL controle de bloco de função


processo
MRP posicionamento lógica ladder
POSP controle de bloco de função
MSF posicionamento lógica ladder processo
MSG 3-2 lógica ladder RAD 15-5 lógica ladder
bloco de função
MSO posicionamento lógica ladder
RES 2-35 lógica ladder
MSTD controle de bloco de função
processo RESD controle de bloco de função
processo
MUL 5-12 lógica ladder
bloco de função RET 10-4 e 11-7 lógica ladder

Publicação 1756-RM003D-PT-P - Junho 2001


4 Localizador de Instrução

Instrução: Local: Linguagens: Instrução: Local: Linguagens:


RLIM controle de bloco de função TAN 13-8 lógica ladder
processo bloco de função
RMPS controle de bloco de função TND 10-13 lógica ladder
processo
TOD 15-8 lógica ladder
RTO 2-10 lógica ladder bloco de função
RTOR 2-20 bloco de função TOF 2-6 lógica ladder
RTOS 18-9 lógica ladder TOFR 2-17 bloco de função
SBR 10-4 lógica ladder TON 2-2 lógica ladder
SCL controle de bloco de função TONR 2-14 bloco de função
processo
TOT controle de bloco de função
SCRV controle de bloco de função processo
processo
TRN 15-15 lógica ladder
SEL controle de bloco de função bloco de função
processo
UID 10-18 lógica ladder
SETD controle de bloco de função
processo UIE 10-18 lógica ladder

SIN 13-2 lógica ladder UPDN controle de bloco de função


bloco de função processo

SIZE 7-53 lógica ladder XIC 1-1 lógica ladder

SNEG controle de bloco de função XIO 1-3 lógica ladder


processo XOR 6-25 lógica ladder
SOC controle de bloco de função bloco de função
processo XPY 14-7 lógica ladder
SQI 9-2 lógica ladder bloco de função

SQL 9-12 lógica ladder


SQO 9-7 lógica ladder
SQR 5-23 lógica ladder
bloco de função
SRT 7-45 lógica ladder
SRTP controle de bloco de função
processo
SSUM controle de bloco de função
processo
SSV 3-28 lógica ladder
STD 7-49 lógica ladder
STOD 18-3 lógica ladder
STOR 18-5 lógica ladder
SUB 5-9 lógica ladder
bloco de função

Publicação 1756-RM003D-PT-P - Junho 2001


Prefácio

Introdução Este manual é um dos diversos documentos de instrução baseado em Logix.

Tarefa/Meta: Documentos:
Programação do controlador para aplicações Manual de Referência Geral do Conjunto de Instruções dos Controladores Logix5000,
sequenciais publicação 1756-RM003
Você está aqui

Programação do controlador para aplicações Manual de Referência do Conjunto de Instruções dos Inversores e Controle de
de processo ou inversores Processo , publicação 1756-RM006
Programação do controlador para aplicações Logix5000 Controllers Motion Instruction Set Reference Manual,
de posicionamento publicação 1756-RM007
Importação de um arquivo de texto ou tags Manual de Referência de Exportação/Importação do Controlador Logix5000,
em um projeto publicação 1756-6.8.4PT
Exportação de um projeto ou tags para um
arquivo texto
Conversão de uma aplicação CLP-5 ou SLC Manual de Referência do Controlador Logix5550 para Conversão da Lógica do CLP-5
500 para uma aplicação Logix5000 ou SLC500 para a Lógica do Logix5000, publicação 1756-6.8.5PT

Quem Deve Utilizar este Este documento fornece ao programador detalhes sobre cada
instrução disponível para um controlador baseado em Logix. Você já
Manual deve estar familiarizado de 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. Os programadores experientes podem
consultar as informações sobre as instruções para verificar os detalhes.

1 Publicação 1756-RM003D-PT-P - Junho 2001


2 Prefácio

Objetivo do Manual Este manual fornece uma descrição de cada instrução neste formato.

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 de Lógica lista todos os operandos da instrução se esta estiver disponível na Lógica Ladder
Ladder exibe um instrução inicial

Operandos do bloco de lista todos os operandos da instrução se esta estiver disponível no bloco de função
função exibe um bloco de função inicial

Os pinos mostrados no bloco de função inicial são somente pinos básicos. A tabela de
operandos lista todos os pinos possíveis para um bloco de função.
Estrutura da insturçã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 de Lógica Ladder Se disponível na Lógica Ladder, define os detalhes de como a instrução opera durante:
• pré-varredura
• entrada da condição da linha for falsa
• entrada da condição da linha for verdadeira
Exemplo de Lógica Ladder Se disponível na Lógica Ladder, fornece pelo menos um exemplo de programação
inclui uma descrição explicando cada exemplo
Execução do bloco de Se disponível no bloco de função, define os detalhes de como a instrução opera durante:
função • pré-varredura
• primeira varredura da instrução
• primeira operação da instrução
• EnableIn é falso
• EnableIn é verdadeiro
Exemplo do bloco de Se disponível no bloco de função, fornece pelo menos um exemplo de programação
função inclui uma descrição explicando cada exemplo

Os ícones a seguir ajudam a identificar as informações específicas da


linguagem:

Este ícone: Indica esta linguagem de


programação:
Lógica Ladder

bloco de função

Publicação 1756-RM003D-PT-P - Junho 2001


Prefácio 3

Informações Comuns para O conjunto de instruções do Logix5000 possui alguns atributos comuns:
Todas as Instruções Para obter esta Consulte este apêndice
informação:
atributos comuns apêndice Atributos Comuns define:
• flags de status aritmético:
• tipos de dados
• palavras-chaves
atributos do bloco de apêndice Atributos de Bloco de Função define:
função • controle do programa e operador
• modos de temporização

Convenções e Termos Energizar e desenergizar (zerar)


Relacionados
Este manual usa energizar e desenergizar para definir o status de bits
(booleanos) e valores (não booleanos):

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

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 usam o mesmo tipo de dado ó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.

instrução de entrada instrução de saída

condição da entrada da linha condição da saída da linha

Publicação 1756-RM003D-PT-P - Junho 2001


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
avaliar em verdadeira, a condição da saída da linha é verdadeira; se a
instrução avaliar em falsa, a condição da saída da linha é falsa.

O controlador também efetua a pré-varredura das instruções. A


pré-varredura é uma varredura especial de todas as rotinas no
controlador. O controlador efetua a varredura de todas as rotinas e
sub-rotinas principais durante a pré-varredura, 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 a pré-varredura de instruções de Lógica
Ladder para resetar as E/S não retentivas e os valores internos.

Durante a pré-varredura, 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 pré-varredura:

• Passagem de modo de Programa para Operação


• Entrada automática no modo de Operação de uma condição de
energização.

A pré-varredura 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 de Operação.

Estados do bloco de função

O controlador avalia as instruções do bloco de função baseado no


estado de diferentes condições.

Condição Possível: Descrição:


pré-varredura A pré-varredura para as rotinas do bloco de função é 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ção é
desenergizada durante a pré-varredura.
primeira varredura da A primeira varredura da instrução se refere à primeira vez que uma instrução é executada
instrução após pré-varredura. O controlador usa a primeira varredura da instrução para ler as
entradas em corrente e determinar o estado apropriado em que se deve estar.
primeira operação da A primeira operação da instrução se refere à primeira vez que a instrução executa com uma
instrução 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ção após o descarregamento inicial.

Publicação 1756-RM003D-PT-P - Junho 2001


Prefácio 5

Toda instrução do bloco de função também inclui os parâmetros


EnableIn e EnableOut:

• as instruções do bloco de função executam normalmente


quando o EnableIn é energizado.

• Quando o EnableIn é desenergizado, a instrução do bloco de


função executa a lógica da pré-varredura, a lógica da
pós-varredura ou apenas pula a execução do algoritmo normal.

• O EnableOut espelha o EnableIn, porém, se a execução do


bloco de função detecta uma condição de overflow, o
EnableOut também é desenergizado.

• a execução do bloco de função reinicia onde parou quando o


EnableIn passa de desenergizado para energizado. Porém
existem algumas instruções de bloco de função que especificam
funcionalidade especial, como re-inicialização, quando o
EnableIn passa de desenergizado para energizado. Para
instruções do bloco de função 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ção, 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-RM003D-PT-P - Junho 2001


6 Prefácio

Notas:

Publicação 1756-RM003D-PT-P - Junho 2001


Sumário

Informações Importantes ao Usuário . . . . . . . . . . . . . . . . .. . 2


Resumo das Alterações Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 1
Informações Atualizadas . . . . . . . . . . . . . . . . . . . . . . . . . .. . 1
Localizador de Instrução Onde Encontrar uma Instrução . . . . . . . . . . . . . . . . . . . . .. . 1
Prefácio Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 1
Quem Deve Utilizar este Manual . . . . . . . . . . . . . . . . . . . .. . 1
Objetivo do Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 2
Informações Comuns para Todas as Instruções. . . . . . . . . .. . 3
Convenções e Termos Relacionados . . . . . . . . . . . . . . . . .. . 3
Energizar e desenergizar (zerar) . . . . . . . . . . . . . . . . . .. . 3
Condição de linha de Lógica Ladder . . . . . . . . . . . . . . .. . 4
Estados do bloco de função . . . . . . . . . . . . . . . . . . . . .. . 5

Capítulo 1
Instruções Binárias Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1
(XIC, XIO, OTE, OTL, OTU, ONS, Examinar Se Desenergizado (XIC) . . . . . . . . . . . . . . . . . . . 1-1
OSR, OSF, OSRI, OSFI) Examinar Se Energizado (XIO) . . . . . . . . . . . . . . . . . . . . . 1-3
Energizar Saída
(OTE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-5
Energizar Saída com Retenção (OTL) . . . . . . . . . . . . . . . . . 1-6
Desenergizar Saída com Retenção (OTU) . . . . . . . . . . . . . . 1-7
Monoestável (ONS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-8
Monoestável com Borda de Subida (OSR) . . . . . . . . . . . . . 1-10
Monoestável com Borda de Descida (OSF). . . . . . . . . . . . . 1-13
Monoestável com Borda de Subida com Entrada (OSRI) . . . 1-15
Monoestável com Borda de Descida com Entrada (OSFI) . . 1-17

Capítulo 2
Instruções do Temporizador e do Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1
Contador Temporizador de Energização (TON). . . . . . . . . . . . . . . . . 2-2
(TON, TOF, RTO, TONR, TOFR, Temporizador de Desenergização (TOF) . . . . . . . . . . . . . . 2-6
Temporizador Retentivo Ligado (RTO) . . . . . . . . . . . . . . . . 2-10
RTOR, CTU, CTD, CTUD, RES)
Temporizador de Energização com Reset (TONR) . . . . . . . 2-14
Temporizador de Desenergização com Reset (TOFR) . . . . . 2-17
Temporizador Retentivo Energizado com Reset (RTOR) . . . 2-20
Contagem Crescente (CTU) . . . . . . . . . . . . . . . . . . . . . . . . 2-23
Contagem Decrescente (CTD) . . . . . . . . . . . . . . . . . . . . . . 2-27
Contagem Crescente/Decrescente (CTUD) . . . . . . . . . . . . . 2-31
Reset (RES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-35

Capítulo 3
Instruções de Entrada/Saída Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1
(MSG, GSV, SSV) Mensagem (MSG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2
Códigos de Erro MSG . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-7
Códigos de erro do ControlLogix (CIP) . . . . . . . . . . . . . 3-7

i Publicação 1756-RM003D-PT-P - Junho 2001


ii Sumário

Códigos de erros estendidos do ControlLogix . . . . . . . . 3-8


Códigos de erro do CLP e SLC (.ERR) . . . . . . . . . . . . . . 3-9
Códigos de erro estendiddos do CLP e SLC (.EXERR) . . 3-10
Códigos de erro de Block-Transfer . . . . . . . . . . . . . . . . 3-11
Códigos de erro do Logix5550 . . . . . . . . . . . . . . . . . . . 3-12
Códigos de erros estendidos do Logix5550 . . . . . . . . . . 3-12
Especificação dos Detalhes de Configuração
(Guia Configuration) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-13
Especificação de Mensagens CIP. . . . . . . . . . . . . . . . . . 3-14
Uso de mensagens CIP genéricas para resetar os
módulos de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-15
Especificação das mensagens do CLP-5. . . . . . . . . . . . . 3-16
Especificação de Mensagens do SLC . . . . . . . . . . . . . . . 3-17
Especificação das mensagens de block-transfer . . . . . . . 3-18
Especificação das mensagens do CLP-3. . . . . . . . . . . . . 3-19
Especificação das mensagens do CLP-2. . . . . . . . . . . . . 3-20
Exemplos de Configuração MSG . . . . . . . . . . . . . . . . . . . . 3-21
Especificações dos Detalhes de Comunicação (Guia
Communication) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-22
Especificação de um percurso de conexão . . . . . . . . . . 3-22
Especificação de um método de comunicação: . . . . . . . 3-26
Seleção de uma opção de cache: . . . . . . . . . . . . . . . . . 3-27
Obtenção do Valor do Sistema (GSV) e Definição
do Valor do Sistema (SSV) . . . . . . . . . . . . . . . . . . . . . . . . . 3-28
Objetos GSV/SSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-30
Acesso ao objeto AXIS (Eixo) . . . . . . . . . . . . . . . . . . . . 3-31
Acesso ao objeto CONTROLLER . . . . . . . . . . . . . . . . . 3-39
Acesso ao objeto CONTROLLERDEVICE . . . . . . . . . . . . 3-39
Acesso ao objeto CST. . . . . . . . . . . . . . . . . . . . . . . . . . 3-41
Acesso ao objeto DF1 . . . . . . . . . . . . . . . . . . . . . . . . . 3-42
Acesso ao objeto FAULTLOG . . . . . . . . . . . . . . . . . . . . 3-45
Acesso ao objeto MESSAGE . . . . . . . . . . . . . . . . . . . . . 3-46
Acesso ao objeto MODULE . . . . . . . . . . . . . . . . . . . . . 3-48
Acesso ao objeto MOTIONGROUP . . . . . . . . . . . . . . . 3-49
Acesso ao objeto PROGRAM . . . . . . . . . . . . . . . . . . . . 3-50
Acesso ao objeto ROUTINE . . . . . . . . . . . . . . . . . . . . . 3-51
Acesso ao objeto SERIALPORT . . . . . . . . . . . . . . . . . . . 3-52
Acesso ao objeto TASK . . . . . . . . . . . . . . . . . . . . . . . . 3-54
Acesso ao objeto WALLCLOCKTIME . . . . . . . . . . . . . . . 3-55
Exemplo de Programação GSV/SSV . . . . . . . . . . . . . . . . . . 3-56
Obtenção de informações de falha . . . . . . . . . . . . . . . . 3-56
Configuração de flags de habilitação e desabilitação . . . 3-57

Capítulo 4
Instruções de Comparação Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1
(CMP, EQU, GEQ, GRT, LEQ, LES, Comparação (CMP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2
LIM, MEQ, NEQ) Expressões CMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4
Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4
Formatação de expressões . . . . . . . . . . . . . . . . . . . . . . 4-6

Publicação 1756-RM003D-PT-P - Junho 2001


Sumário iii

Determinação da seqüência de operação . . . . . . . . . . . 4-6


Igual a (EQU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-7
Maior ou Igual a (GEQ). . . . . . . . . . . . . . . . . . . . . . . . . . . 4-11
Maior que (GRT). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-15
Menor ou Igual a (LEQ) . . . . . . . . . . . . . . . . . . . . . . . . . . 4-19
Menor Que (LES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-23
Limite (LIM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-27
Máscara Igual a (MEQ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-33
Inserção de um valor de máscara imediato . . . . . . . . . . 4-34
Diferente de (NEQ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-38

Capítulo 5
Instruções Matemáticas/Cálculo Introdução . . . . . . . . . . . . . . . .......... . . . . . . . . . . . 5-1
(CPT, ADD, SUB, MUL, DIV, MOD, Cálculo (CPT) . . . . . . . . . . . . . .......... . . . . . . . . . . . 5-2
SQR, NEG, ABS) Operadores válidos . . . . . . .......... . . . . . . . . . . . 5-4
Formatação de expressões . .......... . . . . . . . . . . . 5-4
Determinação da seqüência de operação . . . . . . . . . . . 5-5
Adição (ADD) . . . . . . . . . . . . . .......... . . . . . . . . . . . 5-6
Subtração (SUB) . . . . . . . . . . . .......... . . . . . . . . . . . 5-9
Multiplicação (MUL) . . . . . . . . .......... . . . . . . . . . . . 5-12
Divisão (DIV) . . . . . . . . . . . . . .......... . . . . . . . . . . . 5-15
Módulo (MOD) . . . . . . . . . . . . .......... . . . . . . . . . . . 5-19
Raiz Quadrada (SQR) . . . . . . . .......... . . . . . . . . . . . 5-23
Negação (NEG). . . . . . . . . . . . .......... . . . . . . . . . . . 5-26
Valor Absoluto (ABS) . . . . . . . .......... . . . . . . . . . . . 5-29

Capítulo 6
Instruções de Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1
Movimentação/Lógica Movimentação (MOV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-2
(MOV, MVM, BTD, MVMT, BTDT, Movimentação Mascarada (MVM). . . . . . . . . . . . . . . . . . . . 6-4
Inserção de um valor de máscara imediato . . . . . . . . . . 6-5
CLR, AND, OR, XOR, NOT)
Movimentação Mascarada com Target (MVMT). . . . . . . . . . 6-7
Distribuição do Campo do Bit (BTD) . . . . . . . . . . . . . . . . . 6-10
Distribuição do Campo do Bit com Target (BTDT) . . . . . . . 6-13
Zeramento (CLR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-16
Bitwise AND (AND) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-17
Bitwise OR (OR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-21
Bitwise Exclusive OR (XOR) . . . . . . . . . . . . . . . . . . . . . . . 6-25
Bitwise NOT (NOT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-29

Capítulo 7
Instruções Array Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-1
(File/Miscellaneous) Seleção do Modo de Operação . . . . . . . . . . . . . . . . . . . . . 7-2
(FAL, FSC, COP, CPS, FLL, AVE, Modo All (Todos) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-2
Modo Numerical (numérico) . . . . . . . . . . . . . . . . . . . . 7-3
SRT, STD, SIZE)
Modo Incremental (incremento) . . . . . . . . . . . . . . . . . 7-5
Arquivamento Aritmético e Lógico (FAL) . . . . . . . . . . . . . . 7-7
Expressões FAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-18
Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-18

Publicação 1756-RM003D-PT-P - Junho 2001


iv Sumário

Expressões de formatação . . . . . . . . . . . . . . . . . . . . . . 7-19


Determinação da seqüência de operação . . . . . . . . . . . 7-19
Comparação e Busca de Arquivo (FSC) . . . . . . . . . . . . . . . 7-20
Expressões FSC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-29
Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-30
Formatação das expressões . . . . . . . . . . . . . . . . . . . . . 7-30
Determinação da seqüência de operação . . . . . . . . . . . 7-31
Cópia de Arquivo (COP) Cópia Síncrona de Arquivo (CPS). 7-32
Preenchimento de Arquivo (FLL) . . . . . . . . . . . . . . . . . . . . 7-37
Média de Arquivo (AVE) . . . . . . . . . . . . . . . . . . . . . . . . . . 7-41
Classificação de Arquivo (SRT) . . . . . . . . . . . . . . . . . . . . . 7-45
Desvio Padrão do Arquivo (STD) . . . . . . . . . . . . . . . . . . . 7-49
Tamanho em Elementos (SIZE) . . . . . . . . . . . . . . . . . . . . . 7-53

Capítulo 8
Instruções de Matriz Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-1
(Arquivo)/Deslocamento Deslocamento de Bit para a Esquerda (BSL). . . . . . . . . . . . 8-2
(BSL, BSR, FFL, FFU, LFL, LFU) Deslocamento de Bit para a Direita (BSR) . . . . . . . . . . . . . 8-6
Carga FIFO (FFL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-10
Descarga FIFO (FFU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-16
Carga LIFO (LFL). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-22
Descarga LIFO (LFU). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-28

Capítulo 9
Instruções de Seqüenciador Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-1
(SQI, SQO, SQL) Entrada do Sequenciador (SQI) . . . . . . . . . . . . . . . . . . . . . 9-2
Inserção de um valor de máscara imediato . . . . . . . . . . 9-3
Utilização de SQI sem SQO . . . . . . . . . . . . . . . . . . . . . 9-6
Saída do Sequenciador (SQO) . . . . . . . . . . . . . . . . . . . . . . 9-7
Inserção de um valor de máscara imediato . . . . . . . . . . 9-8
Utilização de SQI com SQO . . . . . . . . . . . . . . . . . . . . . 9-11
Reset da posição de SQO . . . . . . . . . . . . . . . . . . . . . . . 9-11
Carga do Sequenciador (SQL) . . . . . . . . . . . . . . . . . . . . . . 9-12

Capítulo 10
Instruções de Controle de Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-1
Programa Salto para Label (JMP)
(JMP, LBL, JSR, RET, SBR, TND, Label (LBL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-2
Salto para Sub-rotina (JSR)
MCR, UID, UIE, AFI, NOP)
Sub-rotina (SBR)
Retorno (RET). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-4
Fim Temporário (TND) . . . . . . . . . . . . . . . . . . . . . . . . . . 10-13
Rearme do Controle Mestre (MCR). . . . . . . . . . . . . . . . . . 10-15
Desabilitação da Interrupção pelo Usuário (UID)
Habilitação da Interrupção pelo Usuário (UIE) . . . . . . . . . 10-18
Instrução Sempre Falsa (AFI) . . . . . . . . . . . . . . . . . . . . . . 10-20
Sem Operação (NOP) . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-21

Publicação 1756-RM003D-PT-P - Junho 2001


Sumário v

Capítulo 11
Instruções For/Break Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-1
(FOR, BRK, RET) For (FOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-2
Break (BRK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-5
Retorno (RET). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-7

Capítulo 12
Instruções Especiais Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-1
(FBC, DDT, DTR, PID) Comparação de Bit de Arquivo (FBC) . . . . . . . . . . . . . . . . 12-2
Seleção do modo de busca. . . . . . . . . . . . . . . . . . . . . . 12-4
Detecção de Diagnóstico (DDT) . . . . . . . . . . . . . . . . . . . 12-10
Seleção do modo de busca. . . . . . . . . . . . . . . . . . . . . 12-12
Dados Transicionais (DTR) . . . . . . . . . . . . . . . . . . . . . . . 12-18
Inserção de uma valor de máscara imediato . . . . . . . . 12-19
Proporcional, Integral e Derivativo (PID) . . . . . . . . . . . . . 12-21
Configuração de uma Instrução PID. . . . . . . . . . . . . . . . . 12-26
Especificação do ajuste . . . . . . . . . . . . . . . . . . . . . . . 12-27
Especificação da configuração . . . . . . . . . . . . . . . . . . 12-27
Especificação de alarmes . . . . . . . . . . . . . . . . . . . . . . 12-28
Especificação de conversão de escala . . . . . . . . . . . . . 12-29
Utilização das Instruções PID. . . . . . . . . . . . . . . . . . . . . . 12-29
Windup anti-reset e transferência ininterrupta de
manual para automático . . . . . . . . . . . . . . . . . . . . . . . 12-31
Temporização da instrução PID . . . . . . . . . . . . . . . . . 12-32
Reinicialização ininterrupta. . . . . . . . . . . . . . . . . . . . . 12-35
Polarização derivativa . . . . . . . . . . . . . . . . . . . . . . . . 12-36
Configuração da zona morta. . . . . . . . . . . . . . . . . . . . 12-37
Uso da limitação de saída. . . . . . . . . . . . . . . . . . . . . . 12-37
Feedforward ou polarização da saída (bias) . . . . . . . . 12-38
Malhas em cascata . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-38
Controle de um índice . . . . . . . . . . . . . . . . . . . . . . . . 12-38
Teoria PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-40
processo PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-40
processo PID com malhas mestre/escravo. . . . . . . . . . 12-40

Capítulo 13
Instruções Trigonométricas Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-1
(SIN, COS, TAN, ASN, ACS, ATN) Seno (SIN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-2
Co-seno (COS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-5
Tangente (TAN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-8
Arco Seno (ASN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-11
Arco Co-seno (ACS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-14
Arco Tangente (ATN) . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-16

Capítulo 14
Instruções Matemáticas Introdução . . . . . . . . . . ....... . . . . . . . . . . . . . . . . . . . 14-1
Avançadas Log Natural (LN) . . . . . . ....... . . . . . . . . . . . . . . . . . . . 14-2
(LN, LOG, XPY) Base Log de 10 (LOG). . ....... . . . . . . . . . . . . . . . . . . . 14-4
X Elevado à Potência de Y (XPY) . . . . . . . . . . . . . . . . . . . 14-7

Publicação 1756-RM003D-PT-P - Junho 2001


vi Sumário

Capítulo 15
Instruções de Conversão Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-1
Matemática Graus (DEG). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-2
(DEG, RAD, TOD, FRD, TRN) Radianos (RAD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-5
Conversão para BCD (TOD) . . . . . . . . . . . . . . . . . . . . . . . 15-8
Conversão para Inteiro (FRD) . . . . . . . . . . . . . . . . . . . . . 15-12
Truncagem (TRN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-15

Capítulo 16
Instruções de Porta Serial ASCII Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-1
(ABL, ACB, ACL, AHL, ARD, ARL, Execução da Instrução . . . . . . . . . . . . . . . . . . . . . . . . . 16-2
AWA, AWT) Códigos de Erro ASCII . . . . . . . . . . . . . . . . . . . . . . . . . 16-5
Tipos de String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-6
Teste ASCII Para Linha do Buffer (ABL) . . . . . . . . . . . . . . . 16-7
Caracteres ASCII no Buffer (ACB) . . . . . . . . . . . . . . . . . . 16-10
Remoção de Buffer e da Fila ASCII (ACL). . . . . . . . . . . . . 16-12
Linhas ASCII Handshake (AHL) . . . . . . . . . . . . . . . . . . . . 16-14
Leitura ASCII (ARD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-17
Linha de Leitura ASCII (ARL) . . . . . . . . . . . . . . . . . . . . . . 16-20
Anexar Leitura ASCII (AWA) . . . . . . . . . . . . . . . . . . . . . . 16-24
Escrita ASCII (AWT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-28

Capítulo 17
Instruções de String ASCII Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-1
(CONCAT, DELETE, FIND, INSERT, Tipos de String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-2
MID) Concatenação de String (CONCAT) . . . . . . . . . . . . . . . . . . 17-3
Remoção de String (DELETE) . . . . . . . . . . . . . . . . . . . . . . 17-5
Encontro de String (FIND) . . . . . . . . . . . . . . . . . . . . . . . . . 17-7
Inserção de String (INSERT). . . . . . . . . . . . . . . . . . . . . . . . 17-9
Meio do String (MID) . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-11

Capítulo 18
Instruções de Coversão ASCII Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-1
(STOD, STOR, DTOS, RTOS) Tipos de 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

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-5
DINT para SINT para INT. . . . . . . . . . . . . . . . . . . . . . . A-5
REAL para um inteiro . . . . . . . . . . . . . . . . . . . . . . . . . . A-6

Publicação 1756-RM003D-PT-P - Junho 2001


Sumário vii

Apêndice B
Atributos de Bloco de Função Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-1
Dados Retentivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-1
Ordem de Execução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-2
Respostas de Bloco de Função para Condições de Overflow B-5
Modos de Temporização . . . . . . . . . . . . . . . . . . . . . . . . . . B-5
Parâmetros comuns de instrução para modos de
temporização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-7
Características dos modos de temporização. . . . . . . . . . B-9
Controle de Programa/pelo Operador . . . . . . . . . . . . . . . B-10
Index

Publicação 1756-RM003D-PT-P - Junho 2001


viii Sumário

Notas:

Publicação 1756-RM003D-PT-P - Junho 2001


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 relé) para monitorar e controlar o


status dos bits.

Se você quiser: Use esta instrução: Consulte


página:
habilitar as saídas quando o bit estiver energizado XIC 1-1
habilitar as saídas quando o bit for desenergizado XIO 1-3
energizar o bit OTE 1-5
energizar um bit (retentivo) OTL 1-6
desenergizar um bit (retentivo) OTU 1-7
energizar as saídas para uma varredura cada vez ONS 1-8
que uma linha se torna verdadeira
energizar o bit para uma varredura cada vez que OSR 1-10
uma linha se torna verdadeira
energizar o bit para uma varredura cada vez que OSF 1-13
uma linha se torna falsa
energizar um bit para uma varredura toda vez que OSRI 1-15
o bit de entrada for energizado no bloco de função
energizar um bit para uma varredura toda vez que OSFI 1-17
o bit de entrada for desenergizado no bloco da
função

Examinar Se Linguagens Disponíveis:

Desenergizado (XIC)
Lógica Ladder

A instrução XIC examina os dados binários para ver se estão


energizados.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
dados BOOL tag bit para ser testado
binários

Operandos de Bloco de Esta instrução não está disponível no bloco de função.


Função:

1 Publicação 1756-RM003D-PT-P - Junho 2001


1-2 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Descrição: A instrução XIC examina os dados binários para ver se estão


energizados.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução da Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira

dado binário = 0 saída da condição da linha é


examinar dados energizada quando falsa
binários

dado binário = 1

saída da condição da linha


é energizada quando
verdadeira
fim

Exemplo de Lógica
Ladder:
exemplo 1 Se limit_switch_1 estiver energizado, isto habilitará a próxima
instrução (a saída da condição da linha é verdadeira).

exemplo 2 Se S:V estiver energizado (indica que um overflow ocorreu), isto


habilitará a próxima instrução (a saída da condição da linha é
verdadeira).

Execução do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-3

Examinar Se Energizado Linguagens Disponíveis:

(XIO)
Lógica Ladder

A instrução XIO examina os dados binários para ver se foram


desenergizados.

Operandos de Lógica
Ladder
Operando Tipo: Formato: Descrição:
dados BOOL tag bit para ser testado
binários

Operandos de Bloco de Esta instrução não está disponível no bloco de função.


Função:

Descrição: A instrução XIO examina os dados binários para ver se foram


desenergizados.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução da Lógica
Ladder :

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira

examinar dados dado binário = 0 saída da condição da linha é


binários energizada quando verdadeira

dado binário = 1

saída da condição da linha


é energizada quando falsa
fim

Publicação 1756-RM003D-PT-P - Junho 2001


1-4 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Exemplo da Lógica
Ladder :
exemplo 1 Se limit_switch_2 for desenergizado, isto habilitará a próxima
instrução (a saída da condição da linha é verdadeira).

exemplo 2 Se S:V for desenergizado (indica que nenhum overflow ocorreu),


isto habilitará a próxima instrução (a saída da condição da linha
é verdadeira).

Execução do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Energizar Saída Linguagens Disponíveis:

(OTE)
Lógica Ladder

A instrução OTE energiza ou desenergiza o dado binário.

Operandos de Lógica
Ladder :
Operando Tipo: Formato: Descrição:
dados BOOL tag bit para ser energizado ou desenergizado
binários

Operandos de Bloco de Esta instrução não está disponível no bloco de função.


Função:

Descrição: Quando a instrução OTE está habilitada, o controlador energiza o


dado binário. Quando a instrução OTE está desabilitada, o
controlador desenergiza o dado binário.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-5

Execução de Lógica
Ladder :

Condição: Ação:
pré-varredura O dado binário está desenergizado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa O dado binário está desenergizado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira O dado binário está energizado.
A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder :

Quando habilitada, a instrução OTE energiza (acende) light_1. Quando desabilitada, a instrução OTE desenergiza (apaga) light_1.

Execução do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Energizar Saída com Linguagens Disponíveis:

Retenção (OTL)
Lógica Ladder

A instrução OTL energiza (com retenção) o dado binário.

Operandos de Lógica
Ladder :
Operando Tipo: Formato: Descrição:
dados BOOL tag bit para ser energizado
binários

Operandos do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Descrição: Quando habilitada, a instrução OTL energiza o dado binário. O dado


binário permanece energizado até ser desenergizado, geralmente por
uma instrução OTU. Quando desabilitada, a instrução OTL não muda
o status do dado binário.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


1-6 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Execução de Lógica
Ladder :

Condição: Ação:
pré-varredura O dado binário não é modificado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa O dado binário não é modificado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira O dado binário está energizado.
A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder :

Quando habilitada, a instrução OTL energiza light_2. Este bit permanece energizado
até ser desenergizado, geralmente por uma instrução OTU.

Execução do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Desenergizar Saída com Linguagens Disponíveis:

Retenção (OTU)
Lógica Ladder

A instrução OTU desenergiza (com retenção) o dado binário.

Operandos de Lógica
Ladder :
Operando Tipo: Formato: Descrição:
dados BOOL tag bit para ser desenergizado
binários

Operandos do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Descrição: Quando habilitada, a instrução OTU desenergiza o dado binário.


Quando desabilitada, a instrução OTU não muda o status do
dado binário.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-7

Execução de Lógica
Ladder :

Condição: Ação:
pré-varredura O dado binário não é modificado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa O dado binário não é modificado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira O dado binário está desenergizado.
A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder :

Quando habilitada, a instrução OTU desenergizalight_2.

Execução do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Monoestável (ONS) Linguagens Disponíveis:

Lógica Ladder

A instrução ONS habilita ou desabilita o restante da linha,


dependendo do status do bit de armazenamento.

Operandos de Lógica
Ladder : Operando Tipo: Formato: Descrição:
bit de BOOL tag bit de armazenamento interno
armazenam armazena a entrada da condição da linha
ento desde a última vez que a instrução
foi executada

Operandos do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Publicação 1756-RM003D-PT-P - Junho 2001


1-8 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Descrição: Quando habilitada e o bit de armazenamento está desenergizado, a


instrução ONS habilita o restante da linha. Quando habilitada ou
quando o bit de armazenamento está energizado, a instrução ONS
desabilita o restante da linha.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica
Ladder :

Condição: Ação:
pré-varredura O bit de armazenamento está energizado para prevenir um disparo inválido durante a
primeira varredura.
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.
entrada da condição da linha for verdadeira

bit de armazenamento bit de armazenamento está


=0 energizado
examinar o bit de
saída da condição da linha é
armazenamento
energizada quando verdadeira

bit de armazenamento = 1

bit de armazenamento
permanece energizado
saída da condição da linha
é energizada quando falsa
fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-9

Exemplo de Lógica Geralmente, você antecede a instrução ONS com uma instrução de
Ladder : entrada porque realiza a varredura da instrução ONS quando a mesma
está habilitada e quando está desabilitada para que a mesma opere
corretamente. Uma vez que a instrução ONS está habilitada, a
condição de entrada de linha deve ser desenergizada ou o bit de
armazenamento deve ser desenergizado para a instrução ONS ser
habilitada novamente.

Em qualquer varredura para a qual o limit_switch_1 está desenergizado ou o storage_1 está energizado, esta linha não tem efeito. Em qualquer
varredura para a qual o limit_switch_1 está energizado e o storage_1 está desenergizado, a instrução ONS energiza o storage_1 e a instrução ADD
incrementa a soma (ADD) em 1. Durante o período em que o limit_switch_1 permanece energizado, a soma permanece no mesmo valor. O
limit_switch_1 deve ir de desenergizado para energizado novamente para que a soma seja incrementada novamente.

Execução do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Monoestável com Borda de Linguagens Disponíveis:

Subida (OSR)
Lógica Ladder

A instrução OSR energiza ou desenergiza o bit de saída, dependendo


do status do bit de armazenamento.

Operandos de Lógica
Ladder :
Operando Tipo: Formato: Descrição:
bit de BOOL tag bit de armazenamento interno
armazenam armazena a entrada da condição da linha
ento desde a última vez que a instrução
foi executada
bit de saída BOOL tag bit para ser energizado

Operandos do Bloco de Esta instrução está disponível no bloco de função como OSRI,
Função: consulte a página 1-15.

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

Publicação 1756-RM003D-PT-P - Junho 2001


1-10 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

armazenamento está energizado ou quando desabilitada, a instrução


OSR desenergiza o bit de saída

entrada da condição da

bit de armazenamento

bit de saída

a instrução é instrução é resetada durante a próxima


executada execução de varredura

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica
Ladder :

Condição: Ação:
pré-varredura O bit de armazenamento está energizado para prevenir um disparo inválido durante a
primeira varredura.
O bit de saída é desenergizado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha for 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.
entrada da condição da linha for verdadeira

bit de armazenamento está


bit de armazenamento = 0 energizado
examinar o bit de
bit de saída é energizado
armazenamento
saída da condição da linha é
energizada quando verdadeira

bit de armazenamento = 1

bit de armazenamento
permanece energizado
bit de saída é desenergizado
saída da condição da linha é
energizada quando verdadeira
fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-11

Exemplo de Lógica
Ladder :

Cada vez que limit_switch_1 vai de desenergizado para energizado, a instrução OSR energiza o output_bit_1 e a instrução ADD incrementa a soma
em 5. Durante o período em que olimit_switch_1 permanece energizado, a soma permanece no mesmo valor. O limit_switch_1 deve ir de
desenergizado para energizado novamente para que a soma seja incrementada novamente. Você pode usar o output_bit_1 em múltiplas linhas para
disparar outras operações.

Execução do Bloco de Esta instrução está disponível no bloco de função como OSRI,
Função: consulte a página 1-15.

Monoestável com Borda de Linguagens Disponíveis:

Descida (OSF)
Lógica Ladder

A instrução OSF energiza ou remove o bit de saída, dependendo do


status do bit de armazenamento.

Operandos de Lógica
Ladder :
Operando Tipo: Formato: Descrição:
bit de BOOL tag bit de armazenamento interno
armazenam armazena a entrada da condição da linha
ento desde a última vez que a instrução
foi executada
bit de saída BOOL tag bit para ser energizado

Operandos do Bloco de Esta instrução está disponível no bloco de função como OSFI,
Função: consulte a página 1-17.

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

Publicação 1756-RM003D-PT-P - Junho 2001


1-12 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

armazenamento está desenergizado, ou quando habilitada, a instrução


OSF remove o bit de saída.

entrada da

bit de

bit de saída

a instrução é instrução é resetada


executada durante a próxima
execução de varredura

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica
Ladder :

Condição: Ação:
pré-varredura O bit de armazenamento é desenergizado para prevenir um disparo inválido durante a
primeira varredura.
O bit de saída é desenergizado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa

bit de
bit de armazenamento
armazenamento = 0
permanece desenergizado
examinar o bit de bit de saída é desenergizado
armazenamento saída da condição da linha é
energizada quando falsa

bit de armazenamento = 1

bit de armazenamento é
desenergizado
bit de saída é energizado
saída da condição da linha é
energizada quando falsa
fim

entrada da condição da linha for verdadeira O bit de armazenamento é energizado.


O bit de saída é desenergizado.
A saída da condição da linha está definida como verdadeira.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-13

Exemplo de Lógica
Ladder :

Cada vez que o limit_switch_1 vai de energizado para desenergizado, a instrução OSF energiza o output_bit_2 e a instrução ADD incrementa a soma
em 5. Durante o período que limit_switch_1 permanece desenergizado, a soma permanece no mesmo valor. O limit_switch_1 deve ir de energizado
para desenergizado novamente para que a soma seja incrementada novamente. Você pode usar o output_bit_2 em linhas múltiplas para disparar
outras operações.

Execução do Bloco de Esta instrução está disponível no bloco de função como OSFI,
Função: consulte a página 1-17.

Monoestável com Borda de Linguagens Disponíveis:

Subida com Entrada (OSRI)


Bloco de Função

A instrução OSRI energiza o bit de saída para um ciclo de execução


quando o bit de entrada passa de desenergizado para energizado.

Operandos de Lógica Esta instrução está disponível em lógica ladder como OSR, consulte a
Ladder : página 1-10.

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag de bloco FBD_ONESHOT estrutura Estrutura OSRI

Publicação 1756-RM003D-PT-P - Junho 2001


1-14 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é energizado
InputBit BOOL Bit de entrada. Isto é equivalente à condição de linha para a instrução OSR de lógica ladder .
o valor inicial é desenergizado

Parâmetros de saída

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

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-15

Descrição: Quando o InputBit é energizado e o InputBitn-1 é desenergizado, a


instrução OSRI energiza o OutputBit. Quando o InputBitn-1 é
energizado ou quando o bit de entrada é desenergizado, a instrução
OSRI desenergiza o OutputBit.

InputBit

InputBitn-1

OutputBit

a instrução é instrução é resetada durante a próxima


40048
executada execução de varredura

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica Esta instrução está disponível em lógica ladder como OSR, consulte a
Ladder : página 1-10.

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeiro a instrução efetua a varredura InputBit n-1 é energizado.
primeiro a instrução efetua a operação InputBit n-1 é energizado.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado Em uma transição de desenergizado para energizado do EnableIn, a instrução energiza o
InputBit n-1.
A instrução é executada.
EnableOut é energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


1-16 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Exemplo do Bloco de
Função:

Quando limit_switch1 vai de desenergizado para energizado, a instrução OSRI energiza o OutputBit para uma varredura. Quando o OutputBit
é energizado, ele habilita a instrução ADD para incrementar o valor em SourceB pelo valor em SourceA.

Monoestável com Borda de Linguagens Disponíveis:

Descida com Entrada (OSFI)


Bloco de Função

A instrução OSFI energiza OutputBit para um ciclo de execução


quando o InputBit passa de energizado para desenergizado.

Operandos de Lógica Esta instrução está disponível na lógica ladder como OSF, consulte a
Ladder : página 1-13.

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag de bloco FBD_ONESHOT estrutura Estrutura OSFI

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é energizado
InputBit BOOL Bit de entrada. Isto é equivalente à condição de linha para a instrução OSF de lógica ladder
o valor inicial é desenergizado

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-17

Parâmetros de saída

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

Descrição: Quando o InputBit é desenergizado e o InputBit n-1 é energizado, a


instrução OSFI energiza o OutputBit. Quando o InputBit n-1 é
desenergizado ou quando o InputBit é energizado, a instrução OSFI
desenergiza o bit de saída.

InputBit

InputBit n-1

OutputBit 40047

a instrução é a instrução é resetada durante a próxima


executada execução de varredura

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica Esta instrução está disponível na lógica ladder como OSF, consulte a
Ladder : página 1-13.

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeiro a instrução efetua a varredura InputBit n-1 é desenergizado.
primeiro a instrução efetua a operação InputBit n-1 é desenergizado.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado Em uma transição de desenergizado para energizado do EnableIn, a instrução
desenergiza o InputBit t n-1.
A instrução é executada.
EnableOut é energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


1-18 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI)

Exemplo do Bloco de
Função:

Quando o limit_switch1 vai de energizado para desenergizado, a instrução OSFI energiza o OutputBit para uma varredura. Quando o OutputBit é
energizado, ele habilita a instrução ADD para incrementar o valor em SourceB pelo valor em SourceA.

Publicação 1756-RM003D-PT-P - Junho 2001


Capítulo 2

Instruções do Temporizador e do Contador


(TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Introdução Operações de controle de temporizador e contador baseado no tempo


ou número de eventos.

Se você quiser: Use esta instrução: Consulte


página:
cronometrar em quanto tempo o TON 2-2
temporizador é habilitado
cronometrar em quanto tempo um TOF 2-6
temporizador é desabilitado
acumular tempo RTO 2-10
determinar por quanto tempo o temporizador TONR 2-14
é habilitado com um reset incorporado ao
bloco de função
determinar por quanto tempo um TOFR 2-17
temporizador é desabilitado com um reset
incorporado ao bloco de função
acumular tempo com o reset incorporado ao RTOR 2-20
bloco de função
realizar uma contagem crescente CTU 2-23
realizar um contagem decrescente CTD 2-27
realizar uma contagem crescente e CTUD 2-31
decrescente no bloco de função
resetar um temporizador ou contador RES 2-35

A base de tempo para todos os temporizadores é 1 ms.

1 Publicação 1756-RM003D-PT-P - Junho 2001


2-2 Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Temporizador de Linguagens Disponíveis:

Energização (TON)
Lógica Ladder

A instrução TON é um temporizador não retentivo que acumula


tempo quando a instrução é habilitada (entrada da condição da linha
é verdadeira).

Operandos de Lógica
Ladder :
Operando Tipo: Formato: Descrição:
Temporizado TIMER tag estrutura do temporizador
r
Preset DINT imediato Quanto tempo para retardar (tempo
acumulado)
Accum DINT imediato totalizar os ms que o temporizador contou
valor inicial é normalmente 0

Estrutura:

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 andamento.
.DN BOOL O bit executado está definido quando .ACC ≥ .PRE.
.PRE DINT O valor pré-selecionado especifica o valor (unidades de 1 ms) que o acumulador deve atingir
antes da instrução energizar o bit .DN.
.ACC DINT O valor acumulado especifica a quantidade de milissegundos que transcorreram desde o
momento em que a instrução TON foi habilitada.

Operandos do Bloco de Esta instrução está disponível no bloco de função como TONR,
Função: consulte a página 2-14.

Descrição: Quando habilitada, a instrução TON acumula tempo até que:


• a instrução TON seja desabilitada
• o .ACC ≥ .PRE

A base de tempo é sempre 1 ms. Por exemplo, para um temporizador


de 2 segundos, entre com 2000 para o valor .PRE.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-3

Quando a instrução TON é desabilitada, o valor .ACC é


desenergizado.

entrada da condição da linha

bit habilitado do temporizador (.EN)

bit de temporização do temporizador (.TT)

bit executado do temporizador (.DN)


em
atraso
valor pré-programado
temporizador não
atingiu o valor .PRE
valor acumulado do temporizador 0 16649

Flags de Status Aritmético: não afetados

Condições de Falha:

Uma falha grave ocorrerá se: Tipo de falha: Código de


falha:
.PRE < 0 4 34
.ACC < 0 4 34

Publicação 1756-RM003D-PT-P - Junho 2001


2-4 Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Execução da Lógica
Ladder :

Condição: Ação:
pré-varredura O bit .EN é desenergizado.
O bit .TT é desenergizado.
O bit .DN é desenergizado.
O valor .ACC é desenergizado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa O bit .EN é desenergizado.
O bit .TT é desenergizado.
O bit .DN é desenergizado.
O valor .ACC é desenergizado.
A saída da condição da linha é definida como falsa.

entrada da condição da linha for verdadeira

bit .DN = 1
examinar bit .DN

bit .DN = 0

bit .EN é energizado


bit .EN = 0 bit .TT é energizado
examinar bit .EN
last_time = current_time

bit .EN = 1

bit .TT é energizado .ACC ≥ .PRE


examinar .ACC
.ACC = .ACC + (current_time - last_time)
last_time = current_time

.ACC < .PRE

.DN é energizado
bit .TT é desenergizado
bit .EN é energizado
valor .ACC não
renova

sim saída da condição da linha é


definida como verdadeira

.ACC = 2.147.483.647
fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-5

Exemplo de Lógica
Ladder :

Quando o limit_switch_1 é energizado, olight_2 fica aceso durante 180 ms (o timer_1 está cronometrando). Quando o timer_1.acc atinge 180, o
light_2 desenergiza e o light_3 energiza. O Light_3 permanece energizado até que a instrução TON seja desabilitada. Se o limit_switch_1 for
desenergizado enquanto otimer_1 está cronometrando, o light_2 desenergiza.

Execução do Bloco de Esta instrução está disponível no bloco de função como TONR,
Função: consulte a página 2-14.

Publicação 1756-RM003D-PT-P - Junho 2001


2-6 Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Temporizador de Linguagens Disponíveis:

Desenergização (TOF)
Lógica Ladder

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

Operandos de Lógica
Ladder :
Operando Tipo: Formato: Descrição:
Temporizador TIMER tag estrutura do temporizador
Preset DINT imediato Quanto tempo para retardar (tempo
acumulado)
Accum DINT imediato totalizar os ms que o temporizador contou
valor inicial é normalmente 0

Estrutura:

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 andamento.
.DN BOOL O bit executado está definido quando .ACC ≥ .PRE.
.PRE DINT O valor pré-determinado especifica o valor (unidades de 1 ms) que o acumulado deve atingir
antes da instrução desenergizar o bit .DN.
.ACC DINT O valor acumulado especifica o número de milissegundos que transcorreram desde o
momento em que a instrução TOF foi habilitada.

Operandos do Bloco de Esta instrução está disponível no bloco de função como TOFR,
Função: consulte a página 2-17.

Descrição: Quando habilitada, a instrução TOF acumula tempo até que:


• a instrução TOF seja desabilitada
• o .ACC ≥ .PRE

A base de tempo é sempre 1 ms. Por exemplo, para um temporizador


de 2 segundos, entre com 2000 para o valor .PRE.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-7

Quando a instrução TOF é desabilitada, o valor .ACC é desenergizado.

entrada da condição da linha

bit habilitado do temporizador (.EN)

bit de temporização do temporizador (.TT)


bit executado do temporizador (.DN)
atraso na
desenergização
valor pré-programado

valor acumulado do temporizador (.ACC)


0 16650

temporizador não atingiu o valor .PRE

Flags de Status Aritmético: não afetados

Condições de Falha:

Uma falha grave ocorrerá se: Tipo de falha: Código de


falha:
.PRE < 0 4 34
.ACC < 0 4 34

Publicação 1756-RM003D-PT-P - Junho 2001


2-8 Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Execução de Lógica
Ladder :

Condição: Ação:
pré-varredura O bit .EN é desenergizado.
O bit .TT é desenergizado.
O bit .DN é desenergizado.
O valor .ACC é energizado para igualar-se ao valor .PRE.
A saída da condição da linha é definida como falsa.

entrada da condição da linha for falsa

bit .DN = 0
examinar bit .DN

bit .DN = 1

bit .EN é desenergizado.


bit .EN = 1 bit .TT é energizado
examinar bit .EN
last_time = current_time

bit .EN = 0

bit .TT é energizado .ACC ≥ .PRE


examinar .ACC
.ACC = .ACC + (current_time - last_time)
last_time = current_time

.ACC < .PRE


bit .DN é desenergizado.
bit .TT é desenergizado
bit .EN é desenergizado.

valor .ACC não


renova

sim saída de condição da linha


é definida como falsa

.ACC = 2.147.483.647

fim

entrada da condição da linha for verdadeira O bit .EN é energizado.


O bit .TT é desenergizado.
O bit .DN é energizado.
O valor .ACC é desenergizado.
A saída da condição da linha está definida como verdadeira.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-9

Exemplo de Lógica
Ladder :

Quando o limit_switch_2 é desenergizado, o light_2 fica energizado durante 180 ms (otimer_2 está cronometrando). Quando o timer_2.acc atinge
180, o light_2 desenergiza e o light_3 energiza. O Light_3 permanece energizado até que a instrução TOF seja habilitada. Se olimit_switch_2for
energizado enquanto o timer_2 está cronometrando, o light_2 desenergiza.

Execução do Bloco de Esta instrução está disponível no bloco de função como TOFR,
Função: consulte a página 2-17.

Publicação 1756-RM003D-PT-P - Junho 2001


2-10 Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Temporizador Retentivo Linguagens Disponíveis:

Ligado (RTO)
Lógica Ladder

A instrução RTO é um temporizador retentivo que acumula tempo


quando a instrução é habilitada.

Operandos de Lógica
Ladder :
Operando Tipo: Formato: Descrição:
Temporizador TIMER tag estrutura do temporizador
Preset DINT imediato Quanto tempo para retardar (tempo
acumulado)
Accum DINT imediato quantidade de ms que o temporizador
contou
valor inicial é normalmente 0

Estrutura:

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 andamento.
.DN BOOL O bit executado indica que .ACC ≥ .PRE.
.PRE DINT O valor pré-selecionado especifica o valor (unidades de 1 ms) que o acumulado deve atingir
antes da instrução energizar o bit .DN.
.ACC DINT O valor acumulado especifica o número de milissegundos que transcorreram desde o
momento em que a instrução RTO foi habilitada.

Operandos do Bloco de Esta instrução está disponível no bloco de função como RTOR,
Função: consulte a página 2-20.

Descrição: Quando habilitada, a instrução RTO acumula tempo até ser


desabilitada. Quando a instrução RTO é desabilitada, ela retém o valor
ACC. Deve-se remover o valor .ACC, tipicamente com uma instrução
RES fazendo referência à mesma estrutura TIMER.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-11

A base de tempo é sempre 1 ms. Por exemplo, para um temporizador


de 2 segundos, insira 2000 para o valor .PRE.

entrada da condição da linha

bit habilitado do temporizador (.EN)

condição da linha que controla a instrução RES

bit de temporização do temporizador (.TT)

bit executado do temporizador (.DN)

valor
pré-programado

16651
valor acumulado do temporizador (.ACC)
0
temporizador não atingiu o valor .PRE

Flags de Status Aritmético: não afetados

Condições de Falha:

Uma falha grave ocorrerá se: Tipo de falha: Código de


falha:
.PRE < 0 4 34
.ACC < 0 4 34

Publicação 1756-RM003D-PT-P - Junho 2001


2-12 Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Execução Lógica
Ladder :

Condição: Ação:
pré-varredura O bit .EN é desenergizado.
O bit .TT é desenergizado.
O bit .DN é desenergizado.
O valor .ACC não é modificado.
A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa O bit .EN é desenergizado.
O bit .TT é desenergizado.
O bit .DN não é modificado.
O valor .ACC não é modificado.
A saída da condição da linha é definida como falsa.

entrada da condição da linha for verdadeira

bit .DN = 1
examinar bit .DN

bit .DN = 0

bit .EN está energizado


bit .EN = 0 bit .TT está energizado
examinar bit .EN
last_time = current_time

bit .EN = 1

.ACC ≥ .PRE
bit .TT está energizado examinar .ACC
.ACC = .ACC + (current_time - last_time)
last_time = current_time

.ACC < .PRE


.DN é energizado
bit .TT é desenergizado
bit .EN está energizado

valor .ACC não


renova

sim saída da condição da linha é


definida como verdadeira

.ACC = 2.147.483.647
fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-13

Exemplo de Lógica
Ladder :

Quando o limit_switch_1 é energizado, o light_1 fica ligado durante 180 ms (o timer_2 está cronometrando). Quando o timer_3.acc atinge 180, o
light_1 apaga e o light_2 acende. O Light_2 permanece até que o timer_3 seja resetado. Se o light_switch_1 for desenergizado enquanto o timer_3
está cronometrando, o light_1 permanece aceso. Quando o limit _switch_2 está energizado, a instrução RES reseta o timer_3 (remove os bits de
status e o valor .ACC).

Execução do Bloco de Esta instrução está disponível no bloco de função como RTOR,
Função: consulte a página 2-20.

Publicação 1756-RM003D-PT-P - Junho 2001


2-14 Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Temporizador de Linguagens Disponíveis:

Energização com Reset


(TONR) Bloco de Função

A instrução TONR é um temporizador não retentivo que acumula


tempo quando TimerEnable é energizado.

Operandos de Lógica Esta instrução está disponível em Lógica Ladder como duas
Ladder : instruções separadas: TON (consulte a página 2-2) e RES (consulte a
página 2-35).

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag de bloco FBD_TIMER estrutura estrutura TONR

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é energizado
TimerEnable BOOL Se energizada, habilita o temporizador a operar e acumular tempo.
o valor inicial é desenergizado
PRE DINT Valor pré-selecionado do temporizador. Este é o valor em 1 unidade de milissegundo que o
ACC deve alcançar antes que a temporização termine. Se inválido, a instrução energiza o bit
apropriado em Status e o temporizador não executa.
válido = 0 ao número inteiro positivo máximo
Reset BOOL Solicitação para zerar o temporizador. Quando energizado, o temporizador zera.
o valor inicial é desenergizado

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-15

Parâmetros de saída

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 do temporizador está habilitada.
TT BOOL Saída de temporização do temporizador. Quando energizado, uma operação de temporização
está em progresso.
DN BOOL Saída da temporização concluída. Indica quando o tempo acumulado for maior ou igual ao
valor pré-selecionado.
Status: DINT Status do bloco de função.
InstructFault (Status.0) BOOL A instrução detectou um dos seguintes erros de execução. Isto não é um erro grave ou de
advertência do controlador. Verifique os bits de status restantes para determinar o que
ocorreu.
PresetInv (Status.1) BOOL O valor pré-selecionado é inválido.

Descrição: Quando habilitada, a instrução TONR acumula tempo até que:


• a instrução TONR seja desabilitada
• ACC ≥ PRE

A base de tempo é sempre 1 ms. Por exemplo, para um temporizador


de 2 segundos, digite 2000 para o valor PRE.

TimerEnable

bit habilitado (EN)

bit de temporização do temporizador (TT)

bit executado de temporizador (DN)


em
atraso
valor pré-programado
16649
o temporizador não
valor acumulado do temporizador (ACC) 0 alcançou o valor PRE

Energize o parâmetro de entrada Reset para resetar a instrução. Se


TimerEnable for energizado quando Reset é energizado, a instrução
TONR inicia a temporização novamente quando Reset for
desenergizado.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica Esta instrução está disponível na Lógica Ladder como duas instruções
Ladder : separadas: TON (consulte a página 2-2) e RES (consulte a página
2-35).

Publicação 1756-RM003D-PT-P - Junho 2001


2-16 Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução EN, TT e DN são desenergizados.
o valor ACC é definido em 0.
primeira operação da instrução EN, TT e DN são desenergizados.
o valor ACC é definido em 0.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado Quando o EnableIn efetua a transição de desenergizado para energizado, a instrução
inicializa como descrito para a primeira varredura da instrução.
A instrução é executada.
EnableOut é energizado.
reset Quando o parâmetro de entrada Reset é energizado, a instrução desenergiza EN, TT e
DN e define ACC = zero.

Exemplo do Bloco de
Função:

Para cada varredura cujo limit_switch1 é energizado, a instrução TONR incrementa o valor ACC
pelo tempo transcorrido até que o valor ACC alcance o valor PRE. Quando ACC ≥ PRE, o parâmetro
DN é energizado, o que habilita a instrução do bloco de função seguindo a instrução TONR.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-17

Temporizador de Linguagens Disponíveis:

Desenergização com Reset


(TOFR) Bloco de Função

A instrução TOFR é um temporizador não retentivo que acumula


tempo quando TimerEnable é desenergizado.

Operandos de Lógica Esta instrução está disponível na Lógica Ladder como duas instruções
Ladder : separadas: TOF (consulte a página 2-6) e RES (consulte a página
2-35).

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag de bloco FBD_TIMER estrutura estrutura TOFR

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é energizado
TimerEnable BOOL Se desenergizado, habilita o temporizador para operar e acumular tempo.
o valor inicial é desenergizado
PRE DINT Valor pré-selecionado do temporizador. Este é o valor em unidades de 1 ms que o ACC deve
alcançar antes que a temporização termine. Se inválido, as instruções energizam o bit
apropriado em Status e o temporizador não executa.
válido = 0 ao inteiro positivo máximo
Reset BOOL Solicitação para zerar o temporizador. Quando energizado, o temporizador reseta.
o valor inicial é desenergizado

Publicação 1756-RM003D-PT-P - Junho 2001


2-18 Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Parâmetros de saída

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 pelo temporizador. 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 progresso.
DN BOOL Saída concluída de temporização. Indica quando o tempo acumulado é maior ou igual ao
pré-selecionado.
Status: DINT Status do bloco de função.
InstructFault (Status.0) BOOL A instrução detectou um dos seguintes erros de execução. Isto não é um erro grave ou de
advertência do controlador. Verifique os bits de status restantes para determinar o que
ocorreu.
PresetInv (Status.1) BOOL O valor pré-selecionado é inválido.

Descrição: Quando habilitada, a instrução TOFR acumula tempo até que:


• a instrução TOFR seja desabilitada
• ACC ≥ PRE

A base de tempo é sempre 1 ms. Por exemplo, para um temporizador


de 2 segundos, digite 2000 para PRE value.

TimerEnable

bit habilitado (EN)

bit de temporização do temporizador (TT)


bit executado do temporizador (DN)
atraso na
desenergização
valor pré-programado

valor acumulado do temporizador (ACC)


0 16650

o temporizador não atingiu o PRE value

Energize o parâmetro de entrada Reset para resetar a instrução. Se o


TimerEnable for desenergizado quando o Reset for energizado, a
instrução TOFR não inicia a temporização novamente quando o Reset
for desenergizado.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-19

Execução da Lógica Esta instrução está disponível na Lógica Ladder como duas instruções
Ladder : separadas: TOF (consulte a página 2-6) e RES (consulte a página
2-35).

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução EN, TT e DN são desenergizados.
o valor ACC é energizado para PRE.
primeira varredura da instrução EN, TT e DN são desenergizados.
o valor ACC é energizado para PRE.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado Quando EnableIn faz a transição de desenergizado para energizado, a instrução se
inicializa como descrito para a primeira varredura da instrução.
A instrução é executada.
EnableOut é energizado.
reset Quando o parâmetro de entrada Reset for energizado, a instrução desenergizará o EN,
TT e DN e definirá o ACC = PRE. Note que isto é diferente de usar uma instrução RES em
uma instrução TOF.

Exemplo do Bloco de
Função:

Cada varredura após limit_switch1 é desenergizada, a instrução TOFR incrementa o valor ACC através do
tempo transcorrido até que o valor ACC alcance o valor PRE. Quando ACC ≥ PRE, o parâmetro DN é
desenergizado, o que desabilita a instrução do bloco de função que segue a instrução TOFR.

Publicação 1756-RM003D-PT-P - Junho 2001


2-20 Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Temporizador Retentivo Linguagens Disponíveis:

Energizado com Reset


(RTOR) Função

A instrução RTOR é um temporizador retentivo que acumula tempo


quando o TimerEnable é energizado.

Operandos de Lógica Esta instrução está disponível na Lógica Ladder como duas instruções
Ladder : separadas: RTO (consulte a página 2-10) e RES (consulte a página
2-35).

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_TIMER estrutura estrutura RTOR

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é energizado
TimerEnable BOOL Se energizado, habilita o temporizador para operar e acumular tempo.
o valor inicial é desenergizado
PRE DINT Valor pré-selecionado do temporizador. Este é o valor em unidades de 1 ms que o ACC deve
alcançar antes que a temporização termine. Se inválida, a instrução energiza o bit apropriado
em Status e o temporizador não executa.
válido = 0 ao inteiro positivo máximo
Reset BOOL Solicitação para resetar o temporizador. Quando energizado, o temporizador reseta.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-21

Parâmetros de saída

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 é retido até durante a desenergização da
entrada TimerEnable. Isto torna o comportamento deste bloco diferente do bloco TONR.
EN BOOL Saída habilitada do temporizador. Indica que a instrução do temporizador é habilitada.
TT BOOL Saída de temporização do temporizador. Quando energizada, a operação de temporização
está em progresso.
DN BOOL Saída de temporização concluída. Indica quando o tempo acumulado é superior ou igual ao
pré-selecionado.
Status: DINT Status do bloco de função.
InstructFault (Status.0) BOOL Esta instrução detectou um dos seguintes erros de execução. Esto não é um erro grave ou de
advertência do controlador. Verifique os bits de status restantes para determinar o que
ocorreu.
PresetInv (Status.1) BOOL O valor pré-selecionado é inválido.

Descrição: Quando habilitada, a instrução RTO acumula tempo até que seja
desabilitada. Quando a instrução RTO é desabilitada, ela retém o valor
ACC. Deve-se desenergizar o valor ACC através da entrada Reset.

A base de tempo é sempre 1 ms. Por exemplo, para um temporizador


de 2 segundos, digite 2000 para o PRE value.

TimerEnable

bit habilitado (EN)

Reset

bit de temporização do temporizador (TT)

bit executado do temporizador (DN)

valor pré-programado

16651
valor acumulado do temporizador (ACC)
0
o temporizador não alcançou o PRE value

Energize o parâmetro de entrada Reset para resetar a instrução. Se o


TimerEnable for energizado quando o Reset for energizado, a instrução
RTOR inicia a temporização novamente quando o Reset for desenergizado.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


2-22 Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Execução de Lógica Esta instrução está disponível na Lógica Ladder como duas instruções
Ladder : separadas: RTO (consulte a página 2-10) e RES (consulte a página
2-35).

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução EN, TT e DN são desenergizados
o valor ACC não é alterado
primeira operação da instrução EN, TT e DN são desenergizados
o valor ACC não é alterado
primeira operação do OLC EN, TT e DN são desenergizados
o valor ACC não é alterado
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado Quando EnableIn faz a transição de desenergizado para energizado, a instrução
inicializa como descrito para a primeira varredura da instrução.
A instrução é executada.
EnableOut é energizado.
reset Quando o parâmetro de entrada Reset for energizado, a instrução desenergiza EN, TT e
DN e define ACC = zero.

Exemplo do Bloco de
Função:

Para cada varredura cujo limit_switch1 é energizado, a instrução RTOR incrementa o valor ACC
através do tempo transcorrido até que o valor ACC alcance o valor PRE. Quando ACC ≥ PRE, o
parâmetro DN é energizado, o que habilita a instrução do bloco de função seguindo a instrução

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-23

Contagem Crescente (CTU) Linguagens Disponíveis:

Lógica Ladder

A instrução CTU conta em ordem crescente.

Operandos de Lógica
Ladder :
Operando Tipo: Formato: Descrição:
Contador COUNTER tag estrutura do contador
Preset DINT imediato valor máximo de contagem
Accum DINT imediato quantidade de vezes que o contador contou
valor inicial é normalmente 0

Estrutura:

Mnemônico: Tipo de Dados: Descrição:


.CU BOOL O bit de habilitação do contador crescente indica que a instrução CTU está habilitada.
.DN BOOL O bit executado indica que .ACC ≥ .PRE.
.OV BOOL O bit de overflow indica que o contador ultrapassou o limite superior de 2.147.483.647. O
contador volta para -2.147.483.648 e inicia a contagem crescente novamente.
.UN BOOL O bit de underflow indica que o contador ultrapassou o limite inferior de - 2.147.483.647. O
contador volta para 2.147.483.647 e inicia a contagem decrescente novamente.
.PRE DINT O valor pré-programado especifica o valor que o acumulado deve atingir antes da instrução
energizar o bit .DN.
.ACC DINT O valor acumulado especifica o número de transições que a instrução contou.

Operandos do Bloco de Esta instrução está disponível no bloco de função como CTUD,
Função: consulte a página 2-31.

Publicação 1756-RM003D-PT-P - Junho 2001


2-24 Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Descrição: Quando habilitada e o bit .CU estiver desenergizado, a instrução CTU


incrementa o contador em um. Quando habilitada e o bit .CU estiver
energizado ou quando desabilitada, a instrução CTU retém o seu valor
.ACC>

entrada da condição da linha

bit de contagem crescente (.CU)

bit executado de contagem crescente (.DN)

valor pré-programado

valor acumulado do contador (.ACC)


16636

O valor acumulado continua a incrementar, mesmo depois que o bit


.DN é energizado. Para remover o valor acumulado, use uma
instrução RES que se refira à estrutura do contador ou escreva 0 no
valor acumulado.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-25

Execução de Ladder
Relé:

Condição: Ação:
pré-varredura O bit .CU está energizado para prevenir incrementos inválidos durante a primeira
varredura 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.

entrada da condição da linha for verdadeira

bit .CU = 0 bit .CU está sim


examinar bit .CU energizado valor .ACC renova
.ACC = .ACC + 1

bit .CU = 1 não

bit .UN é desenergizado bit .UN = 1


bit .DN é desenergizado. examinar bit .UN
bit . OV é desenergizado

bit .UN = 0

bit .UN = 0 bit .OV = 0


examinar bit .UN examinar bit .OV

bit . OV está energizado


bit .UN = 1 bit .OV = 1

.ACC ≥ .PRE
examinar .ACC

.ACC < .PRE


bit .DN é desenergizado.
bit .DN está energizado.

saída da condição da linha é


definida como verdadeira

fim

Publicação 1756-RM003D-PT-P - Junho 2001


2-26 Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Exemplo de Lógica
Ladder :

Depois que o limit_switch_1 passa de desabilitado para habilitado 10 vezes, o bit .DN é energizado e o light_1 acende. Se olimit_switch_1 continuar a
mudar de desabilitado para habilitado, o counter_1 continuará a incrementar a sua contagem e o bit .DN permanecerá energizado. Quando o
limit_switch_2 estiver habilitado, a instrução RES resetará o counter_1 (desenergizará os bits de status e o valor .ACC) e o light_1 será desligado.

Execução do Bloco de Esta instrução está disponível no bloco de função como CTUD,
Função: consulte a página 2-31.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-27

Contagem Decrescente Linguagens Disponíveis:

(CTD)
Lógica Ladder

A instrução CTD conta no sentido decrescente.

Operandos de Lógica
Ladder :
Operando Tipo: Formato: Descrição:
Contador COUNTER tag estrutura do contador
Preset DINT imediato valor mínimo de contagem
Accum DINT imediato quantidade de vezes que o contador contou
valor inicial é normalmente 0

Estrutura:

Mnemônico: Tipo de Dados: Descrição:


.CD BOOL O bit de habilitação do contador 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 ultrapassou o limite superior de 2.147.483.647. O
contador volta para -2.147.483.648 e inicia a contagem crescente novamente.
.UN BOOL O bit de underflow indica que o contador ultrapassou o limite inferior de - 2.147.483.647. O
contador volta para 2.147.483.647 e inicia a contagem decrescente novamente.
.PRE DINT O valor pré-programado especifica o valor que o acumulado deve atingir antes da instrução
energizar o bit .DN.
.ACC DINT O valor acumulado especifica o número de transições que a instrução contou.

Operandos de Bloco de Esta instrução está disponível no bloco de função como CTUD,
Função: consulte a página 2-31.

Publicação 1756-RM003D-PT-P - Junho 2001


2-28 Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Descrição: A instrução CTD é tipicamente usada com uma instrução CTU que
refere à mesma estrutura do contador.

Quando habilitada e o bit .CD estiver removido, a instrução CTD


decrementa o contador em um. Quando habilitada e o bit .CD estiver
energizado ou quando desabilitada, a instrução CTD retém o seu valor
.ACC.

entrada da condição da linha

bit de habilitação de contagem decrescente (.CD)

bit executado de contagem decrescente (.DN)

valor acumulado do contador (.ACC)

valor pré-programado

16637

O valor acumulado continua a decrementar mesmo depois que o


bit .DN for energizado. Para remover o valor acumulado, use uma
instrução RES que se refira à estrutura do contador ou escreva 0 no
valor acumulado.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-29

Execução da Lógica
Ladder :

Condição: Ação:
pré-varredura O bit .CD está energizado para prevenir decrementos inválidos durante a primeira
varredura do programa.
A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa O bit .CD é desenergizado.
A saída da condição da linha é definida como falsa.

entrada da condição da linha for verdadeira

bit .CD = 0 bit .CD está valor .ACC sim


examinar bit .CD energizado renova
.ACC = .ACC - 1

bit .CD = 1 não

bit . OV é desenergizado bit .OV = 1


bit .DN é desenergizado. examinar bit .OV
bit .UN é desenergizado

bit .OV = 0

bit .UN = 0 bit .OV = 0


examinar bit .UN examinar bit .OV

bit .UN está energizado


bit .UN = 1 bit .OV = 1

.ACC ≥ .PRE
examinar .ACC

.ACC < .PRE


bit .DN é desenergizado. bit .DN está energizado.

saída da condição da linha é


definida como verdadeira

fim

Publicação 1756-RM003D-PT-P - Junho 2001


2-30 Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Exemplo de Lógica
Ladder :

Um esteira transportadora traz peças para uma zona de buffer. Cada vez que uma peça entra, o limit_switch_1 é habilitado e o counter_1
incrementa em 1. Cada vez que uma peça sai, o limit_switch_2 é habilitado e o counter_1 decrementa em 1. Se houver 100 peças em uma zona
de buffer (o counter_1.dn estiver energizado), o conveyor_a liga e interrompe a operação da esteira, impedindo que mais peças sejam trazidas,
até que o buffer tenha espaço.

Execução do Bloco de Esta instrução está disponível no bloco de função como CTUD,
Função: consulte a página 2-31.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-31

Contagem Linguagens Disponíveis:

Crescente/Decrescente
(CTUD) Bloco de Função

A instrução CTUD faz a contagem crescente em um quando o


CUEnable faz a transição de desenergizado para energizado. Esta
instrução faz a contagem decrescente em um quando o CDEnable faz
a transição de desenergizado para energizado.

Operandos de Lógica Esta instrução está disponível em Lógica Ladder como instruções
Ladder : separadas, CTU (página 2-23), CTD (página 2-27), e RES (página
2-35).

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_COUNTER estrutura estrutura CTUD

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é energizado
CUEnable BOOL Habilita a contagem crescente. Quando a entrada passa de desenergizada para energizada, o
acumulador faz a contagem crescente em um.
o valor inicial é desenergizado
CDEnable BOOL Habilita a contagem decrescente. Quando a entrada passa de desenergizada para
energizada, o acumulador faz a contagem decrescente em um.
o valor inicial é desenergizado
PRE DINT Valor pré-selecionado do contador. Este é o valor que o valor acumulado deve alcançar antes
que o DN seja energizado.
válido = qualquer inteiro
o valor inicial é 0
Reset BOOL Solicita que o temporizador seja zerado. Quando energizado, o contador zera.
o valor inicial é desenergizado

Publicação 1756-RM003D-PT-P - Junho 2001


2-32 Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Parâmetros de saída

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 concluída. Energiza quando o valor acumulado for maior ou igual ao
pré-selecionado.
OV BOOL Overflow do contador. Indica que o contador excedeu o limite máximo de 2.147.483.647.
O contador então reverte para −2.147.483.648 e inicia a contagem decrescente novamente.
UN BOOL Underflow do contador. Indica que o contador excedeu o limite inferior de −2.147.483.648.
O contador reverte para 2.147.483.647 e indica a contagem decrescente novamente.

Descrição: Quando habilitadas e o CUEnable está energizado, as instruções


CTUD incrementam o contador em um. Quando habilitada e o
CDEnable está energizado, a instrução CTUD decrementa o contador
em um.

Tanto o parâmetro de entrada CUEnable como o CDEnable podem ser


alternados durante a mesma varredura. A instrução executa a
contagem crescente antes da decrescente.

Efetuando a contagem crescente

CUEnable

bit de contagem crescente (CU)

bit executado de contagem crescente (DN)

valor pré-programado

valor acumulado do contador (ACC)


16636

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-33

Efetuando a contagem decrescente

CDEnable

bit de contagem decrescente (CD)

bit executado de contagem decrescente (DN)

valor acumulado do contador (ACC)

valor pré-programado

16637

Quando desabilitada, a instrução CTUD retém seu valor acumulado.


Energize o parâmetro de entrada Reset para resetar a instrução.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica Esta instrução está disponível na Lógica Ladder como três instruções
Ladder : separadas, CTU (página 2-23), CTD (página 2-27) e RES (página 2-35).

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Não requer inicialização.
primeira varredura da instrução o CUEnablen-1 e o CDEnablen-1 estão energizados.
primeira operação da instrução o CUEnablen-1 e o CDEnablen-1 estão energizados.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado Em uma transição de desenergizado para energizado de EnableIn, a instrução energiza
CUEnablen-1 e CDEnablen-1.
A instrução é executada.
EnableOut é energizado.
reset Quando energizada, a instrução desenergiza CUEnablen-1, CDEnablen-1, CU, CD, DN, OV e UN
e define ACC = zero.

Publicação 1756-RM003D-PT-P - Junho 2001


2-34 Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Exemplo do Bloco de
Função:

Quando limit_switch1 vai de desenergizado para energizado, o CUEnable é energizado para uma
varredura e a instrução CTUD incrementa o valor ACC em 1. Quando ACC ≥ PRE, o parâmetro DN é
energizado, o que habilita a instrução do bloco de função seguindo a instrução CTUD.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-35

Reset (RES) Linguagens Disponíveis:

Lógica Ladder

A instrução RES reseta uma estrutura de TEMPORIZADOR,


CONTADOR ou CONTROLE .

Operandos de Lógica
Ladder :
Operando Tipo: Formato: Descrição:
estrutura TIMER tag estrutura para reset
CONTROL
COUNTER

Operandos do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Descrição: Quando habilitada, a instrução RES desenergiza esses elementos:

Ao usar a instrução RES


para um: A instrução desenergiza:
TIMER valor .ACC
bits de status de controle
COUNTER valor .ACC
bits de status de controle
CONTROL valor .POS
bits de status de controle

Como a instrução RES desenergiza o valor .ACC, o


ATENÇÃO
bit .DN e o bit .TT, não use a instrução RES para
resetar um temporizador TOF.

!
Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


2-36 Instruções do Temporizador e do Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES)

Execução de Lógica
Ladder :

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira A instrução RES reseta a estrutura especificada.
A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder :
Exemplo: Descrição:
Quando habilitado, resete o timer_3.

Quando habilitado, resete o counter_1.

Quando habilitado, resete o control_1.

Execução do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Publicação 1756-RM003D-PT-P - Junho 2001


Capítulo 3

Instruções de Entrada/Saída
(MSG, GSV, SSV)

Introdução As instruções de entrada/saída realizam a leitura ou escrevem do/para


o controlador ou um bloco de dados de/para outro módulo em
outra rede.

Se você quiser: Use esta instrução: Consulte página:


enviar dados de/para outro módulo MSG 3-2
obter informações de status do GSV 3-28
controlador
definir informações de status do SSV 3-28
controlador

1 Publicação 1756-RM003D-PT-P - Junho 2001


3-2 Instruções de Entrada/Saída (MSG, GSV, SSV)

Mensagem (MSG) Linguagens Disponíveis:

Lógica Ladder a Relé

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 de Lógica
Ladder a Relé:
Operando: Tipo: Formato: Descrição:
Controle de MESSAGE tag estrutura da mensagem
mensagem

Estrutura:

Mnemônico: Tipo de Descrição:


Dados:
.FLAGS INT O membro .FLAGS fornece acesso aos membros de status (bits) em uma palavra de 16 bits.
Este Corresponde a este membro:
bit:
2 .EW
4 .ER
5 .DN
6 .ST
7 .EN
8 .TO
9 .EN_CC
Importante: Enquanto uma MSG está habilitada, o reset dos bits de status MSG pode romper a
comunicação.
.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 que um pedido de mensagem
entrou 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-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-3

Mnemônico: Tipo de Descrição:


Dados:
.EN BOOL O bit habilitado é energizado quando a entrada da condição da linha se tornar verdadeira e permanecer
energizada até que o bit .DN ou .ER for 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 do cache determina como controlar a conexão MSG. Consulte "Seleção 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 são copiadas
para o cache, mesmo que o bit .EN_CC seja energizado.

O controlador processa os bits .ST, .EW, .DN e .DR de forma


ATENÇÃO
assíncrona para a varredura do programa. Para verificar estes
bits em lógica de diagrama 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.

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição A instrução MSG transfere os elementos dos dados. O tamanho de


cada elemento depende dos tipos de dados especificados e do tipo de
comando de mensagem usado.

conexão com .EN_CC = 1

entrada da condição da linha

bit .EN

bit .EW

conexão com .EN_CC = 0

bit .ST

bit .DN ou .ER

41382

1 2 3 4 5 6 7

Publicação 1756-RM003D-PT-P - Junho 2001


3-4 Instruções de Entrada/Saída (MSG, GSV, SSV)

Onde: Descrição:
1 entrada da condição da linha for verdadeira
.EN está energizado
.EW está energizado
a conexão está aberta*
2 a mensagem é enviada
.ST está energizado
.EW é desenergizado
3 a mensagem foi executada ou apresentou erro e a entrada da
condição da linha é falsa
.DN ou .ER está energizado
.ST é desenergizado
a conexão é fechada (se .EN_CC = 0)
.EN é desenergizado (porque a entrada da condição da linha é falsa)
4 a entrada da condição da linha é verdadeira e .DN ou .ER foi
energizado anteriormente
.EN está energizado
.EW está energizado
a conexão está aberta*
.DN ou .ER é desenergizado
5 a mensagem é enviada
.ST está energizado
.EW é desenergizado.
6 a mensagem foi executada ou apresentou erro e a entrada da
condição da linha ainda é verdadeira
.DN ou .ER está energizado
.ST é desenergizado
a conexão é fechada (se .EN_CC = 0)
7 a entrada da condição da linha se torna falsa e .DN ou .ER é
energizado
.EN é desenergizado
*O bit .EW não é energizado se a mensagem não puder ser executada.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-5

Execução de Lógica
Ladder a Relé:
Condição: Ação:

entrada da condição da linha for falsa


bit .EN = 1
examinar bit .EN
bit .EN = 0

bit .EW = 1
examinar o bit .EW

bit .EW = 0

bit .ST = 1
examinar o bit .ST

bit .ST = 0

bit .DN = 1
examinar bit .DN

bit .DN = 0

bit .ER = 1 bit .ER = 0 sim não


comando de
examinar bit .ER caminho válido do
block-transfer
módulo

não sim

bit .DN = 1
examinar bit .DN sim não
conexão do módulo
em funcionamento

bit .DN = 0
bit .EN é desenergizado executar pedido de mensagem

bit .ER = 1
examinar bit .ER bit .EW está energizado bit .ER está energizado

bit .ER = 0

saída da condição da linha


é definida como falsa

fim

Publicação 1756-RM003D-PT-P - Junho 2001


3-6 Instruções de Entrada/Saída (MSG, GSV, SSV)

Condição: Ação:

entrada da condição da linha for verdadeira


bit .EN = 1 bit .EN = 0
examinar bit .EN

bit .EW = 1 bit .EW = 1


examinar o bit .EW examinar o bit .EW

bit .EW = 0 bit .EW = 0

bit .ST = 1 bit .ST = 1


examinar o bit .ST examinar o bit .ST

bit .ST = 0 bit .ST = 0

bits .EW, .ST, .TO, .DN e .ER são desenergizados


bit .DN = 1 bit .EN está energizado
examinar bit .DN

bit .DN = 0 bit .EN está


energizado

bit .ER = 1 bit .ER = 0 sim não


comando de
examinar bit .ER caminho válido do
block-transfer
módulo

não sim

sim não
conexão do módulo
em funcionamento

bits .EW, .ST, .TO, .DN e .ER são desenergizados


bit .EN está energizado
executar pedido de mensagem
bit .EW está energizado

bit .ER está energizado

saída da condição da linha


é definida como falsa

fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-7

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Códigos de Erro MSG Os códigos de erro dependem do tipo dos códigos de erro do
ControlLogix (CIP) da instrução MSG.

Códigos de erro do ControlLogix (CIP)

Para os códigos de erro do ControlLogix (CIP), o software de


programação nem sempre exibe a descrição completa.

Código de erro Descrição: Display do software:


(hex):
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 igual à descrição
indefinida ou elemento de estrutura indefinida (consulte os
códigos de erro estendidos)
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 Falta 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

Publicação 1756-RM003D-PT-P - Junho 2001


3-8 Instruções de Entrada/Saída (MSG, GSV, SSV)

Código de erro Descrição: Display do software:


(hex):
001F Falha relacionada à conexão (consulte os códigos de erro igual à descrição
estendidos)
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

Códigos de erros estendidos do ControlLogix

Estes são os códigos de erros estendidos do ControlLogix (CIP). O


software não exibe texto para estes códigos de erros. Estes são os
códigos de erro estendidos para o código de erro 0001.

Código de Descrição: Código de Descrição:


erro erro
estendido estendido
(hex): (hex):
0100 Conexão em uso 011A Aplicação fora das conexões
0103 Transporte não suportado 0203 Período de espera da conexão
0106 Conflito de Dispositivo de Armazenamento de 0204 Período de espera de mensagem não conectada
Configuração
0205 Erro de parâmetro enviado não conectado
0107 Conexão não encontrada
0206 Mensagem muito grande
0108 Tipo de conexão inválida
0301 Sem espaço de memória no buffer
0109 Tamanho de conexão inválida
0302 Largura de faixa não disponível
0110 Módulo não configurado
0303 Não há disponibilidade de screeners
0111 EPR não suportado
0305 Correspondência de assinatura
0114 Módulo errado
0311 Porta não disponível
0115 Tipo de dispositivo errado
0312 Endereço de rede não disponível
0116 Revisão errada
0315 Tipo de segmento inválido
0118 Formato de configuração inválido
0317 Conexão não programada

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-9

Estes são os códigos de erro estendidos para o código de erro 001F.

Código de erro Descrição:


estendido (hex):
0203 Período de espera da conexão

Estes são os códigos de erro estendidos para os códigos de erro 0004


e 0005.

Código de erro Descrição:


estendido (hex):
0000 status estendido fora da memória
0001 status estendido fora dos exemplos

Códigos de erro do CLP e SLC (.ERR)

Para os códigos de erro do CLP e SLC, o software de programação


nem sempre exibe a descrição completa.

Código de erro Descrição: Display do software:


(hex):
0010 Comando ilegal ou formato do controlador local Conflito com o estado do dispositivo
0020 Módulo de comunicação não está funcionando erro desconhecido
0030 Nó remoto está faltando, desconectado ou desligado erro desconhecido
0040 Controlador conectado, mas com falha (hardware) erro desconhecido
0050 Número de estação errado erro desconhecido
0060 Função requisitada não está disponível erro desconhecido
0070 Controlador está no modo de Programa erro desconhecido
0080 Arquivo de compatibilidade do controlador não existe erro desconhecido
0090 Nó remoto não consegue comandar o buffer erro desconhecido
00B0 Controlador está descarregando, portanto não pode ser erro desconhecido
acessado
00F0 Erro de PCCC (consulte os códigos de erro estendidos) erro desconhecido

Publicação 1756-RM003D-PT-P - Junho 2001


3-10 Instruções de Entrada/Saída (MSG, GSV, SSV)

Códigos de erro estendiddos do CLP e SLC (.EXERR)

O software não exibe texto para estes códigos de erros. Estes são os
códigos de erro estendidos para o código de erro 00F0.

Código de Descrição: Código de Descrição:


erro erro
estendido estendido
(hex): (hex):
0001 Controlador converteu incorretamente o 0011 Tipo de dados requisitados não corresponde
endereço aos dados disponíveis
0002 Endereço incompleto 0012 Parâmetros de comando incorretos
0003 Endereço incorreto 0013 Referência de endereço existe para uma área
apagada
0004 Formato ilegal do endereço – símbolo não
encontrado 0014 Falha na execução do comando por motivo
desconhecido
0005 Formato ilegal do endereço – o símbolo tem o
Overflow do histograma do CLP-3
valor 0 ou maior do que o número máximo de
caracteres suportados pelo dispositivo 0015 Erro na conversão dos dados
0006 Arquivo de endereço não existe no controlador 0016 Scanner não está disponível para comunicação
alvo com um adaptador de gaveta 1771
0007 Arquivo de destino é muito pequeno para o 0017 Adaptador não está disponível para
número de palavras solicitado. comunicação com o módulo
0008 Não consegue completar o pedido 0018 Resposta do módulo 1771 não foi válida
Situação alterada durante operação com vários
pacotes 0019 Etiqueta duplicada
001A Controlador que armazena a configuração do
0009 Dados ou arquivo muito grande
arquivo ativo – o arquivo está sendo usado
Memória não disponível
000A Controlador alvo não consegue colocar as 001B Controlador que armazena a configuração do
programa ativo – alguém está descarregando
informações requisitadas em pacotes
dados ou fazendo edição online
000B Erro de privilégio; acesso negado
001C Arquivo do disco está protegido contra
000C Função requisitada não está disponível gravação ou não pode ser acessado (somente
offline)
000D Pedido redundante
001D Arquivo do disco está sendo usado por outra
000E Comando não pode ser executado aplicação
000F Overflow; overflow do histograma Atualização não realizada (somente offline)
0010 Sem acesso

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-11

Códigos de erro de Block-Transfer

Estes são os códigos de erro específicos para block-transfer no


ControlLogix.

Código de erro Descrição: Display do software:


(hex):
00D0 O scanner não recebeu uma resposta de block-transfer do módulo de block-transfer dentro erro desconhecido
de 3,5 s do pedido
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 erro desconhecido
resposta contrária
00D3 O scanner solicitou um comprimento e o módulo de block-transfer respondeu com um erro desconhecido
comprimento diferente
00D6 O scanner recebeu uma resposta do módulo de block-transfer, indicando que o pedido de erro desconhecido
escrita apresentou falha
00EA O scanner não foi configurado para comunicar-se com a gaveta que teria este módulo de erro desconhecido
block-transfer
00EB A ranhura lógica específica não está disponível para o tamanho de gaveta determinado erro desconhecido
00EC No momento, há um pedido de block-transfer em andamento e uma resposta é requerida erro desconhecido
antes que outro pedido possa ser iniciado
00ED O tamanho de pedido de block-transfer não está de acordo com os pedidos de tamanho erro desconhecido
válidos para block-transfer
00EE O tipo de pedido de block-transfer não está de acordo com o BT_READ ou BT_WRITE erro desconhecido
previsto
00EF O scanner não conseguiu encontrar uma ranhura disponível na tabela de block-transfer erro desconhecido
para acomodar o pedido de block-transfer
00F0 O scanner recebeu um pedido para resetar os canais de E/S remota enquanto havia erro desconhecido
block-transfers em aberto
00F3 As filas para block-transfers remotos estão cheias erro desconhecido
00F5 Nenhum canal de comunicação está configurado para a ranhura ou gaveta solicitada erro desconhecido
00F6 Nenhum canal de comunicação está configurado para E/S remota erro desconhecido
00F7 O período de espera de block-transfer configurado na instrução encerrou a temporização erro desconhecido
antes da conclusão
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 erro desconhecido
condições
00FA O módulo de block-transfer solicitou um comprimento diferente daquele associado à erro desconhecido
instrução de block-transfer
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 erro desconhecido
e o módulo de block-transfer
00FD O tamanho do block-transfer mais o tamanho do índice na tabela de dados de erro desconhecido
block-transfer era maior do que o tamanho do arquivo da tabela de dados de block-transfer

Publicação 1756-RM003D-PT-P - Junho 2001


3-12 Instruções de Entrada/Saída (MSG, GSV, SSV)

Códigos de erro do Logix5550

Estes são os códigos de erro do Logix5550.

Código de erro Descrição: Display do software:


(hex):
00D0 Instância de mapa indefinido erro desconhecido
00D1 Módulo não está no estado de operação erro desconhecido
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 Período de espera de mensagem erro desconhecido
00FF Erro geral (consulte os códigos de erro estendidos) erro desconhecido

Códigos de erros estendidos do Logix5550

Estes são os códigos de erros estendidos do Logix5550. O software


não exibe texto para estes códigos de erros. Estes são os códigos de
erro estendidos para o código de erro 00FF.

Código de Descrição: Código de Descrição:


erro erro
estendido estendido
(hex): (hex):
2001 Excesso de IOI 2108 Controlador no modo de carga ou descarga
2002 Valor deficiente para o parâmetro 2109 Tentativa de alterar o número das dimensões da
matriz
2018 Sinalização rejeitada
210A Nome inválido do símbolo
201B Tamanho muito pequeno
210B Símbolo não existe
201C Tamanho inválido
210E Busca apresentou falha
2100 Falha de privilégio
210F Tarefa não pode ser iniciada
2101 Posição da chave seletora de modo inválida
2110 Não há condições de escrita (gravação)
2102 Senha inválida
2111 Não há condições de leitura
2103 Sem emissão de senha
2112 Rotina compartilhada que não pode ser editada
2104 Endereço fora da faixa
2113 Controlador no modo de falha
2105 Endereço e quantidade estão fora da faixa
2114 Modo de operação inibido
2106 Dados em uso
2107 Tipo é inválido ou não é suportado

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-13

Especificação dos Detalhes Depois de inserir a instrução MSG e especificar a estrutura MESSAGE,
use a janela Message Configuration no software de programação para
de Configuração especificar os detalhes da mensagem.
(Guia Configuration)

Clique aqui para configurar a instrução MSG

Os detalhes de configuração dependem do tipo de mensagem


selecionado.

Se o dispositivo alvo for um: Selecione um dos seguintes tipos de Consulte página:
mensagens:
Dispositivo ControlLogix ou módulo de leitura da tabela de dados CIP 3-14
E/S 1756
escrita da tabela de dados CIP
CIP genérico
controlador CLP-5 leitura de tipo para CLP-5 3-16
escrita de tipo para CLP-5
leitura da faixa de palavras do CLP-5
escrita da faixa de palavras do CLP-5
controlador SLC leitura de tipo para SLC 3-17
leitura de tipo para SLC
Módulo de block-transfer em uma rede de leitura de block-transfer 3-18
E/S Remota Universal
escrita de block-transfer
Controlador CLP-3 leitura de tipo para CLP-3 3-19
escrita de tipo para CLP-3
leitura da faixa de palavra do CLP-3
escrita da faixa de palavra do CLP-3
Controlador CLP-2 leitura sem proteção do CLP-2 3-20
escrita sem proteção do CLP-2

Publicação 1756-RM003D-PT-P - Junho 2001


3-14 Instruções de Entrada/Saída (MSG, GSV, SSV)

Voce deve especificar essa informação de configuração:

No campo: Especifique:
Source Element/Tag Se você selecionar um tipo de mensagem de leitura, o Source Element é o endereço de
dados que você realizará a leitura no dispositivo alvo. Use a sintaxe de endereçamento
do dispositivo alvo.
Se você selecionar um tipo de mensagem de escrita, o Source Tag será o tag do dado no
controlador Logix5550 que você enviará para o dispositivo alvo.
Número de Elementos O número de elementos que você lê/grava depende do tipo de dado que está sendo
usado. Um elemento se refere a um "fragmento" dos dados relacionados. Por exemplo,
o tag temporizador1 é um elemento composto de uma estrutura de controle
do temporizador.
Destination Element/Tag Se você selecionar um tipo de mensagem de leitura, o Destination Tag será o tag no
controlador Logix5550 onde você armazenará os dados lidos 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.

Se você especificar um tag na matriz do Logix5550 como Source ou


Destination, especifique somente o nome do tag da matriz. Não inclua
entre colchetes ou subscrito de posição.

Especificação de Mensagens CIP

Os tipos de mensagem CIP são determinados para transferir dados


de/para outros dispositivos do ControlLogix, como por exemplo,
enviar uma mensagem de um controlador Logix5550 para outro.

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.
Generic CIP configurar uma mensagem customizada para enviar os dados de configuração para um
módulo de E/S.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-15

Uso de mensagens CIP genéricas para resetar os módulos de E/S


Especifique esta informação para criar uma mensagem customizada,
usando o tipo de mensagem Generic CIP.

Se você quiser: No campo: Insira:


Realizar um teste de pulso em Service Code 4c
um módulo de saída digital (Código de Serviço)
Object Type 1e
(Tipo de Objeto)
Object ID 1
(Identificação do Objeto)
Object Attribute deixe em branco
(Atributo do Objeto)
Source tag_name do tipo INT [5]
Esta matriz contém:
tag_name[0] máscara de bit dos pontos para teste (teste
somente um ponto de cada vez)
tag_name[1] reservado, coloque 0
tag_name[2] largura de pulso (centenas de µs, geralmente 20)
tag_name[3] atraso para cruzamento zero para o ControlLogix I/O
(centenas de µs, geralmente 40)
tag_name[4] verifique o atraso
Número de Elementos 10
Destination deixe em branco
Resetar os fusíveis eletrônicos Service Code 4d
em um módulo de saída digital (Código de Serviço)
Object Type 1e
(Tipo de Objeto)
Object Attribute deixe em branco
(Atributo do Objeto)
Object ID 1
(Identificação do Objeto)
Source tag_name do tipo DINT
Este tag representa uma máscara de bit dos pontos para resetar os fusíveis
para energizado.
Número de Elementos 4
Destination deixe em branco
Resete o diagnóstico de Service Code 4b
retentivo em um módulo de E/S (Código de Serviço)
digital Object Type para um módulo de 1d
(Tipo de Objeto) entrada
para um módulo de 1e
saída
Object Attribute deixe em branco
(Atributo do Objeto)
Object ID 1
(Identificação do Objeto)
Source tag_name do tipo DINT
Esse tag representa uma máscara de bit dos pontos para resetar o
diagnóstico para energizado.
Número de Elementos 4
Destination deixe em branco

Publicação 1756-RM003D-PT-P - Junho 2001


3-16 Instruções de Entrada/Saída (MSG, GSV, SSV)

Se você quiser: No campo: Insira:


Resetar um status retentivo em Service Code 4b
um módulo analógico (Código de Serviço)
Object Type a
(Tipo de Objeto)
Object Attribute insira o código para o atributo desejado
(Atributo do Objeto)
Object ID 0
(Identificação do Objeto)
Source deixe em branco
Número de Elementos 0
Destination deixe em branco

Especificação das mensagens do CLP-5

Os tipos de mensagem do CLP-5 são determinados para os


controladores CLP-5.

Selecione este comando: Se você quiser:


Leitura do Tipo para CLP-5 leitura de inteiros ou dados do tipo REAL.
Para os inteiros, este comando lê os inteiros de 16 bits do controlador CLP-5 (tipos de
arquivo S, B e N), armazena-os nas matrizes de dados SINT, INT ou DINT no controlador
Logix5550 e mantém a integridade dos dados.
Este comando também lê os dados de ponto flutuante do controlador CLP-5 (tipo de
arquivo F) e armazena-os em um tag com tipo de dados REAL em um controlador
Logix5550.
Escrita de tipo para CLP-5 escrita de inteiros ou dados do tipo REAL.
Este comando grava os dados SINT ou INT para um controlador CLP-5 (tipos de arquivo
S, B e N) e mantém a integridade dos dados. Você pode gravar os dados DINT desde
que os dados se adequem a um tipo de dados INT (−32,768 ≥ dados ≤ 32,767).
Este comando também grava os dados do tipo REAL do controlador Logix5550 para um
arquivo de ponto flutuante do CLP-5 (tipo de arquivo F).
Leitura da faixa de palavras do realiza a leitura de uma faixa contínua de palavras de 16 bits na memória do CLP-5,
CLP-5 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 (Elemento da Fonte) são armazenados, iniciando no
endereço especificado como Destination Tag (tag de Destino).
Escrita da Faixa de Palavras do escreve (grava) uma faixa contínua de palavras de 16 bits da memória do Logix5550,
CLP-5 independente do tipo de dados para a memória do CLP-5.
Este comando começa no endereço especificado como Source Tag (Tag da Fonte) 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 (Elemento do Destino) no controlador CLP-5.

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.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-17

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-5 para um controlador Logix5550.
Comando de leitura de tipo Comando de leitura da faixa de palavra

palavras de 16 bits no palavras de 32 bits no palavras de 16 bits no palavras de 32 bits no


controlador CLP-5 controlador Logix5550 controlador CLP-5 controlador Logix5550

1 1 1 2 1

2 2 2 4 3

3 3 3

4 4 4

Os comandos de tipo mantêm o valor e a estrutura dos dados. 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.

Especificação de Mensagens do SLC

Os tipos de mensagem do SLC são elaboradas para os controladores


SLC e MicroLogix1000.

Selecione este Se você quiser:


comando:
leitura de tipo para SLC realizar a leitura de dados INT ou DINT.
leitura de tipo para SLC escrever dados do tipo INT ou DINT.

O tipo de tag do Logix5550 deve estar de acordo com o tipo de dado


do SLC. Você só pode transferir dados DINT (que são mapeados para
o tipo de dados binários do SLC) ou dados INT (que são mapeados
para o tipo de dados inteiros do SLC).

Publicação 1756-RM003D-PT-P - Junho 2001


3-18 Instruções de Entrada/Saída (MSG, GSV, SSV)

Especificação das mensagens de block-transfer

Os tipos de mensagem de block-transfer são usados para


comunicação com módulos de block-transfer em uma rede de E/S
Remota Universal.

Selecione este Se você quiser:


comando:
Leitura de Block-Transfer ler dados de um módulo de block-transfer.
Este tipo de mensagem substitui a instrução BTR.
Escrita de Block-Transfer escrever dados em um módulo de block-transfer.
Este tipo de mensagem substitui a instrução BTW.

Os tags de fonte (para BTW) e destino (para BTR) devem ser grandes
para aceitar os dados solicitados, exceto para as estruturas MESSAGE,
AXIS e MODULE.

Além disso, você deve especificar quantos inteiros de 16 bits (INT)


serão enviados ou recebidos. É possível especificar de 0 a 64 inteiros.
Se você especificar 0 para uma mensagem BTR, o módulo de
block-transfer determinará quantos inteiros de 16 bits serão enviados.
Se você especificar 0 para uma mensagem BTW, o controlador enviará
64 inteiros.

O módulo de E/S que receberá o block-transfer deverá estar


identificado no organizador do controlador.

Ao selecionar um tipo de mensagem block-transfer, você não


seleciona um método de comunicação na guia Configuration. As
seleções CIP e DH+ são acinzentadas.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-19

Especificação das mensagens do CLP-3

Os tipos de mensagem do CLP-3 são determinados para os


controladores CLP-3.

Selecione este comando: Se você quiser:


Leitura de Tipo para CLP-3 leitura de inteiros ou dados do tipo REAL.
Para os inteiros, este comando lê os inteiros de 16 bits do controlador CLP-3,
armazena-os nas matrizes de dados SINT, INT ou DINT no controlador Logix5550 e
mantém a integridade dos dados.
Este comando também lê os dados de ponto flutuante do controlador CLP-3 e
armazena-os em um tag com tipo de dados REAL em um controlador Logix5550.
Escrita de Tipo para CLP-3 escrita de inteiros ou dados do tipo REAL.
Este comando grava os dados SINT ou INT em um arquivo de inteiros do controlador
CLP-3 e mantém a integridade dos dados. Você pode gravar os dados DINT desde que os
dados se adequem a um tipo de dados INT (−32,768 ≥ dados ≤ 32,767).
Este comando também grava os dados do tipo REAL do controlador Logix5550 para um
arquivo de ponto flutuante do CLP-3.
Leitura da Faixa de Palavra do realiza a leitura de uma faixa contínua de palavras de 16 bits na memória do CLP-3,
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 (Elemento da Fonte) são armazenados, iniciando no
endereço especificado como Destination Tag (tag de Destino).
Escrita da Faixa de Palavra do escreve (grava) uma faixa contínua de palavras de 16 bits na memória do Logix5550,
CLP-3 independente do tipo de dado para a memória do CLP-3.
Este comando começa no endereço especificado como Source Tag (Tag da Fonte) 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 (Elemento do Destino) no controlador CLP-3.

Publicação 1756-RM003D-PT-P - Junho 2001


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

Comando de leitura de tipo Comando de leitura da faixa de palavra

palavras de 16 bits no palavras de 32 bits no palavras de 16 bits no palavras de 32 bits no


controlador CLP-3 controlador Logix5550 controlador CLP-3 controlador Logix5550

1 1 1 2 1

2 2 2 4 3

3 3 3

4 4 4

Os comandos de tipo mantêm o valor e a estrutura dos dados. 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.

Especificação das mensagens do CLP-2

Os tipos de mensagem do CLP-2 são determinados para os


controladores CLP-2.

Selecione este comando: Se você quiser:


Leitura sem Proteção do CLP-2 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.
Escrita sem Proteção do CLP-2 escrever (gravar) 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.

A transferência de mensagem usa palavras de 16 bits; portanto,


certifique-se de que o tag do Logix5550 armazena os dados
transferidos de forma adequada (geralmente como uma matriz INT).

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-21

Exemplos de Configuração Os exemplos a seguir mostram os tags de fonte e destino do exemplo


e os elementos para as diferentes combinações de controladores.
MSG
Para as instruções MSG geradas em um controlador Logix5550 e
gravadas em outro controlador:

Percurso da Mensagem: Exemplo de Fonte e Destino:


Logix5550 → Logix5550 tag da fonte array_1
tag de destino array_2
É possível usar um tag com alias/símbolo para o tag fonte (no controlador Logix5550 de
origem). Se você quiser começar com um offset dentro de uma matriz, use um
alias/símbolo para indicar o offset.
Você não pode usar um alias/símbolo para o tag de destino. O destino deve ser um
tag de base.
Logix5550 → CLP-5 tag da fonte array_1
Logix5550 → SLC
elemento de destino N7:10
É possível usar um tag com alias/símbolo para o tag fonte (no controlador Logix5550 de
origem). Se você quiser começar com um offset dentro de uma matriz, use um
alias/símbolo para indicar o offset.
Logix5550 → CLP-2 tag da fonte array_1
elemento de destino 010

Para as instruções MSG geradas em um controlador Logix5550 e lidas


em outro controlador:

Percurso da Mensagem: Exemplo de Fonte e Destino:


Logix5550 → Logix5550 tag da fonte array_1
tag de destino array_2
Você não pode usar um tag com alias/símbolo para o tag de fonte. A fonte deve ser
um tag de base.
É possível usar um tag com alias/símbolo para o tag destino (no controlador Logix5550
de origem). Se você quiser começar com um offset dentro de uma matriz, use um
alias/símbolo para indicar o offset.
Logix5550 → CLP-5 elemento fonte N7:10
Logix5550 → SLC
tag de destino array_1
É possível usar um tag com alias/símbolo para o tag destino (no controlador Logix5550
de origem). Se você quiser começar com um offset dentro de uma matriz, use um
alias/símbolo para indicar o offset.
Logix5550 → CLP-2 elemento fonte 010
tag de destino array_1

Publicação 1756-RM003D-PT-P - Junho 2001


3-22 Instruções de Entrada/Saída (MSG, GSV, SSV)

Especificações dos Ao configurar uma instrução MSG, você especifica estes detalhes na
guia Communication.
Detalhes de Comunicação
(Guia Communication)

Especificação de um percurso de conexão

O percurso de conexão descreve o caminho que a mensagem


transcorrerá para chegar ao módulo ou controlador destino. O
percurso usa números, onde os pares de números o deslocam de um
módulo para outro através de uma placa de fundo do ControlLogix ou
da rede de comunicação.

Use o fluxograma abaixo para determinar se você deve inserir um


percurso.

A mensagem para um módulo de sim A. Acrescente o módulo à árvore de


block-transfer está em uma rede Configuração de E/S do
de E/S Remota Universal. controlador.

não B. Na guia Communication, da tela


Message Configuration, clique
em Browse e selecione o
módulo.

A mensagem para um sim Especifique um percurso para o módulo


controlador CLP-2, 3, 5 ou SLC 1756-DHRIO que esteja na mesma rede
está em uma rede DH+? DH+ do controlador. Consulte o
procedimento seguinte.
não
Especifique um percurso para o
controlador ou módulo. Consulte o
procedimento seguinte.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-23

Para especificar um percurso:

NOTA Se a árvore de Configuração de E/S contém um


módulo ou controlador destino ao invés de
especificar um percurso, clique em Browse para
selecionar o dispositivo.

1. Na caixa de texto Path, digite o seguinte, separando cada


número com uma vírgula [,]:

a. Especifique a porta pela qual a mensagem sai. (Para o


primeiro número no percurso, geralmente é o “1” que designa
a porta da placa de fundo do controlador Logix5550 que está
enviando a mensagem.):

Para a: Especifique:
placa de fundo de qualquer módulo ou controlador 1756 1
a porta DF1 de um controlador 1756-L1 2
a porta ControlNet de um módulo 1756-CNB
a porta Ethernet de um módulo 1756-ENET
a porta DH+ em um canal A de um módulo 1756-DHRIO
a porta DH+ em um canal B de um módulo 1756-DHRIO 3

b. Especifique o próximo módulo:

Para um módulo em uma: Especifique o:


placa de fundo do chassi de número da ranhura
E/S ControlLogix
rede DF1 endereço da estação (0-254)
rede ControlNet número do nó (1-99 decimal)
rede DH+ número do nó (1-77 octal)
rede Ethernet Pode-se especificar o módulo na rede
Ethernet usando qualquer um dos seguintes
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)

2. Repita a Etapa 1. até que você especifique o módulo ou


controlador destino.

Publicação 1756-RM003D-PT-P - Junho 2001


3-24 Instruções de Entrada/Saída (MSG, GSV, SSV)

As páginas a seguir mostram exemplos de percursos de conexão:

• em ControlNet, página 3-24


• em Ethernet, página 3-25
• para uma mensagem DH+, página 3-25

Os dois exemplos a seguir mostram os percursos de conexão entre os


controladores Logix5550 nas redes ControlNet e Ethernet. O
controlador que envia a mensagem está no chassi local e o que
recebe a mensagem localiza-se no chassi remoto.

EXEMPLO Especificação de um caminho pela ControlNet

chassi local chassi remoto


ControlNet nó 49 ControlNet nó 42
na ranhura 0 na ranhura 0
rede ControlNet
42042

Percurso: 1, 0, 2, 42, 1, 3

Onde: Indica:
1 a porta da placa de fundo do controlador Logix5550 no chassi local
0 o número da ranhura do módulo 1756-CNB no chassi local
2 a porta da ControlNet do módulo 1756-CNB na ranhura do chassi local
42 o nó da ControlNet do módulo 1756-CNB na ranhura do chassi remoto
1 a porta da placa de fundo do módulo 1756-CNB no chassi remoto
3 o número da ranhura do controlador no chassi remoto

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-25

EXEMPLO Especificação de um caminho pela Ethernet

chassi local módulo chassi remoto módulo


Ethernet na ranhura 1 Ethernet na ranhura 2 ende
reço IP 127.127.127.12
rede Ethernet
42043

Percurso: 1, 1, 2, 127.127.127.12, 1, 3

Onde: Indica:
1 a porta da placa de fundo do controlador Logix5550 no chassi local
1 o número da ranhura do módulo 1756-ENET no chassi local
2 a porta da Ethernet do módulo 1756-ENET no chassi local
127.127.127.12 o endereço IP do módulo 1756-ENET no chassi remoto
1 a porta da placa de fundo do módulo 1756-ENET no chassi remoto
3 o número da ranhura do controlador no chassi remoto

O exemplo a seguir mostra o percurso de conexão usado em uma


mensagem para um controlador CLP-5. Neste caso, o percurso termina
no módulo 1756-DHRIO que está na mesma rede DH+ do controlador
CLP-5.

EXEMPLO Especificação de um caminho para uma mensagem


DH+

chassi local chassi 1771 com


DH+ = nó 37 controlador
CLP-5 DH+ = nó 24
rede DH+
42044

Percurso: 1, 1

Onde: Indica:
1 a porta da placa de fundo do controlador Logix5550 no chassi local
1 o número da ranhura do módulo 1756-DHRIO no chassi local

Publicação 1756-RM003D-PT-P - Junho 2001


3-26 Instruções de Entrada/Saída (MSG, GSV, SSV)

Especificação de um método de comunicação:

Use a tabela a seguir para selecionar um método de comunicação


para a mensagem.

NOTA Para um tipo de mensagem de block-transfer ou CIP


genérica, você não seleciona um método de
comunicação. (A seção não está disponível.)

Se o dispositivo destino for Então selecione: E especifique:


um:
controlador ControlLogix CIP outras especificações não são necessárias
controlador ControlNet CLP-5
controlador CLP-5 DH+ Canal: Canal A ou B do módulo 1756-DHRIO que está
conectado à rede DH+
controlador SLC Rede Fonte: IIdentificação do rede atribuída à placa de fundo
do controlador na tabela de roteamento do
módulo 1756-DHRIO. (O nó fonte na tabela de
roteamento corresponde automaticamente ao
número da ranhura do controlador.)
controlador CLP-3 Rede Destino: Identificação da rede DH+ remota onde o
dispositivo alvo reside
controlador CLP-2 Nó Destino: Endereço da estação do dispositivo alvo
Se houver somente uma rede DH+ e você não usou o software Gateway
para configurar o módulo DH/RIO para as redes remotas, especifique 0
tanto para a Rede Fonte quanto para a Destino.
Aplicação em uma estação de CIP com Identificação Rede Fonte: Identificação da rede dos dados (0-65535)
trabalho que está recebendo de Fonte fornecidos pela aplicação para RSLinx
uma mensagem não requisitada
Rede Destino: Identificação de rede virtual configurado no
conectada à rede Ethernet ou (Isto permite que a
RSLinx (0-65535)
ControlNet através de RSLinx aplicação receba dados de
um controlador.) Nó Destino: Identificação de destino (0-77 octal) fornecida
pela aplicação para RSLinx
O número da ranhura do controlador Logix5550 é usado como Nó Fonte.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-27

Seleção 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:

Esse tipo de mensagem: Usando esse método de Usa uma Que você
comunicação: conexão: pode colocar
no cache:
leitura ou escrita da tabela de CIP ✓ ✓
dados CIP
CLP2, CLP3, CLP5 ou SLC CIP
(todos os tipos)
CIP com Identificação de
Fonte
DH+ ✓
CIP genérico N/A
leitura ou escrita em N/A ✓ ✓
block-transfer

Use a tabela a seguir para selecionar uma opção de cache para uma
mensagem.

Se a mensagem Então: Porque:


executar:
repetidamente Selecione a caixa de Isto manterá a conexão aberta e otimizará o tempo
verificação Cache de execução. A abertura da conexão cada vez que a
Connections mensagem executar, aumenta o tempo de execução.
não Retire a seleção da Isto fechará a conexão na conclusão, que liberará
frequentemente caixa de verificação aquela conexão para outros usos.
Cache Connections

Publicação 1756-RM003D-PT-P - Junho 2001


3-28 Instruções de Entrada/Saída (MSG, GSV, SSV)

Obtenção do Valor do Linguagens Disponíveis:

Sistema (GSV) e Definição


Lógica Ladder a Relé
do Valor do Sistema (SSV)
As instruções GSV/SSV obtêm e definem os dados do sistema do
controlador que estão armazenados nos objetos.

Operandos de Lógica
Ladder a Relé:

Operando: Tipo: Formato: Descrição:


Nome da classe nome nome do objeto
Nome da instância nome nome do objeto específico, quando o objeto requisitar um
nome
Nome do Atributo nome atributo do objeto
o tipo de dados depende do atributo que você selecionou
Destination (GSV) SINT tag destino para os dados de atributo
INT
DINT
REAL
Source (SSV) SINT tag tag que contém os dados que você quer copiar para o
INT atributo
DINT
REAL

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

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.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-29

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

Use as instruções GSV/SSV cuidadosamente. As


ATENÇÃO
alterações realizadas nos objetos podem causar
operação inesperada do controlador ou danos

! pessoais.

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 (Registro
de Falha Grave) do objeto Programa requer um tipo de dado
DINT[11].

Flags de Status Aritmético: não afetados

Condições de Falha:

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
não se forneceu informações suficientes para 4 6
uma instrução SSV
o destino GSV não era grande o suficiente para 4 7
suportar os dados requisitados.

Execução de Lógica
Ladder a Relé:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for Obtenha ou configure o valor especificado.
verdadeira A saída da condição da linha está definida como verdadeira.

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


3-30 Instruções de Entrada/Saída (MSG, GSV, SSV)

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
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 (TAREFA)
que é acessado pelo nome da tarefa.

Para a instrução GSV, somente o tamanho


ATENÇÃO
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.

É possível acessar estes objetos:

Para informações sobre este Consulte página:


objeto:
AXIS 3-31
CONTROLLER 3-39
CONTROLLERDEVICE 3-39
CST 3-41
DF1 3-42
FAULTLOG 3-45
MESSAGE 3-46
MODULE 3-48
MOTIONGROUP 3-49
PROGRAM 3-50
ROUTINE 3-51
SERIALPORT 3-52
TASK 3-54
WALLCLOCKTIME 3-55

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-31

Acesso ao objeto AXIS (Eixo)

O objeto AXIS fornece as informações de status de um eixo de


servomódulo. Especifique o nome do tag do eixo para selecionar o
objeto AXIS desejado.

Para mais informações sobre o objeto AXIS, consulte Logix5550


Motion Module User Manual, publicação 1756-6.5.16.

Quando um atributo está marcado com um asterisco (*), significa que


o atributo localiza-se tanto no controlador ControlLogix quanto no
módulo de movimento. Quando você usa uma instrução SSV para
escrever um destes valores, o controlador automaticamente atualiza a
cópia no módulo. Entretanto, este processo não é imediato. Para
certificar-se de que o novo valor tenha sido atualizado no módulo,
use um mecanismo de intertravamento, através dos bits booleanos no
UpdateStatus do tag Axis.

Por exemplo, se você executar uma SSV para o


PositionLockTolerance, o PositionTolStatus do tag Axis é configurado
até que uma atualização para o módulo seja feita com êxito. Portanto,
a lógica que segue a SSV poderia acompanhar este reset de bit antes
de continuar no programa.

Atributo: Tipo de Instrução: Descrição:


Dados:
* AccelerationFeedforwardGain REAL GSV O valor usado para fornecer a saída de comando de torque para gerar
SSV a aceleração do comando.
*AxisType INT GSV O tipo de eixo que está sendo usado.
SSV Valor: Significado:
0 eixo não usado
1 eixo de posicionamento
2 eixo físico
*DriveFaultAction SINT GSV A operação realizada quando a falha do inversor ocorre.
SSV Valor: Significado:
0 desligar o eixo
1 desabilitar o inversor
2 parar o movimento comandado
3 alterar somente o bit de status
*EncoderLossFaultAction SINT GSV A operação realizada quando uma falha por perda de encoder ocorre.
SSV Valor: Significado:
0 desligar o eixo
1 desabilitar o inversor
2 parar o movimento comandado
3 alterar somente o bit de status
*EncoderNoiseFaultAction SINT GSV A operação realizada quando uma falha por ruído no encoder ocorre.
SSV Valor: Significado:
0 desligar o eixo
1 desabilitar o inversor
2 parar o movimento comandado
3 alterar somente o bit de status
*FrictionCompensation REAL GSV O nível de saída fixa usado para compensar a fricção estática.
SSV

Publicação 1756-RM003D-PT-P - Junho 2001


3-32 Instruções de Entrada/Saída (MSG, GSV, SSV)

Atributo: Tipo de Instrução: Descrição:


Dados:
*MaximumNegativeTravel REAL GSV O limite de percurso negativo máximo.
SSV
*MaximumPositiveTravel REAL GSV O limite de percurso positivo máximo.
SSV
*OutputFilterBandwidth REAL GSV A largura de faixa do filtro de saída digital servo de passa/baixa.
SSV
*OutputLimit REAL GSV O valor da tensão máxima de saída do servo do eixo.
SSV
*OutputOffset REAL GSV O valor usado para compensar os efeitos dos offsets cumulativos da
SSV saída DAC do servomódulo e da entrada do servoinversor.
*OutputScaling REAL GSV O valor usado para converter a saída da malha do servo na tensão
SSV equivalente a do inversor.
*PositionErrorFaultAction SINT GSV A operação realizada quando a falha por erro de posição ocorre.
SSV Valor: Significado:
0 desligar o eixo
1 desabilitar o inversor
2 parar o movimento comandado
3 alterar somente o bit de status
*PositionErrorTolerance REAL GSV O volume de erro de posição que o servo tolera antes de emitir uma
SSV falha de erro de posição.
*PositionIntegralGain REAL GSV O valor usado para se atingir um preciso posicionamento de eixo,
SSV apesar de perturbações como, por exemplo, gravidade e fricção
estática.
*PositionProportionalGain REAL GSV O valor que o controlador multiplica pelo erro de posição para corrigir
SSV o erro de posição.
*PositionUnwind DINT GSV O valor usado para realizar o desenrolamento automático do eixo de
SSV rotação.
*ServoConfigurationBits DINT GSV Os bits de configuração do servo para a malha de servo.
SSV Bit: Significado:
0 eixo de rotação
1 servoinversor com velocidade externa
2 negativo da polaridade de encoder
3 negativo da polaridade do servo
4 verificação da ultrapassagem de percurso do software
5 verificação de erro de posição
6 verificação da falha de perda de encoder
7 verificação da falha por ruído no encoder
8 verificação da falha do inversor
9 falha de normalmente fechado do inversor
*SoftOvertravelFaultAction SINT GSV A operação realizada quando a falha por ultrapassagem de percurso
SSV do software ocorre.
Valor: Significado:
0 desligar o eixo
1 desabilitar o inversor
2 parar o movimento comandado
3 alterar somente o bit de status
*VelocityFeedforwardGain REAL GSV A saída do comando de velocidade necessária para gerar a
SSV velocidade comandada.
*VelocityIntegralGain REAL GSV O valor que o controlador multiplica pelo valor VelocityIntegratorError
SSV para corrigir o erro de velocidade.
*VelocityProportionalGain REAL GSV O valor que o controlador multiplica pelo valor VelocityError para
SSV corrigir o erro de velocidade.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-33

Atributo: Tipo de Instrução: Descrição:


Dados:
ActualPosition REAL GSV A posição real do eixo.
ActualVelocity REAL GSV A velocidade real do eixo.
AverageVelocity REAL GSV A velocidade média do eixo.
AverageVelocityTimebase REAL GSV A base de tempo da velocidade média do eixo.
SSV
AxisConfigurationState SINT GSV O estado da configuração do eixo.
AxisState SINT GSV O estado de operação do eixo.
Valor: Significado:
0 eixo pronto
1 controle direto do inversor
2 servocontrole
3 eixo com falha
4 desligamento do eixo
C2CConnectionInstance DINT GSV A instância de conexão do controlador produzindo os dados do eixo.
C2CMapTableInstance DINT GSV A instância de mapa do controlador produzindo os dados do eixo.
CommandPosition REAL GSV A posição de comando do eixo.
CommandVelocity REAL GSV A velocidade de comando do eixo.
ConversionConstant REAL GSV O fator de conversão usado para converter as unidades do usuário os
SSV pulsos de realimentação.
DampingFactor REAL GSV O valor usado no cálculo da largura de faixa máxima do
SSV servoposicionamento durante a execução da instrução MRAT –
Motion Run Axis Tuning (Ajuste do Eixo de Operação em Movimento).
EffectiveInertia REAL GSV O valor de inércia para o eixo, conforme calculado a partir das
medições do controlador realizadas durante a última instrução MRAT
– Motion Run Axis Tuning.
GroupInstance DINT GSV O número de exemplo do grupo de movimento que contém o eixo.
HomeMode SINT GSV O modo de posição inicial do eixo.
SSV Valor: Significado:
0 posição inicial passiva
1 posição inicial ativa (padrão)
HomePosition REAL GSV A posição de início do eixo.
SSV
HomeReturnSpeed REAL GSV A velocidade de retorno de posição inicial do eixo.
SSV
HomeSequenceType SINT GSV O tipo de seqüência de posição inicial para o eixo.
SSV Valor: Significado:
0 posição inicial imediata
1 alternar posição inicial
2 posição inicial do marcador
3 posição inicial do marcador de alternação (valor inicial)
HomeSpeed REAL GSV A velocidade de posição inicial do eixo.
SSV
Instance DINT GSV O número de instância do eixo.

Publicação 1756-RM003D-PT-P - Junho 2001


3-34 Instruções de Entrada/Saída (MSG, GSV, SSV)

Atributo: Tipo de Instrução: Descrição:


Dados:
InterpolatedActualPosition REAL GSV Para capturas de posição com base no tempo, este atributo fornece a
posição do eixo real interpolado.
• A posição é especificada em unidades de posição e é baseada
no valor do atributo InterpolationTime.
• Para interpolar uma posição de eixo real, use uma instrução
SSV para configurar o atributo InterpolationTime.
InterpolatedCommandPosition REAL GSV Para capturas de posição com base no tempo, este atributo fornece a
posição do eixo de comando interpolado.
• A posição é especificada em unidades de posição e é baseada
no valor do atributo InterpolationTime.
• Para interpolar uma posição de eixo de comando, use uma
instrução SSV para configurar o atributo InterpolationTime.
InterpolationTime DINT GSV Use este atributo para fornecer a referência para capturas de posição
SSV com base no tempo:
• Para interpolar uma posição, use uma instrução SSV para
configurar o atributo InterpolationTime. O controlador, então,
atualiza os seguintes atributos:
• InterpolatedActualPosition
• InterpolatedCommandPosition
• Para fornecer um valor para InterpolationTime, você pode usar
qualquer evento que produza um registro de data e hora CST,
como:
• RegistrationTime attribute
• Registro de data e hora de uma entrada digital
• O atributo InterpolationTime usa somente os 32 bits mais
baixos de uma registro de data e hora CST.
MapTableInstance DINT GSV O exemplo de mapa de E/S do servomódulo.
MasterOffset REAL GSV Offset da posição que está atualmente aplicada ao mestre de um
came de posição. Especificado em unidades de posição do eixo
mestre.
MaximumAcceleration REAL GSV A aceleração máxima do eixo.
SSV
MaximumDeceleration REAL GSV A desaceleração máxima do eixo.
SSV
MaximumSpeed REAL GSV A velocidade máxima do eixo.
SSV
ModuleChannel SINT GSV O canal do módulo do servomódulo.
MotionConfigurationBits DINT GSV Os bits de configuração de movimento para o eixo.
SSV Bit: Significado:
0 reversão da direção da posição inicial
1 chave na posição inicial normalmente fechado
2 negativo da borda de marcador na posição inicial
MotionFaultBits DINT GSV Os bits de falha de movimento para o eixo. (Na estrutura AXIS, este é
o membro MotionFault.)
Bit: Nome do Bit: Significado:
0 ACAsyncConnFault falha na conexão assíncrona
1 ACSyncConnFault falha na conexão síncrona

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-35

Atributo: Tipo de Instrução: Descrição:


Dados:
MotionStatusBits DINT GSV Os bits de status de movimento para o eixo. (Na estrutura AXIS, este
é o membro MotionStatus.)

Bit: Nome do Bit: Significado:


0 AccelStatus aceleração
1 DecelStatus desaceleração
2 MoveStatus movimento
3 JogStatus jog
4 GearingStatus engrenagem
5 HomingStatus guiamento orientado
6 StoppingStatus desligamento
7 AxisHomedStatus status inicial
8 PositionCamStatus came de posição
9 TimeCamStatus came de tempo
10 PositionCamPendingStatus came de posição pendente
11 TimeCamPendingStatus came de tempo pendente
12 GearingLockStatus trava de engrenagem
13 PositionCamLockStatus trava do came de posição
14 MasterOffsetMoveStatus movimento do offset mestre

MotorEncoderTestIncrement REAL GSV A quantidade de movimento necessária para iniciar o teste MRHD –
SSV Motion Run Hookup Diagnostic.
PositionError REAL GSV A diferença entre a posição de comando e a real de um eixo.
PositionIntegratorError REAL GSV A soma do erro de posição para um eixo.
PositionLockTolerance REAL GSV O volume de erro de posição que o servomódulo tolera ao fornecer
SSV uma indicação de status travado na posição verdadeira.
PositionServoBandwidth REAL GSV A largura de faixa de ganho da unidade que o controlador usa para
SSV calcular os ganhos para a instrução MAAT – Motion Apply Axis
Tuning (Ajuste do Eixo para Aplicação de Movimento).
ProgrammedStopMode SINT GSV O tipo de parada a ser realizada no eixo.
SSV Valor: Significado:
0 parada rápida
1 desligamento rápido
2 desligamento do hardware
RegistrationPosition REAL GSV A posição de registro para o eixo.
RegistrationTime DINT GSV Você pode usar este atributo para fornecer um registro de data e hora
para capturas com base no tempo:
• O atributo RegistrationTime contém os 32 bits mais baixos do
registro de data e hora CST de um evento de registro de eixo.
• O registro de data e hora CST é medido em microssegundos.
• Para interpolar uma posição baseada no evento de registro de
um eixo:
1. Use uma instrução GSV para obter o valor do atributo
RegistrationTime.
2. Use uma instrução SSV para configurar o atributo
InterpolationTime para o valor do atributo RegistrationTime.

Publicação 1756-RM003D-PT-P - Junho 2001


3-36 Instruções de Entrada/Saída (MSG, GSV, SSV)

Atributo: Tipo de Instrução: Descrição:


Dados:
ServoConfigurationUpdateBits DINT GSV Os bits de status de configuração do servo para a malha de servo. (Na
estrutura AXIS, este é o membro UpdateStatus.)
Bit: Nome do Bit: Significado:
0 AxisTypeStatus tipo de eixo
1 PosUnwndStatus desenrolamento da posição
2 MaxPTrvlStatus percurso positivo máximo
3 MaxNTrvlStatus percurso negativo máximo
4 PosErrorTolStatus tolerância de erro de posição
5 PosLockTolStatus tolerância de travamento na posição
6 PosPGainStatus ganho proporcional de posição
7 PosIGainStatus ganho integral de posição
8 VelFfGainStatus ganho de feedforward na velocidade
9 AccFfGainStatus ganho de feedforward
na aceleração
10 VelPGainStatus ganho proporcional de velocidade
11 VelIGainStatus ganho integral de velocidade
12 OutFiltBwStatus largura de faixa do filtro de saída
13 OutScaleStatus conversão de escala na saída
14 OutLimitStatus limite de saída
15 OutOffsetStatus offset de saída
16 FricCompStatus compensação de fricção
17 POtrvlFaultActStatus ação de falha de ultrapassagem de
percurso de software
18 PosErrorFaultActStatus ação de falha de erro de posição
19 EncLossFaultActStatus ação de falha de perda de encoder
20 EncNsFaultActStatus ação de falha por ruído no encoder
21 DriveFaultActStatus ação de falha do inversor
ServoEventBits DINT GSV Os bits de eventos do servo para a malha de servo. (Na estrutura
AXIS, este é o membro EventStatus.)
Bit: Nome do Bit: Significado:
0 WatchEvArmStatus evento de observação armado
1 WatchEvStatus evento de observação
2 RegEvArmStatus evento de registro armado
3 RegEvStatus evento de registro
4 HomeEvArmStatus evento de posição inicial armado
5 HomeEvStatus evento de posição inicial
ServoFaultBits DINT GSV Os bits de falha do servo para a malha de servo. (Na estrutura AXIS,
este é o membro ServoFault.)
Bit: Nome do Bit: Significado:
0 POtrvlFault falha de ultrapassagem de percurso
positivo
1 NOtrvlFault falha de ultrapassagem de percurso
negativo
2 PosErrorFault falha de erro de posição
3 EncCHALossFault falha de perda do canal A do encoder
4 EncCHBLossFault falha de perda do canal B do encoder
5 EncCHZLossFault falha de perda do canal Z do encoder
6 EncNsFault falha por ruído do encoder
7 DriveFault falha do inversor
8 SyncConnFault falha de conexão síncrona
9 HardFault falha no hardware do servo
ServoOutputLevel REAL GSV O nível de tensão de saída para a malha do servo do eixo.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-37

Atributo: Tipo de Instrução: Descrição:


Dados:
ServoStatusBits DINT GSV Os bits de status para a malha de servo. (Na estrutura AXIS, este é o
membro ServoStatus.)
Bit: Nome do Bit: Significado:
0 ServoActStatus ação do servo
1 DriveEnableStatus inversor habilitado
2 OutLmtStatus limite de saída
3 PosLockStatus trava da posição
13 TuneStatus processo de ajuste
14 TestStatus diagnóstico de teste
15 ShutdownStatus desligamento do eixo
ServoStatusUpdateBits DINT GSV Os bits de atualização de status do servo para o eixo.
Bit: Significado:
0 atualização do erro de posição
1 atualização do erro do integrador de posição
2 atualização do erro de velocidade
3 atualização do erro do integrador de velocidade
4 atualizaçãodo comando de velocidade
5 atualização da realimentação de velocidade
6 atualização do nível de saída do servo
StartActualPosition REAL GSV A posição real do eixo quando se inicia um novo movimento
comandado para o eixo.
StartCommandPosition REAL GSV A posição de comando do eixo quando se inicia um novo movimento
comandado para o eixo.
StartMasterOffset REAL GSV O mestre faz o offset quando a última instrução Motion Axis Move
(MAM) foi executada em um destes tipos de movimentos:
• AbsoluteMasterOffset
• IncrementalMasterOffset
Especificado em unidades de posição do eixo mestre.
StrobeActualPosition REAL GSV A posição real de um eixo quando a instrução MGSP – Motion Group
Strobe Position (Posição da Sonda do Grupo de Movimento) é
executada.
StrobeCommandPosition REAL GSV A posição de comando de um eixo quando a instrução MGSP –
Motion Group Strobe Position (Posição da Sonda do Grupo de
Movimento) é executada.
StrobeMasterOffset REAL GSV O mestre faz o offset quando a instrução Motion Group Strobe
Position (MGSP) é executada. Especificado em unidades de posição
do eixo mestre.
TestDirectionForward SINT GSV A direção do percurso do eixo durante a instrução MRHD – Motion
Run Hookup Diagnostic (Diagnóstico) como visto pelo servomódulo.
Valor: Significado:
0 direção negativa (reversa)
1 (ff) direção positiva (para frente)
TestStatus INT GSV O status da última instrução MRHD – Motion Run Hookup Diagnostic.
Valor: Significado:
0 processo do teste com sucesso
1 teste em andamento
2 processo de teste abortado pelo usuário
3 período de espera de 2 segundos excedido pelo teste
4 processo de teste com falha devido à falha do servo
5 incremento insuficiente de teste
TuneAcceleration REAL GSV O valor de aceleração medido durante a instrução MRAT – Motion
Run Axis Tuning (Ajuste do Eixo de Operação de Movimento).
TuneAccelerationTime REAL GSV O tempo de aceleração medido durante a instrução MRAT – Motion
Run Axis Tuning (Ajuste do Eixo de Operação de Movimento).

Publicação 1756-RM003D-PT-P - Junho 2001


3-38 Instruções de Entrada/Saída (MSG, GSV, SSV)

Atributo: Tipo de Instrução: Descrição:


Dados:
TuneDeceleration REAL GSV O valor de desaceleração medido durante a instrução MRAT – Motion
Run Axis Tuning (Ajuste do Eixo de Operação de Movimento).
TuneDecelerationTime REAL GSV O tempo de desaceleração medido durante a instrução MRAT –
Motion Run Axis Tuning (Ajuste do Eixo de Operação de Movimento).
TuneRiseTime REAL GSV O tempo de elevação do eixo medido durante a instrução MRAT –
Motion Run Axis Tuning (Ajuste do Eixo de Operação de Movimento).
TuneSpeedScaling REAL GSV O fator de conversão da escala do inversor do eixo medido durante a
última instrução MRAT – Motion Run Axis Tuning (Ajuste do Eixo de
Operação de Movimento).
TuneStatus INT GSV O status da última instrução MRAT – Motion Run Axis Tuning.
Valor: Significado:
0 processo de ajuste com sucesso
1 ajuste em andamento
2 processo de ajuste abortado pelo usuário
3 período de espera de 2 segundos excedeu o ajuste
4 processo de ajuste com falha devido à falha do servo
5 eixo atingiu o limite do percurso de ajuste
6 polaridade do eixo definida incorretamente
7 velocidade do ajuste é muito baixa para realizar medições
TuneVelocityBandwidth REAL GSV A largura de faixa do inversor, conforme calculado a partir das
medições do controlador realizadas durante a última instrução MRAT
– Motion Run Axis Tuning.
TuningConfigurationBits DINT GSV Os bits de configuração de ajuste para o eixo.
SSV Bit: Significado:
0 direção de ajuste (0 = para frente, 1 = reversa)
1 integrador de erro de posição de ajuste
2 integrador de erro da velocidade de ajuste
3 bit feedforward da velocidade de ajuste
4 feedforward de aceleração
5 filtro passa/baixa de velocidade de ajuste
TuningSpeed REAL GSV A velocidade máxima iniciada pela instrução MRAT – Motion Run
SSV Axis Tuning (Ajuste do Eixo de Operação de Movimento).
TuningTravelLimit REAL GSV O limite de percurso usado pela instrução MRAT – Motion Run Axis
SSV Tuning para limitar a ação da ação durante o ajuste.
VelocityCommand REAL GSV A referência de velocidade atual para a malha de servovelocidade
para um eixo.
VelocityError REAL GSV A diferença entre a velocidade real e a comandada de um eixo do
servo.
VelocityFeedback REAL GSV A velocidade real do eixo estimada pelo servomódulo.
VelocityIntegratorError REAL GSV A soma do erro de velocidade para um eixo especificado.
WatchPosition REAL GSV A posição de observação do eixo.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-39

Acesso ao objeto CONTROLLER

O objeto CONTROLLER fornece as informações de status sobre a


execução do controlador.

Atributo: Tipo de Dados: Instrução: Descrição:


TimeSlice INT GSV Porcentagem de CPU disponível atribuída para a comunicação.
SSV 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.

Acesso ao objeto CONTROLLERDEVICE

O objeto CONTROLLERDEVICE identifica o hardware físico 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 no string da matriz.
ProductCode INT GSV Identifica o tipo de controlador
Este código de Identifica este controlador
produto: Logix:
3 5550
15 5860
41 5433
42 5434
43 5320
50 5553
51 5555

ProductRev INT GSV Identifica a revisão atual do produto. O display deve ser
hexadecimal.
O byte desenergizado contém a revisão principal; o byte
energizado contém a revisão secundária.
SerialNumber DINT GSV Número serial do dispositivo.
O número serial é atribuído quando o dispositivo é construído.

Publicação 1756-RM003D-PT-P - Junho 2001


3-40 Instruções de Entrada/Saída (MSG, GSV, SSV)

Atributo: Tipo de Dados: Instrução: Descrição:


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 Logix5550


Bits 13-12: Significado:
01 chave seletora em Run (operação)
10 chave seletora em Program (programa)
11 chave seletora em Remote (remota)
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
Fornecedor INT GSV Identifica o fornecedor do dispositivo.
Allen-Bradley = 0001

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-41

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 é
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ão usado
10-15 não usado
CurrentValue DINT[2] GSV Valor atual do temporizador. DINT[0] contém 32 bits desenergizados;
DINT[1] contém 32 bits energizados.
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-RM003D-PT-P - Junho 2001


3-42 Instruções de Entrada/Saída (MSG, GSV, SSV)

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 Instrução: Descrição:


Dados:
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 ms.
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 modem bits do modem
2 pacotes enviados pacotes enviados pacotes enviados
3 pacotes recebidos pacotes recebidos pacotes recebidos
4 pacotes não entregues pacotes não entregues pacotes não entregues
5 não usado tentativas de mensagens tentativas de mensagens
6 NAKs recebidos NAKs recebidos não usado
7 ENQs recebidos poll de pacotes recebidos não usado
8 pacotes NAKed defeituosos pacotes not ACKed defeituosos pacotes not ACKed defeituosos
9 nenhuma memória enviou um NAK nenhuma memória not ACKed não usado
10 pacotes duplicados recebidos pacotes duplicados recebidos pacotes duplicados recebidos
11 caracteres defeituosos recebidos não usado não usado
12 contagem de recuperações DCD contagem de recuperações DCD contagem de recuperações DCD
13 contagem de modem perdida contagem de modem perdida contagem de modem perdida
14 não usado não usado prioridade do tempo de varredura máximo
15 não usado não usado última prioridade do tempo de varredura
16 não usado não usado tempo de varredura normal máximo
17 não usado não usado último tempo normal de varredura
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 período
de espera 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-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-43

Atributo: Tipo de Instrução: Descrição:


Dados:
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 na matriz normal de nós
do poll, depois de realizar um polling de todas as estações na
matriz de nós de poll de prioridade (somente mestre).
Valor válido 0-255. Ajuste 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
varredura do nó
3 transferência padrão de várias mensagens por
varredura do nó
O ajuste 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 ajuste inicial é de 5 períodos (100 ms).
StationAddress INT GSV Endereço atual da estação da porta serial.
Valor válido 0-254. Ajuste inicial é 0.
SlavePollTimeout DINT GSV A quantidade de tempo em ms que o escravo espera pelo mestre
para realizar um polling, antes que o escravo declare que não
tenha 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 3.000 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 SINT SSV Valor pendente para o atributo EmbeddedResponse.
Enable
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 SINT SSV Valor pendente para o atributo MasterMessageTransmit.
Transmit

Publicação 1756-RM003D-PT-P - Junho 2001


3-44 Instruções de Entrada/Saída (MSG, GSV, SSV)

Atributo: Tipo de Instrução: Descrição:


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

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 para cada atributo pendente configurado. Configure a
instrução MSG da seguinte forma:

Guia MSG Configuration: Campo: Valor:


Configuration Message Type CIP Generic
Service Code 0d hex
(Código de Serviço)
Object Type a2
(Tipo de Objeto)
Object ID 1
(Identificação do Objeto)
Object Attribute deixe em branco
(Atributo do Objeto)
Source deixe em branco
Número de Elementos 0
Destination deixe em branco
Communication Path percurso de comunicação
automático (1,s onde s =
número da ranhura do
controlador)

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-45

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 Quantas falhas graves ocorreram desde a última vez que este
SSV contador foi resetado.
MinorEvents INT GSV Quantas falhas de advertência ocorreram desde a última vez
SSV que este contador foi resetado.
MajorFaultBits DINT GSV Os bits individuais indicam o motivo da falha grave atual.
SSV 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 Os bits individuais indicam o motivo da falha de advertência
SSV atual.
Bit: Significado:
4 execução da instrução (programa)
6 watchdog
9 porta serial
10 bateria

Publicação 1756-RM003D-PT-P - Junho 2001


3-46 Instruções de Entrada/Saída (MSG, GSV, SSV)

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.

Atributo: Tipo de Dados: Instrução: Descrição:


ConnectionPath SINT[130] GSV Dados para configuração do percurso de conexão. Os primeiros
SSV dois bytes (byte desenergizado e byte energizado) são o
comprimento em bytes do percurso de conexão.
ConnectionRate DINT GSV Taxa (velocidade) requisitada para o pacote da conexão.
SSV
MessageType SINT GSV Especifica o tipo de mensagem.
SSV Valor: Significado:
0 não inicializado
Port SINT GSV Indica por qual porta a mensagem deve ser enviada.
SSV Valor: Significado:
1 placa de fundo
2 porta serial
TimeoutMultiplier SINT GSV Determina o término da temporização de uma conexão e quando
SSV deve ser fechada.
Valor: Significado:
0 conexão interromperá a temporização em 4 vezes a
taxa de atualização (padrão)
1 conexão interromperá a temporização em 8 vezes a
taxa de atualização
2 conexão interromperá a temporização em 16 vezes
a taxa de atualização
UnconnectedTimeout DINT GSV Período de espera em microssegundos para todas as mensagens
SSV não conectadas. O valor inicial é de 30.000.000 microssegundos
(30 segundos).

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.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-47

O seguinte exemplo muda o atributo ConnectionPath, de forma que a


mensagem vá para um controlador diferente.

EXEMPLO Mudança de um atributo do objeto MESSAGE


Quando msg_path estiver energizado, configure o caminho da mensagem msg_1 para o
valor de msg_1_path. Isto envia a mensagem para um controlador diferente.

msg_path GSV SSV


Get System Value Set System Value
Class name MESSAGE Class name MESSAGE
Instance name msg_1 Instance name msg_1
Attribute Name MessageType Attribute Name MessageType
Dest msg_1_type Source tag_a
2 0

SSV SSV
Set System Value Set System Value
Class name MESSAGE Class name MESSAGE
Instance name msg_1 Instance name msg_1
Attribute Name ConnectionPath Attribute Name MessageType
Source msg_1_path[0] Source msg_1_type
6 2

msg_1.EN MSG
/ Type - CIP Data Table Write EN
Message Control msg_1 ... DN
ER

42614

Onde: É:
msg_1 mensagem cujo atributo você quer mudar
msg_1_type tag que armazena o valor do atributo MessageType
tag_a tag que armazena um 0
msg_1_path tag de matriz que armazena o novo caminho de conexão para a
mensagem

Publicação 1756-RM003D-PT-P - Junho 2001


3-48 Instruções de Entrada/Saída (MSG, GSV, SSV)

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 mascarados 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 MODULE-pai 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-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-49

Atributo: Tipo de Dados: Instrução: Descrição:


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 Especifica o modo atual do objeto MODULE.
SSV 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 o objeto MODULE seja introduzido
no estado Inibido depois de desligar todas as conexões
para o módulo.

Acesso ao objeto MOTIONGROUP

O objeto MOTIONGROUP fornece as informações de status sobre um


grupo de eixos para o servomódulo. Especifique o nome do tag do
grupo de movimento para determinar qual objeto MOTIONGROUP
você quer.

Atributo: Tipo de Dados: Instrução: Descrição:


Instance DINT GSV Fornece o número de exemplo deste objeto MOTION_GROUP.

Publicação 1756-RM003D-PT-P - Junho 2001


3-50 Instruções de Entrada/Saída (MSG, GSV, SSV)

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 Controla essa execução do programa.
SSV 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 Tempo que a execução do programa demorou da última vez.
SSV O tempo está em microssegundos.
MajorFaultRecord DINT[11] GSV Registra as falhas graves para este programa
SSV 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 Tempo máximo de execução registrado para este programa. O
SSV tempo está em microssegundos.
MinorFaultRecord DINT[11] GSV Registra as falhas de advertência para este programa
SSV 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ção específica sobre a falha (depende do tipo e do código
de falha)
SFCRestart INT GSV não usado – reservado para uso futuro
SSV

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-51

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.

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.

Publicação 1756-RM003D-PT-P - Junho 2001


3-52 Instruções de Entrada/Saída (MSG, GSV, SSV)

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:


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

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:

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-53

Guia MSG Configuration: Campo: Valor:


Configuration Message Type CIP Generic
Service Code 0d hex
(Código de Serviço)
Object Type 6f hex
(Tipo de Objeto)
Object ID 1
(Identificação do Objeto)
Object Attribute deixe em branco
(Atributo do Objeto)
Source deixe em branco
Número de Elementos 0
Destination deixe em branco
Communication Path percurso de comunicação automático
(1,s onde s = número da ranhura do
controlador)

Publicação 1756-RM003D-PT-P - Junho 2001


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

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 Tempo que a execução desta tarefa demorou da última vez. O
SSV tempo está em microssegundos.
MaxInterval DINT[2] GSV O tempo máximo de intervalo entre as execuções sucessivas
SSV da tarefa. DINT[0] contém os 32 bits menos significativos do valor;
DINT[1] contém os 32 bits mais significativos do valor.
Um valor de 0 indica 1 ou menos execuções da tarefa.
MaxScanTime DINT GSV Tempo máximo de execução registrado para este programa. O
SSV tempo está em microssegundos.
MinInterval DINT[2] GSV O tempo mínimo de intervalo entre as execuções sucessivas da
SSV tarefa. DINT[0] contém os 32 bits menos significativos do valor;
DINT[1] contém os 32 bits 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 O valor de WALLCLOCKTIME quando a última execução da tarefa
SSV foi iniciada. DINT[0] contém os 32 bits menos significativos do
valor; DINT[1] contém os 32 bits mais significativos do valor.
Watchdog DINT GSV Limite de tempo para a execução de todos os programas
SSV 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-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-55

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:


CSTOffset DINT[2] GSV Offset positivo de CurrentValue do objeto CST (tempo de sistema
SSV coordenado, consulte a página 3-41). DINT[0] contém os 32 bits
menos significativos do valor; DINT[1] contém os 32 bits mais
significativos do valor.
Valor em µs. O valor inicial é 0.
CurrentValue DINT[2] GSV O valor atual de WALLCLOCKTIME. DINT[0] contém os 32 bits
SSV 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 Data e hora em formato que possibilita a leitura.
SSV 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-RM003D-PT-P - Junho 2001


3-56 Instruções de Entrada/Saída (MSG, GSV, SSV)

Exemplo de Programação Obtenção de informações de falha


GSV/SSV
Os exemplos a seguir usam as instruções GSV para obter informações
de falha.

Obtenção de informações de falha de E/S


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ário em disc_in_2_info.

Obtenção de informações de status do


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

Obtenção de informações de status da


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

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Entrada/Saída (MSG, GSV, SSV) 3-57

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. Você pode usar este método também para habilitar ou
desabilitar um módulo de E/S, que é uma solução de programa
semelhante à utilização de bits inibidos com um controlador CLP-5.

Com base no status de SW.1, coloque o valor apropriado no atributo disableflag do programa discrete.

Publicação 1756-RM003D-PT-P - Junho 2001


3-58 Instruções de Entrada/Saída (MSG, GSV, SSV)

Notas:

Publicação 1756-RM003D-PT-P - Junho 2001


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.

Se você quiser: Use esta instrução: Consulte


página:
comparar valores com base em uma CMP 4-2
expressão
testar se dois valores são iguais EQU 4-7
testar se um valor é maior ou igual a um GEQ 4-11
segundo valor
testar se um valor é maior do que um GRT 4-15
segundo valor
testar se um valor é menor ou igual a um LEQ 4-19
segundo valor
testar se um valor é menor do que um LES 4-23
segundo valor
testar se um valor está entre outros dois LIM 4-27
valores
passar dois valores por uma máscara e testar MEQ 4-33
se os mesmos são iguais
testar se um valor não é igual a um segundo NEQ 4-38
valor

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 os tipos de dados ótimos. Uma instrução executa mais
rapidamente e requer menos memória se todos os operandos da
instrução usam o mesmo tipo de dado ótimo, geralmente DINT ou
REAL.

1 Publicação 1756-RM003D-PT-P - Junho 2001


4-2 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Comparação (CMP) Linguagens Disponíveis:

Lógica Ladder

A instrução CMP realiza uma comparação das operações aritméticas


especificadas na expressão.

Operandos de Lógica
Ladder:
Operando: Tipo: Formato: Descrição:
Expressão SINT imediato uma expressão composta por tags
INT tag e/ou valores imediatos separados por
DINT operadores
REAL
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

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 do 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 somente os flags de status aritmético se a
expressão contiver um operador (ex.: +, −, *, /) que afete os flags de
status aritmético.

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-3

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha
for verdadeira

a expressão é
verdadeira saída da condição da linha é
avalie a expressão
energizada quando verdadeira

a expressão é falsa

saída da condição da linha é


energizada quando falsa

fim

Exemplo de Lógica
Ladder:
Se a instrução CMP considerar 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:

Se a expressão: A saída da condição da linha é


definida em:
diferente de zero verdadeira
zero falsa

Publicação 1756-RM003D-PT-P - Junho 2001


4-4 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

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

Operador: Descrição: Ótimo: Operador: Descrição: Ótimo:


+ adição DINT, REAL DEG radianos para graus DINT, REAL
– subtração/negativo DINT, REAL FRD BCD para inteiro DINT
* multiplicação DINT, REAL LN natural log REAL
/ divisão DINT, REAL LOG logaritmo na base de REAL
10
= igual DINT, REAL
MOD módulo-divisão DINT, REAL
< menor do que DINT, REAL
NOT bitwise complemento DINT
<= menor ou igual a DINT, REAL
OR bitwise OR DINT
> maior do que DINT, REAL
RAD graus para radianos DINT, REAL
>= maior ou igual a DINT, REAL
SIN seno REAL
<> diferente de DINT, REAL
SQR raiz quadrada DINT, REAL
** expoente DINT, REAL
(x elevado a y) TAN tangente REAL
ABS valor absoluto DINT, REAL TOD inteiro para BCD DINT
ACS arco co-seno REAL TRN truncado DINT, REAL
AND bitwise AND DINT XOR bitwise exclusivo OR DINT
ASN arco seno REAL
ATN arco tangente REAL
COS co-seno REAL

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-5

Formatação de expressões

Para cada operador usado em uma expressão, é necessário fornecer


um ou dois operandos (tags ou valores imediatos). Use a tabela a
seguir para formatar operadores e operandos dentro de uma
expressão:

Para operadores Use esse formato: Exemplos:


que operam com:
um operando operador (operando) 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)

Determinação da seqüência de operação

As operações gravadas na expressão são realizadas pela instrução em


uma seqüência prescrita, não necessariamente na seqüência em que
foram gravadas. É 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.

Operações com seqüência igual são realizadas da esquerda para a


direita.

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

Publicação 1756-RM003D-PT-P - Junho 2001


4-6 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Igual a (EQU) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução EQU testa se Source A é igual à Source B.

Operandos de Lógica
Ladder:

Operando: Tipo: Formato: Descrição: Notas:


Source A SINT imediato valor a ser testado em • Se você inserir um tag SINT ou INT, o
INT tag relação Source B valor o converte para um valor DINT por
DINT extensão de sinal.
REAL • Valores REAL são raramente
tipo de string absolutamente iguais. Caso seja
necessário determinar a igualdade de
Source B SINT imediato valor a ser testado em dois valores REAL, use a instrução LIM.
INT tag relação Source A
• Os tipos de string são:
DINT
REAL • tipo de dados STRING padrão
tipo de string • qualquer tipo de string novo que
você criar
• Para testar os caracteres de um string,
insira um tag tipo string para Source A e
Source B.

Operandos do Bloco de
Função:
Operando: Tipo: Formato: Descrição:
tag de bloco FBD_COMPARE estrutura estrutura EQU

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-7

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas.
o valor inicial é definido
SourceA REAL Valor para comparar com SourceB.
válido = qualquer flutuante
SourceB REAL Valor para comparar com SourceA.
válido = qualquer flutuante

Parâmetros de saída

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 de
lógica ladder.

Descrição: Use a instrução EQU para comparar dois números ou dois strings de
caracteres ASCII. Quando comparar strings:

• Os strings são iguais se seus 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

Publicação 1756-RM003D-PT-P - Junho 2001


4-8 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da
linha for verdadeira

sim saída da condição da linha é


Source A = Source B
energizada quando verdadeira

não

saída da condição da linha


é energizada quando falsa

fim

Exemplo de Lógica
Ladder:

Se value_1 for igual a value_2, a saída da condição da linha é definida como verdadeira.

Se string_1 for igual a string_8, a saída da condição da linha é definida como verdadeira.
EQU
Equal
Neste exemplo, os dois strings são iguais. Cada caracter em string_1 corresponde ao
Source A string_1
'ABC'
caracter em string_8.
Source B string_8
'ABC'
42621

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-9

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.

Exemplo do Bloco de
Função:

function_block_A

function_block_C

function_block_B

Os valores da saída de function_block_A e function_block_B se tornam valores de entrada para


SourceA e SourceB, respectivamente. Se SourceA = SourceB, a instrução EQU energiza o Dest, que
habilita function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


4-10 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Maior ou Igual a (GEQ) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução GEQ testa se Source A é maior ou igual à Source B.

Operandos de Lógica
Ladder:

Operando: Tipo: Formato: Descrição: Notas:


Source A SINT imediato valor a ser testado em • Se você inserir um tag SINT ou INT, o
INT tag relação Source B valor o converte para um valor DINT por
DINT extensão de sinal.
REAL • Os tipos de string são:
tipo de string • tipo de dados STRING padrão
Source B SINT imediato valor a ser testado em • qualquer tipo de string novo que
INT tag relação a Source A você criar
DINT • Para testar os caracteres de um string,
REAL insira um tag tipo string para Source A e
tipo de string Source B.

Operandos do Bloco de
Função:
Operando: Tipo: Formato: Descrição:
tag de bloco FBD_COMPARE estrutura estrutura GEQ

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-11

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas.
o valor inicial é definido
SourceA REAL Valor para comparar com SourceB.
válido = qualquer flutuante
SourceB REAL Valor para comparar com SourceA.
válido = qualquer flutuante

Parâmetros de saída

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 de Lógica Ladder.

Descrição: A instrução GEQ testa se Source A é maior ou igual à Source B.

Quando comparar strings:

• Os valores hexadecimais dos caracteres determinam se um


string é menor ou maior que outro string. Para o código
hexadecimal de caracter, consulte a parte de trás deste manual.
• Quando os dois strings são organizados como em uma lista
telefônica, a ordem dos strings determina qual é maior.

Caracteres ASCII Códigos


Hexadecimais
1ab $31$61$62
m m 1b $31$62
e a
A $41
n i
o o AB $41$42 AB < B
r r
q q
B $42
u u a $61 a>B
e e
ab $61$62

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


4-12 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da
linha for verdadeira

sim saída da condição da linha é


Source A ≥ Source B
energizada quando verdadeira

não

saída da condição da linha é


energizada quando falsa

fim

Exemplo de Lógica
Ladder:

Se value_1 for menor ou igual a value_2, a saída da condição da linha é definida


como verdadeira.

Se string_2 for maior que string_8, a saída da condição da linha é definida como
GEQ verdadeira.
Grtr Than or Eql (A>=B)
Source A string_2
'ACA' Neste exemplo, string_2 é maior que string_8. Quando os dois strings são organizados
Source B string_8 pelos valores hexadecimais, string_2 aparece depois de string_8. (Ou seja, em uma lista
'ABC' telefônica, ACA apareceria depois de ABC.)
42621

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-13

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.

Exemplo do Bloco de
Função:

function_block_A

function_block_C

function_block_B

Os valores da saída de function_block_A e function_block_B se tornam valores de entrada para


SourceA e SourceB, respectivamente. Se SourceA ≥ SourceB, a instrução GEQ energiza Dest,
que habilita function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


4-14 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Maior que (GRT) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução GRT testa se Source A é maior ou igual à Source B.

Operandos de Lógica
Ladder:

Operando: Tipo: Formato: Descrição: Notas:


Source A SINT imediato tag valor a ser testado em • Se você inserir um tag SINT ou INT, o
INT relação a Source B valor o converte para um valor DINT por
DINT extensão de sinal.
REAL • Os tipos de string são:
tipo de string • tipo de dados STRING padrão
Source B SINT imediato tag valor a ser testado em • qualquer tipo de string novo que
INT relação a Source A você criar
DINT • Para testar os caracteres de um string,
REAL insira um tag tipo string para Source A e
tipo de string Source B.

Operandos do Bloco de
Função:
Operando: Tipo: Formato: Descrição:
tag de bloco FBD_COMPARE estrutura estrutura GRT

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-15

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas.
o valor inicial é definido
SourceA REAL Valor para comparar com SourceB.
válido = qualquer flutuante
SourceB REAL Valor para comparar com SourceA.
válido = qualquer flutuante

Parâmetros de saída

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 de
Lógica Ladder.

Descrição: A instrução GRT testa se Source A é maior ou igual a Source B.

Quando comparar strings:

• Os valores hexadecimais dos caracteres determinam se um


string é menor ou maior que outro string. Para o código
hexadecimal de caracter, consulte a parte de trás deste manual.
• Quando os dois strings são organizados como em uma lista
telefônica, a ordem dos strings determina qual é maior.

Caracteres ASCII Códigos


Hexadecimais
1ab $31$61$62
m m 1b $31$62
e a
A $41
n i
o o AB $41$42 AB < B
r r
q q
B $42
u u a $61 a>B
e e
ab $61$62

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


4-16 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da
linha for verdadeira

sim saída da condição da linha é


Source A > Source B
energizada quando verdadeira

não

saída da condição da linha é


energizada quando falsa

fim

Exemplo de Lógica
Ladder:

Se value_1 for maior que value_2, a saída da condição da linha é definida como
verdadeira.

Se string_3 for maior que string_8, a saída da condição da linha é definida como
GRT verdadeira.
Greater Than (A>B)
Source A string_3
'ACA' Neste exemplo, string_3 é maior que string_8. Quando os dois strings são organizados
Source B string_8 pelos valores hexadecimais, string_3 aparece após string_8. (Ou seja, em uma lista
'ABC' telefônica, ACA apareceria depois de ABC.)

42621

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-17

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.

Exemplo do Bloco de
Função:

function_block_A

function_block_C

function_block_B

Os valores da saída de function_block_A e function_block_B se tornam valores de entrada para


SourceA e SourceB, respectivamente. Se SourceA > SourceB, a instrução GRT energiza Dest, que
habilita function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


4-18 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Menor ou Igual a (LEQ) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução LEQ testa se Source A é menor ou igual a Source B.

Operandos de Lógica
Ladder:

Operando: Tipo: Formato: Descrição: Notas:


Source A SINT imediato valor a ser testado em • Se você inserir um tag SINT ou INT, o
INT tag relação a Source B valor o converte para um valor DINT por
DINT extensão de sinal.
REAL • Os tipos de string são:
tipo de string • tipo de dados STRING padrão
Source B SINT imediato valor a ser testado em • qualquer tipo de string novo que
INT tag relação a Source A você criar
DINT • Para testar os caracteres de um string,
REAL insira um tag tipo string para Source A e
tipo de string Source B.

Operandos do Bloco de
Função:
Operando: Tipo: Formato: Descrição:
tag de bloco FBD_COMPARE estrutura estrutura LEQ

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-19

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas.
o valor inicial é definido
SourceA REAL Valor para comparar com SourceB.
válido = qualquer flutuante
SourceB REAL Valor para comparar com SourceA.
válido = qualquer flutuante

Parâmetros de saída

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.

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 um


string é menor ou maior que outro string. Para o código
hexadecimal de caracter, consulte a parte de trás deste manual.
• Quando os dois strings são organizados como em uma lista
telefônica, a ordem dos strings determina qual é maior.

Caracteres ASCII Códigos


Hexadecimais
1ab $31$61$62
m m 1b $31$62
e a
A $41
n i
o o AB $41$42 AB < B
r r
q q
B $42
u u a $61 a>B
e e
ab $61$62

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


4-20 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da
linha for verdadeira

sim saída da condição da linha é


Source A ≤ Source B energizada quando verdadeira

não

saída da condição da linha


é energizada quando falsa

fim

Exemplo de Lógica
Ladder:

Se value_1 for menor ou igual a value_2, a saída da condição da linha é definida


como verdadeira.

Se string_4 for menor ou igual a string_8, a saída da condição da linha é definida como
LEQ
verdadeira.
Less Than or Eql (A<=B)
Source A string_4
'AAD' Neste exemplo, string_4 é menor que string_8. Quando os dois strings são organizados pelos
Source B string_8 valores hexadecimais, string_4 aparece antes de string_8. (Ou seja, em uma lista telefônica,
'ABC' AAD apareceria antes de ABC.)
42621

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-21

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.

Exemplo do Bloco de
Função:

function_block_A

function_block_C

function_block_B

Os valores da saída de function_block_A e function_block_B se tornam valores de entrada para


SourceA e SourceB, respectivamente. Se SourceA ≤ SourceB, a instrução LEQ energiza Dest, que
habilita function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


4-22 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Menor Que (LES) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução LES testa se Source A é menor do que Source B.

Operandos de Lógica
Ladder:

Operando: Tipo: Formato: Descrição: Notas:


Source A SINT imediato valor a ser testado em • Se você inserir um tag SINT ou INT, o
INT tag relação a Source B valor o converte para um valor DINT por
DINT extensão de sinal.
REAL • Os tipos de string são:
tipo de string • tipo de dados STRING padrão
Source B SINT imediato valor a ser testado em • qualquer tipo de string novo que
INT tag relação a Source A você criar
DINT • Para testar os caracteres de um string,
REAL insira um tag tipo string para Source A e
tipo de string Source B.

Operandos do Bloco de
Função:

Operando: Tipo: Formato: Descrição:


tag de bloco FBD_COMPARE estrutura estrutura LES

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-23

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas.
o valor inicial é definido
SourceA REAL Valor para comparar com SourceB.
válido = qualquer flutuante
SourceB REAL Valor para comparar com SourceA.
válido = qualquer flutuante

Parâmetros de saída

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 de Lógica
Ladder.

Descrição: A instrução LES testa se Source A é menor do que Source B.

Quando comparar strings:

• Os valores hexadecimais dos caracteres determinam se um


string é menor ou maior que outro string. Para o código
hexadecimal de caracter, consulte a parte de trás deste manual.
• Quando os dois strings são organizados como em uma lista
telefônica, a ordem dos strings determina qual é maior.

Caracteres ASCII Códigos


Hexadecimais
1ab $31$61$62
m m 1b $31$62
e a
A $41
n i
o o AB $41$42 AB < B
r r
q q
B $42
u u a $61 a>B
e e
ab $61$62

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


4-24 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da
linha for verdadeira

sim saída da condição da linha é


Source A < Source B
energizada quando verdadeira

não

saída da condição da linha é


energizada quando falsa

fim

Exemplo de Lógica
Ladder:

Se value_1 for menor que value_2, a saída da condição da linha é definida como
verdadeira.

Se string_5 for menor que string_8, a saída da condição da linha é definida como
LES
Less Than (A<B)
verdadeira.
Source A string_5
'AAD' Neste exemplo, string_5 é menor que string_8. Quando os dois strings são organizados
Source B string_8 pelos valores hexadecimais, string_5 aparece antes de string_8. (Ou seja, em uma lista
'ABC' telefônica, AAD apareceria antes de ABC.)
42621

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-25

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é falso EnableOut está desenergizado.
EnableIn é verdadeiro A instrução executa.
EnableOut está energizado.

Exemplo do Bloco de
Função:

function_block_A

function_block_C

function_block_B

Os valores da saída de function_block_A e function_block_B se tornam valores de entrada para


SourceA e SourceB, respectivamente. Se SourceA < SourceB, a instrução LES energiza Dest, que
habilita function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


4-26 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Limite (LIM) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução LIM testa se o valor de teste está dentro da faixa de Limite


Inferior a Limite Superior.

Operandos de Lógica
Ladder:
Operando: Tipo: Formato: Descrição:
Limite Inferior SINT imediato tag valor do limite inferior
INT
DINT
REAL
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.
Test (Teste) SINT imediato tag valor de acordo com o teste
INT
DINT
REAL
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.
Limite SINT imediato tag valor do limite superior
Superior INT
DINT
REAL
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.

Operandos do Bloco de
Função:
Operando: Tipo: Formato: Descrição:
tag de bloco FBD_LIMIT estrutura estrutura LIM

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas.
o valor inicial é definido

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-27

Parâmetro de Tipo de Dados: Descrição:


Entrada:
LowLimit REAL Valor do limite inferior.
válido = qualquer flutuante
Test (Teste) REAL Valor para comparar com os limites
válido = qualquer flutuante
HighLimit REAL Valor do limite superior.
válido = qualquer flutuante

Parâmetros de saída

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 de
Lógica Ladder.

Descrição: A instrução LIM testa se o valor de teste está dentro da faixa de Limite
Inferior a Limite Superior.

Se o Limite E o valor de Teste for: A saída da condição da linha


Inferior: é 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

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.

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.

Publicação 1756-RM003D-PT-P - Junho 2001


4-28 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Limite Inferior ≤ Limite Inferior Limite Inferior ≥ Limite Superior


A instrução é verdadeira se o valor de teste A instrução é verdadeira se o valor de teste for
for igual ou situar-se entre os limites superior igual ou estiver fora da faixa entre os limites
e inferior. superior e inferior.

0
0
−1 +1
−1 +1
limite inferior
limite superior

limite superior
limite inferior

−(n+1) +n
−(n+1) +n
n = valor máximo n = valor máximo

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da
linha for verdadeira

a comparação é
verdadeira saída da condição da linha é
avalie limite
energizada quando verdadeira

a comparação
é falsa

saída da condição da linha é


energizada quando falsa

fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-29

Exemplo de Lógica
Ladder:
exemplo 1

Limite Inferior≤ Limite Superior


Quando 0 ≤ é o valor ≥ 100, light_1 é energizada.

exemplo 2

Limite Inferior ≥ Limite Superior


Quando o valor ≥ 0 ou valor ≤ −100, light_1é
energizada.

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é falso EnableOut está desenergizado.
EnableIn é verdadeiro A instrução executa.
EnableOut está energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


4-30 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Exemplo do Bloco de
Função:

function_block_A

function_block_C

function_block_B

Os valores da saída de function_block_A e function_block_B se tornam valores de entrada para LowLimit


e HighLimit, respectivamente.

LowLimit ≤ HighLimit
Se LowLimit ≤ Test_value ≤ HighLimit, a instrução LIM energiza Dest, que habilita function_block_C.

LowLimit ≥ HighLimit
Se LowLimit ≤ Test_value ≤ HighLimit, a instrução LIM energiza Dest, que habilita function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-31

Máscara Igual a (MEQ) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução MEQ passa os valores de Source e Compare através de


uma Máscara e compara os resultados.

Operandos de Lógica
Ladder:
Operando: Tipo: Formato: Descrição:
Source SINT imediato valor para ser testado comparando-se
INT tag com Compare
DINT
Um tag SINT ou INT é convertido para um valor DINT por preenchimento
com zero.
Mask SINT imediato define que bits são bloqueados ou os
INT tag que passam
DINT
Um tag SINT ou INT é convertido para um valor DINT por preenchimento
com zero.
Compare SINT imediato valor a ser testado em relação a
INT tag Source
DINT
Um tag SINT ou INT é convertido para um valor DINT por preenchimento
com zero.

Operandos do Bloco de
Função:
Operando: Tipo: Formato: Descrição:
tag de bloco FBD_MASK_EQUAL estrutura estrutura MEQ

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas.
o valor inicial é definido
Source DINT Valor para testar com Compare.
válido = qualquer inteiro
Mask DINT Define que bits bloquear (máscara).
válido = qualquer inteiro
Compare DINT Comparação de valor.
válido = qualquer inteiro

Publicação 1756-RM003D-PT-P - Junho 2001


4-32 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Parâmetros de saída

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.

Descrição: 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. Geralmente, os
valores Source, Mask e Compare são todos do mesmo tipo de dados.

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

Prefixo: Descrição:
16# hexadecimal
por exemplo; 16#0F0F
8# octal
por exemplo; 8#16
2# binário
por exemplo; 2#00110011

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-33

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da
linha for verdadeira

fonte mascarada = sim saída da condição da linha é


comparação energizada quando verdadeira
mascarada

não

saída da condição da linha


é energizada quando falsa

fim

Exemplo de Lógica
Ladder:

exemplo 1

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 0 1 0 1 0 1 0 1 1 1 1 1 x x x x value_2 0 1 0 1 0 1 0 1 1 1 1 1 x x x x
mascarado mascarado

O value_1 é igual ao value_2 mascarado, portanto light_1 se acende. Um 0 na máscara impede que a máscara compare aquele
bit (mostrado por x no exemplo).

Publicação 1756-RM003D-PT-P - Junho 2001


4-34 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

exemplo 2

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 x x x x x x x x x x x x 1 1 1 1 value_2 x x x x x x x x x x x x 0 0 0 0
mascarado mascarado

O value_1 mascarado não é igual ao value_2 mascarado, portanto light_1 se apaga. Um 0 na máscara impede que a máscara
compare aquele bit (mostrado por x no exemplo).

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-35

Exemplo do Bloco de
Função:

function_block_A

function_block_C

function_block_B

Source 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 Compare 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0

Mask1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 Mask1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0

Source 0 1 0 1 0 1 0 1 1 1 1 1 x x x x Compare 0 1 0 1 0 1 0 1 1 1 1 1 x x x x
mascarado mascarado
Os valores de saídade function_block_A e function_block_B se tornam valores de entrada para Source e Compare, respectivamente.
Se masked Source = the masked Compare, a instrução MEQ energiza Dest, que habilita function_block_C. Um 0 na máscara impede
que a máscara compare aquele bit (mostrado por x no exemplo).

Publicação 1756-RM003D-PT-P - Junho 2001


4-36 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Diferente de (NEQ) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução NEQ testa se Source A é diferente de Source B.

Operandos de Lógica
Ladder:

Operando: Tipo: Formato: Descrição: Notas:


Source A SINT imediato tag valor a ser testado em • Se você inserir um tag SINT ou INT, o
INT relação a Source B valor o converte para um valor DINT por
DINT extensão de sinal.
REAL • Os tipos de string são:
tipo de string • tipo de dados STRING padrão
Source B SINT imediato tag valor a ser testado em • qualquer tipo de string novo que
INT relação a Source A você criar
DINT • Para testar os caracteres de um string,
REAL insira um tag tipo string para Source A e
tipo de string Source B.

Operandos do Bloco de
Função:

Operando: Tipo: Formato: Descrição:


tag de bloco FBD_COMPARE estrutura estrutura NEQ

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-37

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas.
o valor inicial é definido
SourceA REAL Valor para comparar com SourceB.
válido = qualquer flutuante
SourceB REAL Valor para comparar com SourceA.
válido = qualquer flutuante

Parâmetros de saída

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.

Descrição: A instrução NEQ testa se Source A é diferente de Source B.

Quando comparar strings:

• Os strings não são iguais se qualquer de seus caracteres não


corresponderem.
• Os caracteres ASCII são sensíveis ao contexto. O “A” maiúsculo
($41) não é igual ao “a” minúsculo ($61).

Caracteres ASCII Códigos


Hexadecimais
1ab $31$61$62
m m 1b $31$62
e a
A $41
n i
o o AB $41$42 AB < B
r r
q q
B $42
u u a $61 a>B
e e
ab $61$62

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


4-38 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da
linha for verdadeira

sim saída da condição da linha é


Source A = Source B
energizada quando verdadeira

não

saída da condição da linha é


energizada quando falsa

fim

Exemplo de Lógica
Ladder:

Se value_1 não for igual a value_2, a saída da condição da linha é definida como
verdadeira.

Se string_6 não for igual a string_8, a saída da condição da linha é definida como verdadeira.
NEQ
Not Equal
Neste exemplo, string_6 não é igual a string_8. Os dois strings não correspondem
Source A string_6
completamente.
'ABC$00'
Source B string_8
'ABC'
42621

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-39

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.

Exemplo do Bloco de
Função:

function_block_A

function_block_C

function_block_B

Os valores da saída de function_block_A e function_block_B se tornam valores de entrada para


SourceA e SourceB, respectivamente. Se SourceA ≠ SourceB, a instrução NEQ energiza Dest, que
habilita function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


4-40 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Notas:

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-41

Publicação 1756-RM003D-PT-P - Junho 2001


4-42 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)

Publicação 1756-RM003D-PT-P - Junho 2001


Capítulo 5

Instruções Matemáticas/Cálculo
(CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS)

Introdução As instruções de cálculo/matemática avaliam as operações aritméticas


usando uma expressão ou uma instrução aritmética especificada.

Se você quiser: Use esta instrução: Consulte


página:
avaliar uma expressão CPT 5-2
somar dois valores ADD 5-6
subtrair dois valores SUB 5-9
multiplicar dois valores MUL 5-12
dividir dois valores DIV 5-15
determinar o resto após a divisão de um valor MOD 5-19
por outro
calcular a raiz quadrada de um valor SQR 5-23
considerar o sinal oposto de um valor NEG 5-26
considerar o valor absoluto de um valor ABS 5-29

É possível misturar tipos de dados, mas podem ocorrer perda de


precisão e erros de arredondamentos e a instrução demorar mais
tempo para executar. Verifique o bit S:V para observar se o resultado
foi truncado.

Para instrução de lógica ladder, 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 usam o
mesmo tipo de dado ótimo, geralmente DINT ou REAL.

1 Publicação 1756-RM003D-PT-P - Junho 2001


5-2 Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS)

Cálculo (CPT) Idiomas disponíveis:

Lógica Ladder

A instrução CPT realiza as operações aritméticas definidas na


expressão.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL
Expressão SINT imediato uma expressão composta por tags
INT tag e/ou valores imediatos separados por
DINT operadores
REAL
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.

Operandos do Bloco de Esta instrução não está disponível no bloco de função.


Função:

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

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ática. A vantagem da instrução CPT é que a mesma
permite a inserção de expressões complexas em uma instrução.

DICA Não há limite para o comprimento de uma


expressão.

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS) 5-3

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira A instrução avalia a Expressão e coloca o resultado no Destino.
A saída da condição da linha é definida como verdadeira.

Exemplo de Lógica
Ladder:

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 de divisão em float_value_result_cpt.

Execução do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Publicação 1756-RM003D-PT-P - Junho 2001


5-4 Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS)

Operadores válidos

Operador: Descrição: Ótimo: Operador: Descrição: Ótimo:


+ adição DINT, REAL LN natural log REAL
- subtração/negativo DINT, REAL LOG logaritmo na base de REAL
10
* multiplicação DINT, REAL
MOD módulo-divisão DINT, REAL
/ divisão DINT, REAL
NOT bitwise complemento DINT
** expoente (x elevado a DINT, REAL
y) OR bitwise OR DINT
ABS valor absoluto DINT, REAL RAD graus para radianos DINT, REAL
ACS arco co-seno REAL SIN seno REAL
AND bitwise AND DINT SQR raiz quadrada DINT, REAL
ASN arco seno REAL TAN tangente REAL
ATN arco tangente REAL TOD inteiro para BCD DINT
COS co-seno REAL TRN truncado DINT, REAL
DEG radianos para graus DINT, REAL XOR bitwise exclusivo OR DINT
FRD BCD para inteiro DINT

Formatação de expressões

Para cada operador usado em uma expressão, é necessário fornecer


um ou dois operandos (tags ou valores imediatos). Use a tabela a
seguir para formatar operadores e operandos dentro de uma
expressão:

Para operadores Use esse formato: Exemplos:


que operam com:
um operando operador (operando) 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)

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS) 5-5

Determinação da seqüência de operação

As operações gravadas na expressão são realizadas pela instrução em


uma seqüência prescrita, não necessariamente na seqüência em que
foram gravadas. É 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.

Operações com seqüência igual são realizadas da esquerda para a


direita.

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-RM003D-PT-P - Junho 2001


5-6 Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS)

Adição (ADD) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução ADD soma Source A e Source B e coloca o resultado no


Destino.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source A SINT imediato valor a ser somado à Source B (Fonte
INT tag B)
DINT
REAL
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.
Source B SINT imediato valor a ser somado à Source A (Fonte
INT tag A)
DINT
REAL
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_MATH estrutura estrutura ADD

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é definido
SourceA REAL Valor para adicionar a SourceB.
válido = qualquer flutuante
SourceB REAL Valor para adicionar a SourceA.
válido = qualquer flutuante

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS) 5-7

Parâmetros de saída

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.

Descrição: A instrução ADD soma Source A e Source B e coloca o resultado no


Destino.

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira Destination = Source A + Source B (Destino = Fonte A + Fonte B)
A saída da condição da linha é definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução ADD soma float_value_1 e float_value_2 e coloca o


resultado em add_result.

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução é executada.
EnableOut é energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


5-8 Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS)

Exemplo do Bloco de
Função:

function_block_A

function_block_C

function_block_B

Os valores de saída de function_block_A e function_block_B se tornam os valores de entrada para


SourceA e SourceB, respectivamente. A instrução calcula SourceA + SourceB e coloca o resultado
em Dest, que se torna um parâmetro de entrada para function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS) 5-9

Subtração (SUB) Linguagens Disponíveis:

ógica Ladder Bloco de Função

A instrução SUB subtrai Source B de Source A e coloca o resultado no


Destino.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source A SINT imediato valor a partir do qual se subtrai a
INT tag Source B
DINT
REAL
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.
Source B SINT imediato valor a ser subtraído de Source A
INT tag
DINT
REAL
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_MATH estrutura estrutura SUB

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é definido
SourceA REAL Valor do qual se subtrai SourceB.
válido = qualquer flutuante
SourceB REAL Valor do qual se subtrai SourceA.
válido = qualquer flutuante

Publicação 1756-RM003D-PT-P - Junho 2001


5-10 Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS)

Parâmetros de saída

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.

Descrição: A instrução SUB subtrai Source B de Source A e coloca o resultado no


Destino.

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira Destino = Fonte B - Fonte A
A saída da condição da linha é definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução SUB subtrai float_value_2 de float_value_1 e coloca o resultado


em subtract_result.

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução é executada.
EnableOut é energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS) 5-11

Exemplo do Bloco de
Função:

function_block_A

function_block_C

function_block_B

Os valores de saída de function_block_A e function_block_B se tornam os valores de entrada


SourceA e SourceB, respectivamente. A instrução calcula SourceA − SourceB e coloca o resultado
em Dest, que se torna um parâmetro de entrada para function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


5-12 Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS)

Multiplicação (MUL) Linguagens

Lógica Ladder Bloco de Função

A instrução MUL multiplica Source A por Source B e coloca o


resultado no Destino.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source A SINT imediato valor do multiplicando
INT tag
DINT
REAL
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.
Source B SINT imediato valor do multiplicador
INT tag
DINT
REAL
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_MATH estrutura estrutura MUL

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é definido
Source A REAL Valor do multiplicando.
válido = qualquer flutuante
Source B REAL Valor do multiplicador.
válido = qualquer flutuante

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS) 5-13

Parâmetros de saída

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éticos são energizados para esta
saída.

Descrição: A instrução MUL multiplica Source A por Source B e coloca o


resultado no Destino.

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira Destino = Fonte B x Fonte A
A saída da condição da linha é definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução MUL multiplica float_value_1 por float_value_2 e coloca o


resultado em multiply_result.

Execução de Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução é executada.
EnableOut é energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


5-14 Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS)

Exemplo do Bloco de
Função:

function_block_A

function_block_C

function_block_B

Os valores de saída de function_block_A e function_block_B se tornam os valores de entrada para


SourceA e SourceB, respectivamente. A instrução calcula SourceA ∗ SourceB e coloca o resultado
em Dest, que se torna um parâmetro de entrada para function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS) 5-15

Divisão (DIV) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução DIV divide Source A por Source B e coloca o resultado em


Destination.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source A SINT imediato valor do dividendo
INT tag
DINT
REAL
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.
Source B SINT imediato valor do divisor
INT tag
DINT
REAL
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_MATH estrutura estrutura DIV

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é definido
Source A REAL Valor do dividendo.
válido = qualquer flutuante
Source B REAL Valor do divisor.
válido = qualquer flutuante

Publicação 1756-RM003D-PT-P - Junho 2001


5-16 Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS)

Parâmetros de saída

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éticos são energizados para esta
saída.

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 A: Então a parte Exemplo:


fracionária do
resultado:
e Source B não forem trunca Source A DINT 5
do tipo REAL
Source B DINT 3
Destination DINT 1
ou Source B for do tipo é arredondada Source A REAL 5.0
REAL
Source B DINT 3
Destination DINT 2

Se Source B (o divisor) for zero:

• Ocorre uma falha de advertência:


– Tipo 4: falha de programa
– Código 4: overflow aritmético
• O destino é configurado da seguinte maneira:

Se Source B é zero e: E o destino é: E o resultado é: Logo, o destino é configurado


como:
todos os operandos são inteiros Source A
(SINT, INT ou DINT)
pelo menos um operando é REAL SINT, INT ou DINT positivo -1
negativo 0
REAL positivo 1.$ (positivo infinito)
negativo -1.$ (negativo infinito)

Para detectar um possível divisor por zero, examine o bit de falha de


advertência (S:MINOR). Consulte o Procedimentos Comuns dos
Controladores Logix5000, publicação 1756-PM001.

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha:

Uma falha de Tipo de falha: Código de falha:


advertência ocorre se:
o divisor é zero 4 4

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS) 5-17

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira Destination = Fonte B / Fonte A
A saída da condição da linha é definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução DIV divide float_value_1 por float_value_2 e coloca o resultado
em divide_result.

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn está definido A instrução é executada.
EnableOut é energizado.

Exemplo do Bloco de
Função:

Publicação 1756-RM003D-PT-P - Junho 2001


5-18 Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS)

function_block_A

function_block_C

function_block_B

Os valores de saída de function_block_A e function_block_B se tornam os valores para SourceA e


SourceB, respectivamente. A instrução calcula SourceA / SourceB e coloca o resultado em Dest,
que se torna um parâmetro de entrada para function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS) 5-19

Módulo (MOD) Linguagens

Lógica Ladder Bloco de Função

A instrução MOD divide Source A por Source B e coloca o resto no


Destino.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source A SINT imediato valor do dividendo
INT tag
DINT
REAL
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.
Source B SINT imediato valor do divisor
INT tag
DINT
REAL
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_MATH estrutura estrutura MOD

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é definido
Source A REAL Valor do dividendo.
válido = qualquer flutuante
Source B REAL Valor do divisor.
válido = qualquer flutuante

Publicação 1756-RM003D-PT-P - Junho 2001


5-20 Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS)

Parâmetros de saída

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éticos são energizados para esta
saída.

Descrição: Se Source B (o divisor) for zero:

• Ocorre uma falha de advertência:


– Tipo 4: falha de programa
– Código 4: overflow aritmético
• O destino é configurado da seguinte maneira:

Se Source B é zero e: E o destino é: E o resultado é: Logo, o destino é configurado


como:
todos os operandos são inteiros Source A
(SINT, INT ou DINT)
pelo menos um operando é REAL SINT, INT ou DINT positivo -1
negativo 0
REAL positivo 1.$ (positivo infinito)
negativo -1.$ (negativo infinito)

Para detectar um possível divisor por zero, examine o bit de falha de


advertência (S:MINOR). Consulte Procedimentos Comuns dos
Controladores Logix5000, publicação 1756-PM001.

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha:

Uma falha de Tipo de falha: Código de falha:


advertência ocorrerá se:
o divisor é zero 4 4

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira Destination = Source A – ( TRN ( Source A / Source B ) * Source B )
A saída da condição da linha é definida como verdadeira.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS) 5-21

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução MOD divide o dividendo pelo divisor e coloca o resto em
remainder. Nesse exemplo, 10 é dividido por 3, com um resto de um.

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução é executada.
EnableOut é energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


5-22 Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS)

Exemplo do Bloco de
Função:

function_block_A

function_block_C

function_block_B

Os valores de saída de function_block_A e function_block_B se tornam valores de entrada para


SourceA e SourceB, respectivamente. A instrução calcula SourceA / SourceB (módulo) e coloca o
resultado em Dest, que se torna o parâmetro de entrada para function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS) 5-23

Raiz Quadrada (SQR) Linguagens

Lógica Ladder Bloco de Função

A instrução SQR calcula a raiz quadrada de Source e coloca o


resultado no destino.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source SINT imediato calcula a raiz quadrada desse valor
INT tag
DINT
REAL
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_MATH_ADVANCED estrutura estrutura SQR

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é definido
Source REAL Encontra a raiz quadrada deste valor.
válido = qualquer flutuante

Parâmetros de saída

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éticos são definidos para esta
saída.

Publicação 1756-RM003D-PT-P - Junho 2001


5-24 Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, 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: Então a parte Exemplo:


fracionária do
resultado:
diferente do tipo REAL trunca Source DINT 3
Destination DINT 1
do tipo REAL é arredondada Source REAL 3.0
Destination DINT 2

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 de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira
Destination = Source
A saída da condição da linha é definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução SQR calcula a raiz quadrada de value_1 e coloca o resultado
em sqr_result .

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS) 5-25

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução é executada.
EnableOut é energizado.

Exemplo do Bloco de
Função:

function_block_A function_block_C

O valor de saída do function_block_A se torna o valor de entrada para Source. A instrução calcula a
raiz quadrada de Source e coloca o valor em Dest, que se torna o parâmetro de entrada para
function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


5-26 Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS)

Negação (NEG) Linguagens

Lógica Ladder Bloco de Função

A instrução NEG altera o sinal da Fonte e coloca o resultado no


Destino.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source SINT imediato valor a ser transformado em negativo
INT tag
DINT
REAL
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_MATH_ADVANCED estrutura estrutura NEG

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é definido
Source REAL Valor para negar.
válido = qualquer flutuante

Parâmetros de saída

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éticos são energizados para esta
saída.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS) 5-27

Descrição: Se você tornar negativo um valor negativo, o resultado será positivo.


Se você tornar negativo um valor positivo, o resultado será negativo.

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira Destination = 0 − Source
A saída da condição da linha é definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução NEG altera o sinal de value_1 e coloca o


resultado em negate_result.

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução é executada.
EnableOut é energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


5-28 Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS)

Exemplo do Bloco de
Função:

function_block_A function_block_C

O valor de saída de function_block_A se torna o valor de entrada para Source. A instrução


nega Source e coloca o valor em Dest, que se torna em um parâmetro de entrada para
function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS) 5-29

Valor Absoluto (ABS) Linguagens

Lógica Ladder Bloco de Função

A instrução ABS retira o valor absoluto de Fonte e coloca o resultado


em Destino.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source SINT imediato valor do qual se tira o valor absoluto
INT tag
DINT
REAL
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_MATH_ADVANCED estrutura estrutura ABS

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é definido
Source REAL Valor do qual se tira o valor absoluto.
válido = qualquer flutuante

Parâmetros de saída

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éticos são energizados para esta
saída.

Publicação 1756-RM003D-PT-P - Junho 2001


5-30 Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS)

Descrição: A instrução ABS retira o valor absoluto de Fonte e coloca o resultado


em Destino.

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira Destination = | Source |
A saída da condição da linha é definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução ABS coloca o valor absoluto de value_1 em value_1_absolute.


Nesse exemplo, o valor absoluto de quatro negativo é quatro positivo.

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução é executada.
EnableOut é energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS) 5-31

Exemplo do Bloco de
Função:

function_block_A function_block_C

O valor de saída de function_block_A se torna o valor de entrada para Source. A instrução calcula o
valor absoluto de Source e coloca o valor em Dest, que se torna o parâmetro de entrada para
function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


5-32 Instruções Matemáticas/Cálculo (CPT, ADD, SUB, MUL, DIV, MOD, SQR, NEG, ABS)

Notas:

Publicação 1756-RM003D-PT-P - Junho 2001


Capítulo 6

Instruções de Movimentação/Lógica
(MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT)

Introdução As instruções de movimentação modificam e movem bits.

Se você quiser: Use esta instrução: Consulte


página:
copiar um valor MOV 6-2
copiar uma parte específica de um inteiro MVM 6-4
copiar uma parte específica de um inteiro no MVMT 6-7
bloco de função
mover bits dentro de um inteiro ou BTD 6-10
entre inteiros
movimentar bits dentro de um inteiro ou BTDT 6-13
entre inteiros no bloco de função
zerar um valor CLR 6-16

As instruções de lógica realizam operações de lógica nos bits.

Se você quiser realizar uma: Use esta instrução: Consulte


página:
operação bitwise AND AND 6-17
operação bitwise OR OR 6-21
operação bitwise, exclusive OR XOR 6-25
operação bitwise NOT NOT 6-29

É possível misturar tipos de dados, mas podem ocorrer perda de


precisão e erros de arredondamentos e a instrução demora mais
tempo para executar. Verifique o bit S:V para observar se o resultado
foi truncado.

Para instruções de lógica 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 usam o mesmo tipo de dado ótimo, geralmente DINT ou
REAL.

1 Publicação 1756-RM003D-PT-P - Junho 2001


6-2 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT)

Movimentação (MOV) Linguagens Disponíveis:

Lógica Ladder

A instrução MOV copia Source em Destination. Source permanece


inalterado.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source SINT imediato valor a ser movido (copiar)
INT tag
DINT
REAL
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL

Operandos do Bloco de Esta instrução não está disponível no bloco de função.


Função:

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

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira A instrução copia Source em Destination.
A saída da condição da linha é definida como verdadeira.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT) 6-3

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução MOV copia os dados de value_1 para value_2.

Execução do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Publicação 1756-RM003D-PT-P - Junho 2001


6-4 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT)

Movimentação Mascarada Linguagens Disponíveis:

(MVM)
Lógica Ladder

A instrução MVM copia Source em Destination e permite que parte


dos dados sejam mascarados.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source SINT imediato valor a ser movido
INT tag
DINT
Um tag SINT ou INT é convertido para um valor DINT por preenchimento
com zero.
Mask SINT imediato quais bits devem ser bloqueados ou
INT tag podem passar
DINT
Um tag SINT ou INT é convertido para um valor DINT por preenchimento
com zero.
Destination SINT tag tag para armazenar o resultado
INT
DINT

Operandos do Bloco de Esta instrução está disponível no bloco de função como MVMT,
Função: consulte a página 6-7.

Descrição: Quando habilitada, a instrução MVM usa uma Máscara para deixar
passar ou bloquear os bits de dados em 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 mistura 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.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT) 6-5

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.

Prefixo: Descrição:
16# hexadecimal
por exemplo; 16#0F0F
8# octal
por exemplo; 8#16
2# binário
por exemplo; 2#00110011

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira A instrução passa o valor de Source pela Máscara 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.

Publicação 1756-RM003D-PT-P - Junho 2001


6-6 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT)

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução MVM copia os dados de value_a para value_b, e permite, ao mesmo tempo, que os dados sejam mascarados (um

value_b antes da instrução 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


MVM

value_a 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

mask_2 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

value_b depois da instrução 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


MVM

As caixas sombreadas mostram os bits alterados em value_b.

Execução do Bloco de Esta instrução está disponível no bloco de função como MVMT,
Função: consulte a página 6-7.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT) 6-7

Movimentação Mascarada Linguagens Disponíveis:

com Target (MVMT)


Bloco de Função

A instrução MVMT primeiro copia Target para Destination. Em


seguida, a instrução compara Source mascarado com Destination e
efetua as alterações solicitadas para Destination. O Target e o Source
permanecem inalterados.

Operandos de Lógica Esta instrução está disponível em lógica de ladder a relé como MVM,
Ladder: consulte a página 6-4.

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_MASKED_MOVE estrutura estrutura MVMT

Estrutura: Parâmetros de entrada

Parâmetro Tipo de Dados: Descrição:


de Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são atualizadas.
o valor inicial é definido
Source DINT Insira o valor para movimentar para Destination baseado no valor da Máscara.
válido = qualquer inteiro
Mask DINT Máscara de bits para movimentar de Source para Dest. Todos os bits definidos como um fazem com
que os bits correspondentes se movimentem de Source para Dest. Todos os bits definidos como zero
fazem com que os bits correspondentes se movimentem de Source para Dest.
válido = qualquer inteiro
Target DINT Insira o valor para se movimentar para Dest antes de mover os bits Source através da Máscara.
válido = qualquer inteiro

Parâmetros de saída

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-RM003D-PT-P - Junho 2001


6-8 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT)

Descrição: Quando habilitada, a instrução MVMT usa uma Máscara 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 de 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 ao


padrão dos valores decimais. Caso você queira inserir uma máscara
usando outro formato, coloque o prefixo correto antes do valor.

Prefixo: Descrição:
16# hexadecimal
por exemplo; 16#0F0F
8# octal
por exemplo; 8#16
2# binário
por exemplo; 2#00110011

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha: nenhuma

Execução de Lógica Esta instrução está disponível em lógica ladder como MVM, consulte a
Ladder: página 6-4.

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução executa.
EnableOut é energizado.

Exemplo do Bloco de
Função:

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT) 6-9

function_block_A

function_block_C

function_block_B

Etapa 1
O controlador copia Target para Dest.

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

Etapa 2
A instrução mascara Source e o compara a Dest. Todas as alterações solicitadas são feitas em Dest, que se torna o parâmetro de entrada para
function_block_C. 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).
.

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-RM003D-PT-P - Junho 2001


6-10 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT)

Distribuição do Campo do Linguagens Disponíveis:

Bit (BTD)
Lógica Ladder

A instrução BTD copia os bits especificados de Source, muda os bits


para a posição adequada e escreve os bits em Destination.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source SINT imediato tag que contém os bits a serem
INT tag movimentados
DINT
Um tag SINT ou INT é convertido para um valor DINT por preenchimento
com zero.
Bit Source DINT imediato número do bit (número do bit menos
(0-31 DINT) significativo) onde a movimentação
(0-15 INT) foi iniciada
(0-7 SINT) deve estar dentro da faixa válida de
tipos de dados Source
Destination SINT tag tag para onde os bits serão movidos
INT
DINT
Bit de Destino DINT imediato o número do bit (número de bit menos
(0-31 DINT) significativo) a partir de onde se inicia
(0-15 INT) a cópia de bits de Source
(0-7 SINT) deve estar dentro da faixa válida de
tipos de dados Destination
Length DINT imediato (1-32) número de bits a ser movido

Operandos do Bloco de Esta instrução está disponível no bloco de função como BTDT,
Função: consulte a página 6-13.

Descrição: Quando habilitada, a instrução BTD copia um grupo de bits de Source para
Destination. O grupo de bits é identificado pelo bit de Source (número de
bit menos significativo do grupo) e o Comprimento (número de bits a
serem copiados). O bit de 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.

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

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT) 6-11

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira A instrução copia e muda os bits de Source para Destination.
A saída da condição da linha é definida como verdadeira.

Exemplo de Lógica
Ladder:
exemplo 1

Quando habilitada, a instrução BTD movimenta os


bits dentro de value_1.

Bit Destination Bit Source

value_1 antes da instrução 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


BTD

value_1 depois da instrução 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


BTD

As caixas sombreadas mostram os bits alterados em value_1.

exemplo 2

Quando habilitada, a instrução BTD move 10 bits de


value_1 para value_2.

Publicação 1756-RM003D-PT-P - Junho 2001


6-12 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT)

Bit Source

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

Bit de Destino

value_2 antes da 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
instrução BTD

value_2 depois da 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
instrução BTD

As caixas sombreadas mostram os bits que foram alterados em value_2.

Execução do Bloco de Esta instrução está disponível no bloco de função como BTDT,
Função: consulte a página 6-13.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT) 6-13

Distribuição do Campo do Linguagens Disponíveis:

Bit com Target (BTDT)


Bloco de Função

A instrução BTDT primeiro copia Target para Destination. Então a


instrução copia os bits específicos do source, muda os bits para a
posição apropriada e os escreve em Destination. O Target e o Source
se mantêm inalterados.

Operandos de Lógica Esta instrução está disponível em lógica ladder como BTD, consulte a
Ladder: página 6-10.

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_BIT_FIELD_DISTRIBUTE estrutura estrutura BTDT

Estrutura: Parâmetros de entrada

Parâmetro Tipo de Dados: Descrição:


de Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são atualizadas.
o valor inicial é definido
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 de onde se começa a movimentar).
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 onde se inicia 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âmetros de saída

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 da movimentação do bit. Os flags de status aritmético são
energizados para esta saída.

Publicação 1756-RM003D-PT-P - Junho 2001


6-14 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT)

Descrição: Quando habilitada, a instrução BTD copia um grupo de bits de Source


para Destination. O grupo de bits é identificado pelo bit de Source
(número de bit menos significativo do grupo) e o Comprimento
(número de bits a serem copiados). O bit de 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 de Lógica Esta instrução está disponível em lógica ladder como BTD, consulte a
Ladder: página 6-10.

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução executa.
EnableOut é energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT) 6-15

Exemplo do Bloco de
Função:
function_block_A

function_block_C

function_block_B

function_block_D

Etapa 1
O controlador copia Target para Dest.

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

Etapa 2
O SourceBit e o Length especificam que bits no Source devem ser copiados em Dest, começando por DestBit. O Source e o Target se mantêm
inalterados. O Dest alterado se torna o parâmetro de entrada para function_block_C.
DestBit SourceBit

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.

Publicação 1756-RM003D-PT-P - Junho 2001


6-16 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT)

Zeramento (CLR) Linguagens Disponíveis:

Lógica Ladder

A instrução CLR zera todos os bits de Destination.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Destination SINT tag tag a ser zerado
INT
DINT
REAL

Operandos do Bloco de Esta instrução não está disponível no bloco de função.


Função:

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 de Lógica
Ladder:
Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira A instrução zera Destination.
A saída da condição da linha é definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução CLR zera todos os bits de value_1.

Execução do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT) 6-17

Bitwise AND (AND) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução AND realiza uma operação bitwise AND usando os bits


em Source A e Source B e coloca o resultado no Destino.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source A SINT imediato valor para AND com Source B
INT tag
DINT
Um tag SINT ou INT é convertido para um valor DINT por preenchimento
com zero.
Source B SINT imediato valor para AND com Source A
INT tag
DINT
Um tag SINT ou INT é convertido para um valor DINT por preenchimento
com zero.
Destination SINT tag armazena o resultado
INT
DINT

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_LOGICAL estrutura estrutura AND

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são atualizadas.
o valor inicial é definido
SourceA DINT Valor para AND com SourceB.
válido = qualquer inteiro
SourceB DINT Valor para AND com SourceA.
válido = qualquer inteiro

Publicação 1756-RM003D-PT-P - Junho 2001


6-18 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT)

Parâmetros de saída

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.

Descrição: Quando habilitada, a instrução avalia a operação AND

Se o bit em E o bit em O bit em Destination


Source A for: Source B for: será:
0 0 0
0 1 0
1 0 0
1 1 1

Se houver uma combinação de 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

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira A instrução realiza uma operação bitwise AND.
A saída da condição da linha é definida como verdadeira.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT) 6-19

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução AND realiza uma operação de bitwise AND em value_1 e value_2
e coloca o resultado em value_result_and.

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_and 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução executa.
EnableOut é energizado.

Exemplo do Bloco de
Função

Publicação 1756-RM003D-PT-P - Junho 2001


6-20 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT)

function_block_C

Quando habilitada, a instrução AND logicamente junta (AND) SourceA e SourceB. A instrução
coloca o resultado em Dest, que se torna um parâmetro de entrada para function_block_C.

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

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT) 6-21

Bitwise OR (OR) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução OR realiza uma operação bitwise OR usando os bits em


Source A e Source B e coloca o resultado em Destination.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source A SINT imediato valor para OR com Source B
INT tag
DINT
Um tag SINT ou INT é convertido para um valor DINT por preenchimento
com zero.
Source B SINT imediato valor para OR com Source A
INT tag
DINT
Um tag SINT ou INT é convertido para um valor DINT por preenchimento
com zero.
Destination SINT tag armazena o resultado
INT
DINT

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_LOGICAL estrutura estrutura OR

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é definido
SourceA DINT Valor para OR com SourceB.
válido = qualquer inteiro
SourceB DINT Valor para OR com SourceA.
válido = qualquer inteiro

Publicação 1756-RM003D-PT-P - Junho 2001


6-22 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT)

Parâmetros de saída

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.

Descrição: Quando habilitada, a instrução avalia a operação OR

Se o bit em E o bit em O bit em Destination


Source A for: Source B for: será:
0 0 0
0 1 1
1 0 1
1 1 1

Se houver uma combinação de 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

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira A instrução realiza uma operação bitwise OR.
A saída da condição da linha é definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução OR realiza uma operação de bitwise OR em value_1 e value_2 e


coloca o resultado em value_result_or.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT) 6-23

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

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução executa.
EnableOut é energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


6-24 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT)

Exemplo do Bloco de
Função:

function_block_C

Quando habilitada, a instrução OR realiza uma operação lógica OR de SourceA e SourceB. A instrução
coloca o resultado em Dest, que se torna um parâmetro de entrada para function_block_C.

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-RM003D-PT-P - Junho 2001


Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT) 6-25

Bitwise Exclusive OR (XOR) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução XOR realiza uma operação bitwise XOR usando os bits em


Source A e Source B e coloca o resultado no Destino.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source A SINT imediato valor para XOR com Source B
INT tag
DINT
Um tag SINT ou INT é convertido para um valor DINT por preenchimento
com zero.
Source B SINT imediato valor para XOR com Source A
INT tag
DINT
Um tag SINT ou INT é convertido para um valor DINT por preenchimento
com zero.
Destination SINT tag armazena o resultado
INT
DINT

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_LOGICAL estrutura estrutura XOR

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é definido
SourceA DINT Valor para XOR com SourceB.
válido = qualquer inteiro
SourceB DINT Valor para XOR com SourceA.
válido = qualquer inteiro

Publicação 1756-RM003D-PT-P - Junho 2001


6-26 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT)

Parâmetros de saída

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éticos são energizados para esta saída.

Descrição: Quando habilitada, a instrução avalia a operação XOR

Se o bit em E o bit em O bit em


Source A for: Source B for: Destination
será:
0 0 0
0 1 1
1 0 1
1 1 0

Se houver uma combinação de 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

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira A instrução realiza uma operação bitwise OR.
A saída da condição da linha é definida como verdadeira.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT) 6-27

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução XOR realiza uma operação de bitwise XOR em value_1 e value_2
e coloca o resultado em value_result_xor.

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

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução executa.
EnableOut é energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


6-28 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT)

Exemplo do Bloco de
Função:

function_block_C

Quando habilitada, a instrução XOR executa um OR exclusivo em SourceA e SourceB. A instrução coloca
o resultado em Dest, que se torna o parâmetro de entrada para function_block_C.

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 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT) 6-29

Bitwise NOT (NOT) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução NOT realiza uma operação bitwise NOT usando os bits


em Source e coloca o resultado em Destination.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source SINT imediato valor para NOT
INT tag
DINT
Um tag SINT ou INT é convertido para um valor DINT por preenchimento
com zero.
Destination SINT tag armazena o resultado
INT
DINT

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_CONVERT estrutura estrutura NOT

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é definido
Source DINT Valor para NOT.
válido = qualquer inteiro

Parâmetros de saída

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-RM003D-PT-P - Junho 2001


6-30 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT)

Descrição: Quando habilitada, a instrução avalia a operação NOT

Se o bit em O bit em Destination


Source for: será:
0 1
1 0

Se houver uma combinação de 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

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira A instrução realiza uma operação bitwise NOT.
A saída da condição da linha é definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução NOT realiza uma operação de bitwise NOT em value_1 e coloca o
resultado em value_result_not.

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-RM003D-PT-P - Junho 2001


Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT) 6-31

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução executa.
EnableOut é energizado.

Exemplo do Bloco de
Função:

function_block_C

Quando energizada, a instrução NOT complementa o Source. A instrução coloca o resultado em


Dest, que se torna o parâmetro de entrada para function_block_C.

Source 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

Dest 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-RM003D-PT-P - Junho 2001


6-32 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, AND, OR, XOR, NOT)

Notas:

Publicação 1756-RM003D-PT-P - Junho 2001


Capítulo 7

Instruções Array (File/Miscellaneous)


(FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Introdução As instruções de arquivo/diversos operam nas matrizes de dados.

Se você quiser: Use esta instrução: Consulte


página:
realizar operações de função, desvio, lógica e FAL 7-7
aritmética nos valores de matrizes
buscar e comparar valores em matrizes FSC 7-20
copiar o conteúdo de uma matriz para COP 7-32
outra matriz
copiar o conteúdo de uma matriz para CPS 7-32
outra matriz sem interrupção
preencher uma matriz com dados específicos FLL 7-37
calcular a média de uma matriz de valores AVE 7-41
classificar uma dimensão de dados da matriz SRT 7-45
em ordem crescente
calcular o desvio padrão de uma matriz de STD 7-49
valores
encontrar o tamanho de uma dimensão de SIZE 7-53
uma matriz

É possível misturar tipos de dados, mas podem ocorrer perda de


precisão e erros de arredondamentos e a instrução demorar mais
tempo para executar. 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 os tipos de dados ótimos. Uma instrução executa mais
rapidamente e requer menos memória se todos os operandos da
instrução usam o mesmo tipo de dado ótimo, geralmente DINT ou
REAL.

1 Publicação 1756-RM003D-PT-P - Junho 2001


7-2 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Seleção do Modo de Para as instruções FAL e FSC, o modo informa o controlador sobre
como distribuir a operação de matriz.
Operação
Se você quiser: Selecione este
modo:
operar em todos os elementos especificados em uma All (Todos)
matriz antes de prosseguir para a próxima instrução
distribuir a operação de matriz em várias varreduras Numerical
inserir o número de elementos para operar por varredura (Numérico)
(1-2147483647)
manipular um elemento da matriz cada vez que a entrada Incremental
da condição da linha passa de falsa para verdadeira (Incremento)

Modo All (Todos)

No modo All, todos os elementos especificados na matriz 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 na matriz que a instrução está usando
atualmente. A operação pára quando o valor .POS for igual ao valor
.LEN.

Matriz de dados uma varredura

16639

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-3

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
pode ser disparada por uma transição de falsa para verdadeira da
entrada da condição da linha.

uma
varredura

entrada da condição da linha

bit .EN

bit DN
zerar os bits de status e
zerar o valor .POS

varredura da instrução

operação completa nenhuma execução ocorre 40010

Modo Numerical (numérico)

O modo Numerical distribui a operação de matriz em várias


varreduras. 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 varredura, o que
mantém o tempo de varredura 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 a varredura na mesma para o número de varreduras
necessárias para completar a operação em toda a matriz. Após o

Publicação 1756-RM003D-PT-P - Junho 2001


7-4 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

disparo, a entrada da condição da linha pode se alterar repetidamente


sem interromper a execução da instrução.

uma varredura

segunda varredura

próxima varredura

16641

IMPORTANTE Evite usar os resultados de uma instrução de arquivo


operando no modo numérico até que o bit .DN fique
energizado.

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.

a linha se torna verdadeira na conclusão a linha se torna falsa na conclusão

varreduras múltiplas varreduras múltiplas

entrada da condição da linha

bit .EN

bit DN

varredura da instrução

operação completa operação completa 40013

zera os bits de status zera os bits de status


e zera o valor .POS e zera o valor .POS

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.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-5

Se a entrada da condição da linha for falsa na conclusão, o bit .EN


será zerado imediatamente. Uma varredura depois que o bit .EN é
desenergizado, o bit .DN e o valor .POS são zerados.

Modo Incremental (incremento)

O modo Incremental manipula um elemento da matriz cada vez que a


entrada da condição da linha da instrução passa de falsa para
verdadeira.

1a. instrução habilitada


2a. instrução habilitada
3a. instrução habilitada

última instrução habilitada

16643

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 uma
varredura na qual a entrada da condição da linha passa de falsa para
verdadeira. Cada vez que isso ocorre, apenas um elemento da matriz
é manipulado. Se a entrada da condição da linha permanecer

Publicação 1756-RM003D-PT-P - Junho 2001


7-6 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

verdadeira durante mais de uma varredura, a instrução executa


somente durante a primeira varredura.

uma
varredura

entrada da condição da linha

bit .EN

bit DN

40014
varredura da instrução

operação zerar os bits de status


completa e zerar o valor .POS

O bit .EN é energizado quando a entrada da condição da linha se


torna verdadeira. O bit .DN é energizado quando o último elemento
na matriz 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 varredura é:

• O modo Numerical com qualquer número de elementos por


varredura 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 varredura 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 na matriz.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-7

Arquivamento Aritmético e Linguagens Disponíveis:

Lógico (FAL)
lógica Ladder

A instrução FAL realiza as operações de cópia, aritmética, lógica e


função nos dados armazenados em uma matriz.

Operandos de Lógica
Ladder:
Operando: Tipo: Formato: Descrição:
Control CONTROL tag estrutura de controle para a operação
Length DINT imediato número de elementos na matriz a
serem manipulados
Position DINT imediato elemento atual na matriz
valor inicial é normalmente 0
Mode DINT imediato como distribuir a operação
selecione INC, ALL ou insira um
número
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL
Expressão SINT imediato tag uma expressão composta por tags
INT e/ou valores imediatos separados por
DINT operadores
REAL
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.

Estrutura:

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 gera 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 na matriz na 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.

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: A instrução FAL realiza as mesmas operações nas matrizes conforme a


instrução CPT realiza as operações dos elementos.

Publicação 1756-RM003D-PT-P - Junho 2001


7-8 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Os exemplos que começam na página 7-15 mostram como usar o


valor .POS para entrar em uma matriz. 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:

Uma falha grave ocorrerá se: Tipo de falha: Código de falha:


subscrito está fora da faixa 4 20
.POS < 0 ou .LEN < 0 4 21

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-9

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.

entrada da condição da linha for falsa

bit .DN = 0 não


examinar bit .DN modo INC bit interno é desenergizado

bit .DN = 1 sim

não .LEN < 0 ou sim


bit .EN é desenergizado bit .EN é desenergizado modo ALL falha grave
.POS < 0
bit .ER é desenergizado
bit .DN é desenergizado
valor .POS é sim não
desenergizado

.POS = .POS + 1

sim
.LEN = 0

não
sim
.POS = 0

não
não .POS < .LEN

.POS = .POS – 1 sim

não
modo .LEN>
bit .DN é energizado
bit .EN é energizado
sim

modo .LEN>
bit .DN é energizado
bit .EN é
desenergizado

modo
numérico
página 7-14

saída da condição da linha


é definida como falsa

fim

Publicação 1756-RM003D-PT-P - Junho 2001


7-10 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Condição: Ação:

entrada da condição da linha for verdadeira

.LEN < 0 ou sim página7-14


.POS < 0 falha grave
bit .ER = 0 modo
examinar bit .ER numérico
não

bit .ER = 1 bit .DN = 0 não

não não
examinar bit .DN .LEN = 0 modo INC modo ALL

bit .DN = 1 sim sim sim

bit .DN é energizado


bit .EN é energizado modo modo
INC ALL

página 7-12 página 7-13


comum

loop_count =
loop_count – 1

não
loop_count < 0 .POS = .POS + 1

sim
avaliar a expressão

não
examine S:V

sim

.POS = .POS + 1 bit .ER é energizado

não
.POS = .LEN

sim

bit .DN é energizado


.POS = .POS + 1
bit .EN é energizado

saída da condição da linha é


definida como verdadeira

fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-11

Condição: Ação:

modo
INC

bit .EN = 1
examinar bit .EN

bit .EN = 0

bit = 1
examinar .POS = .POS + 1
bit interno

bit = 0

bit interno é energizado

sim sim
.POS ≥ .LEN .POS = 0

não não

bit .EN é energizado .POS = .POS – 1


loop_count = 1
.POS = .POS – 1

bit .DN é energizado


bit .EN é energizado

saída da condição da linha é


comum definida como verdadeira
página 7-11

fim

Publicação 1756-RM003D-PT-P - Junho 2001


7-12 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Condição: Ação:

modo
ALL

bit .EN = 0 bit = 1


examinar
examinar bit .EN bit interno

bit .EN = 1 bit = 0

.POS = .POS + 1 bit .EN é energizado

sim sim
.POS ≥ .LEN .POS = 0

não não

loop_count = .LEN – .POS .POS = .POS – 1


.POS = .POS – 1

bit .DN é energizado saída da condição da linha é


bit .EN é energizado definida como verdadeira
comum

página 7-11
fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-13

Condição: Ação:

modo
numérico

bit .EN = 1
examinar bit .EN

bit .EN = 0

.POS = .POS + 1

bit = 1
examinar
bit interno

bit = 0

bit interno é energizado

sim sim
.POS ≥ .LEN .POS = 0

não não

.POS = .POS – 1
não
modo .LEN> modo .LEN ≥

sim

bit .DN é energizado saída da condição da linha é


bit .EN é energizado definida como verdadeira
bit .EN é energizado
loop_count = .LEN – .POS
.POS = .POS – 1

fim

modo ≥ sim
loop_count comum

página 7-11
não

bit .EN é energizado


loop_count = mode

Publicação 1756-RM003D-PT-P - Junho 2001


7-14 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Exemplo de Lógica
Ladder:
cópia de matriz para matriz
Quando habilitada, a instrução FAL copia cada elemento de
array_2 na mesma posição dentro de array_1.

Expressão Destination
array_2[control_2.pos] array_1[control_2.pos]

cópia de elemento para matriz

Quando habilitada, a instrução FAL copia value_1 nas primeiras 10


posições da segunda dimensão de array_2.

Expressão Destination
value_1 array_2[0,control_2.pos]

cópia de matriz para elemento

Cada vez que a instrução FAL é habilitada, ela copia o valor atual de
array_1 em value_1. A instrução FAL usa o modo de incremento, de
forma que somente um valor da matriz é copiado cada vez 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.

Expressão Destination
array_1[control_1.pos] value_1

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-15

operação aritmética: (matriz/matriz) para matriz

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.

Expressão Destination
array_2[control_2.pos] / array_3[control_2.pos] array_1[control_2.pos]

operação aritmética: (elemento + elemento) para matriz

Quando habilitada, a instrução FAL adiciona value_1 e value_2 e armazena o


resultado na posição atual de array_1.

Expressão Destination
value_1 + value_2 array_1[control_1.pos]

operação aritmética: (matriz + elemento) para matriz

Quando habilitada, a instrução FAL adiciona o valor da posição atual


de array_1 com value_1 e armazena o resultado na posição atual de
array_3. A instrução deve ser executada 10 vezes para que array_1 e
array_3 sejam totalmente manipulados.

Expressão Destination
array_1[control_1.pos] + value_1 array_3[control_1.pos]

Publicação 1756-RM003D-PT-P - Junho 2001


7-16 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

operação aritmética: (elemento + matriz) para elemento

Cada vez que a instrução FAL é habilitada, ela adiciona value_1 ao


valor atual de array_1 e armazena o resultado na posição atual de
value_2. A instrução FAL usa o modo de incremento de forma que
somente um valor da matriz seja adicionado a value_1 cada vez que a
instrução é habilitada.1 A próxima vez que a instrução é habilitada, a
instrução sobrescreve value_2.

Expressão Destination
value_1 + array_1[control_1.pos] value_2

operação aritmética: (matriz ∗ matriz) para elemento

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 de
incremento de forma que somente um par de valores da
matriz seja multiplicado cada vez que a instrução é
habilitada.1 A próxima vez que a instrução é habilitada, a
instrução sobrescreve value_1.

Expressão Destination
array_1[control_1.pos] * array_3[control_1.pos] value_1

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-17

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 nas duas instruções.

Operadores válidos

Operador: Descrição: Ótimo: Operador: Descrição: Ótimo:


+ adição DINT, REAL LN natural log REAL
– subtração/negativo DINT, REAL LOG logaritmo na base de REAL
10
* multiplicação DINT, REAL
MOD módulo-divisão DINT, REAL
/ divisão DINT, REAL
NOT bitwise complemento DINT
** expoente DINT, REAL
(x elevado a y) OR bitwise OR DINT
ABS valor absoluto DINT, REAL RAD graus para radianos DINT, REAL
ACS arco co-seno REAL SIN seno REAL
AND bitwise AND DINT SQR raiz quadrada DINT, REAL
ASN arco seno REAL TAN tangente REAL
ATN arco tangente REAL TOD inteiro para BCD DINT
COS co-seno REAL TRN truncado DINT, REAL
DEG radianos para graus DINT, REAL XOR bitwise exclusivo OR DINT
FRD BCD para inteiro DINT

Publicação 1756-RM003D-PT-P - Junho 2001


7-18 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Expressões de formatação

Para cada operador usado em uma expressão, é necessário fornecer


um ou dois operandos (tags ou valores imediatos). Use a tabela a
seguir para formatar operadores e operandos dentro de uma
expressão:

Para operadores Use esse formato: Exemplos:


que operam com:
um operando operador (operando) 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)

Determinação da seqüência de operação

As operações gravadas na expressão são realizadas pela instrução em


uma seqüência prescrita, não necessariamente na seqüência em que
foram gravadas. É 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.

Operações com seqüência igual são realizadas da esquerda para a


direita.

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-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-19

Comparação e Busca de Linguagens Disponíveis:

Arquivo (FSC)
Lógica Ladder

A instrução FSC compara valores em uma matriz, elemento por


elemento.

Operandos de Lógica
Ladder:
FSC
Operando: Tipo: Formato: Descrição:
File Search/Compare EN
Control ? DN Control CONTROL tag estrutura de controle para a operação
Length ? ER
Position ? Length DINT imediato número de elementos na matriz a
Mode ? serem manipulados
Expression ?
Position DINT imediato offset na matriz
42577 valor inicial é normalmente 0
Mode DINT imediato como distribuir a operação
selecione INC, ALL ou insira um
número
Expressão SINT imediato uma expressão composta por tags
INT tag e/ou valores imediatos separados por
DINT operadores
REAL
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.

Estrutura:

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

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


7-20 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Descrição: Quando a instrução FSC é habilitada e a comparação é verdadeira, a


instrução energiza o bit .FD e o bit .POS reflete a posição da matriz
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:

Uma falha grave ocorrerá se: Tipo de falha: Código de falha:


.POS < 0 ou .LEN < 0 4 21

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-21

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.

entrada da condição da linha for falsa

bit .DN = 0 não


examinar bit .DN modo INC bit interno é desenergizado

bit .DN = 1 sim

não .LEN < 0 ou sim


bit .EN é desenergizado modo ALL falha grave
bit .EN é desenergizado .POS < 0
bit .ER é desenergizado
bit .DN é desenergizado
valor .POS é desenergizado sim não

.POS = .POS + 1

sim
.LEN = 0

não
sim
.POS = 0

não
não .POS < .LEN

.POS = .POS – 1 sim

não
modo .LEN>
bit .DN é energizado
bit .EN é energizado
sim

modo .LEN>
bit .DN é energizado
bit .EN é
desenergizado

modo
numérico
página 7-14

saída da condição da linha


é definida como falsa

fim

Publicação 1756-RM003D-PT-P - Junho 2001


7-22 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Condição: Ação:

entrada da condição da linha for verdadeira

.LEN < 0 ou sim página 7-27


.POS < 0 falha grave
bit .ER = 0 modo
examinar bit .ER numérico
não

bit .ER = 1 bit .DN = 0 não

não não
examinar bit .IN .LEN = 0 modo INC modo ALL
bit .DN = 1
bit .IN = 0 sim sim sim

bit .DN é energizado


bit .EN é energizado modo modo
INC ALL
examinar bit .DN
bit .DN = 1 página 7-26
página 7-25
comum

bit .DN = 0

loop_count =
loop_count – 1

não
loop_count < 0 .POS = .POS + 1

sim
avaliar comparação

não
correspondência

sim

.POS = .POS + 1 bit .EN é energizado


bit .FD é energizado
bit .IN é energizado

não
.POS = .LEN

sim

bit .DN é energizado


.POS = .POS + 1
bit .EN é energizado

saída da condição da linha


é definida como

fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-23

Condição: Ação:

modo
INC

bit .EN = 1
examinar bit .EN

bit .EN = 0

bit = 1
examinar .POS = .POS + 1
bit interno

bit = 0

bit interno é energizado

sim sim
.POS ≥ .LEN .POS = 0

não não

bit .EN é energizado .POS = .POS – 1


loop_count = 1
.POS = .POS – 1

bit .DN é energizado


bit .EN é energizado
saída da condição da linha é
comum definida como verdadeira

página 7-24

fim

Publicação 1756-RM003D-PT-P - Junho 2001


7-24 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Condição: Ação:

modo
ALL

bit .EN = 0 bit = 1


examinar
examinar bit .EN bit interno

bit .EN = 1 bit = 0

.POS = .POS + 1 bit .EN é energizado


bit .FD é desenergizado

sim sim
.POS ≥ .LEN .POS = 0

não não

loop_count = .LEN – .POS .POS = .POS – 1


.POS = .POS – 1

bit .DN é energizado saída da condição da linha é


bit .EN é energizado definida como verdadeira
comum

página 7-24
fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-25

Condição: Ação:

modo
numérico

bit .EN = 1
examinar bit .EN

bit .EN = 0

.POS = .POS + 1

bit = 1
examinar
bit interno

bit = 0

bit interno é energizado

sim sim
.POS ≥ .LEN .POS = 0

não não

não .POS = .POS – 1


modo .LEN> modo .LEN ≥

sim

bit .DN é energizado saída da condição da linha é


bit .EN é energizado definida como verdadeira
bit .EN é energizado
loop_count = .LEN – .POS
bit .FD é desenergizado
.POS = .POS – 1
fim

modo sim
≥loop_count comum

página 7-24
não

bit .EN é energizado


loop_count = mode

Publicação 1756-RM003D-PT-P - Junho 2001


7-26 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Exemplo de Lógica
Ladder:
exemplo 1
buscar uma correspondência entre
duas matrizes

Quando habilitada, a instrução FSC compara cada um dos 10 primeiros elementos em array_1 com os elementos correspondentes em array_2.

array_1 array_2 control_3.pos

00000000000000000000000000000000 00000000000000000000000000000000 0
00000000000000000000000000000000 00000000000000000000000000000000 1
00000000000000000000000000000000 00000000000000000000000000000000 2
00000000000000000000000000000000 00000000000000000000000000000000 3 A instrução FSC descobre que esses
elementos não são iguais. A instrução
00000000000000001111111111111111 11111111111111110000000000000000 4 energiza os bits .FD e .IN. O valor .POS (4)
11111111111111111111111111111111 11111111111111111111111111111111 5 indica a posição dos elementos que são
diferentes. Para continuar a realizar a
11111111111111111111111111111111 11111111111111111111111111111111 6
comparação no restante da matriz, zere o
11111111111111111111111111111111 11111111111111111111111111111111 7 bit .IN.
11111111111111111111111111111111 11111111111111111111111111111111 8
11111111111111111111111111111111 11111111111111111111111111111111 9

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-27

exemplo 2
buscar uma correspondência em uma
matriz

Quando habilitada, a instrução FSC compara MySearchKey com 10 elementos em array_1.

MySearchKey referência control_3.pos

00000000000000000000000000000000 0
00000000000000000000000000000000 1
00000000000000000000000000000000 2
00000000000000000000000000000000 3
A instrução FSC descobre que esse
11111111111111110000000000000000 11111111111111110000000000000000 4 elemento da matriz é igual a MySearchKey.
A instrução energiza os bits .FD e .IN. O
11111111111111111111111111111111 5
valor .POS (4) indica a posição dos
11111111111111111111111111111111 6 elementos iguais. Para continuar a realizar
11111111111111111111111111111111 7 a comparação no restante da matriz, zere o
bit .IN.
11111111111111111111111111111111 8
11111111111111111111111111111111 9

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

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.

Publicação 1756-RM003D-PT-P - Junho 2001


7-28 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Operadores válidos

Operador: Descrição: Ótimo: Operador: Descrição: Ótimo:


+ adição DINT, REAL DEG radianos para graus DINT, REAL
– subtração/negativo DINT, REAL FRD BCD para inteiro DINT
* multiplicação DINT, REAL LN natural log REAL
/ divisão DINT, REAL LOG logaritmo na base de REAL
10
= igual DINT, REAL
MOD módulo-divisão DINT, REAL
< menor do que DINT, REAL
NOT bitwise complemento DINT
<= menor ou igual a DINT, REAL
OR bitwise OR DINT
> maior do que DINT, REAL
RAD graus para radianos DINT, REAL
>= maior ou igual a DINT, REAL
SIN seno REAL
<> diferente de DINT, REAL
SQR raiz quadrada DINT, REAL
** expoente DINT, REAL
(x elevado a y) TAN tangente REAL
ABS valor absoluto DINT, REAL TOD inteiro para BCD DINT
ACS arco co-seno REAL TRN truncado DINT, REAL
AND bitwise AND DINT XOR bitwise exclusivo OR DINT
ASN arco seno REAL
ATN arco tangente REAL
COS co-seno REAL

Formatação das expressões

Para cada operador usado em uma expressão, é necessário fornecer


um ou dois operandos (tags ou valores imediatos). Use a tabela a
seguir para formatar operadores e operandos dentro de uma
expressão:

Para operadores Use esse formato: Exemplos:


que operam com:
um operando operador (operando) 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)

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-29

Determinação da seqüência de operação

As operações gravadas na expressão são realizadas pela instrução em


uma seqüência prescrita, não necessariamente na seqüência em que
foram gravadas. É 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.

Operações com seqüência igual são realizadas da esquerda para a


direita.

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

Publicação 1756-RM003D-PT-P - Junho 2001


7-30 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Cópia de Arquivo (COP) Linguagens Disponíveis:

Cópia Síncrona de Arquivo


Lógica Ladder
(CPS)
As instruções COP e CPS copiam o(s) valor(es) em Source para
Destination. Source permanece inalterado.

Operandos de Lógica
Ladder:
COP Operando Tipo: Formato: Descrição:
Copy File
Source ? Source SINT tag elemento inicial para cópia
Dest ? INT Importante: os operandos Source e
Length ? DINT Destination devem ter o mesmo tipo
REAL de dado ou podem ocorrer resultados
estrutura inesperados.
CPS
Synchronous Copy File Destination SINT tag elemento inicial a ser sobrescrito
Source ? INT por Source
Dest ? DINT Importante: os operandos Source e
Length ? REAL Destination devem ter o mesmo tipo
estrutura de dado ou podem ocorrer resultados
42577 inesperados.
Length DINT imediato tag número de elementos em Destination
a serem copiados

Operandos do Bloco de
Função: Estas instruções não estão disponíveis no bloco de função.

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:

Se a fonte ou destino for: E você quiser: Então Notas:


selecione:
• tag produzido previnir que os dados mudem CPS • Tarefas que tentam interromper
• tag consumido durante a operação de cópia uma instrução CPS são atrasadas
• dados de E/S até que a instrução seja
• dados que outra tarefa pode concluída.
sobrescrever • Para estimar o tempo de execução
da instrução CPS, consulte
Manual do Usuário do Sistema
ControlLogix, publicação
1756-UM001.
permitir que os dados mudem COP
durante a operação de cópia
nenhum dos acima COP

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-31

O número de bytes copiados é:


Contagem de Byte = Length ∗ (número de bytes em tipos de dados
em Destination)

Se a contagem de byte for maior do que o


ATENÇÃO
comprimento de Source, dados não previstos serão
copiados para os elementos restantes.

!
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 da matriz. Se


Length for maior do que o número total de elementos na matriz
Destination, as instruções COP e CPS param no final da matriz.
Nenhuma falha grave é gerada.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Publicação 1756-RM003D-PT-P - Junho 2001


7-32 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.

entrada da condição da end_address = start_address + (Length ∗ número


de bytes em um elemento em destination)
linha for verdadeira

end_address > fim sim


end_address = fim da matriz destination
da matriz destination

não

source_address = Source

destination_address = sim
end_address

não

copiar os dados de source_address para


destination _address
saída da condição da linha é
definida como verdadeira

source_address = source _address + 1


fim

destination_address =
destination_address + 1

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-33

Exemplo de Lógica
Ladder:

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.

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

exemplo 3

A matriz project_data (100 elementos) armazena uma variedade de valores que mudam em momentos
CPS diferentes na aplicação. Para enviar uma imagem completa de project_data a uma instância por vez
Synchronous Copy File
para outro controlador, a instrução CPS copia project_data para produced_array.
Source project_data[0]
Dest produced_array[0] • Enquanto a instrução CPS copia os dados, nenhuma atualização de E/S ou outras tarefas
Length 100 podem mudar os dados.
• O tag produced_array produz os dados em uma rede ControlNet para o consumo por outros
42578
controladores.
• Para usar a mesma imagem de dados (ou seja, uma cópia síncrona de dados), o controladore
consumidor usa uma instrução CPS para copiar os dadps de um tag consumido para outro tag
para uso na aplicação.

exemplo 4

Local:0:I.Data aramzena os dados de entrada para a rede DeviceNet que está conectada ao módulo
CPS
Synchronous Copy File 1756-DNB no slot 0. Para sincronizar as entradas com a aplicação, a instrução CPS copia os dados de
Source Local:0:I.Data[0] entrada para input_buffer.
Dest input_buffer[0] • Enquanto a instrução CPS copia os dados, nenhuma atualização de E/S pode mudar os dados.
Length 20
• Conforme a aplicação é executada, ela usa os dados de entrada em input_buffer para suas
entradas.
42578

Publicação 1756-RM003D-PT-P - Junho 2001


7-34 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

exemplo 5

Esse exemplo inicializa uma matriz 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.

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]

Execução do Bloco de
Função: Estas instruções não estão disponíveis no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-35

Preenchimento de Arquivo Linguagens Disponíveis:

(FLL)
Lógica Ladder

A instrução FLL preenche os elementos de uma matriz com o valor


Source. Source permanece inalterado.

Operandos de Lógica
Ladder:
Operando: Tipo: Formato: Descrição:
Source SINT imediato tag elemento para cópia
INT Importante: os operandos Source e
DINT Destination devem ter o mesmo tipo
REAL de dado ou podem ocorrer resultados
inesperados.
Destination SINT tag elemento inicial a ser sobrescrito
INT por Source
DINT Importante: os operandos Source e
REAL Destination devem ter o mesmo tipo
estrutura de dado 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

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: O número de bytes preenchidos é:


Contagem de Byte = Length ∗ (número de bytes em tipos de dados
em 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 uma matriz. Se o


comprimento for maior do que o número total de elementos na matriz
Destination, a instrução COP pára no final da matriz. Nenhuma falha
grave é gerada.

Publicação 1756-RM003D-PT-P - Junho 2001


7-36 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

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-36). Se você quiser misturar
os tipos de dados para Source e Destination, os elementos em
Destination são preenchidos com os valores convertidos de Source.

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 estrutura SINT (não convertido)
INT estrutura INT (não convertido)
DINT estrutura DINT (não convertido)
REAL estrutura REAL (não convertido)

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-37

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.

entrada da condição da
linha for verdadeira

end_address = start_address + (Length ∗ número


de bytes em um elemento em destination)

end_address > fim da sim


matriz destination end_address = fim da matriz destination

não

source_address = Source

destination_address = sim
end_address

não

copiar os dados de source_address para


destination _address

saída da condição da linha é


definida como verdadeira
destination_address =
destination_address + 1

fim

Publicação 1756-RM003D-PT-P - Junho 2001


7-38 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução FLL copia o valor em value_1 para dest_1.

Tipo de dados Valor (value_1) Destination Destination


(value_1) Source: Source: (dest_1) tipo de (dest_1) valor
dados: 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

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-39

Média de Arquivo (AVE) Linguagens Disponíveis:

Lógica Ladder

A instrução AVE calcula a média de um conjunto de valores.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Array SINT tag da encontre a média dos valores nessa matriz
INT matriz especifique o primeiro elemento do grupo de
DINT elementos para a média
REAL não use CONTROL.POS em subscrito
Dimension DINT imediato a dimensão a ser usada
to vary (0, 1, 2) 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 tag resultado da operação
INT
DINT
REAL
Control CONTROL tag estrutura de controle para a operação
Length DINT imediato número de elementos da matriz para a média
Position DINT imediato elemento atual na matriz
valor inicial é normalmente 0

Estrutura:

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 na Matriz
(.POS = .LEN).
.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 na matriz 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.

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


7-40 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Descrição: A instrução AVE calcula a média de um conjunto de valores.

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.

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha:

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 4 20
para a matriz especificada

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-41

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura 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 falsa

bit .DN = 0
examinar bit .DN

bit .DN = 1

bit .EN é desenergizado


bit .ER é desenergizado
bit .DN é desenergizado
valor .POS é desenergizado

saída da condição da linha


é definida como falsa

fim

entrada da condição da linha for verdadeira A instrução AVE calcula a média, adicionando todos os elementos especificados na
matriz 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 detalhes sobre como a instrução FAL é executada, consulte a página 7-9.

Publicação 1756-RM003D-PT-P - Junho 2001


7-42 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Exemplo de Lógica
Ladder:
exemplo 1

array_dint é DINT[4,5]

dimensão 1
su
b
sc

0 1 2 3 4
ri t
os

AVE = 19
0 20 19 18 17 16 + 14 + 9 + 4- = 46
------------------------------------ ------ = 11.5
4 4
1 15 14 13 12 11
dimensão 0
dint_ave = 12
2 10 9 8 7 6

3 5 4 3 2 1

exemplo 2

array_dint é DINT[4,5]

dimensão 1
su
b
sc

0 1 2 3 4
ri t
os

AVE = 5---------------------------------------
0 20 19 18 17 16 + 4 + 3 + 2 + 1- = 15 ------ = 3
5 5
1 15 14 13 12 11
dimensão 0 dint_ave = 3
2 10 9 8 7 6

3 5 4 3 2 1

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-43

Classificação de Arquivo Linguagens Disponíveis:

(SRT)
Lógica Ladder

A instrução SRT classifica um conjunto de valores em uma dimensão


(Dim to vary) da Matriz em ordem crescente.

Operandos de Lógica
Ladder:
Operando: Tipo: Formato: Descrição:
Array SINT tag da matriz para classificação
INT matriz especifique o primeiro elemento do grupo de
DINT elementos para classificação
REAL não use CONTROL.POS em subscrito
Dimension DINT imediato a dimensão a ser usada
to vary (0, 1, 2) 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 da matriz
para classificação
Position DINT imediato elemento atual na matriz
valor inicial é normalmente 0

Estrutura:

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

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: A instrução SRT classifica um conjunto de valores em uma dimensão


(Dim to vary) da Matriz em ordem crescente.

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.

Publicação 1756-RM003D-PT-P - Junho 2001


7-44 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha:

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 4 20
para a matriz especificada
A instrução tenta acessar os dados 4 20
localizados fora dos limites da matriz.

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura 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 falsa

bit .DN = 0
examinar bit .DN

bit .DN = 1

bit .EN é desenergizado


bit .ER é desenergizado
bit .DN é desenergizado
valor .POS é desenergizado

saída da condição da linha


é definida como falsa

fim

entrada da condição da linha for verdadeira A instrução SRT classifica os elementos especificados da matriz em ordem crescente.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-45

Exemplo de Lógica
Ladder:
exemplo 1

int _array é DINT[4,5]

Antes Depois
dimensão 1 dimensão 1

su
su

b
b

sc
sc

0 1 2 3 4 0 1 2 3 4

rit
ri t

os
os

0 20 19 18 17 16 0 20 19 3 17 16

1 15 14 13 12 11 1 15 14 8 12 11
dimensão 0 dimensão 0
2 10 9 8 7 6 2 10 9 13 7 6

3 5 4 3 2 1 3 5 4 18 2 1

exemplo 2
int _array é DINT[4,5]

Antes Depois
dimensão 1 dimensão 1
su
su

bs
bs

cri
cri

0 1 2 3 4 0 1 2 3 4
t
t

os
os

0 20 19 18 17 16 0 20 19 18 17 16

1 15 14 13 12 11 1 15 14 13 12 11
dimensão 0 dimensão 0
2 10 9 8 7 6 2 6 7 8 9 10

3 5 4 3 2 1 3 5 4 3 2 1

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


7-46 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Desvio Padrão do Arquivo Linguagens Disponíveis:

(STD)
Lógica Ladder

A instrução STD calcula o desvio padrão de um conjunto de valores


em uma dimensão da Matriz e armazena o resultado em Destination.

Operandos de Lógica
Ladder:
Operando: Tipo: Formato: Descrição:
Array SINT tag da encontra o desvio padrão dos valores
INT matriz nessa matriz
DINT especifica o primeiro elemento do grupo de
REAL elementos a serem usados no cálculo do
desvio padrão
não use CONTROL.POS em subscrito
Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal.
Dimension DINT imediato a dimensão a ser usada
to vary (0, 1, 2) 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 da matriz a
serem usados no cálculo do desvio padrão
Position DINT imediato elemento atual na matriz
valor inicial é normalmente 0

Estrutura:

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

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-47

Descrição: O desvio padrão é calculado de acordo com esta fórmula:

 N 
 2 
∑
[ 〈 X( start + i ) – AVE〉 ]

Desvio Padrão = i = 1 
--------------------------------------------------------------------
(N – 1)

Onde:
• start = subscrito dimension-to-vary do operando array
• xi = elemento da tag na matriz
• N = número de elementos especificados na matriz
• AVE =
N
 
 x ( start + i )
 ∑ 
i = 1 
-----------------------------------------
N

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.

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha:

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 4 20
para a matriz especificada

Publicação 1756-RM003D-PT-P - Junho 2001


7-48 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura 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 falsa

bit .DN = 0
examinar bit .DN

bit .DN = 1

bit .EN é desenergizado


bit .ER é desenergizado
bit .DN é desenergizado
valor .POS é desenergizado

saída da condição da linha


é definida como falsa

fim

entrada da condição da linha for 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 detalhes sobre como a instrução FAL é executada, consulte a página 7-9.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-49

Exemplo de Lógica
Ladder:
exemplo 1
array_dint é DINT[4,5]

dimensão 1

su
bs
cri
0 1 2 3 4

ost
0 20 19 18 17 16

1 15 14 13 12 11
dimensão 0
2 10 9 8 7 6

3 5 4 3 2 1
AVE = 16 + 11 + 6 + 1- = 34
------------------------------------ ------ = 8.5
4 4

2 2 2 2
〈 16 – 8.5〉 + 〈 11 – 8.5〉 + 〈 6 – 8.5〉 + 〈 1 – 8.5〉 - = 6.454972
STD = --------------------------------------------------------------------------------------------------------------------------
〈 4 – 1〉
real_std = 6,454972

exemplo 2
array_dint é DINT[4,5]

dimensão 1
su
b
sc

0 1 2 3 4
rit
os

0 20 19 18 17 16

1 15 14 13 12 11
dimensão 0
2 10 9 8 7 6

20 + 19 + 18 + 17 + 16- = 90 3 5 4 3 2 1
AVE = ------------------------------------------------------ ------ = 18
5 5

2 2 2 2 2
〈 20 – 18〉 + 〈 19 – 18〉 + 〈 18 – 18〉 + 〈 17 – 18〉 + 〈 16 – 18〉 - = 1.581139
STD = -----------------------------------------------------------------------------------------------------------------------------------------------------------
〈 5 – 1〉
real_std = 1,581139

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


7-50 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Tamanho em Elementos Linguagens Disponíveis:

(SIZE)
Lógica Ladder

A instrução SIZE encontra o tamanho de uma dimensão de uma


matriz.

Operandos de Lógica
Ladder:
SIZE
Size in Elements Operando: Tipo: Formato: Insira:
Source ? Source SINT tag da primeiro elemento de uma matriz na qual a
??
Dim. To Vary ?
INT matriz instrução deve ser operada
Size ? DINT
?? REAL
estrutura
42622
tipo de string
Dimensão a DINT imediato dimensão a ser usada:
ser Variada (0, 1, 2)
Para o tamanho da: Insira:
primeira dimensão 0
segunda dimensão 1
terceira dimensão 2

Tamanho SINT tag tag para armazenar o número de elementos


INT na dimensão específica da matriz
DINT
REAL

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Quando a entrada da condição da linha for verdadeira, a instrução


SIZE encontra o número de elementos (tamanho) na dimensão
designada da matriz Source e coloca o resultado no operando Size.

• A instrução encontra o tamanho de uma dimensão de uma


matriz.
• A instrução é operada em uma:
– matriz
– matriz em uma estrutura
– matriz que é parte de uma matriz maior

Em Source, especifique o primeiro elemento da matriz na qual a


instrução deve ser operada.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-51

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
a entrada da condição da linha é falsa A saída da condição da linha é definida como falsa.
a entrada da condição da linha é verdadeira • A instrução é executada.
• A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder:

Exemplo 1
Encontra o número de elementos na dimensão 0 (primeira dimensão) de array_a. Armazena o
SIZE tamanho em array_a_size. Neste exemplo, a dimensão 0 de array_a tem 10 elementos.
Size in Elements
Source array_a[0]
255
Dim. To Vary 0
Size array_a_size
10

42623

Exemplo 2
Encontra o número de elementos no membro DATA de string_1, que é um string. Armazena o
SIZE tamanho em string_1_size.
Size in Elements
Source string_1.DATA[0]
'$00' Neste exemplo, o membro DATA de string_1 tem 82 elementos. (O string usa o tipo de dados
Dim. To Vary 0 STRING padrão.) Como cada elemento mantém um caracter, string_1 pode conter até 82
Size string_1_size caracteres.
82

42623

Exemplo 3
Strings_a é uma matriz de estruturas de string. A instrução SIZE encontra o número de
SIZE
elementos no membro DATA da estrutura de string e armazena o tamanho em data_size_a.
Size in Elements
Source strings_a[0].DATA[0]
'$00' Neste exemplo, o membro DATA tem 24 elementos. (A estrutura de string tem um comprimento
Dim. To Vary 0 especificado pelo usuário de 24).
Size data_size_a
24

42623

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


7-52 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Notas:

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-53

Publicação 1756-RM003D-PT-P - Junho 2001


7-54 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) 7-55

Publicação 1756-RM003D-PT-P - Junho 2001


7-56 Instruções Array (File/Miscellaneous) (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)

Publicação 1756-RM003D-PT-P - Junho 2001


Capítulo 8

Instruções de Matriz (Arquivo)/Deslocamento


(BSL, BSR, FFL, FFU, LFL, LFU)

Introdução Use as instruções de deslocamento/matriz (arquivo) para modificar a


localização dos dados dentro das matrizes.

Se você quiser: Use esta instrução: Consulte


página:
carregar bits, deslocar bits e descarregar bits BSL 8-2
de uma matriz de bits, um bit de cada vez.
BSR 8-6
carregar e descarregar os valores na FFL 8-10
mesma seqüência.
FFU 8-16
carregar e descarregar os valores em LFL 8-22
ordem reversa.
LFU 8-28

É 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 a relé, 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 usam o mesmo tipo de dados ótimo, geralmente DINT ou
REAL.

1 Publicação 1756-RM003D-PT-P - Junho 2001


8-2 Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)

Deslocamento de Bit para a Linguagens Disponíveis:

Esquerda (BSL)
Lógica Ladder a Relé

A instrução BSL desloca os bits especificados dentro da Matriz uma


posição para a esquerda.

Operandos de Lógica
Ladder a Relé:
Operando Tipo: Formato: Descrição:
Array DINT tag da matriz a ser modificada
matriz 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
Bit Source BOOL tag bit a ser deslocado
Length DINT imediato número de bits da matriz a ser deslocada

Estrutura:

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 na matriz a ser deslocado.

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

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

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

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-3

Execução de Lógica
Ladder a Relé:

Condição: Ação:
pré-varredura 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 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.

entrada da condição da linha for verdadeira

bit .EN = 1
examinar bit .EN

bit .EN = 0

bit .EN é energizado

sim
.LEN = 0 bit .DN é energizado

não

.source bit = 1 bit .UL permanece


examinar bit source energizado
sim
.LEN < 0 bit .ER é energizado

.source bit = 0

não
bit .UL é energizado
deslocar matriz da esquerda uma posição

Bit
bit .UL matriz Source

saída da condição da linha


é definida como
bit .DN é energizado verdadeira
.POS = .LEN

fim

Publicação 1756-RM003D-PT-P - Junho 2001


8-4 Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)

Exemplo de Lógica
Ladder a Relé:

exemplo 1

9 8 7 6 5 4 3 2 1 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
antes do
deslocamento 1
0 esses bits foram
deslocados à esquerda input_1
bit .UL
9 8 7 6 5 4 3 2 1 0
array_dint[0]d 0 1 1 1 1 0 0 0 0 1
epois do
deslocamento
Quando habilitada, a instrução BSL inicia no bit 0 em array_dint[0]. A instrução descarrega array_dint[0].9 no bit .UL, desloca os
bits restantes e carrega input_1 em array_dint[0].0. Os valores nos bits restantes (10-31) são inválidos.

exemplo 2

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

1
esses bits foram deslocados à esquerda
input_1

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

0 esses bits foram deslocados à esquerda

bit .UL
Quando habilitada, a instrução BSL inicia no bit 0 em array_dint[0]. A instrução descarrega array_dint[1].25 no bit.UL, desloca os
bits restantes e carrega input_1 em array_dint[0].0. Os valores nos bits restantes (31-26 in array_dint[1]) são inválidos. Observe
como array_dint[0].31 desloca-se através das palavras para array_dint[1].0.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-5

Deslocamento de Bit para a Linguagens Disponíveis:

Direita (BSR)
Lógica Ladder a Relé

A instrução BSR desloca os bits especificados dentro da Matriz uma


posição para a direita.

Operandos de Lógica
Ladder a Relé:
Operando: Tipo: Formato: Descrição:
Array DINT tag da matriz a ser modificada
matriz especifica o elemento onde 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 da matriz a ser deslocada

Estrutura:

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 na matriz a ser deslocado.

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Quando habilitada, a instrução descarrega o valor do bit da Matriz


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

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


8-6 Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)

Execução de Lógica
Ladder a Relé:

Condição: Ação:
pré-varredura 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 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.
entrada da condição da linha for verdadeira

bit .EN = 1
examinar bit .EN

bit .EN = 0

bit .EN é energizado

sim
.LEN = 0 bit .DN é energizado

não

.source bit = 1 bit .UL permanece


examinar bit source
energizado
sim
.LEN < 0 bit .ER é energizado

.source bit = 0

não
bit .UL é energizado
deslocar matriz da esquerda uma posição

Bit matriz bit .UL


Source

saída da condição da linha


é definida como
bit .DN é energizado verdadeira
.POS = .LEN

fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-7

Exemplo de Lógica
Ladder a Relé:

exemplo 1

9 8 7 6 5 4 3 2 1 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
antes do
deslocamento
0
1 esses bits foram
deslocados à direita bit .UL
input_1
9 8 7 6 5 4 3 2 1 0
array_dint[0]d 1 0 0 1 1 1 1 0 0 0
epois do
deslocamento
Quando habilitada, a instrução BSR inicia no bit 9 em array_dint[0]. A instrução descarrega array_dint[0].0no bit .UL, desloca os
bits restantes para a direita e carrega input_1 em array_dint[0].9. Os valores nos bits restantes (10-31) são inválidos.

exemplo 2

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

0
esses bits foram deslocados à direita
bit .UL

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 esses bits foram deslocados à direita

input_1
Quando habilitada, a instrução BSR inicia no bit 25 em array_dint[1]. A instrução descarrega array_dint[0].0 no bit .UL , desloca
os bits restantes para a direita e carrega input_1 em array_dint[1].25. Os valores nos bits restantes (31-26 em dint_array[1]) são
inválidos. Observe como array_dint[0].0 desloca-se através das palavras para array_dint[1].31.

Publicação 1756-RM003D-PT-P - Junho 2001


8-8 Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)

Carga FIFO (FFL) Linguagens Disponíveis:

Lógica Ladder a Relé

A instrução FFL copia o valor Source para FIFO.

Operandos de Lógica
Ladder a Relé:
Operando: Tipo: Formato: Descrição:
Source SINT imediato dados a serem armazenados em FIFO
INT tag
DINT
REAL
tipo de
string
estrutura
Source converte para o tipo de dados do tag da matriz. Um inteiro menor
converte para um inteiro maior pela extensão do sinal.
FIFO SINT tag da FIFO a ser modificado
INT matriz especifique o primeiro elemento de FIFO
DINT não use CONTROL.POS no subscrito
REAL
tipo de
string
estrutura
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 onde a instrução
carrega os dados.
valor inicial é normalmente 0

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:

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 de FIFO até .POS < .LEN.
.EM BOOL O bit vazio indica que FIFO está vazio. Se .LEN ≤ 0 ou .POS < 0, tanto o bit .EM quanto o bit
.DN estã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 onde a instrução carregará o próximo valor.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-9

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

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.

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 da 4 20
matriz de FIFO

Publicação 1756-RM003D-PT-P - Junho 2001


8-10 Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)

Execução de Lógica
Ladder a Relé:

Condição: Ação:

pré-varredura

o bit .EN é energizado para evitar uma


carga falsa quando a varredura começar

sim
.LEN < 0

não

sim
.POS < 0

não

.EM é desenergizado .EM é energizado


bit .DN é desenergizado .DN é energizado

sim
.POS = 0 .EM é energizado

não

sim
.POS ≥ .LEN .DN é energizado

não

saída da condição da linha


é definida como falsa

fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-11

Condição: Ação:

entrada da condição da linha for falsa

bit .EN é desenergizado

sim
.LEN < 0

não

sim
.POS < 0

não

.EM é desenergizado .EM é energizado


bit .DN é desenergizado .DN é energizado

sim
.POS = 0 .EM é energizado

não

sim
.POS ≥ .LEN .DN é energizado

não

saída da condição da linha


é definida como falsa

fim

Publicação 1756-RM003D-PT-P - Junho 2001


8-12 Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)

Condição: Ação:

entrada da condição da linha for verdadeira

.EN = 0 sim
examinar bit .EN bit .EN é energizado .LEN < 0

.EN = 1 não

sim sim
.LEN < 0 .POS < 0

não não

bit .EM é energizado


sim bit .EM é desenergizado .DN é energizado
.POS < 0 bit .DN é desenergizado
.POS = .POS + 1

não
bit .EM é energizado
.DN é energizado
bit .EM é desenergizado
bit .DN é desenergizado sim
.POS ≥ .LEN bit .DN é energizado

não

sim
.POS = 0 bit .EM é energizado

.POS ou .LEN > sim


não falha grave
tamanho da
matriz
não

sim
.POS ≥ .LEN bit .DN é energizado

sim
não .POS > .LEN .POS = .POS –1

não

FIFO[.POS – 1] = source

saída da condição da linha


é definida como
verdadeira

fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-13

Exemplo de Lógica
Ladder a Relé:

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

Quando habilitada, a instrução FFL carrega value_1 para a próxima posição em FIFO, que é array_dint[5] nesse exemplo.

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


8-14 Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)

Descarga FIFO (FFU) Linguagens Disponíveis:

Lógica Ladder a Relé

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 de Lógica
Ladder a Relé:
Operando: Tipo: Formato: Descrição:
FIFO SINT tag da FIFO a ser modificado
INT matriz especifique o primeiro elemento de FIFO
DINT não use CONTROL.POS no subscrito
REAL
tipo de
string
estrutura
Destination SINT tag valor que saiu de FIFO
INT
DINT
REAL
tipo de
string
estrutura
O valor Destination converte para o tipo de dados do tag Destination. Um
inteiro menor converte para um inteiro maior pela extensão do sinal.
Control CONTROL tag estrutura de controle para a operação
geralmente usa o 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.
valor inicial é normalmente 0

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:

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 a varredura 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, os bits .EM e .DN estarão
energizados.
.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-RM003D-PT-P - Junho 2001


Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-15

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

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 da matriz 4 20

Publicação 1756-RM003D-PT-P - Junho 2001


8-16 Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)

Execução de Lógica
Ladder a Relé:

Condição: Ação:

pré-varredura

o bit .EU é energizado para evitar uma


descarga falsa quando a varredura começar

sim
.LEN < 0

não

sim
.POS < 0

não

.EM é desenergizado .EM é energizado


bit .DN é desenergizado .DN é energizado

sim
.POS = 0 .EM é energizado

não

sim
.POS ≥ .LEN .DN é energizado

não

saída da condição da linha


é definida como falsa

fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-17

Condição: Ação:

entrada da condição da linha for falsa

bit .EU é desenergizado

sim
.LEN < 0

não

sim
.POS < 0

não

.EM é desenergizado .EM é energizado


bit .DN é desenergizado .DN é energizado

sim
.POS = 0 .EM é energizado

não

sim
.POS ≥ .LEN .DN é energizado

não

saída da condição da linha


é definida como falsa

fim

Publicação 1756-RM003D-PT-P - Junho 2001


8-18 Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)

Condição: Ação:
entrada da condição da linha for verdadeira

.EU = 0 sim
examinar bit .EU bit .EU é energizado .LEN < 0

.EU = 1 não

sim sim
.LEN < 0 .POS < 0

não não

bit .EM é desenergizado bit .EM é energizado


sim bit .DN é desenergizado .DN é energizado
.POS < 0

não
bit .EM é energizado
bit .EM é desenergizado .DN é energizado .LEN > sim
tamanho da falha grave
bit .DN é desenergizado
matriz

não

sim
.POS = 0 bit .EM é energizado sim
.POS ≤ 1 bit .EM é energizado

não
não

sim
sim .POS < 1 Destination = 0
.POS ≥ .LEN bit .DN é energizado

não
não
.POS = .POS –1
Destination = FIFO[0]
i=1

FIFO[i – 1] = FIFO[i]
i = i +1

sim
i < .LEN

não
saída da condição da linha
é definida como
verdadeira

fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-19

Exemplo de Lógica
Ladder a Relé:

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

Quando habilitada, a instrução FFU descarrega array_dint[0] em value_2 e desloca os elementos restantes para array_dint.

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


8-20 Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)

Carga LIFO (LFL) Linguagens Disponíveis:

Lógica Ladder a Relé

A instrução LFL copia o valor Source para LIFO.

Operandos de Lógica
Ladder a Relé:
Operando Tipo: Formato: Descrição:
Source SINT imediato dados a serem armazenados em LIFO
INT tag
DINT
REAL
tipo de
string
estrutura
Source converte para o tipo de dados do tag da matriz. Um inteiro menor
converte para um inteiro maior pela extensão do sinal.
LIFO SINT tag da LIFO a ser modificado
INT matriz especifique o primeiro elemento de LIFO
DINT não use CONTROL.POS no subscrito
REAL
tipo de
string
estrutura
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 onde a instrução
carrega os dados.
valor inicial é normalmente 0

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:

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, tanto o bit .EM quanto o bit
.DN estã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 onde a instrução carregará o próximo valor.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-21

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

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 da 4 20
matriz de LIFO

Publicação 1756-RM003D-PT-P - Junho 2001


8-22 Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)

Execução de Lógica
Ladder a Relé:

Condição: Ação:

pré-varredura

o bit .EN é energizado para evitar uma


carga falsa quando a varredura começar

sim
.LEN < 0

não

sim
.POS < 0

não

.EM é desenergizado .EM é energizado


bit .DN é desenergizado .DN é energizado

sim
.POS = 0 .EM é energizado

não

sim
.POS ≥ .LEN .DN é energizado

não

saída da condição da linha


é definida como falsa

fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-23

Condição: Ação:

entrada da condição da linha for

bit .EN é desenergizado

sim
.LEN < 0

não

sim
.POS < 0

não

.EM é desenergizado .EM é energizado


bit .DN é desenergizado .DN é energizado

sim
.POS = 0 .EM é energizado

não

sim
.POS ≥ .LEN .DN é energizado

não

saída da condição da linha


é definida como falsa

fim

Publicação 1756-RM003D-PT-P - Junho 2001


8-24 Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)

Condição: Ação:

entrada da condição da linha for verdadeira

.EN = 0 sim
examinar bit .EN bit .EN é energizado .LEN < 0

.EN = 1 não

sim sim
.LEN < 0 .POS < 0

não não

bit .EM é energizado


sim bit .EM é desenergizado .DN é energizado
.POS < 0 bit .DN é desenergizado
.POS = .POS + 1

não
bit .EM é energizado
bit .EM é desenergizado .DN é energizado
bit .DN é desenergizado sim
.POS ≥ .LEN bit .DN é energizado

não

sim
.POS = 0 bit .EM é energizado

.POS ou .LEN > sim falha grave


não
tamanho da
matriz
não

sim
.POS ≥ .LEN bit .DN é energizado

sim
não .POS > .LEN .POS = .POS –1

não

LIFO[.POS – 1] = source

saída da condição da linha


é definida como
verdadeira

fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-25

Exemplo de Lógica
Ladder a Relé:

antes da carga LIFO depois da carga LIFO


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

Quando habilitada, a instrução LFL carrega value_1 para a próxima posição em LIFO, que é array_dint[5] nesse exemplo.

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


8-26 Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)

Descarga LIFO (LFU) Linguagens Disponíveis:

Lógica Ladder a Relé

A instrução LFU descarrega o valor em .POS de LIFO e armazena 0


naquele local.

Operandos de Lógica
Ladder a Relé:
Operando Tipo: Formato: Descrição:
LIFO SINT tag da LIFO a ser modificado
INT matriz especifique o primeiro elemento de LIFO
DINT não use CONTROL.POS no subscrito
REAL
tipo de
string
estrutura
Destination SINT tag valor que saiu de LIFO
INT
DINT
REAL
tipo de
string
estrutura
O valor Destination converte para o tipo de dados do tag Destination. Um
inteiro menor converte para um inteiro maior pela extensão do sinal.
Control CONTROL tag estrutura de controle para a operação
geralmente usa o mesmo CONTROL,
conforme a LFL 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 onde a
instrução descarrega os dados.
valor inicial é normalmente 0

Se você usar uma estrutura definida pelo usuário como tipo de dados
para o operando LIFO ou Destination, use a mesma estrutura para os
dois operandos.

Estrutura:

Mnemônico: Tipo de Dados: Descrição:


. EU BOOL O bit de descarga habilitado indica que a instrução LFU está habilitada. O bit .EU é
energizado para pré-programar uma descarga falsa quando a varredura do programa inicia.
.DN BOOL O bit executado é energizado para indicar que LIFO está cheio (.POS=LEN).
.EM BOOL O bit vazio indica que LIFO está vazio. Se .LEN ≤ 0 ou .POS < 0, tanto o bit .EM quanto o bit
.DN estã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 o fim dos dados que foram carregados em LIFO.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-27

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Use a instrução LFU com a instrução LFL para armazenar e recuperar
dados na seqüência último a entrar, primeiro a sair (LIFO).

Quando habilitada, a instrução LFU descarrega o valor em .POS de


LIFO e o coloca em Destination. A instrução descarrega um valor e o
substitui com 0 cada vez que a instrução está habilitada até que LIFO
fique vazia. Se LIFO estiver vazia, LFU retorna 0 para Destination.

A instrução LFU 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 > LIFO tamanho da matriz 4 20

Publicação 1756-RM003D-PT-P - Junho 2001


8-28 Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)

Execução de Lógica
Ladder a Relé:

Condição: Ação:

pré-varredura

o bit .EU é energizado para evitar uma


descarga falsa quando a varredura começar

sim
.LEN < 0

não

sim
.POS < 0

não

.EM é desenergizado .EM é energizado


bit .DN é desenergizado .DN é energizado

sim
.POS = 0 .EM é energizado

não

sim
.POS ≥ .LEN .DN é energizado

não

saída da condição da linha


é definida como falsa

fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-29

Condição: Ação:

entrada da condição da linha for falsa

bit .EU é desenergizado

sim
.LEN < 0

não

sim
.POS < 0

não

.EM é desenergizado .EM é energizado


bit .DN é desenergizado .DN é energizado

sim
.POS = 0 .EM é energizado

não

sim
.POS ≥ .LEN .DN é energizado

não

saída da condição da linha


é definida como falsa

fim

Publicação 1756-RM003D-PT-P - Junho 2001


8-30 Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)

Condição: Ação:
entrada da condição da linha for verdadeira

.EU = 0 sim
examinar bit .EU bit .EU é energizado .LEN < 0

.EU = 1 não

sim sim
.LEN < 0 .POS < 0

não não

bit .EM é desenergizado bit .EM é energizado


sim bit .DN é desenergizado .DN é energizado
.POS < 0

não
bit .EM é energizado
.DN é energizado sim
bit .EM é desenergizado .POS ≤ 1 bit .EM é energizado
bit .DN é desenergizado

não

sim sim
.POS = 0 bit .EM é energizado .POS < 1 Destination = 0

não não

sim
.POS > .LEN .POS = .LEN
sim
.POS ≥ .LEN bit .DN é energizado
não
não
.POS = .POS –1

.LEN > sim


tamanho da falha grave
matriz

não

Destination = LIFO[control.POS]
LIFO[control.POS) = 0

saída da condição da linha é


definida como verdadeira

fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-31

Exemplo de Lógica
Ladder a Relé:

antes da descarga LIFO depois da descarga LIFO


array_dint[0] 00000 00000
11111 11111
22222 22222
33333 33333
44444 44444
array_dint[5] 55555 00000 control_1.pos = 5
00000 control_1.pos = 6 00000 value_2 = 55555
00000 00000
00000 00000
00000 00000

Quando habilitada, a instrução LFU descarrega array_dint[5] em value_2.

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


8-32 Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)

Notas:

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-33

Publicação 1756-RM003D-PT-P - Junho 2001


8-34 Instruções de Matriz (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU)

Publicação 1756-RM003D-PT-P - Junho 2001


Capítulo 9

Instruções de Seqüenciador
(SQI, SQO, SQL)

Introdução Instruções de sequenciador monitoram operações consistentes e


repetitivas.

Se você quiser: Use esta instrução: Consulte


página:
Detectar quando uma etapa está concluída. SQI 9-2
Estabelecer condições de saída para a SQO 9-7
próxima etapa.
Carregar as condições de referência nas SQL 9-12
matrizes de seqüenciador

Para instruções de lógica ladder, 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 usam o mesmo tipo de dado ótimo, geralmente DINT ou
REAL.

1 Publicação 1756-RM003D-PT-P - Junho 2001


9-2 Instruções de Seqüenciador (SQI, SQO, SQL)

Entrada do Sequenciador Linguagens Disponíveis:

(SQI)
Lógica Ladder

A instrução SQI detecta quando uma etapa é concluída no par de


seqüenciador das instruções SQO/SQI.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Array DINT tag da matriz do seqüenciador
matriz especifica o primeiro elemento da matriz do
seqüenciador
não use CONTROL.POS em subscrito
Mask SINT tag quais bits devem ser bloqueados ou podem
INT imediato passar
DINT
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.
Source SINT tag dados de entrada para a matriz do
INT seqüenciador
DINT
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.
Control CONTROL tag estrutura de controle para a operação
geralmente usa o mesmo CONTROL das
instruções SQO e SQL
Length DINT imediato número de elementos na Matriz (tabela do
seqüenciador) a serem comparados
Position DINT imediato posição atual na matriz
valor inicial é normalmente 0

Estrutura:

Mnemônico: Tipo de Dados: Descrição:


.ER BOOL O bit de erro é energizado quando .LEN ≤ 0, .POS < 0 ou .POS > .LEN.
.LEN DINT O comprimento especifica o número de etapas da matriz do seqüenciador.
.POS DINT A posição identifica o elemento que a instrução está comparando atualmente.

Operandos do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Seqüenciador (SQI, SQO, SQL) 9-3

Descrição: Quando habilitada, a instrução SQI compara um elemento Source


através de uma Máscara com o elemento Array para verificar
a igualdade.

geralmente usa a mesma estrutura CONTROL das instruções SQO


e SQL

A instrução SQI opera na memória de dados contínua.

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.

Prefixo: Descrição:
16# hexadecimal
por exemplo; 16#0F0F
8# octal
por exemplo; 8#16
2# binário
por exemplo; 2#00110011

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


9-4 Instruções de Seqüenciador (SQI, SQO, SQL)

Execução do Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.

entrada da condição da linha for verdadeira

.LEN ≤ 0
.POS < 0 não
ou bit .ER é desenergizado.
.POS > .LEN

sim

bit .ER é energizado

não Source mascarada=


Array mascarada[.POS]

sim

saída da condição da linha saída da condição da linha é definida


é definida como falsa como verdadeira

fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Seqüenciador (SQI, SQO, SQL) 9-5

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução SQI passa o value_2 pela máscara para determinar se o
resultado é igual ao elemento atual em array_dint. A comparação mascarada é verdadeira,
portanto a saída da condição da linha se torna verdadeira.

Operando SQI: Valores de exemplo (DINTs exibidos em binário):


Source xxxxxxxx xxxxxxxx xxxx0101 xxxx1010
Mask 00000000 00000000 00001111 00001111
Array xxxxxxxx xxxxxxxx xxxx0101 xxxx1010

Um 0 na máscara significa que o bit não foi comparado (identificado


por xxxx nesse exemplo).

Execução do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Publicação 1756-RM003D-PT-P - Junho 2001


9-6 Instruções de Seqüenciador (SQI, SQO, SQL)

Utilização de SQI sem SQO

Se você usar a instrução SQI sem uma instrução SQO no par, será
necessário incrementar externamente a matriz do seqüenciador.

A instrução SQI compara o valor de fonte.


A instrução ADD incrementa na matriz do seqüenciador
A GRT determinou se há outro valor disponível para ser verificado na matriz do seqüenciador.
A instrução MOV reseta o valor da posição depois de analisar por completo a matriz do seqüenciador uma vez.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Seqüenciador (SQI, SQO, SQL) 9-7

Saída do Sequenciador Linguagens Disponíveis:

(SQO)
Lógica Ladder

A instrução SQO define as condições de saída para a próxima etapa


de um par de seqüência de instruções SQO/SQI.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Array DINT tag da matriz matriz do seqüenciador
especifica o primeiro elemento da matriz do
seqüenciador
não use CONTROL.POS em subscrito
Mask SINT tag quais bits devem ser bloqueados ou podem
INT imediato passar
DINT
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.
Destination DINT tag dados de saída da matriz de seqüenciador
Control CONTROL tag estrutura de controle para a operação
geralmente usa o mesmo CONTROL das
instruções SQI e SQL
Length DINT imediato número de elementos na Matriz (tabela do
seqüenciador) a serem colocados na saída
Position DINT imediato posição atual na matriz
valor inicial é normalmente 0

Estrutura:

Mnemônico: Tipo de Dados: Descrição:


.EN BOOL O bit habilitado indica que a instrução SQO está habilitada.
.DN BOOL O bit executado é energizado quando todos os elementos especificados foram movidos
para Destination.
.ER BOOL O bit de erro é energizado quando .LEN ≤ 0, .POS < 0 ou .POS > .LEN.
.LEN DINT O comprimento especifica o número de etapas da matriz do seqüenciador.
.POS DINT A posição identifica o elemento que o controlador está manipulando atualmente.

Operandos do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Descrição: Quando habilitada, a instrução SQO incrementa a posição, move os


dados na posição através de Mask e armazena o resultado em
Destination. Se .POS > .LEN, a instrução volta para o início da matriz
do seqüenciador e continua com .POS = 1.

Geralmente usa a mesma estrutura CONTROL das instruções SQI e


SQL

Publicação 1756-RM003D-PT-P - Junho 2001


9-8 Instruções de Seqüenciador (SQI, SQO, SQL)

A instrução SQO opera na memória de dados contínua.

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.

Prefixo: Descrição:
16# hexadecimal
por exemplo; 16#0F0F
8# octal
por exemplo; 8#16
2# binário
por exemplo; 2#00110011

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura O bit .EN é energizado para evitar uma carga falsa quando a varredura do programa
começar.
A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa O bit .EN é desenergizado.
A saída da condição da linha é definida como falsa.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Seqüenciador (SQI, SQO, SQL) 9-9

Condição: Ação:
entrada da condição da linha for verdadeira

bit .EN é energizado


.LEN ≤ 0 ou não .EN = 0 bit .ER é
.POS < 0 examinar bit .EN
desenergizado.
bit .DN é energizado.
sim .EN = 1

não sim
.POS = .LEN .POS ≥ .LEN .POS = 1

sim não

bit .DN é energizado. .POS = .POS + 1

valor .POS sim ir para


renova erro

não

sim
.POS = .LEN bit .DN é energizado.

não

não
.POS > .LEN

sim

erro

bit .ER é energizado Destination = (Destination AND (NOT(Mask)))


OR (Array[control.POS] AND Mask)

saída da condição da linha é


definida como verdadeira

fim

Publicação 1756-RM003D-PT-P - Junho 2001


9-10 Instruções de Seqüenciador (SQI, SQO, SQL)

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução SQO incrementa a posição, passa os dados naquela posição
em array_dint através da máscara e armazena o resultado emvalue_1.

Operando SQO: Valores de exemplo (uso de INTs exibidos em binário):


Array xxxxxxxx xxxxxxxx xxxx0101 xxxx1010
Mask 00000000 00000000 00001111 00001111
Destination xxxxxxxx xxxxxxxx xxxx0101 xxxx1010

Um 0 na máscara significa que o bit não foi comparado (designado


por xxxx nesse exemplo).

Execução do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Seqüenciador (SQI, SQO, SQL) 9-11

Utilização de SQI com SQO

Se uma instrução SQI for colocada em par com a instrução SQO,


certifique-se de que as duas instruções usam os mesmos valores em
Control, Length e Position.

Reset da posição de SQO

Cada vez que o controlador passa do modo Program para Run, a


instrução SQO zera (inicializa) o valor .POS. Para resetar .POS para o
valor de reinicialização (.POS = 0), use uma instrução RES para zerar o
valor da posição. Esse exemplo usa o status do bit da primeira
varredura para zerar o valor .POS.

Publicação 1756-RM003D-PT-P - Junho 2001


9-12 Instruções de Seqüenciador (SQI, SQO, SQL)

Carga do Sequenciador Linguagens Disponíveis:

(SQL)
Lógica Ladder

A instrução SQL carrega as condições de referência em uma matriz do


seqüenciador.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Array DINT tag da matriz matriz do seqüenciador
especifica o primeiro elemento da matriz do
seqüenciador
não use CONTROL.POS em subscrito
Source SINT tag dados de entrada a serem carregados na
INT imediato matriz do seqüenciador
DINT
Um tag SINT ou INT é convertido para um valor DINT pela extensão de
sinal.
Control CONTROL tag estrutura de controle para a operação
geralmente usa o mesmo CONTROL das
instruções SQO e SQI
Length DINT imediato número de elementos na Matriz (tabela do
sequenciador) a serem carregados
Position DINT imediato posição atual na matriz
valor inicial é normalmente 0

Estrutura:

Mnemônico: Tipo de Dados: Descrição:


.EN BOOL O bit habilitado indica que a instrução SQL está habilitada.
.DN BOOL O bit executado é energizado quando todos os elementos especificados foram carregados
em Array.
.ER BOOL O bit de erro é energizado quando .LEN ≤ 0, .POS < 0 ou .POS > .LEN.
.LEN DINT O comprimento especifica o número de etapas da matriz do seqüenciador.
.POS DINT A posição identifica o elemento que o controlador está manipulando atualmente.

Operandos do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Seqüenciador (SQI, SQO, SQL) 9-13

Descrição: Quando habilitada, a instrução SQL incrementa para a próxima


posição na matriz do seqüenciador e carrega o valor Source
naquela posição. Se o bit .DN estiver energizado ou se .POS ≥ .LEN, a
instrução configura .POS=1.

Geralmente usa a mesma estrutura CONTROL das instruções SQO e


SQI

A instrução SQL 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 > tamanho de Array 4 20

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura O bit .EN é energizado para evitar uma carga falsa quando a varredura do programa
começar.
A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa O bit .EN é desenergizado.
A saída da condição da linha é definida como falsa.

Publicação 1756-RM003D-PT-P - Junho 2001


9-14 Instruções de Seqüenciador (SQI, SQO, SQL)

Condição: Ação:
entrada da condição da linha for verdadeira

bit .EN é energizado


.LEN ≤ 0 ou não .EN = 0 bit .ER é
examinar bit .EN
.POS < 0 desenergizado.
bit .DN é energizado.
sim .EN = 1

não sim
.POS = .LEN .POS ≥ .LEN .POS = 1

sim não

bit .DN é energizado. .POS = .POS + 1

valor .POS sim ir para


renova erro

não

sim
.POS = .LEN bit .DN é energizado.

não

não
.POS > .LEN

sim
.LEN > sim
tamanho da
erro matriz

não
falha grave

bit .ER é energizado Array[control.POS] = Source

saída da condição da linha é


definida como verdadeira

fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Seqüenciador (SQI, SQO, SQL) 9-15

Exemplo de Lógica
Ladder:

antes da carga depois da carga


array_dint[0] 00000 00000
11111 11111
22222 22222
33333 control_1.pos = 5 33333
44444 value_3 = 55555 44444
array_dint[5] 00000 55555
00000 00000 control_1.pos = 6
00000 00000
00000 00000
00000 00000

Quando habilitada, a instrução SQL carrega value_3 na próxima posição na matriz do sequenciador, que é array_dint[5] nesse
exemplo.

Execução do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Publicação 1756-RM003D-PT-P - Junho 2001


9-16 Instruções de Seqüenciador (SQI, SQO, SQL)

Notas:

Publicação 1756-RM003D-PT-P - Junho 2001


Capítulo 10

Instruções de Controle de Programa


(JMP, LBL, JSR, RET, SBR, TND, MCR, UID, UIE, AFI, NOP)

Introdução Use as instruções de controle de programa para alterar o fluxo da


lógica.

Se você quiser: Use esta instrução: Consulte


página:
Saltar uma seção da lógica que nem sempre JMP 10-2
precisa ser executada. LBL
Saltar para uma rotina separada, passar JSR 10-4
dados para a rotina, executar a rotina e SBR
retornar os resultados. RET
Marcar um fim temporário que interrompa a TND 10-13
execução da rotina.
Desabilitar todas as linhas em uma seção MCR 10-15
de lógica.
Desabilitar as tarefas do usuário. UID 10-18
Habilitar as tarefas do usuário. UIE 10-18
Desabilitar uma linha. AFI 10-20
Inserir um placeholder na lógica. NOP 10-21

1 Publicação 1756-RM003D-PT-P - Junho 2001


10-2 Instruções de Controle de Programa (JMP, LBL, JSR, RET, SBR, TND, MCR, UID, UIE, AFI, NOP)

Salto para Label (JMP) Linguagens Disponíveis:

Label (LBL)
Lógica Ladder a Relé

As instruções JMP e LBL ignoram as partes da lógica de diagrama


ladder.

Operandos de Lógica
Ladder a Relé:
Operando: Tipo: Formato: Descrição:
Instrução JMP
Label name; nome do insere o nome para a instrução LBL
label; associada
Instrução LBL
Label name; nome do a execução salta para a instrução LBL
label; quando o nome do label é citado

Operandos do Bloco de
Função: Estas instruções não estão disponíveis no bloco de função.

Descrição: Quando habilitada, a instrução JMP ignora a instrução LBL citada e o


controlador continua a executar a partir desse ponto. Quando
desabilitada, a instrução JMP não afeta a execução do diagrama
ladder.
A instrução JMP pode mover a execução do diagrama ladder para
frente e para trás. O salto para frente para um label economiza tempo
de varredura do programa, pois omite um segmento de lógica até que
o mesmo seja necessário. O salto para trás permite que o controlador
repita a lógica.
Recomenda-se não realizar muitos saltos para trás. O temporizador de
watchdog pode entrar em período de espera porque o controlador
nunca alcança o fim da lógica que, por usa vez, coloca o controlador
em falha.

Não se realiza varredura na lógica com salto.


ATENCION
Coloque uma lógica crítica fora da zona de salto.

!
A instrução LBL está no alvo da instrução JMP que tem o mesmo
nome de label. Certifique-se de que a instrução LBL é a primeira
instrução na linha.
Um nome de label deve ser único dentro de uma rotina. O nome
pode:
• ser composto por até 40 caracteres
• conter letras, números e sublinhados (_)

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Controle de Programa (JMP, LBL, JSR, RET, SBR, TND, MCR, UID, UIE, AFI, NOP) 10-3

Flags de Status Aritmético: não afetados

Condições de Falha:

Uma falha grave ocorrerá se: Tipo de falha: Código de falha:


label não existe 4 42

Execução de Lógica
Ladder a Relé:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira A saída da condição da linha está definida como verdadeira.
A execução salta para a linha que contém a instrução LBL com o nome de
label referenciado.

Exemplo de Lógica
Ladder a Relé:

[outras linhas de código]

Quando a instrução JMP está habilitada, a execução salta linhas sucessivas da lógica até
alcançar a linha que contém a instrução LBL com label_20.

Execução do Bloco de
Função: Estas instruções não estão disponíveis no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


10-4 Instruções de Controle de Programa (JMP, LBL, JSR, RET, SBR, TND, MCR, UID, UIE, AFI, NOP)

Salto para Sub-rotina (JSR) Linguagens Disponíveis:

Sub-rotina (SBR)
Retorno (RET) Lógica Ladder
a Relé
Bloco de Função

A instrução JSR salta para uma rotina separada. A instrução SBR passa
dados para e executa uma rotina. A instrução RET devolve
os resultados.

Operandos de Lógica
Ladder a Relé:
Operando Tipo: Formato: Descrição:
Instrução JSR
Routine name ROUTINE nome rotina a ser executada
Input par SINT imediato parâmetros (0-n) a serem passados
INT tag para rotina
DINT tag da matriz
REAL
estrutura
Return par SINT tag parâmetros (0-n) a serem recebidos
INT tag da matriz da rotina
DINT
REAL
estrutura
Instrução SBR
Input par SINT tag parâmetros (0-n) recebidos de JSR
INT tag da matriz
DINT
REAL
estrutura
Instrução RET
Return par SINT imediato parâmetros (0-n) a serem retornados
INT tag para JSR
DINT tag da matriz
REAL
estrutura

Operandos do Bloco de
Função: Estas instruções não estão disponíveis no bloco de função.

Descrição: Quando a entrada da condição da linha for verdadeira, a instrução JSR


inicia a execução da rotina específica, a qual é referida como uma
sub-rotina:
• A sub-rotina é executada uma vez.
• Depois da sub-rotina executada, a execução da lógica retorna
para a instrução que segue a instrução JSR.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Controle de Programa (JMP, LBL, JSR, RET, SBR, TND, MCR, UID, UIE, AFI, NOP) 10-5

Quando a entrada da condição da linha para a instrução JSR for falsa:

• A sub-rotina não é executada.


• As saídas na sub-rotina permanecem em seus últimos estados.

Não há restrições, a não ser a memória do controlador, em relação às


rotinas encadeadas que possam existir ou ao número de parâmetros
passados ou retornados.

nível 1 nível 2 nível 3


sub-rotina action_1 sub-rotina action_2 sub-rotina action_3

rotina principal
SBR SBR SBR
action_1
JSR
action_2 action_3
JSR JSR

RET RET RET

15294

Publicação 1756-RM003D-PT-P - Junho 2001


10-6 Instruções de Controle de Programa (JMP, LBL, JSR, RET, SBR, TND, MCR, UID, UIE, AFI, NOP)

Para programar um salto para a sub-rotina, siga estas orientações:

IMPORTANTE Não use a instrução JSR para chamar (executar) a


rotina principal.
• Você pode colocar uma instrução JSR na rotina
principal ou em qualquer outra rotina.
• Se você usar a instrução JSR para chamar a rotina
principal e, então, colocar uma instrução RET na
rotina principal, uma falha grave ocorre (tipo 4,
código 31).

1. No ponto na lógica onde a sub-rotina for executada, insira a


instrução JSR.

2. Você quer copiar o(s) valor(es) para um tag diferente na


sub-rotina?

Se: Então:
sim A. Na instrução JSR, operando Input par, digite o tag que contém
o(s) valor (es) a serem copiados.
B. Para cada entrada, repita a Etapa A.
não Omita os parâmetros de entrada

3. Quando a sub-rotina completa sua execução, você quer copiar


o(s) valor (es) para um tag na rotina que contém a instrução JSR?

Se: Então:
sim A. Na instrução JSR, operando Return par, digite o tag que recebe
o(s) valor (es).
B. Para cada valor de retorno, repita a Etapa A.
não Omita os parâmetros de entrada

4. Na instrução JSR, você especificou um operando Input par?

Se: Então:
sim A. Como a primeira instrução na sub-rotina, digite uma instrução
SBR.
B. No operando Input par da instrução SBR, digite o tag que
recebe o(s) valor (es) da instrução JSR.
C. Para cada operando Input par na instrução JSR, repita a
Etapa B.
não Vá para a Etapa 5.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Controle de Programa (JMP, LBL, JSR, RET, SBR, TND, MCR, UID, UIE, AFI, NOP) 10-7

Para cada operando Input par em uma


ATENCION
instrução SBR, use o mesmo tipo de dados
(incluir qualquer dimensão de matriz) como

! um operando Input par correspondente na


instrução JSR. O uso de tipos de dados
diferentes pode produzir resultados
inesperados.

5. Na instrução JSR, você especificou um operando Return par?

Se: Então:
sim A. No fim da sub-rotina, adicione uma linha e digite uma instrução
RET.
B. No operando Return par da instrução RET, digite o tag que
fornece o(s) valor (es) para a instrução JSR.
C. Para cada parâmetro de retorno na instrução JSR, repita a
Etapa B.
não Vá para a Etapa 6.

Para cada operando Return par em uma


ATENCION
instrução RET, use o mesmo tipo de dados
(incluir qualquer dimensão de matriz) como o

! operando Return par correspondente na


instrução JSR. O uso de tipos de dados
diferentes pode produzir resultados
inesperados.

6. Há condições quando você quer sair da sub-rotina antes do


final?

Se: Então:
sim A. No local da sub-rotina onde você quer sair, digite uma linha.
B. Digite as condições para sair do local da sub-rotina.
C. Digite uma instrução RET.
D. Digite parâmetros de retorno, se necessário. Consulte as etapas
4. e 5.
não Omita esta etapa.

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha:

Uma falha grave ocorrerá se: Tipo de falha: Código de falha:


a instrução JSR tem menos parâmetros de 4 31
entrada do que a instrução SBR

Publicação 1756-RM003D-PT-P - Junho 2001


10-8 Instruções de Controle de Programa (JMP, LBL, JSR, RET, SBR, TND, MCR, UID, UIE, AFI, NOP)

Uma falha grave ocorrerá se: Tipo de falha: Código de falha:


a instrução JSR salta para a rotina de falha 4 ou fornecido pelo 0 ou fornecido pelo
usuário usuário
a instrução RET tem menos parâmetros de 4 31
retorno do que a instrução JSR
a rotina principal contém uma instrução RET 4 31

Execução de Lógica
Ladder a Relé:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
O controlador executa todas as sub-rotinas independente da condição da linha. Para
garantir que todas as linhas na subrotina sejam pré-varridas (prescanned), o controlador
ignora as instruções RET. (Ou seja, as instruções RET não fazem a subrotina sair).
• Liberação 6.x e anterior, os parâmetros de entrada e retorno são passados.
• Liberação 7.x e posterior, os parâmetros de entrada e retorno não são passados.
Caso haja chamadas recorrentes para a mesma sub-rotina, realiza-se uma pré-varredura
na sub-rotina somente na primeira vez. Caso haja várias chamadas (não recorrentes)
para a mesma sub-rotina, realiza-se uma pré-varredura na sub-rotina todas as vezes.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Controle de Programa (JMP, LBL, JSR, RET, SBR, TND, MCR, UID, UIE, AFI, NOP) 10-9

Condição: Ação:

entrada da condição da linha for verdadeira

sim JSR copia os parâmetros de


parâmetros de entrada para as variáveis SBR
entrada apropriadas

não

a execução da lógica começa na


rotina identificada por JSR

sim sim RET copia os parâmetros de


Instrução RET parâmetros de retorno para as variáveis JSR
retorno apropriadas

não não

sim
fim da sub-rotina

não

saída da condição da linha é definida


como verdadeira
saída da condição da linha é a execução da lógica retorna para JSR
definida como falsa
continua a executar a rotina

fim

Exemplo de Lógica
Ladder a Relé:

Publicação 1756-RM003D-PT-P - Junho 2001


10-10 Instruções de Controle de Programa (JMP, LBL, JSR, RET, SBR, TND, MCR, UID, UIE, AFI, NOP)

exemplo 1

Quando habilitada, a instrução JSR passa value_1 e value_2 para routine_1.

A instrução SBR recebe value_1 e value_2 da instrução JSR e copia esses


valores em value_a e value_b, respectivamente. A execução da lógica continua
nessa rotina.

[outras linhas de código]

Quando habilitada, a instrução RET envia float_a para a instrução JSR. A


instrução JSR recebe float_a e copia o valor em float_value_1. A execução da
lógica continua na próxima instrução após a instrução JSR.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Controle de Programa (JMP, LBL, JSR, RET, SBR, TND, MCR, UID, UIE, AFI, NOP) 10-11

exemplo 2
Rotina Principal

Quando abc estiver energizado a sub-rotina_1 executa, calcula o número de cookies, e coloca um valor em cookies_1.

Soma o valor em cookies_1 a cookies_2 e armazena o resultado em total_cookies.

Sub-routine_1
Quando def estiver energizado, a instrução RET retorna value_1 para o parâmetro JSR cookies_1 e uma varredura não é realizada no restante da
sub-rotina.

Quando def estiver desenergizado (linha anterior) eghi estiver energizado, a instrução RET retorna value_2 para o parâmetro cookies_1 de JSR
e uma varredura não é realizada no restante da sub-rotina.

Quando def e ghi estiverem desenergizados (linhas anteriores) a instrução RET retorna value_3 para o parâmetro cookies_1 de JSR.

Execução do Bloco de
Função: Estas instruções não estão disponíveis no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


10-12 Instruções de Controle de Programa (JMP, LBL, JSR, RET, SBR, TND, MCR, UID, UIE, AFI, NOP)

Fim Temporário (TND) Linguagens Disponíveis:

Lógica Ladder a Relé

A instrução TND atua como um limite.

Operandos de Lógica
Ladder a Relé: nenhuma

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Quando habilitada, a instrução TND permite que o controlador


execute a lógica somente até essa instrução.

Quando habilitada, a instrução TND atua como o final da rotina.


Quando o controlador realiza uma varredura em uma instrução TND,
o controlador se movimenta para o final da rotina atual. Se a instrução
TND estiver em uma sub-rotina, o controle retorna para a rotina
chamada. Se a instrução TND estiver em uma rotina principal, o
controle retorna para o próximo programa dentro da tarefa atual.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica
Ladder a Relé:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira A saída da condição da linha está definida como verdadeira.
A rotina atual termina.

Exemplo de Lógica
Ladder a Relé: É possível usar a instrução TND na depuração ou localização de falhas
para executar a lógica até um determinado ponto. Progressivamente,
mova a instrução TND através da lógica à medida que se realiza a
depuração em cada seção nova.

Quando a instrução TND estiver habilitada, o controlador


interrompe a varredura da rotina atual.

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Controle de Programa (JMP, LBL, JSR, RET, SBR, TND, MCR, UID, UIE, AFI, NOP) 10-13

Rearme do Controle Mestre Linguagens Disponíveis:

(MCR)
Lógica Ladder a Relé

A instrução MCR, usada em pares, cria uma zona de programa que


pode desabilitar todas as linhas dentro das instruções MCR.

Operandos de Lógica
Ladder a Relé: nenhuma

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Quando a zona MCR estiver habilitada, realiza-se uma varredura nas
linhas da zona MCR para verificar as condições normais de verdadeiro
e falso. Quando desabilitada, o controlador ainda realiza varredura
nas linhas que estão dentro de uma zona MCR, mas o tempo de
varredura é reduzido porque as saídas não retentivas na zona estão
desabilitadas. A entrada da condição da linha é falsa para todas as
instruções que estão dentro da zona MCR desabilitada.

Ao programar uma zona MCR, observe o seguinte:


• Você deve finalizar a zona com uma instrução MCR
incondicional.
• Você não pode encadear zonas MCR entre si.
• Não realize um salto em uma zona MCR. Se a zona for falsa, o
salto na zona ativa a zona desde o ponto do salto até o fim da
mesma.
• Se uma zona MCR continuar até o fim da rotina, não é
necessário programar uma instrução MCR até o final da zona.

A instrução MCR não substitui a instalação de um relé de controle


mestre com capacidade para permitir uma parada de emergência.
Você deverá, ainda, instalar um relé de controle mestre para fornecer
um desligamento de emergência da alimentação de E/S.

Não sobreponha ou monte em cadeia as zonas MCR.


ATENCION
Cada zona MCR deve ser separada e completa. Se
houver sobreposição ou encadeamento, uma

! operação imprevisível de máquina pode ocorrer com


possíveis danos ao equipamento ou ferimentos
pessoais.
Coloque operações críticas fora da zona MCR. Se
você iniciar instruções como, por exemplo,
temporizadores em uma zona MCR, a execução da
instrução pára quando a zona é desabilitada e o
tempo for removido.

Publicação 1756-RM003D-PT-P - Junho 2001


10-14 Instruções de Controle de Programa (JMP, LBL, JSR, RET, SBR, TND, MCR, UID, UIE, AFI, NOP)

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica
Ladder a Relé:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
Realiza-se varredura nas instruções da zona, mas a entrada da condição da linha e as
saídas não retentivas na zona são desabilitadas.
entrada da condição da linha for verdadeira A saída da condição da linha está definida como verdadeira.
As instruções na zona são varridas normalmente.

Exemplo de Lógica
Ladder a Relé:

Quando a primeira instrução MCR estiver habilitada (input_1, input_2 e input_3 estão energizados), o controlador executa as linhas na
zona MCR (entre as duas instruções MCR) e energiza ou desenergiza as saídas, dependendo das condições de saída.
Quando a primeira instrução MCR estiver desabilitada (input_1, input_2 e input_3 não estão todos energizados), o controlador executa as linhas na
zona MCR (entre as duas instruções MCR) e a entrada da condição da linha se torna falsa para todas as linhas na zona MCR, independente das
condições de entrada.

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Controle de Programa (JMP, LBL, JSR, RET, SBR, TND, MCR, UID, UIE, AFI, NOP) 10-15

Desabilitação da Linguagens Disponíveis:

Interrupção pelo Usuário


Lógica Ladder a Relé
(UID)
Habilitação da Interrupção A instrução UID e a instrução UIE trabalham juntas para evitar que um
pelo Usuário (UIE) número pequeno de linhas críticas sejam interrompidas por outras
tarefas.

Operandos de Lógica
Ladder a Relé: nenhuma

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Quando a entrada da condição de linha for verdadeira, a:

• instrução UID previne que tarefas com prioridade mais alta


interrompam a tarefa atual mas não desabilita a execução de
uma rotina de falha ou a Rotina de Falha do Controlador.
• a instrução UIE habilita outras tarefas a interromperem a tarefa
atual.

Para evitar que uma série de linhas sejam interrompidas:

1. Limite o número de linhas que você não quer que sejam


interrompidas no menor número possível. A desabilitação de
interrupções por um longo período de tempo pode produzir
perda de comunicação.

2. Acima da primeira linha que vocênão quer interromper, insira


uma linha e uma instrução UID.

3. Depois da última linha da série que você não quer interromper,


insira uma linha e uma instrução UIE.

4. Se preciso, você pode encadear pares das instruções UID/UIE.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


10-16 Instruções de Controle de Programa (JMP, LBL, JSR, RET, SBR, TND, MCR, UID, UIE, AFI, NOP)

Execução de Lógica
Ladder a Relé:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira A instrução UID previne a interrupção por tarefas de prioridade maior.
A instrução UIE habilita a interrupção por tarefas de prioridade maior.
A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder a Relé:
Quando um erro ocorre (error_bit está energizado), a instrução FSC verifica o código do erro em relação a uma lista de erros críticos. Se a
instrução FSC encontra um erro que seja crítico (error_check.FD is on), um alarme é acionado. As instruções UID e UIE evitam que outras tarefas
interrompam a verificação e o acionamento de alarmes.

UID

error_bit FSC
File Search/Compare EN
Control error_check DN
Length 10 ER
Position 8
Mode ALL
Expression error_code=error_list[error_check.POS]

error_check.FD alarm

UIE

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Controle de Programa (JMP, LBL, JSR, RET, SBR, TND, MCR, UID, UIE, AFI, NOP) 10-17

Instrução Sempre Falsa Linguagens Disponíveis:

(AFI)
Lógica Ladder a Relé

A instrução AFI configura a sua saída da condição da linha como falsa.

Operandos de Lógica
Ladder a Relé: nenhuma

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: A instrução AFI configura a sua saída da condição da linha como falsa.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica
Ladder a Relé:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira A saída da condição da linha é definida como falsa.

Exemplo de Lógica
Ladder a Relé: Use a instrução AFI para desabilitar temporariamente uma linha,
enquanto estiver depurando um programa.

Quando habilitada, AFI desabilita todas as instruções nessa linha.

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


10-18 Instruções de Controle de Programa (JMP, LBL, JSR, RET, SBR, TND, MCR, UID, UIE, AFI, NOP)

Sem Operação (NOP) Linguagens Disponíveis:

Lógica Ladder a

A instrução NOP funciona como um placeholder

Operandos de Lógica
Ladder a Relé: nenhuma

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: É possível colocar a instrução NOP em qualquer ponto de uma linha.


Quando habilitada, a instrução NOP não realiza nenhuma operação.
Quando desabilitada, a instrução NOP não realiza nenhuma operação.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica
Ladder a Relé:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder a Relé: Essa instrução é útil para localizar ramificações incondicionais quando
se coloca a instrução NOP na ramificação.

A instrução NOP realiza bypass na instrução XIC para habilitar a saída.

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Controle de Programa (JMP, LBL, JSR, RET, SBR, TND, MCR, UID, UIE, AFI, NOP) 10-19

Notas:

Publicação 1756-RM003D-PT-P - Junho 2001


10-20 Instruções de Controle de Programa (JMP, LBL, JSR, RET, SBR, TND, MCR, UID, UIE, AFI, NOP)

Publicação 1756-RM003D-PT-P - Junho 2001


Capítulo 11

Instruções For/Break
(FOR, BRK, RET)

Introdução Use a instrução FOR para chamar repetidamente uma sub-rotina. Use
a instrução BRK para interromper a execução de uma sub-rotina.

Se você quiser: Use esta instrução: Consulte


página:
Executar repetidamente a rotina. FOR 11-2
Terminar a execução repetida de uma rotina. BRK 11-5
Retornar para a instrução FOR. RET 11-7

1 Publicação 1756-RM003D-PT-P - Junho 2001


11-2 Instruções For/Break (FOR, BRK, RET)

For (FOR) Linguagens Disponíveis:

Lógica Ladder a Relé

A instrução FOR executa repetidamente uma sub-rotina.

Operandos de Lógica
Ladder a Relé:
Operando: Tipo: Formato: Descrição:
Routine ROUTINE nome da rotina a ser executada
name rotina
Index DINT tag conta quantas vezes a rotina foi executada
Initial value SINT imediato valor onde se inicia o índice
INT tag
DINT
Terminal SINT imediato valor onde parar a execução da rotina
value INT tag
DINT
Step size SINT imediato quantidade a ser acrescentada ao índice
INT tag cada vez que a instrução FOR executar a
DINT rotina

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição:

IMPORTANTE Não use a instrução FOR para chamar (executar) a


rotina principal.
• Você pode colocar uma instrução FOR na rotina
principal ou em qualquer outra rotina.
• Se você usar a instrução FOR para chamar a
rotina principal e, então, colocar uma instrução
RET na rotina principal, uma falha grave ocorre
(tipo 4, código 31).

Quando habilitada, a instrução FOR executa repetidamente Routine


até que o valor Index exceda o valor Terminal. Essa instrução não
passa parâmetros para a rotina.

Cada vez que a instrução FOR executa a rotina, a mesma adiciona o


tamanho Step a Index.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções For/Break (FOR, BRK, RET) 11-3

Tome cuidado para não realizar uma malha várias vezes em uma
única varredura. Um número excessivo de repetições pode fazer com
que o temporizador do watchdog do controlador expire e cause uma
falha grave.

Flags de Status Aritmético: não afetados

Condições de Falha:

Uma falha grave ocorrerá se: Tipo de falha: Código de falha:


a rotina principal contém uma instrução RET 4 31

Execução de Lógica
Ladder a Relé:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
O controlador executa a sub-rotina uma vez.
Caso haja instruções FOR recorrentes na mesma sub-rotina, uma pré-varredura é
realizada somente na primeira vez na sub-rotina. Caso haja várias instruções FOR (não
recorrentes) na mesma sub-rotina, realiza-se uma pré-varredura na sub-rotina todas as
vezes.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da
linha for verdadeira

index = initial_value

não
tamanho step < 0

sim

não
ir para o index ≤valor terminal
fim

sim sim não ir para


index ≥ valor terminal o fim fim

executar rotina
index =(index + step_size)
saída da condição da linha é
definida como verdadeira

fim

Publicação 1756-RM003D-PT-P - Junho 2001


11-4 Instruções For/Break (FOR, BRK, RET)

Exemplo de Lógica
Ladder a Relé:

Quando habilitada, a instrução FOR executa repetidamente routine_2 e incrementa value_2 em 1 todas
as vezes. Quando value_2 é > 10 ou uma instrução BRK estiver habilitada, a instrução FOR não mais
executa routine_2.

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções For/Break (FOR, BRK, RET) 11-5

Break (BRK) Linguagens Disponíveis:

Lógica Ladder a Relé

A instrução BRK interrompe a execução de uma rotina que foi


chamada por uma instrução FOR.

Operandos de Lógica
Ladder a Relé: nenhuma

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Quando habilitada, a instrução BRK sai da rotina e retorna o


controlador à instrução após FOR.

Se houver instruções FOR encadeadas, uma instrução BRK retornará o


controle para a instrução FOR mais profunda.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica
Ladder a Relé:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira A saída da condição da linha está definida como verdadeira.
A execução retorna para a instrução que segue a instrução FOR que está chamando.

Exemplo de Lógica
Ladder a Relé:

Quando habilitada, a instrução BRK pára de executar a rotina atual e retorna para a instrução
que segue a instrução FOR que está chamando.

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


11-6 Instruções For/Break (FOR, BRK, RET)

Retorno (RET) Linguagens Disponíveis:

Lógica Ladder a Relé

A instrução RET retorna para a instrução FOR que está chamando.

Operandos de Lógica
Ladder a Relé: nenhuma

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição:

IMPORTANTE Não coloque uma instrução RET na rotina principal.


Se você colocar uma instrução RET na rotina
principal, uma falha grave ocorre (tipo 4, código 31).

Quando habilitada, a instrução RTE retorna para a instrução FOR. A


instrução FOR incrementa o valor Index pelo tamanho de Step e
executa a sub-rotina novamente. Se o valor Index exceder o valor
Terminal, a instrução FOR será concluída e a execução se
movimentará para a instrução que segue a instrução FOR.

A instrução FOR não usa parâmetros. A instrução FOR ignora os


parâmetros inseridos em uma instrução RET.

É possível usar também uma instrução TND para finalizar a execução


de uma sub-rotina.

Flags de Status Aritmético: não afetados

Condições de Falha:

Uma falha grave ocorrerá se: Tipo de falha: Código de falha:


a rotina principal contém uma instrução RET 4 31

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções For/Break (FOR, BRK, RET) 11-7

Execução de Lógica
Ladder a Relé:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder a Relé:
rotina que está chamando sub-rotina

Quando habilitada, a instrução RTE retorna para a instrução FOR que está
chamando. A instrução FOR executa a sub-rotina novamente e
incrementa o valor Index pelo tamanho Step ou se o valor Index exceder o
valor Terminal, a instrução FOR é concluída e a execução se movimenta
para a instrução que segue a instrução FOR.
Quando habilitada, a instrução FOR executa repetidamente
routine_2 e incrementa value_2 em 1 todas as vezes.
Quando value_2 é > 10 ou uma instrução BRK estiver
habilitada, a instrução FOR não mais executa routine_2.

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


11-8 Instruções For/Break (FOR, BRK, RET)

Notas:

Publicação 1756-RM003D-PT-P - Junho 2001


Capítulo 12

Instruções Especiais
(FBC, DDT, DTR, PID)

Introdução As instruções especiais realizam operações específicas à aplicação.

Se você quiser: Use esta instrução: Consulte


página:
Comparar os dados com uma boa referência FBC 12-2
já conhecida e registrar quaisquer
diferenças.
Comparar os dados com uma boa referência DDT 12-10
já conhecida, registrar quaisquer diferenças
e atualizar a referência para combinar com a
fonte.
Passar os dados da fonte pela máscara e DTR 12-18
comparar o resultado com os dados de
referência. Em seguida, escrever a fonte na
referência para a próxima comparação.
Controlar uma malha de PID. PID 12-21

1 Publicação 1756-RM003D-PT-P - Junho 2001


12-2 Instruções Especiais (FBC, DDT, DTR, PID)

Comparação de Bit de Linguagens Disponíveis:

Arquivo (FBC)
Lógica Ladder

A instrução FBC compara os bits em uma matriz Source com os bits


em uma matriz Reference.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source DINT tag da matriz matriz a ser comparada com a referência
não use CONTROL.POS em subscrito
Reference DINT tag da matriz matriz a ser comparada com a fonte
não use CONTROL.POS em subscrito
Result: DINT tag da matriz matriz para armazenar o resultado
não use CONTROL.POS em subscripts
Cmp control CONTROL estrutura estrutura de controle para a comparação
Length DINT imediato número de bits a ser comparado
Position DINT imediato posição atual na fonte
valor inicial é normalmente 0
Result CONTROL estrutura estrutura de controle para os resultados
control
Length DINT imediato número de locais de armazenamento
no resultado
Position DINT imediato posição atual no resultado
valor inicial é normalmente 0

Use tags diferentes para comparar a estrutura de


ATENÇÃO
controle e a estrutura de controle do resultado. O
uso do mesmo tag para ambas as estruturas pode

! resultar em operação não previsível, com


possibilidade de causar danos ao equipamento e/ou
ferimentos pessoais.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Especiais (FBC, DDT, DTR, PID) 12-3

Estrutura de Comparação:

Mnemônico: Tipo de Dados: Descrição:


.EN BOOL O bit habilitado indica que a instrução FBC está habilitada.
.DN BOOL O bit executado é energizado quando a instrução FBC compara o último bit nas matrizes
Source e Reference.
.FD BOOL O bit encontrado é energizado cada vez que a instrução FBC registra uma diferença (operação
uma de cada vez) ou depois de registrar todas as diferenças (operação todas por varredura).
.IN BOOL O bit inibido indica o modo de busca de FBC.
0 = todos os modos
1 = uma diferença em um modo de tempo
.ER BOOL O bit de erro é energizado se a comparação for .POS < 0, .LEN < 0, o resultado .POS < 0 ou o
resultado .LEN < 0. A instrução pára a execução até que o programa desenergize o bit .ER.
.LEN DINT O valor do comprimento identifica o número de bits a ser comparado.
.POS DINT O valor da posição identifica o bit atual.

Estrutura de Resultado:

Mnemônico: Tipo de Dados: Descrição:


.DN BOOL O bit executado é energizado quando a matriz Result está cheia.
.LEN DINT O valor do comprimento identifica o número de locais de armazenamento na matriz Result.
.POS DINT O valor da posição identifica a posição atual na matriz Result.

Operandos do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Descrição: Quando habilitada, a instrução FBC compara os bits na matriz Source


com os bits na matriz Reference e registra o número do bit de cada
diferença na matriz Result.

A instrução FBC opera na memória de dados contínua.

A diferença entre as instruções DDT e FBC é que cada vez que a


instrução DDT encontra uma diferença, a instrução altera o bit de
referência para estabelecer correspondência com o bit da fonte. A
instrução FBC não altera o bit de referência.

Publicação 1756-RM003D-PT-P - Junho 2001


12-4 Instruções Especiais (FBC, DDT, DTR, PID)

Seleção do modo de busca

Se você quiser detectar: Selecione este modo:


Uma diferença de vez em Energizar o bit .IN na estrutura CONTROL de comparação.
quando Cada vez que a entrada da condição da linha passar de falsa para verdadeira, a
instrução FBC busca a próxima diferença entre as matrizes Source e Reference. Ao
encontrar uma diferença, a instrução energiza o bit .FD, registra a posição da diferença
e interrompe a execução.
Todas as diferenças Zerar o bit .IN na estrutura CONTROL de comparação.
Cada vez que a entrada da condição da linha passar de falsa para verdadeira, a
instrução FSC busca todas as diferenças entre as matrizes Source e Reference.

Flags de Status Aritmético: não afetados

Condições de Falha:

Uma falha grave ocorrerá se: Tipo de falha: Código de falha:


Result.POS > tamanho da matriz de resultado 4 20

Execução de Lógica
Ladder:

Condição: Ação:

pré-varredura

o bit compare.EN é
desenergizado.
o bit compare.FD é desenergizado.

examinar bit compare .DN = 0


compare.DN

compare .DN = 1

o bit compare.DN é desenergizado.


o valor compare.POS é desenergizado.
o bit result.DN é desenergizado.
o valor result.POS é desenergizado.

saída da condição da linha


é definida como falsa

fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Especiais (FBC, DDT, DTR, PID) 12-5

Condição: Ação:

entrada da condição da linha for falsa

o bit compare .EN é desenergizado.


o bit compare.FD é desenergizado.

examinar bit compare.DN = 0


compare.DN

compare.DN = 1

o bit compare.DN é desenergizado.


o valor compare.POS é desenergizado.
o bit result.DN é desenergizado.
o valor result.POS é desenergizado.

saída da condição da linha


é definida como falsa

fim

Publicação 1756-RM003D-PT-P - Junho 2001


12-6 Instruções Especiais (FBC, DDT, DTR, PID)

Condição: Ação:

entrada da condição da linha for verdadeira

examinar bit compare.EN = 1 ir para


compare.EN
a saída

compare.EN = 0

examinar bit compare.DN = 1 ir para a


o bit compare .EN é saída
energizado. compare.DN

compare.DN = 0

o bit compare.ER é sim


desenergizado. compare.LEN ≤ 0
o bit compare.FD é
desenergizado.

não

sim
compare.POS < 0
sair

não o bit compare.ER é energizado.

saída da condição da linha é


definida como verdadeira
ir para a
comparar saída
fim
página 12-8

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Especiais (FBC, DDT, DTR, PID) 12-7

Condição: Ação:

compara

compare.POS ≥ sim compare.POS = compare.LEN ir para a


compare.LEN o bit compare.DN é energizado. saída
página 12-7
não

result.DN = 1
o bit result.DN é
não desenergizado.
source[compare.POS] = o bit compare.FD é examinar o bit o valor result.POS é
reference[compare.POS] energizado. result.DN desenergizado.

sim result.DN = 0

compare.POS =
compare.POS + 1
sim
result.POS < 0

não

sim
result.LEN ≤ 0

não o bit compare.ER é energizado.

sim result.POS > ir para a


falha grave tamanho da matriz de saída
resultado
página12-7
não

result[result.POS] = compare.POS
result.POS = result.POS + 1

não result.POS >


result.LEN

sim

o bit result.DN é energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


12-8 Instruções Especiais (FBC, DDT, DTR, PID)

Exemplo de Lógica
Ladder:

fonte 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
array_dint1

referência 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 1 0 1 0 0 0
array_dint2

resultado 5 3
array_dint3

Quando habilitada, a instrução FBC compara a fonte array_dint1 com a referência array_dint2 e armazena os
locais das diferenças no resultado array_dint3.

Execução do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Especiais (FBC, DDT, DTR, PID) 12-9

Detecção de Diagnóstico Linguagens Disponíveis:

(DDT)
Lógica Ladder

A instrução DDT compara bits em uma matriz Source com os bits em


uma matriz Reference para determinar as alterações de estado.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source DINT tag da matriz a ser comparada com a referência
matriz não use CONTROL.POS em subscrito
Reference DINT tag da matriz a ser comparada com a fonte
matriz não use CONTROL.POS em subscrito
Result: DINT tag da matriz para armazenar os resultados
matriz não use CONTROL.POS em subscrito
Cmp control CONTROL estrutura estrutura de controle para a comparação
Length DINT imediato número de bits a ser comparado
Position DINT imediato posição atual na fonte
valor inicial é normalmente 0
Result CONTROL estrutura estrutura de controle para os resultados
control
Length DINT imediato número de locais de armazenamento
no resultado
Position DINT imediato posição atual no resultado
valor inicial é normalmente 0

Use tags diferentes para comparar a estrutura de


ATENÇÃO
controle e a estrutura de controle do resultado. O
uso do mesmo tag para ambas as estruturas pode

! resultar em operação não previsível, com


possibilidade de causar danos ao equipamento e/ou
ferimentos pessoais.

Publicação 1756-RM003D-PT-P - Junho 2001


12-10 Instruções Especiais (FBC, DDT, DTR, PID)

Estrutura de Comparação:

Mnemônico: Tipo de Dados: Descrição:


.EN BOOL O bit habilitado indica que a instrução DDT está habilitada.
.DN BOOL O bit executado é energizado quando a instrução DDT compara o último bit nas matrizes
Source e Reference.
.FD BOOL O bit encontrado é energizado cada vez que a instrução DDT registra uma diferença
(operação uma de cada vez) ou depois de registrar todas as diferenças (operação todas por
varredura).
.IN BOOL O bit inibido indica o modo de busca de DDT.
0 = todos os modos
1 = uma diferença em um modo de tempo
.ER BOOL O bit de erro é energizado se a comparação for .POS < 0, .LEN < 0, o resultado .POS < 0 ou o
resultado .LEN < 0. A instrução pára a execução até que o programa desenergize o bit .ER.
.LEN DINT O valor do comprimento identifica o número de bits a ser comparado.
.POS DINT O valor da posição identifica o bit atual.

Estrutura de Resultado:

Mnemônico: Tipo de Dados: Descrição:


.DN BOOL O bit executado é energizado quando a matriz Result está cheia.
.LEN DINT O valor do comprimento identifica o número de locais de armazenamento na matriz Result.
.POS DINT O valor da posição identifica a posição atual na matriz Result.

Operandos do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Descrição: Quando habilitada, a instrução DDT compara os bits na matriz Source


com os bits na matriz Reference, registra o número de bit de cada
diferença na matriz Result e altera o valor do bit Reference para
corresponder ao valor do bit Source correspondente.

A instrução DDT opera na memória de dados contínua.

A diferença entre as instruções DDT e FBC é que cada vez que a


instrução DDT encontra uma diferença, a instrução DDT altera o bit
de referência para estabelecer correspondência com o bit da fonte. A
instrução FBC não altera o bit de referência.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Especiais (FBC, DDT, DTR, PID) 12-11

Seleção do modo de busca

Se você quiser detectar: Selecione este modo:


Uma diferença de vez em Energizar o bit .IN na estrutura CONTROL de comparação.
quando Cada vez que a entrada da condição da linha passar de falsa para verdadeira, a
instrução DDT busca a próxima diferença entre as matrizes Source e Reference. Ao
encontrar uma diferença, a instrução energiza o bit .FD, registra a posição da diferença
e interrompe a execução.
Todas as diferenças Zerar o bit .IN na estrutura CONTROL de comparação.
Cada vez que a entrada da condição da linha passar de falsa para verdadeira, a
instrução DDT busca todas as diferenças entre as matrizes Source e Reference.

Flags de Status Aritmético: não afetados

Condições de Falha:

Uma falha grave ocorrerá se: Tipo de falha: Código de falha:


Result.POS > tamanho da matriz de 4 20
resultado

Execução de Lógica
Ladder:

Condição: Ação:

pré-varredura

o bit compare .EN é desenergizado.


o bit compare.FD é desenergizado.

examinar bit compare.DN = 0


compare.DN

compare.DN = 1

o bit compare.DN é desenergizado.


o valor compare.POS é desenergizado.
o bit result.DN é desenergizado.
o valor result.POS é desenergizado.

saída da condição da linha


é definida como falsa

fim

Publicação 1756-RM003D-PT-P - Junho 2001


12-12 Instruções Especiais (FBC, DDT, DTR, PID)

Condição: Ação:

entrada da condição da linha for falsa

o bit compare .EN é desenergizado.


o bit compare.FD é desenergizado.

examinar bit compare.DN = 0


compare.DN

compare.DN = 1

o bit compare.DN é desenergizado.


o valor compare.POS é
desenergizado.
o bit result.DN é desenergizado.
o valor result.POS é desenergizado.

saída da condição da linha


é definida como falsa

fim

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Especiais (FBC, DDT, DTR, PID) 12-13

Condição: Ação:

entrada da condição da linha for verdadeira

examinar o bit compare.EN = 1 ir para


compare.EN a saída

compare.EN = 0

examinar bit compare.DN bit = 1 ir para a


o bit compare .EN é compare.DN saída
energizado.

compare.DN bit = 0

o bit compare.ER é sim


desenergizado. compare.LEN ≤ 0
o bit compare.FD é
desenergizado.

não

sim
compare.POS < 0
sair

o bit compare.ER é energizado.


não

saída da condição da linha é


definida como verdadeira

Comparar ir para a
saída
fim
página 12-16

Publicação 1756-RM003D-PT-P - Junho 2001


12-14 Instruções Especiais (FBC, DDT, DTR, PID)

Condição: Ação:

compara

compare.POS ≥ sim compare.POS = compare.LEN ir para a


compare.LEN o bit compare.DN é energizado. saída
página 12-15
não

result.DN = 1
o bit compare.FD é o bit result.DN é
source[compare.POS] = não energizado. desenergizado.
examinar o bit o valor result.POS é
reference[compare.POS] reference[compare.POS] result.DN
= source[compare.POS] desenergizado.

sim result.DN = 0

compare.POS =
compare.POS + 1
sim
result.POS < 0

não

sim
result.LEN ≤ 0

não o bit compare.ER é energizado.

sim
result.POS > ir
falha grave tamanho da matriz de para
resultado
página 12-7
não

result[result.POS] = compare.POS
result.POS = result.POS + 1

não result.POS ≥
result.LEN

sim

o bit result.DN é energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Especiais (FBC, DDT, DTR, PID) 12-15

Exemplo de Lógica
Ladder:

fonte 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
array_dint1

referência (antes da 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 1 0 1 0 0 0
comparação)
array_dint2

resultado: 5 3
array_dint3

referência (depois da 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
comparação)
array_dint2
Quando habilitada, a instrução DDT compara a fonte array_dint1 com a referência array_dint2 e armazena os
locais das diferenças no resultado array_dint3. O controlador também altera os bits de diferença na referência
array_dint2 para corresponder à fonte array_dint1.

Execução do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Publicação 1756-RM003D-PT-P - Junho 2001


12-16 Instruções Especiais (FBC, DDT, DTR, PID)

Dados Transicionais (DTR) Linguagens Disponíveis:

Lógica Ladder

A instrução DTR passa o valor Source por Mask e compara o resultado


com o valor Reference.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source DINT imediato matriz a ser comparada com a referência
tag
Mask DINT imediato quais bits devem ser bloqueados ou podem
tag passar
Reference DINT tag matriz a ser comparada com a fonte

Operandos do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Descrição: A instrução DTR passa o valor Source por Mask e compara o resultado
com o valor Reference. A instrução DTR também escreve o valor
Source mascarado no valor Reference para a próxima comparação.
Source permanece inalterado.

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.

Quando Source mascarado for diferente de Reference, a saída da


condição da linha se torna verdadeira durante uma varredura. Quando
Source mascarado for igual a Reference, a saída da condição da linha
se torna falsa.

A programação online com essa instrução pode ser


ATENÇÃO
perigosa. Se o valor Reference for diferente de
Source, a saída da condição da linha se torna

! verdadeira. Tome cuidado se você inserir essa


instrução quando o controlador estiver no modo Run
ou Remote Run.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Especiais (FBC, DDT, DTR, PID) 12-17

Inserção de uma 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.

Prefixo: Descrição:
16# hexadecimal
por exemplo; 16#0F0F
8# octal
por exemplo; 8#16
2# binário
por exemplo; 2#00110011

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura The Reference = Source AND Mask.
A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa The Reference = Source AND Mask.
A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira

não referência é definida igual à fonte mascarada


masked source =
reference saída da condição da linha é energizada quando
verdadeira

sim

saída da condição da
linha é energizada
quando falsa

fim

Publicação 1756-RM003D-PT-P - Junho 2001


12-18 Instruções Especiais (FBC, DDT, DTR, PID)

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução DTR coloca uma máscara em value_1. Se houver diferença
entre dois valores, a saída da condição da linha é definida como verdadeira.

exemplo 1 exemplo 2
fonte
value_1
7 1 8 3 9 1 8 7

máscara = 0FFF

0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1

referência
value_2 0 1 8 7
varredura atual 0 1 8 3 varredura atual

varredura 0 1 8 3 0 1 8 3 varredura
anterior anterior
A linha permanecerá falsa enquanto o A linha permanecerá verdadeira durante uma
valor de entrada não for alterado. varredura quando uma alteração for detectada. 13385

Um 0 na máscara não altera o bit.

Execução do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Especiais (FBC, DDT, DTR, PID) 12-19

Proporcional, Integral e Linguagens Disponíveis:

Derivativo (PID)
Lógica Ladder

A instrução PID controla um tag de processo como, por exemplo,


fluxo, pressão, temperatura ou nível.

Operandos de Lógica
Ladder: Operando Tipo: Formato: Descrição:
PID PID estrutura estrutura PID
Process SINT tag valor a ser controlado
variable INT
DINT
REAL
Tieback SINT imediato (opcional)
INT tag saída de uma estação manual/automática de
DINT hardware que está realizando bypass da
REAL saída do controlador
insira 0 se você não quiser usar esse
parâmetro
Control SINT tag valor que vai para o dispositivo de controle
variable INT final (válvula, amortecedor etc.)
DINT se você estiver usando a zona morta, Control
REAL variable deve ser do tipo REAL ou o mesmo
será forçado em 0 quando houver um erro
dentro da zona morta
PID master PID estrutura opcional
loop tag PID para o PID mestre
Se você estiver realizando o controle em
cascata e esse PID for uma malha escrava,
insira o nome do PID mestre.
insira 0 se você não quiser usar esse
parâmetro
Inhold bit BOOL tag opcional
status atual do bit inhold de um canal de
saída analógico 1756 para suportar uma
reinicialização ininterrupta
insira 0 se você não quiser usar esse
parâmetro
Inhold value SINT tag opcional
INT valor de nova leitura de dados de uma canal
DINT de saída analógica 1756 para suportar uma
REAL reinicialização ininterrupta.
insira 0 se você não quiser usar esse
parâmetro
Setpoint somente display
valor atual do setpoint.
Process somente display
variable valor atual de Process Variable convertido
em escala
Output % somente display
valor de porcentagem da saída da corrente

Publicação 1756-RM003D-PT-P - Junho 2001


12-20 Instruções Especiais (FBC, DDT, DTR, PID)

Estrutura: Especifique uma estrutura PID única para cada instrução PID.

Mnemônico: Tipo de Dados: Descrição:


.CTL DINT O membro .CTL fornece acesso aos membros de status (bits) em uma palavra de 32 bits. A
instrução PID energiza os bits 07 -15.
Este bit: Corresponde a este membro:
31 .EN
30 .CT
29 .CL
28 .PVT
27 .DOE
26 .SWM
25 .CA
24 .MO
23 .PE
22 .NDF
21 .NOBC
20 .NOZC
Este bit: Este membro é que é configurado pela instrução PID:
15 .INI
14 .SPOR
13 .OLL
12 .OLH
11 .EWD
10 .DVNA
09 .DVPA
08 .PVLA
07 .PVHA
SP REAL setpoint
.KP REAL independente ganho proporcional (sem unidade)
dependente ganho do controlador (sem unidade)
.KI REAL independente ganho integral (1/s)
dependente tempo de reset (minutos por repetição)
.KD REAL independente ganho derivativo (segundos)
dependente tempo da taxa (minutos)
.BIAS REAL feedforward ou bias %
.MAXS REAL valor de conversão de escala da unidade de medida máxima
.MINS REAL valor de conversão de escala da unidade de medida mínima
.DB REAL unidades de medida da zona morta
.SO REAL defininir % da saída
.MAXO REAL limite de saída máximo (% da saída)
.MINO REAL limite de saída mínimo (% da saída)

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Especiais (FBC, DDT, DTR, PID) 12-21

Mnemônico: Tipo de Dados: Descrição:


.UPD REAL tempo de atualização da malha (segundos)
.PV REAL valor PV em escala
.ERR REAL valor de erro em escala
.OUT REAL % da saída
.PVH REAL limite de alarme superior para o tag do processo
.PVL REAL limite de alarme inferior para o tag do processo
.DVP REAL limite de alarme de desvio positivo
.DVN REAL limite de alarme de desvio negativo
.PVDB REAL zona morta do alarme do tag de processo
.DVDB REAL zona morta do alarme de desvio
.MAXI REAL valor máximo de PV (entrada sem escala)
.MINI REAL valor mínimo de PV (entrada sem escala)
.TIE REAL valor de tieback para controle manual
.MAXCV REAL valor máximo de CV (corresponde a 100%)
.MINCV REAL valor mínimo de CV (corresponde a 0%)
.MINTIE REAL valor mínimo de tieback (corresponde a 100%)
.MAXTIE REAL valor máximo de tieback (corresponde a 0%)
.DATA REAL[17] O membro .DATA armazena:
Elemento Descrição:
.DATA[0] acúmulo integral
.DATA[1] valor temporário de filtro derivativo
.DATA[2] valor .PV anterior
.DATA[3] valor .ERR anterior
.DATA[4] valor .SP válido anterior
.DATA[5] constante de conversão de escala em porcentagem
.DATA[6] constante de conversão em escala .PV
.DATA[7] constante de conversão em escala derivativa
.DATA[8] valor .KP anterior
.DATA[9] valor .KI anterior
.DATA[10] valor .KD anterior
.DATA[11] ganho .KP dependente
.DATA[12] ganho .KI dependente
.DATA[13] ganho .KD dependente
.DATA[14] valor .CV anterior
.DATA[15] constante .CV para desfazer a conversão
.DATA[16] constante tieback para desfazer a conversão
.EN BOOL habilitado
.CT BOOL tipo cascata (0=escravo; 1=mestre)
.CL BOOL malha da cascata (0=não; 1=sim)
.PVT BOOL rastreamento do tag do processo (0=não; 1=sim)

Publicação 1756-RM003D-PT-P - Junho 2001


12-22 Instruções Especiais (FBC, DDT, DTR, PID)

Mnemônico: Tipo de Dados: Descrição:


.DOE BOOL derivativa de (0=PV; 1=erro)
.SWM BOOL modo manual do software (0=não - automático; 1=sim- manual com chave)
.CA BOOL ação de controle (0 significa E=SP-PV; 1 significa E=PV-SP)
.MO BOOL modo de estação (0=automático; 1=manual)
.PE BOOL equação PID (0=independente; 1=dependente)
.NDF BOOL filtro derivativo (0=não; 1=sim)
.NOBC BOOL cálculo de volta para bias (0=não; 1=sim)
.NOZC BOOL cruzamento zero para zona morta (0=não; 1=sim para zona morta)
.INI BOOL PID inicializada (0=não; 1=sim)
.SPOR BOOL setpoint fora da faixa (0=não; 1=sim)
.OLL BOOL CV está abaixo do limite de saída mínimo (0=não; 1=sim)
.OLH BOOL CV está acima do limite de saída máximo (0=não; 1=sim)
.EWD BOOL o erro está dentro da zona morta (0=não; 1=sim)
.DVNA BOOL o desvio está definido como alarme baixo (0=não; 1=sim)
.DVPA BOOL o desvio está definido como alarme alto (0=não; 1=sim)
.PVLA BOOL o PV está definido como alarme baixo (0=não; 1=sim)
.PVHA BOOL o PV está definido como alarme alto (0=não; 1=sim)

Operandos do Bloco de Esta instrução não está disponível no bloco de função.


Função

Descrição: A instrução PID geralmente recebe a variável de processo (PV) de um


módulo de entrada analógica e modula uma saída da variável de
controle (CV) em um módulo de saída analógica a fim de manter a
variável de processo no setpoint desejado.

O bit .EN indica o status de execução. O bit .EN é energizado quando


a entrada da condição da linha passa de falsa para verdadeira. O bit
.EN é desenergizado quando a entrada da condição da linha se torna
falsa. A instrução PID não utiliza um bit .DN. A instrução PID é
executada a cada varredura, sempre que a entrada da condição da
linha for verdadeira.

bit .EN

estado da linha
execução da instrução PID

41027

Flags de Status Aritmético: não afetados

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Especiais (FBC, DDT, DTR, PID) 12-23

Condições de Falha:

IMPORTANTE Estas falhas eram graves no controlador CLP-5.

Uma falha de advertência ocorrerá se: Tipo de falha: Código de falha:


.UPD ≤ 0 4 35
setpoint fora de faixa 4 36

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira A saída da condição da linha está definida como verdadeira.

Execução do Bloco de Esta instrução não está disponível no bloco de função.


Função:

Configuração de uma Depois de inserir a instrução PID e especificar a estrutura PID, use a
guia Configuration para especificar como a instrução PID
Instrução PID deve funcionar.

Clique aqui para configurar a


instrução PID

Publicação 1756-RM003D-PT-P - Junho 2001


12-24 Instruções Especiais (FBC, DDT, DTR, PID)

Especificação do ajuste

Selecione a guia Tuning. As alterações passam a ser aceitas, assim que


clicar em outro campo, OK, Apply ou Enter.

No campo: Especifique
Setpoint (SP) Insira um valor de setpoint (.SP).
Set output % Insira uma porcentagem de saída (.SO).
No modo manual do software, esse valor é usado para a saída.
No modo automático, esse valor exibe a % da saída.
Output bias Insira a procentagem de bias de saída (.BIAS).
Ganho proporcional (Kp) Insira o ganho proporcional (.KP).
Para ganhos independentes, este é o ganho proporcional (sem unidade).
Para ganhos dependentes, este é o ganho do controlador (sem unidade).
Ganho Integral (Ki) Insira o ganho integral (.KI).
Para os ganhos independentes, este é o ganho integral (1/s).
Para os ganhos dependentes, este é o tempo de reset (minutos por repetição).
Tempo derivativo (Kd) Insira o ganho derivativo (.KD).
Para ganhos independentes, este é o ganho derivativo (segundos).
Para os ganhos dependentes, este é o tempo da taxa em minutos.
Manual mode Selecione o manual (.MO) ou o manual do software (.SWM).
O modo Manual se sobrepõe ao manual do software se os dois forem selecionados.

Especificação da configuração

Selecione a guia Configuration. Você deve clicar em OK ou Apply


para que as alterações tenham validade.

No campo: Especifique
PID equation Selecione os ganhos independentes ou ganhos dependentes (.PE).
Use independente, caso seja necessário que os três ganhos (P, I e D) operem de forma
independente. Use dependente, caso seja necessário que um ganho geral do
controlador afete os três termos (P, I e D).
Control action Selecione E=PV-SP ou E=SP-PV para control action (.CA).
Derivative of Selecione PV ou erro (.DOE).
Use o derivativo de PV para eliminar os impulsos de saída resultantes das alterações de
setpoint. Use o derivativo do erro para as respostas rápidas para as alterações de
setpoint quando o algoritmo pode tolerar excedentes.
Loop update time Insira o tempo de atualização (.UPD) para a instrução (maior do que ou igual a 0,01
segundo).
CV high limit Insira um limite superior para a variável de controle (.MAXO).
CV low limit Insira um limite inferior para a variável de controle (.MINO).
Deadband value Insira o valor da zona morta (.DB).
No derivative smoothing Habilita ou desabilita essa seleção (.NDF).
No bias calculation Habilita ou desabilita essa seleção (.NOBC).
No zero crossing in Habilita ou desabilita essa seleção (.NOZC).
deadband

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Especiais (FBC, DDT, DTR, PID) 12-25

No campo: Especifique
PV tracking Habilita ou desabilita essa seleção (.PVT).
Cascade loop Habilita ou desabilita essa seleção (.CL).
Cascade type Se a malha da cascata estiver habilitada, selecione escravo ou mestre (.CT).

Especificação de alarmes

Selecione a guia Alarms. Você deve clicar em OK ou Apply para que


as alterações tenham validade.

No campo: Especifique
PV high Insira um valor de limite superior para o alarme alto para a PV (.PVH).
PV low Insira um valor de limite inferior para o alarme baixo para a PV (.PVL).
PV deadband Insira um valor de zona morta para o alarme de PV (.PVDB).
positive deviation Insira um valor de desvio positivo (.DVP).
negative deviation Insira um valor de desvio negativo (.DVN).
deviation deadband Insira um valor de zona morta para o alarme de desvio (.DVDB).

Especificação de conversão de escala

Selecione a guia Scaling. Você deve clicar em OK ou Apply para que


as alterações tenham validade.

No campo: Especifique
PV unscaled maximum Insira um valor máximo de PV (.MAXI) igual ao valor máximo sem escala recebido do
canal de entrada analógica para o valor PV.
PV unscaled minimum Insira um valor mínimo de PV (.MINI) igual ao valor mínimo sem escala recebido do
canal de entrada analógica para o valor PV.
PV engineering units Insira as unidades de medida máximas correspondentes a .MAXI (.MAXS)
maximum
PV engineering units Insira as unidades de medida mínimas correspondentes a .MINII (.MINS)
minimum
CV maximum Insira um valor máximo de CV correspondente a 100% (.MAXCV).
CV minimum Insira um valor mínimo de CV correspondente a 0% (.MINCV).
Tieback maximum Insira um valor máximo de tieback (.MAXTIE) igual ao valor máximo sem escala
recebido do canal de entrada analógica para o valor de tieback.
Tieback minimum Insira um valor mínimo de tieback (.MINTIE) que seja igual ao valor mínimo sem escala
recebido do canal de entrada analógica para o valor de tieback.
PID Initialized Se você alterar as constantes de conversão de escala durante o modo Run, desligue
para reincializar os valores internos, anteriores à conversão de escala (.INI).

Publicação 1756-RM003D-PT-P - Junho 2001


12-26 Instruções Especiais (FBC, DDT, DTR, PID)

Utilização das Instruções O controle de malha fechada PID mantém uma variável de processo
em um setpoint desejado. A figura a seguir mostra um exemplo de
PID nível de taxa de fluído/fluxo:

setpoint - erro
equação PID
+
taxa de fluxo
variável de processo variável de
controle

detector de nível

14271

No exemplo acima, o nível no tanque é comparado com o setpoint.


Se o nível for mais elevado do que o set point, a equação PID
aumenta a variável de controle e abre a válvula de saída do tanque,
diminuindo, portanto, o nível no tanque.

A equação PID usada na instrução PID é uma equação de forma


posicional com a opção de usar ganhos independentes ou
dependentes. Ao usar ganhos independentes, os ganhos proporcional,
integral e derivativo afetam apenas seus termos proporcional, integral
ou derivativo específicos, respectivamente. Ao usar os ganhos
dependentes, o ganho proporcional é substituído por um ganho de
controlador que afeta todos os três termos. É possível usar a forma da
equação para realizar o mesmo tipo de controle. Os dois tipos de

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Especiais (FBC, DDT, DTR, PID) 12-27

equação são fornecidos apenas para que você use o tipo com o qual
está mais familiarizado.

Opção de Ganhos: Derivativo de Equação:


Ganhos dependentes error (E)
(padrão ISA) t
1 dE
CV = K C E + ---- ∫ Edt + T d ------- + BIAS
Ti dt
0

process variable (PV)


E = SP - PV
t
1 dPV
CV = K C E + ---- ∫ Edt – T d ----------- + BIAS
Ti dt
0

E = PV - SP
t
1 dPV
CV = K C E + ---- ∫ Edt + T d ----------- + BIAS
Ti dt
0

Ganhos independentes error (E)


t
dE
CV = K P E + K i ∫ Edt + Kd ------- + BIAS
dt
0

process variable (PV)


E = SP - PV
t
dPV
CV = K P E + Ki ∫ Edt – K d ----------- + BIAS
dt
0

E = PV - SP
t
dPV
CV = K P E + K i ∫ Edt + Kd ----------- + BIAS
dt
0

Onde:

Variável: Descrição:
KP ganho proporcional (sem unidade)
Kp = Kc sem unidade
Ki ganho integral (segundos -1)
Para converter entre Ki (ganho integral) e Ti (tempo de reset), use:
KC
K i = ----------
-
60T i

Kd ganho derivativo (segundos)


Para converter entre Kd (ganho derivativo) e Td (tempo da taxa), use:
Kd = Kc (Td) 60
KC ganho do controlador (sem unidade)

Publicação 1756-RM003D-PT-P - Junho 2001


12-28 Instruções Especiais (FBC, DDT, DTR, PID)

Variável: Descrição:
Ti tempo de reset (minutos/repetição)
Td tempo da taxa (minutos)
SP setpoint
PV variável de processo
E erro [(SP-PV) ou (PV-SP)]
BIAS feedforward ou bias
CV variável de controle
dt tempo de atualização de malha

Se você não quiser usar um termo particular da equação de PID,


defina o ganho em zero. Por exemplo, se você não quiser nenhuma
ação derivativa, defina Kd ou Td igual a zero.

Windup anti-reset e transferência ininterrupta de manual para


automático

A instrução PID automaticamente previne o windup de reset, evitando


que o termo integral acumule sempre que a saída CV alcançar os seus
valores máximo ou mínimo, conforme definido por .MAXO e .MINO.
O termo integral acumulado permanece congelado até que a saída CV
fique abaixo do seu limite máximo ou fique acima do seu limite
mínimo. Em seguida, o acúmulo normal integral reinicia
automaticamente.

A instrução PID suporta dois modos manuais de controle:

Modo Manual de Controle: Descrição:


software manual (.SWM) também conhecido como modo de saída configurado
permite ao usuário definir a % da saída do software
O valor de saída configurado (.SO) é usado como a saída da malha. O valor de saída
configurado geralmente se origina de uma entrada de operação de um dispositivo de
interface de operação.
manual (.MO) pega o valor de tieback como uma entrada e ajusta as suas variáveis internas para gerar
o mesmo valor na saída.
A entrada tieback para a instrução PID é convertida em uma escala de 0-100%, de
acordo com os valores de .MINTIE e .MAXTIE e é usada como a saída da malha. A
entrada tieback geralmente se origina da saída da estação manual/automática do
hardware, que está realizando o bypass da saída do controlador.
Nota: O modo Manual sobrepõe ao modo Manual do software se os dois bits de modo
estiverem energizados.

A instrução PID também fornece automaticamente transferências


ininterruptas do modo manual do software para o automático ou do
manual para o automático. A instrução PID calcula novamente o valor
do termo de acúmulo integral requerido para fazer com que o
caminho da saída CV energize o valor da saída (.SO) no modo manual
do software ou a entrada tieback no modo manual. Dessa forma,
quando a malha chavear para o modo automático, a saída CV inicia a

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Especiais (FBC, DDT, DTR, PID) 12-29

partir da saída configurada ou do valor de tieback e não ocorre


nenhuma "interrupção" no valor de saída.

A instrução PID também pode fornecer automaticamente uma


transferência ininterrupta do manual para o automático, mesmo que o
controle integral não seja usado (por ex.: Ki = 0). Nesse caso, a
instrução modifica o termo .BIAS para fazer com que o caminho da
saída CV energize a saída ou os valores tieback. Quando o controle
automático for reiniciado, o termo .BIAS manterá o seu último valor.
Você pode desabilitar o novo cálculo do termo .BIAS, configurando o
bit .NOBC na estrutura de dados PID. Preste atenção, pois se você
definir .NOBC em verdadeiro, a instrução PID não fornecerá mais
uma transferência ininterrupta de manual para automático quando o
controle integral não for usado.

Temporização da instrução PID

A instrução PID e a amostra da variável de processo precisam ser


atualizadas periodicamente. Esse tempo de atualização está
relacionado ao processo físico que está sendo controlado. Para malhas
muito lentas como, por exemplo, malhas de temperatura, um tempo
de atualização de uma vez por segundo ou mais geralmente é
suficiente para se obter bom controle. Malhas um pouco mais rápidas
como, por exemplo, malhas de fluxo ou pressão, podem requerer um
tempo de atualização de uma vez a cada 250 milissegundos. Somente
em casos raros como, por exemplo, controle de tensão em um carretel
de desbobinador, requerem atualizações de malha a cada
10 milissegundos ou mais rápido.

Como a instrução PID usa uma base de tempo no seu cálculo, é


necessário sincronizar a execução da instrução com a amostra da
variável de processo (PV).

A forma mais fácil de executar a instrução PID é colocá-la em uma


tarefa periódica. Defina o tempo de atualização de malha (.UPD) igual
à taxa da tarefa periódica e certifique-se de que a instrução PID seja
executada a cada varredura da tarefa periódica. Por exemplo, use uma
linha de diagrama ladder não condicionada.

Publicação 1756-RM003D-PT-P - Junho 2001


12-30 Instruções Especiais (FBC, DDT, DTR, PID)

Ao usar uma tarefa periódica, certifique-se de que a entrada analógica


para a variável de processo seja atualizada para o controlador a uma
taxa que é significativamente mais rápida do que a taxa da tarefa
periódica. Na forma ideal, a variável de processo deve ser enviada
para o controlador pelo menos cinco a dez vezes mais rápido do que
a taxa da tarefa periódica. Isto reduz a diferença de tempo entre as
amostras atuais da variável de processo e a execução da malha PID.
Por exemplo, se a malha PID estiver em uma tarefa periódica de 250
milissegundos, use um tempo de atualização de malha de 250
milissegundos (.UPD = .25) e configure o módulo de entrada
analógica para produzir dados a, pelo menos, cada 25 e 50 ms.

Outro método, um pouco menos preciso de execução da instrução


PID é colocar a instrução em uma tarefa contínua e usar um bit
executado do temporizador para disparar a execução da instrução
PID.

Nesse método, o tempo de atualização de malha da instrução PID


deve ser configurado igual ao valor pré-programado do temporizador.
No caso de usar uma tarefa periódica, você deve ajustar o módulo de
entrada analógica para produzir a variável do processo a uma taxa
significativamente mais elevada do que o tempo de atualização da
malha. Você deve usar somente o método do temporizador da
execução de PID para as malhas com os tempos de atualização que
são várias vezes mais longas do que o tempo de execução do pior
caso para a tarefa contínua.

A forma mais precisa de executar uma instrução PID é usar o recurso


de amostragem em tempo real (RTS) dos módulos de entrada
analógica 1756. O módulo de entrada analógica realiza uma amostra
das suas entradas à taxa de amostragem em tempo real definida na
configuração do módulo. Quando o período de amostra em tempo
real do módulo expira, o módulo atualiza as suas entradas e atualiza
os dados para impressão da data e hora (representado pelo membro
.RollingTimestamp da estrutura de dados de entrada analógica)
produzidos pelo módulo. Os dados de impressão de hora e data
variam de 0-32767 milissegundos. Monitore os dados de impressão de

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Especiais (FBC, DDT, DTR, PID) 12-31

data e hora. Quando o mesmo é alterado, uma nova amostra da


variável de processo foi recebida. Cada vez que a data e a hora são
alteradas, execute a instrução PID uma vez. Como a amostra da
variável de processo é direcionada pelo módulo de entrada analógica,
o tempo de amostra de entrada é muito preciso e o tempo de
atualização da malha usado pela instrução PID deve ser configurado
igual ao tempo RTS do módulo de entrada analógica.

Para certificar-se de que não haja perda de amostras da variável de


processo, execute a sua lógica em uma taxa mais rápida do que o tempo de
RTS. Por exemplo, se o tempo RTS for de 250 ms, é possível colocar a
instrução PID em uma tarefa periódica que é executada a cada 100 ms para
garantir que nenhuma amostra seja perdida. É possível colocar a lógica PID
em uma tarefa contínua, contanto que você se certifique de que a lógica
será atualizada com uma freqüência maior do que 250 milissegundos.

Um exemplo do método RTS de execução é mostrado abaixo. A execução da


instrução PID depende da recepção de novos dados de entrada analógica. Se
o módulo de entrada analógica apresentar falha ou for removido, o
controlador pára de receber impressões de data e hora atualizadas e a malha
de PID pára a execução. Você deve monitorar o bit de status da entrada
analógica PV, e se isso mostrar um status deficiente, force a malha no modo
manual do software e execute a malha a cada varredura. Isto permite que o
operador ainda altere manualmente a saída da malha PID.

Reinicialização ininterrupta

A instrução PID pode interagir com os módulos de saída analógica 1756


para suportar uma reincialização ininterrupta quando o controlador
mudar do modo Program para Run ou na energização do controlador.

Publicação 1756-RM003D-PT-P - Junho 2001


12-32 Instruções Especiais (FBC, DDT, DTR, PID)

Quando um módulo de saída analógica 1756 perde comunicação com o


controlador ou detecta que o controlador está no modo Program, o módulo
de saída analógica energiza as suas saídas para os valores de condição de
falha especificados na configuração do módulo. Quando o controlador
retorna para o modo Run ou re-estabelece comunicação com o módulo de
saída analógica, você pode fazer com que a instrução PID reset
automaticamente a saída da variável de controle igual à saída analógica,
usando o bit Inhold e os parâmetros Inhold Value na instrução PID.

Para configurar uma reinicialização initerrupta:

Faça o seguinte: Detalhes:


Configure o canal do módulo de saída Selecione “hold for initialization“ na página de propriedades para o canal específico do
analógica 1756 que recebe a variável de módulo.
controle da instrução PID.
Isto informa ao módulo de saída analógica que, quando o controlador retornar para o modo
Run ou re-estabelecer comunicação com o módulo, o módulo deve manter a saída analógica
no seu valor atual até que o valor enviado do controlador corresponda (com uma amplitude
de 0,1%) ao valor atual usado pelo canal de saída. A saída do controlador aumentará
seguindo em rampa até o valor de saída atualmente mantido, usando-se o termo .BIAS.
Esse aumento em rampa é semelhante à transferência ininterrupta.
Insira o tag do bit Inhold e o tag Inhold O módulo de saída analógica 1756 retorna dois valores para cada canal na sua estrutura de
Value na instrução PID dados de entrada. Quando verdadeiro, o bit de status InHold (.Ch2InHold, por exemplo)
indica que o canal de saída analógica está mantendo o seu valor. O valor de nova leitura de
Data (.Ch2Data, por exemplo) mostra o valor de saída atual em unidades de medida.

Insira o tag no bit de status InHold como o parâmetro do bit InHold da instrução PID. Insira o
tag do valor de nova leitura de Data como o parâmetro Inhold Value.

Quando o bit Inhold passar para verdadeiro, a instrução PID move Inhold Value para a saída
do tag de Controle e re-inicializa para fornecer suporte para uma reinicialização initerrupta
nesse valor. Quando o módulo de saída analógica receber esse valor de volta do
controlador, o mesmo desenergiza o bit de status InHold, o que permite que a instrução PID
inicie o controle normalmente.

A seguinte instrução PID usa o bit Inhold e o valor Inhold:

Polarização derivativa

O cálculo da derivativa é melhorado por um filtro de polarização derivativa.


Esse filtro digital de primeira ordem e de passa/baixa ajuda a reduzir os
grandes impulsos do termo derivativo causados por ruído na PV. Essa

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Especiais (FBC, DDT, DTR, PID) 12-33

polarização se torna mais agressiva com valores maiores de ganho derivativo.


É possível desabilitar a polarização derivativa se o processo necessitar de
valores muito grandes de ganho derivativo (Kd > 10, por exemplo). Para
desabilitar a polarização derivativa, selecione a opção “No derivative
smoothing“ na guia Configuration ou energize o bit .NDF na estrutura PID.

Configuração da zona morta

A zona morta ajustável permite que você selecione uma faixa de erro
acima e abaixo do setpoint, onde as saídas não serão alteradas desde
que o erro permaneça dentro da faixa. Essa zona morta permite o
controle do nível de correspondência entre a variável de processo e o
setpoint, sem que a saída seja alterada. A zona morta também ajuda a
reduzir o desgaste no seu dispositivo de controle final.

+ zona morta

setpoint erro dentro da faixa da zona


morta
- zona morta

tempo 41026

O cruzamento zero é um controle de zona morta que permite que a


instrução utilize o erro para cálculos, conforme a variável de processo
atravessa a zona morta, até que a variável de processo cruze o
setpoint. Quando a variável de processo cruzar o setpoint (o erro
cruza o valor zero e altera o sinal) e durante o tempo em que a
variável de processo permanecer na zona morta, a saída não será
alterada.

A zona morta se estende acima e abaixo do setpoint, de acordo com o


valor especificado por você. Insira zero para inibir a zona morta. A
zona morta possui as mesmas unidades convertidas do setpoint. É
possível usar a zona morta sem recurso de cruzamento zero,
selecionando-se a opção “no zero crossing for deadband“ na guia
Configuration ou energizando-se o bit .NOZC na estrutura PID.

Se você estiver usando a zona morta, Control variable deve ser do tipo
REAL ou o mesmo será forçado em 0 quando houver um erro dentro
da zona morta

Uso da limitação de saída

É possível definir um limite de saída (% da saída) na saída de controle.


Quando a instrução detectar que a saída atingiu um limite, ela

Publicação 1756-RM003D-PT-P - Junho 2001


12-34 Instruções Especiais (FBC, DDT, DTR, PID)

energizará o bit de alarme e impedirá que a saída ultrapasse o limite


superior ou inferior.

Feedforward ou polarização da saída (bias)

É possível direcionar (feedforward) um distúrbio do sistema, alimentando


o valor .BIAS no valor de bias/feedforward da instrução PID.

O valor feedforward representa um distúrbio alimentado na instrução


PID antes que o distúrbio tenha chance de alterar a variável de
processo. Feedforward é geralmente usado para controlar processos
com um atraso de transporte. Por exemplo, um valor feedforward
representando “água fria sendo jogada em uma mistura quente“
poderia impulsionar o valor de saída mais rápido do que esperar que
a variável de processo consegue alterar o resultado da mistura.

Um valor bias é geralmente usado quando nenhum controle integral é


usado. Nesse caso, o valor de bias pode ser ajustado para manter a
saída na faixa requerida para manter o PV próximo ao setpoint.

Malhas em cascata

A PID forma cascata com duas malhas, atribuindo a saída na


porcentagem da malha de mestre para o setpoint da malha de escravo.
A malha de escravo automaticamente converte a saída da malha de
mestre em unidades de medida corretas para o setpoint da malha de
escravo, com base nos valores da malha de escravo para .MAXS e .MINS.

Controle de um índice

É possível manter dois valores em um índice, usando-se a instrução


MUL com estes parâmetros:

• valor não controlado


• valor controlado (o setpoint resultante a ser usado pela
instrução PID)
• razão entre esses dois valores

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Especiais (FBC, DDT, DTR, PID) 12-35

Na instrução MUL, insira:

Para este parâmetro MUL: Insira este valor:


destination valor controlado
source A valor não controlado
source B razão

Publicação 1756-RM003D-PT-P - Junho 2001


12-36 Instruções Especiais (FBC, DDT, DTR, PID)

Teoria PID Os números a seguir mostram o fluxo do processo para as instruções PID.

processo PID
SP Erro Exibido
Exibido como EUs
como EUs

Software A/M
ou
Modo A/M Station Polarização
Ação de da Saída %
Controle
Software A/M Define
Auto SP-PV Mode Saída %
Converte Unidades A/M Station
(Erro) em % (Out%) Auto Mode
+ Cálculo PID +
- Erro X 100 Auto Converte % em Unidades CV
SP Manual -1
PV-SP máx-mín. Limitação CV
PVT Manual da Saída CV%(máxcv-míncv)
+ míncv
não Define Manual 100
Saída %
PV
Exibido
sim como EUs Saída (CV) Exibida
em % do Fator de
Escala EU
Converte Binário para Converte Unidades de
Unidades de Medida Tieback em %
(PV-mín)(máx-mín) + min tieback-mintie
máx-min x100
maxtie-mintie

PV

processo PID com malhas mestre/escravo


Malha
Mestre Software A/M
Ação de Polarização
ou da Saída %
A/M Station Mode Controle
Software A/M Define
Auto SP-PV Mode A/M Station Saída %
Converte Unidade
(Erro) em % (Out%) Auto Mode
+ Cálculo PID +
- Erro X 100 Auto
SP Manual -1
PV-SP máx-mín (Master.Out)
Limitação
PVT Define Manual da Saída
não Saída % Manual

Software
sim A/M Mode
Auto
Converte Binário em SP Converte Unidades
Unidades de Medida em %
Manual
(PV-mín)(máx-mín) Erro X 100 Manual
+ mín PV
maxi-mini máx-mín Os itens relacionados nesta caixa
são parâmetros, unidades e modos
pois pertencem à malha Escrava

PV
Malha
Escravo Ação de Polarização
Controle da Saída %
Define
Software A/M Saída %
Converte % em (SP) SP-PV Mode A/M Station
(Master.Out) Unidades de Medida Converte Unidades
+ em % Cálculo PID Auto Mode
X (máx-mín) - +
+ mín -1 Erro X 100 Auto Converte % em
100 PV-SP máx-mín Limitação
Manual da Saída CV%(maxcv-mincv)
Define + mincv
Converte Binário em Manual 100
Unidades de Medida Saída %
(PV-mín)(máx-mín)
+ mín Converte Unidades
maxi-mini
Tieback em %
tieback-mintie x100
maxtie-mintie
PV

Publicação 1756-RM003D-PT-P - Junho 2001


Capítulo 13

Instruções Trigonométricas
(SIN, COS, TAN, ASN, ACS, ATN)

Introdução As instruções trigonométricas avaliam as operações aritméticas usando


as operações trigonométricas.

Se você quiser: Use esta instrução: Consulte


página:
Calcular o seno de um valor SIN 13-2
Calcular o co-seno de um valor COS 13-5
Calcular a tangente de um valor TAN 13-8
Calcular o arco seno de um valor ASN 13-11
Calcular o arco co-seno de um valor ACS 13-14
Calcular o arco tangente de um valor ATN 13-16

É possível misturar tipos de dados, mas podem ocorrer perda de


precisão e erros de arredondamentos e a instrução demorar mais
tempo para executar. Verifique o bit de status de overflow (S:V) para
ver se o resultado foi truncado.

Para as instruções de lógica ladder, o tipo de dados em negrito indica


os tipos de dados ótimos. Uma instrução executa mais rapidamente e
requer menos memória se todos os operandos da instrução usam o
mesmo tipo de dado ótimo, geralmente DINT ou REAL.

1 Publicação 1756-RM003D-PT-P - Junho 2001


13-2 Instruções Trigonométricas (SIN, COS, TAN, ASN, ACS, ATN)

Seno (SIN) Idiomas disponíveis:

Lógica Ladder Bloco de Função

A instrução SIN calcula o seno do valor de Source (em radianos) e


coloca o resultado em Destination.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source SINT imediato calcula o seno desse valor
INT tag
DINT
REAL
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_MATH_ADVANCED estrutura estrutura SIN

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é definido
Source REAL Entrada para a instrução matemática.
válido = qualquer flutuante

Parâmetros de saída

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.

Descrição: A Fonte deve ser maior ou igual a -205887,4 (-2πx215) e menor ou


igual a 205887,4 (2πx215). O valor resultante em Destination é sempre
maior ou igual a -1 e menor ou igual a 1.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Trigonométricas (SIN, COS, TAN, ASN, ACS, ATN) 13-3

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira O controlador calcula o seno de Source e coloca o resultado em Destination.
A saída da condição da linha é definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução SIN calcula o seno de <Φ1><Φ8><Φ1>. ϖαλυε e coloca o resultado em
result.

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução é executada.
EnableOut é energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


13-4 Instruções Trigonométricas (SIN, COS, TAN, ASN, ACS, ATN)

Exemplo do Bloco de
Função:

function_block_A function_block_C

O valor da saída de function_block_A se torna o valor de entrada para Source. A instrução


calcula o seno de Source e coloca o valor em Dest, que se torna um parâmetro de entrada para
function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Trigonométricas (SIN, COS, TAN, ASN, ACS, ATN) 13-5

Co-seno (COS) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução COS calcula o co-seno do valor de Source (em radianos) e


coloca o resultado em Destination.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source SINT imediato calcula o co-seno desse valor
INT tag
DINT
REAL
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_MATH_ADVANCED estrutura estrutura COS

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é definido
Source REAL Entrada para a instrução matemática.
válido = qualquer flutuante

Parâmetros de saída

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 definidos para esta
saída.

Publicação 1756-RM003D-PT-P - Junho 2001


13-6 Instruções Trigonométricas (SIN, COS, TAN, ASN, ACS, ATN)

Descrição: A Fonte deve ser maior ou igual a -205887,4 (-2πx215) e menor ou


igual a 205887,4 (2πx215). O valor resultante em Destination é sempre
maior ou igual a -1 e menor ou igual a 1.

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira O controlador calcula o co-seno de Source e coloca o resultado em Destination.
A saída da condição da linha é definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução COS calcula o co-seno de <Φ1><Φ19><Φ1> ϖαλυε e coloca o resultado em result.

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução é executada.
EnableOut é energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Trigonométricas (SIN, COS, TAN, ASN, ACS, ATN) 13-7

Exemplo do Bloco de
Função:

function_block_A function_block_C

O valor da saída de function_block_A se torna o valor da entrada para Source. A instrução calcula
o co-seno de Source e coloca o valor em Dest, que se torna o parâmetro de entrada para
function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


13-8 Instruções Trigonométricas (SIN, COS, TAN, ASN, ACS, ATN)

Tangente (TAN) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução TAN calcula a tangente do valor de Source (em radianos)


e coloca o resultado em Destination.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source SINT imediato calcula a tangente desse valor
INT tag
DINT
REAL
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_MATH_ADVANCED estrutura estrutura TAN

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se energizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é definido
Source REAL Entrada para a instrução matemática.
válido = qualquer flutuante

Parâmetros de saída

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 definidos para esta
saída.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Trigonométricas (SIN, COS, TAN, ASN, ACS, ATN) 13-9

Descrição: A Fonte deve ser maior ou igual a -102943,7(-2πx214) e menor ou


igual a 102943,7 (2πx214).

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira O controlador calcula a tangente de Source e coloca o resultado em Destination.
A saída da condição da linha é definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução TAN calcula a tangente de <Φ1><Φ19><Φ1>ϖαλυεe coloca o resultado


emresult.

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução é executada.
EnableOut é energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


13-10 Instruções Trigonométricas (SIN, COS, TAN, ASN, ACS, ATN)

Exemplo do Bloco de
Função:

function_block_A function_block_C

O valor da saída de function_block_A se torna o valor da entrada para Source. A instrução calcula a
tangente de Source e coloca o valor em Dest, que se torna o parâmetro da entrada para
function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Trigonométricas (SIN, COS, TAN, ASN, ACS, ATN) 13-11

Arco Seno (ASN) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução ASN calcula o arco seno do valor de Source (em radianos)


e coloca o resultado em Destination.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source SINT imediato calcula o arco seno desse valor
INT tag
DINT
REAL
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_MATH_ADVANCED estrutura estrutura ASN

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é definido
Source REAL Entrada para a instrução matemática.
válido = qualquer flutuante

Publicação 1756-RM003D-PT-P - Junho 2001


13-12 Instruções Trigonométricas (SIN, COS, TAN, ASN, ACS, ATN)

Parâmetros de saída

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 definidos para esta
saída.

Descrição: Source deve ser maior ou igual a -1 e menor ou igual a 1. O valor


resultante em Destination é sempre maior ou igual a -π/2 e menor ou
igual a π/2 (onde π = 3,141593).

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira O controlador calcula o arco seno de Source e coloca o resultado em Destination.
A saída da condição da linha é definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução ASN calcula o arco seno de <Φ1><Φ19><Φ1>ϖαλυε e coloca o resultado em result.

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Trigonométricas (SIN, COS, TAN, ASN, ACS, ATN) 13-13

Condição: Ação:
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução é executada.
EnableOut é energizado.

Exemplo do Bloco de
Função:

function_block_A function_block_C

O valor de saída de function_block_A se torna o valor de entrada para Source. A instrução calcula o
arco seno de Source e coloca o valor em Dest, que se torna o parâmetro de entrada para
function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


13-14 Instruções Trigonométricas (SIN, COS, TAN, ASN, ACS, ATN)

Arco Co-seno (ACS) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução ACS calcula o arco co-seno do valor de Source (em


radianos) e coloca o resultado em Destination.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source SINT imediato calcula o arco co-seno desse valor
INT tag
DINT
REAL
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_MATH_ADVANCED estrutura estrutura ACS

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é definido
Source REAL Entrada para a instrução matemática.
válido = qualquer flutuante

Parâmetros de saída

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-RM003D-PT-P - Junho 2001


Instruções Trigonométricas (SIN, COS, TAN, ASN, ACS, ATN) 13-15

Descrição: Source deve ser maior ou igual a -1 e menor ou igual a 1. O valor


resultante em Destination é sempre maior ou igual a 0 ou menor ou
igual a π (onde π = 3,141593).

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira O controlador calcula o arco co-seno de Source e coloca o resultado em Destination.
A saída da condição da linha é definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução ACS calcula o arco co-seno de <Φ1><Φ19><Φ1>ϖαλυε e coloca o resultado em result.

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
instruction first run Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução é executada.
EnableOut é energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


13-16 Instruções Trigonométricas (SIN, COS, TAN, ASN, ACS, ATN)

Exemplo do Bloco de
Função:

function_block_A function_block_C

O valor de saída de function_block_A se torna o valor de entrada para Source. A instrução calcula o
arco co-seno de Source e coloca o valor em Dest, que se torna o parâmetro de entrada para
function_block_C.

Arco Tangente (ATN) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução ATN calcula o arco tangente do valor de Source e coloca o


resultado em Destination (em radianos).

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source SINT imediato calcula o arco tangente desse valor
INT tag
DINT
REAL
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_MATH_ADVANCED estrutura estrutura ATN

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Trigonométricas (SIN, COS, TAN, ASN, ACS, ATN) 13-17

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é definido
Source REAL Entrada para a instrução matemática.
válido = qualquer flutuante

Parâmetros de saída

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.

Descrição: O valor resultante em Destination é sempre maior ou igual a -π/2 e


menor ou igual a π/2 (onde π = 3,141593).

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira O controlador calcula o arco tangente de Source e coloca o resultado em Destination.
A saída da condição da linha é definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução ATN calcula o arco tangente de <Φ1><Φ19><Φ1>ϖαλυε e coloca o


resultado em result.

Publicação 1756-RM003D-PT-P - Junho 2001


13-18 Instruções Trigonométricas (SIN, COS, TAN, ASN, ACS, ATN)

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução é executada.
EnableOut é energizado.

Exemplo do Bloco de
Função:

function_block_A function_block_C

O valor de saída de function_block_A se torna o valor de entrada para Source. A instrução calcula o
arco tangente de Source e coloca o valor em Dest, que se torna o parâmetro de entrada para
function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Trigonométricas (SIN, COS, TAN, ASN, ACS, ATN) 13-19

Notas:

Publicação 1756-RM003D-PT-P - Junho 2001


13-20 Instruções Trigonométricas (SIN, COS, TAN, ASN, ACS, ATN)

Publicação 1756-RM003D-PT-P - Junho 2001


Capítulo 14

Instruções Matemáticas Avançadas


(LN, LOG, XPY)

Introdução As instruções matemáticas avançadas incluem estas instruções:

Se você quiser: Use esta instrução: Consulte


página:
Calcular o log natural de um valor LN 14-2
Calcular o log da base 10 de um valor LOG 14-4
Elevar um valor à potência de outro valor XPY 14-7

É possível misturar tipos de dados, mas podem ocorrer perda de


precisão e erros de arredondamentos e a instrução demorar mais
tempo para executar. 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 os tipos de dados ótimos. Uma instrução executa mais
rapidamente e requer menos memória se todos os operandos da
instrução usam o mesmo tipo de dado ótimo, geralmente DINT ou
REAL.

1 Publicação 1756-RM003D-PT-P - Junho 2001


14-2 Instruções Matemáticas Avançadas (LN, LOG, XPY)

Log Natural (LN) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução LN calcula o log natural de Source e coloca o resultado


em Destination.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source SINT imediato encontrar o log natural desse valor.
INT tag
DINT
REAL
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_MATH_ADVANCED estrutura estrutura LN

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas.
o valor inicial é definido
Source REAL Entrada para instrução matemática.
válido = qualquer flutuante

Parâmetros de saída

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éticos são energizados para esta
saída.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Matemáticas Avançadas (LN, LOG, XPY) 14-3

Descrição: O Source deve ser maior que zero, ou o bit de status de overflow
(S:V) é energizado. O valor resultante em Destination é maior do que
ou igual a -87,33655 e menor do que ou igual a 88,72284.

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira O controlador calcula o log natural de Source e coloca o resultado em Destination.
A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução LN calcula o log natural de value<F1> e coloca o resultado em <F19><F1>result.

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


14-4 Instruções Matemáticas Avançadas (LN, LOG, XPY)

Exemplo do Bloco de
Função:

function_block_A function_block_C

O valor de saída de function_block_A se torna o valor de entrada para Source. A instrução calcula o
log natural de Source e coloca o valor em Dest, que se torna o parâmetro de entrada para
function_block_C.

Base Log de 10 (LOG) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução LOG calcula a base log de 10 de Source e coloca o


resultado em Destination.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source SINT imediato encontrar o log natural desse valor.
INT tag
DINT
REAL
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_MATH_ADVANCED estrutura estrutura LOG

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Matemáticas Avançadas (LN, LOG, XPY) 14-5

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas.
o valor inicial é definido
Source REAL Entrada para instrução matemática.
válido = qualquer flutuante

Parâmetros de saída

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.

Descrição: O Source deve ser maior que zero, ou o bit de status overflow (S:V) é
energizado. O valor resultante em Destination é maior do que ou
igual a -37,92978 e menor do que ou igual a 38,53184.

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira O controlador calcula o log de Source e coloca o resultado em Destination.
A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução LOG calcula o log natural de value<F1> e coloca o resultado em <F19><F1>result.

Publicação 1756-RM003D-PT-P - Junho 2001


14-6 Instruções Matemáticas Avançadas (LN, LOG, XPY)

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.

Exemplo do Bloco de
Função:

function_block_A function_block_C

O valor de saída de function_block_A se torna o valor de entrada para Source. A instrução calcula a
base de log 10 de Source e coloca o valor em Dest, que se torna o parâmetro de entrada para
function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Matemáticas Avançadas (LN, LOG, XPY) 14-7

X Elevado à Potência de Y Linguagens

(XPY)
Lógica Ladder Bloco de Função

A instrução XPY calcula Source A (X) elevado à potência de Source B


(Y) e armazena o resultado em Destination.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source A SINT imediato valor de base
INT tag
DINT
REAL
Source B SINT imediato exponente
INT tag
DINT
REAL
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_MATH estrutura estrutura XPY

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas.
o valor inicial é definido
Source A REAL Valor base.
válido = qualquer flutuante
Source B REAL Exponente.
válido = qualquer flutuante

Publicação 1756-RM003D-PT-P - Junho 2001


14-8 Instruções Matemáticas Avançadas (LN, LOG, XPY)

Parâmetros de saída

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.

Descrição: Se Source A for negativo, Source B deve ser um valor inteiro ou uma
falha de advertência ocorrerá.

A instrução XPY usa esse algoritmo: Destination = X**Y

O controlador avalia x0=1 e 0x=0.

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha:

Uma falha de advertência ocorrerá se: Tipo de falha: Código de


falha:
Source A é negativa e Source B não é um valor 4 4
inteiro

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira O controlador calcula Source A elevado à potência de Source B e coloca o resultado em
Destination.
A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução XPY calcula value_1 elevado à potência de value_2 e coloca o resultado em result.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções Matemáticas Avançadas (LN, LOG, XPY) 14-9

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn está desenergizado EnableOut está desenergizado.
EnableIn está energizado A instrução executa.
EnableOut está energizado.

Exemplo do Bloco de
Função:

function_block_A

function_block_C

function_block_B

Os valores de saída de function_block_A e function_block_B se tornam os valores de entrada para


SourceA e SourceB, respectivamente. A instrução eleva SourceA à potência de SourceB e coloca o
resultado em Dest, que se torna o parâmetro de entrada para function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


14-10 Instruções Matemáticas Avançadas (LN, LOG, XPY)

Publicação 1756-RM003D-PT-P - Junho 2001


Capítulo 15

Instruções de Conversão Matemática


(DEG, RAD, TOD, FRD, TRN)

Introdução As instruções de conversão matemática convertem valores.

Se você quiser: Use esta instrução: Consulte


página:
Converter radianos em graus. DEG 15-2
Converter graus em radianos. RAD 15-5
Converter um valor inteiro em um valor BCD. TOD 15-8
Converter um valor BCD em um valor inteiro. FRD 15-12
Remover a parte fracionária de um valor TRN 15-15

É possível misturar tipos de dados, mas podem ocorrer perda de


precisão e erros de arredondamentos e a instrução demorar mais
tempo para executar. 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 os tipos de dados ótimos. Uma instrução executa mais
rapidamente e requer menos memória se todos os operandos da
instrução usam o mesmo tipo de dado ótimo, geralmente DINT ou
REAL.

1 Publicação 1756-RM003D-PT-P - Junho 2001


15-2 Instruções de Conversão Matemática (DEG, RAD, TOD, FRD, TRN)

Graus (DEG) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução DEG converte Source (em radianos) para graus e coloca o


resultado em Destination.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source SINT imediato valor a ser convertido em graus.
INT tag
DINT
REAL
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_MATH_ADVANCED estrutura estrutura DEG

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saída não são
atualizadas.
o valor inicial é definido
Source REAL Entrada para a instrução de conversão.
válido = qualquer flutuante

Parâmetros de saída

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 de conversão. Os flags de status aritmético são energizados para
esta saída.

Descrição: A instrução DEG usa este algoritmo:


Source*180/π (onde π = 3,141593)

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Conversão Matemática (DEG, RAD, TOD, FRD, TRN) 15-3

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira O controlador converte Source em graus e coloca o resultado em Destination.
A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução DEG converte <Φ1><Φ19><Φ1>ϖαλυε em graus e coloca o resultado em result.

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução é executada.
EnableOut é energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


15-4 Instruções de Conversão Matemática (DEG, RAD, TOD, FRD, TRN)

Exemplo do Bloco de
Função:

function_block_A function_block_C

O valor de saída de function_block_A se torna o valor de entrada para Source. A instrução converte
Source (em radianos) para graus e coloca o resultado em Dest, que se torna o parâmetro de entrada
para function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Conversão Matemática (DEG, RAD, TOD, FRD, TRN) 15-5

Radianos (RAD) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução RAD converte Source (em graus) para radianos e coloca o


resultado em Destination.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source SINT imediato valor a ser convertido em radianos
INT tag
DINT
REAL
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_MATH_ADVANCED estrutura estrutura RAD

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é definido
Source REAL Entrada para a instrução de conversão.
válido = qualquer flutuante

Parâmetros de saída

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 de conversão. Os flags de status aritmético são energizados para
esta saída.

Descrição: A instrução RAD usa esse algoritmo:


Source*π/180 (onde π = 3,141593)

Publicação 1756-RM003D-PT-P - Junho 2001


15-6 Instruções de Conversão Matemática (DEG, RAD, TOD, FRD, TRN)

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira O controlador converte Source em radianos e coloca o resultado em Destination.
A saída da condição da linha é definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução RAD converte <Φ1><Φ19><Φ1>ϖαλυε em radianos e coloca o resultado em result.

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução é executada.
EnableOut é energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Conversão Matemática (DEG, RAD, TOD, FRD, TRN) 15-7

Exemplo do Bloco de
Função:

function_block_A function_block_C

O valor de saída de function_block_A se torna o valor de entrada para Source. A instrução converte
Source (em graus) para radianos e coloca o resultado em Dest, que se torna o parâmetro de entrada
para function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


15-8 Instruções de Conversão Matemática (DEG, RAD, TOD, FRD, TRN)

Conversão para BCD (TOD) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução TOD converte um valor decimal (0 ≤ Source ≤ 99.999.999) para


um valor BCD e coloca o resultado em Destination.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source SINT imediato valor a ser convertido em decimal.
INT tag
DINT
Um tag SINT ou INT é convertido para um valor DINT por preenchimento
com zero.
Destination SINT tag armazena o resultado
INT
DINT

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_CONVERT estrutura estrutura TOD

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é definido
Source DINT Entrada para a instrução de conversão.
válido = qualquer inteiro

Parâmetros de saída

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 conversão. Os flags de status aritmético são energizados para
esta saída.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Conversão Matemática (DEG, RAD, TOD, FRD, TRN) 15-9

Descrição: BCD é um sistema numérico Decimal de Código Binário que expressa


dígitos decimais individuais (0-9) em uma notação binária de 4 bits.

Se você inserir um valor de Source negativo, a instrução gerará uma


falha de advertência e zerará Destination.

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha:

Uma falha de advertência ocorrerá Tipo de falha: Código de falha:


se:
source < 0 4 4

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira

não não
source < 0 source > 99.999.999 converter fonte para BCD

sim sim

S:V é definido em 1

a saída da condição da linha é


energizada quando verdadeira

fim

entrada se a condição da linha for verdadeira O controlador converte Source em BCD e coloca o resultado em Destination.
A saída da condição da linha é definida como verdadeira.

Publicação 1756-RM003D-PT-P - Junho 2001


15-10 Instruções de Conversão Matemática (DEG, RAD, TOD, FRD, TRN)

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução TOD converte value_1 em um valor BCD e coloca o resultado em result_a.

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução é executada.
EnableOut é energizado.

Exemplo do Bloco de
Função:

function_block_A

O valor de saída de function_block_A se torna os valores de entrada para Source. A instrução converte
Source (valor decimal) para um valor BCD e coloca o resultado em Dest, que se torna OREF Test_value.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Conversão Matemática (DEG, RAD, TOD, FRD, TRN) 15-11

Conversão para Inteiro Linguagens Disponíveis:

(FRD)
Lógica Ladder Bloco de Função

A instrução FRD converte um valor BCD (Source) para um valor


decimal e armazena o resultado em Destination.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source SINT imediato valor a ser convertido em decimal.
INT tag
DINT
Um tag SINT ou INT é convertido para um valor DINT por preenchimento
com zero.
Destination SINT tag armazena o resultado
INT
DINT

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_CONVERT estrutura estrutura FRD

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é definido
Source DINT Entrada para instrução de conversão.
válido = qualquer inteiro

Parâmetros de saída

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 conversão. Os flags de status aritmético são energizados para
esta saída.

Descrição: A instrução FRD converte um valor BCD (Source) para um valor


decimal e armazena o resultado em Destination.

Publicação 1756-RM003D-PT-P - Junho 2001


15-12 Instruções de Conversão Matemática (DEG, RAD, TOD, FRD, TRN)

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira O controlador converte Source em valor decimal e coloca o resultado em Destination.
A saída da condição da linha é definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução FRD converte value_a para um valor decimal e coloca o resultado em result_1.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Conversão Matemática (DEG, RAD, TOD, FRD, TRN) 15-13

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução é executada.
EnableOut é energizado.

Exemplo do Bloco de
Função:

function_block_C

O valor IREF se torna no valor de entrada para Source. A instrução converte Source
(valor BCD) em um valor decimal e coloca o resultado em Dest, que se torna o
parâmetro de entrada para function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


15-14 Instruções de Conversão Matemática (DEG, RAD, TOD, FRD, TRN)

Truncagem (TRN) Linguagens Disponíveis:

Lógica Ladder Bloco de Função

A instrução TRN remove (trunca) a parte fracional de Source e


armazena o resultado em Destination.

Operandos de Lógica
Ladder:
Operando Tipo: Formato: Descrição:
Source REAL imediato valor a ser truncado
tag
Destination SINT tag tag para armazenar o resultado
INT
DINT
REAL

Operandos do Bloco de
Função:
Operando Tipo: Formato: Descrição:
tag do bloco FBD_TRUNCATE estrutura estrutura TRN

Estrutura: Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não é executada e as saídas não são
atualizadas.
o valor inicial é definido
Source REAL Entrada para a instrução de conversão.
válido = qualquer flutuante

Parâmetros de saída

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 conversão. Os flags de status aritmético são energizados para
esta saída.

Descrição: A truncagem não arredonda o valor; ao invés disso, a parte não


fracionária permanece a mesma, independente do valor da parte
fracionária.

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Conversão Matemática (DEG, RAD, TOD, FRD, TRN) 15-15

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada se a condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada se a condição da linha for verdadeira O controlador remove a parte fracionária de Source e coloca o resultado em
Destination.
A saída da condição da linha é definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando habilitada, a instrução TRN remove a parte fracionária de float_value_1, sem alterar a parte não
fracionária e coloca o resultado em float_value_1_truncated.

Execução do Bloco de
Função:

Condição: Ação:
pré-varredura Nenhuma ação tomada.
primeira varredura da instrução Nenhuma ação tomada.
primeira operação da instrução Nenhuma ação tomada.
EnableIn é desenergizado EnableOut é desenergizado.
EnableIn é energizado A instrução é executada.
EnableOut é energizado.

Publicação 1756-RM003D-PT-P - Junho 2001


15-16 Instruções de Conversão Matemática (DEG, RAD, TOD, FRD, TRN)

Exemplo do Bloco de
Função:

function_block_A function_block_C

O valor de saída de function_block_A se torna o valor de entrada para Source. A instrução trunca a parte fracional do
valor de Source e coloca o resultado em Dest, que se torna o parâmetro de entrada para function_block_C.

Publicação 1756-RM003D-PT-P - Junho 2001


Capítulo 16

Instruções de Porta Serial ASCII


(ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Introdução Use as instruções de porta serial para ler e escrever os caracteres


ASCII.

IMPORTANTE Para usar as instruções de porta serial ASCII, você


deve configurar a porta serial do controlador.
Consulte Procedimentos Comuns dos Controladores
Logix5000, publicação 1756-PM001.

Se você quiser: Por exemplo: Use esta instrução: Consulte


página:
determinar quando o buffer contém verificar os dados que contenham caracteres ABL 16-7
caracteres de terminação de terminação
contar os caracters no buffer verificar o número solicitado dos caracteres ACB 16-10
antes de ler o buffer
remover o buffer • remover dados antigos do buffer no ACL 16-12
start-up
remover instruções de Porta Serial ASCII que
• sincronizar o buffer com um
estão sendo executadas atualmente ou estão dispositivo
na fila
obter o status das linhas de controle da porta fazer com que o modem desligue AHL 16-14
serial
ligar ou desligar o sinal DTR
ligar ou desligar o sinal RTS
ler um número fixo de caracteres ler um dado de um dispositivo que envia o ARD 16-17
mesmo número de caracteres em cada
transmissão
ler um número de caracteres variável, até e ler os dados a partir de um dispositivo que ARL 16-20
incluindo o primeiro conjunto de caracteres envia um número de caracteres variável em
de terminação cada transmissão
enviar caracteres e, automaticamente, enviar mensagens que sempre usam o(s) AWA 16-24
acrescentar um ou dois caracteres adicionais mesmo(s) caracter(es) de extremidade
para marcar o fim dos dados
enviar caracteres enviar mensagens que usam vários AWT 16-28
caracteres de terminação

1 Publicação 1756-RM003D-PT-P - Junho 2001


16-2 Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Execução da Instrução

As instruções de porta serial ASCII são executadas de forma


assíncrona ao scan da lógica:

Lógica Fila ASCII Tarefa ASCII

Quando a entrada da Instrução 1 Instrução na parte


condição da linha passa superior da fila é
de falsa para verdadeira Instrução 2 executada.
Instrução 3

Instrução 4
Os dados fluem
A instrução entra na entre a tarefa e o
fila ASCII. buffer.

Os dados fluem entre o


buffer e a porta serial
Serial Port Buffer

Cada instrução de porta serial ASCII (exceto a ACL) usa uma estrutura
SERIAL_PORT_CONTROL para realizar as seguintes funções:

• controla a execução da instrução


• fornece as informações de status sobre a instrução

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-3

O diagrama de temporização representa as mudanças nos bits de


status conforme uma instrução ABL testa o buffer quanto aos.
caracteres de terminação

scan scan scan scan

entrada da falsa verdadeira falsa verdadeira falsa


condição da linha

.EN off on off on off

.EU off on

.RN off on off on off

.DN ou .ER off on off on

.FD off on off on

.EM off on off on

entra na fila reseta os bits de status

executa quando efetuado o scan e


.DN ou .ER forem definidos,
neste exemplo, encontra os o bit .EM energiza
caracteres de terminação

Publicação 1756-RM003D-PT-P - Junho 2001


16-4 Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

A fila ASCII suporta até 16 instruções. Quando a fila está cheia, uma
instrução tenta entrar na fila em cada scan subsequente da instrução,
como representado abaixo:

scan scan scan scan

entrada da falsa verdadeira falsa


condição da linha

.EN off on

.EU off on

tenta entrar na fila, mas a fila está cheia

entra na fila

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-5

Códigos de Erro ASCII

Se uma instrução de porta serial ASCII falhar na execução, o membro


ERROR de sua estrutura SERIAL_PORT_CONTROL conterá um dos
seguintes códigos de erro hexadecimais:

Este código Indica que:


hex:
16#2 modem passou para o modo offline.
16#3 O sinal CTS foi perdido durante a comunicação.
16#4 A porta serial estava em modo de sistema.
16#A Antes da execução da instrução o bit .UL foi energizado. Isto evita a execução da instrução.
16#C O controlador mudou do modo Run para o modo Program. Isto pára a execução de uma instrução de porta serial ASCII
e remove a fila e remove a fila.
16#D Na janela Properties do Controlador, guia User Protocol, o tamanho de buffer ou parâmetros de modo de eco são
mudados e aplicados. Isto pára a execução de uma instrução de porta serial ASCII e remove a fila e remove a fila.
16#E A instrução ACL foi executada.
16#F A configuração da porta serial mudou do modo do Usuário para o modo do Sistema. Isso pára a execução de uma
instrução de porta serial ASCII e remove a fila da instrução de porta serial ASCII.
16#51 O valor LEN do tag string é negativo ou maior que o tamanho de DATA do tag string.
16#54 O Comprimento de Controle da Porta Serial é maior que o tamanho do buffer.
16#55 O Comprimento de Controle da Porta Serial é negativo ou maior que o tamanho de Source ou Destination.

Publicação 1756-RM003D-PT-P - Junho 2001


16-6 Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Tipos de String

Você armazena os caracteres ASCII em tags que usam um tipo de


dados tipo string.

• Você pode usar o tipo de dados STRING padrão. Ele armazena


até 82 caracteres.
• Você pode criar um novo tipo de string que armazene menos ou
mais caracteres.

Para criar um novo tipo de string, consulte Procedimentos Comuns


dos Controladores Logix5000, publicação 1756-PM001.
42811

Cada tipo de string contém os seguintes membros:

Nome: Tipo de Descrição: Notas:


Dados:
LEN DINT número de caracteres A LEN atualiza a nova contagem de caracteres automaticamente sempre que você:
no string • usar a janela String Browser para inserir caracteres
• usar as instruções que leêm, convertem ou manipulam um string

A LEN mostra o comprimento do string atual. O membro DATA pode conter


caracteres adicionais, antigos, que não estão incluídos na contagem de LEN.
DATA matriz SINT caracteres ASCII do • Para acessar os caracteres do string, endereçe o nome do tag.
string Por exemplo, para acessar os caracteres do tag string_1, insira string_1.

• Cada elemento da matriz DATA contém um caracter.

• Você pode criar novos tipos de string que armazenem menos ou mais
caracteres.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-7

Teste ASCII Para Linha do Linguagens Disponíveis:

Buffer (ABL)
Lógica Ladder

A instrução ABL conta os caracteres no buffer até o primeiro conjunto


de caracteres da extremidade.

Operandos de Lógica
Ladder: ABL
ASCII Test For Buffer Line EN
Channel ? DN
SerialPort Control ? ER
Character Count ?

42225

Operando: Tipo: Formato: Insira:


Channel DINT imediato 0
tag
Porta Serial SERIAL_PORT_ tag tag que controla a operação
Control CONTROL
Character DINT imediato 0
Count
Durante a execução, exibe o número de
caracteres no buffer, até e incluindo o
primeiro conjunto dos caracteres de
terminação.

Estrutura
SERIAL_PORT_CONTROL:

Mnemônico: Tipo de Dados: Descrição:


.EN BOOL O bit de habilitação indica que a instrução está habilitada.
RN BOOL O bit de operação indica que a instrução está executando.
.EM BOOL O bit vazio indica que a instrução está concluída.
.ER BOOL O bit de erro indica quando a instrução falha (erros).
.FD BOOL O bit encontrado indica que a instrução encontra os caracteres de terminação
.POS DINT A posição determina o número de caracteres no buffer, até e incluindo o primeiro conjunto de
caracteres de terminação.
.ERRO DINT O erro contém um valor hexadecimal que identifica a causa de um erro.

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


16-8 Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Descrição: Quando a entrada da condição da linha passa de falsa para


verdadeira, a instrução ABL conta os caracteres no buffer até e
incluindo o primeiro conjunto de caracteres de terminação. A janela
Properties do Controlador, guia User Protocol, define os caracteres
ASCII que a instrução considera como caracteres de terminação.

Para programar a instrução ABL, siga estas orientações:

1. Configure a porta serial do controlador para o modo do usuário


e defina os caracteres que servem como caracteres de
terminação.

2. Passe a entrada da condição de linha para a instrução ABL de


falsa para verdadeira toda vez que o buffer estiver para ser
contado. Por exemplo, para contar repetidamente o buffer, use
uma instrução XIO para examinar o bit .EN da instrução ABL.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-scan A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira • O bit .EN está energizado.
• Os bits de status restantes, exceto .UL, são desenergizados.
• A instrução tenta entrar na fila ASCII.
• A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder:

Testa o buffer continuamente para caracteres de terminação

MV_line.EN ABL
/ ASCII Test For Buffer Line EN
Channel 0 DN
SerialPort Control MV_line ER
Character Count 0

42226

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-9

Caracteres ASCII no Buffer Linguagens Disponíveis:

(ACB)
Lógica Ladder

A instrução ACB conta os caracteres no buffer.

Operandos de Lógica
Ladder: ACB
ASCII Chars in Buffer EN
Channel ? DN
SerialPort Control ? ER
Character Count ?

42225

Operando: Tipo: Formato: Insira:


Channel: DINT imediato 0
tag
Porta Serial SERIAL_PORT_ tag tag que controla a operação
Control CONTROL
Character DINT imediato 0
Count
Durante a execução, exibe o número de
caracteres no buffer.

Estrutura
SERIAL_PORT_CONTROL:

Mnemônico: Tipo de Dados: Descrição:


.EN BOOL O bit de habilitação indica que a instrução está habilitada.
RN BOOL O bit de operação indica que a instrução está executando.
.EM BOOL O bit vazio indica que a instrução está concluída.
.ER BOOL O bit de erro indica quando a instrução falha (erros).
.FD BOOL O bit encontrado indica que a instrução encontra os caracteres de terminação
.POS DINT A posição determina o número de caracteres no buffer, até e incluindo o primeiro conjunto de
caracteres de terminação.
.ERRO DINT O erro contém um valor hexadecimal que identifica a causa de um erro.

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


16-10 Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Descrição: Quando a entrada de condição de linha passa de falsa para


verdadeira, a instrução ACB conta os caracteres no buffer.

Para programar a instrução ACB, siga estas orientações:

1. Configure a porta serial do controlador para modo de usuário.

2. Passe a entrada da condição de linha para a instrução ACB de


falsa para verdadeira toda vez que o buffer estiver para ser
contado. Por exemplo, para contar repetidamente o buffer, use
uma instrução XIO para examinar o bit .EN da instrução ACB.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-scan A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira • O bit .EN está energizado.
• Os bits de status restantes, exceto .UL, são desenergizados.
• A instrução tenta entrar na fila ASCII.
• A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder:

Contar continuamente os caracteres no buffer

bar_code_count.EN ACB
/ ASCII Chars in Buffer EN
Channel 0 DN
SerialPort Control bar_code_count ER
Character Count 0

42227

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-11

Remoção de Buffer e da Linguagens Disponíveis:

Fila ASCII (ACL)


Lógica Ladder

A instrução ACL imediatamente remove o buffer e a fila ASCII.

Operandos de Lógica
Ladder: ACL
ASCII Clear Buffer
Channel ?
Clear Serial Port Read ?
Clear Serial Port Write ?

42225

Operando: Tipo: Formato: Insira:


Channel: DINT imediato 0
tag
Clear Serial BOOL imediato Para esvaziar o buffer e remover as
Port Read tag instruções ARD e ARL da fila, digite Yes.
Clear Serial BOOL imediato Para remover as instruções AWA e AWT da
Port Write tag fila, digite Yes.

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Quando a entrada da condição da linha for verdadeira, a instrução


ACL imediatamente realiza uma ou ambas das seguintes ações:

• remove o buffer de caracteres e remove a fila ASCII das


instruções de leitura
• remove a fila ASCII das instruções de escrita

Publicação 1756-RM003D-PT-P - Junho 2001


16-12 Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Para programar a instrução ACL, siga estas orientações:

1. Configure a porta serial do controlador:

Se sua aplicação: Então:


usa as instruções ARD or ARL Selecione modo do Usuário
não usa as instruções ARD ou ARL Selecione ou o modo do Sistema ou do
Usuário

2. Para determinar se uma instrução foi removida da fila ou


abortada, examine as seguintes instruções apropriadas:
• bit .ER está energizado
• membro .ERROR é 16#E

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-scan A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira • A instrução remove as instruções específicas e o(s) buffer(s).
• A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando o controlador entra no modo Run, remove o buffer e a fila ASCII

S:FS ACL
ASCII Clear Buffer
Channel 0
Clear Serial Port Read 1
Clear Serial Port Write 1

42228

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-13

Linhas ASCII Handshake Linguagens Disponíveis:

(AHL)
Lógica Ladder

A instrução AHL obtém o status das linhas de controle e liga e desliga


os sinais DTR e RTS.

Operandos de Lógica
Ladder: AHL
ASCII Handshake Lines EN
Channel ?
AND Mask ? DN
??
OR Mask ? ER
??
SerialPort Control ?
Channel Status(Decimal) ?
42225

Operando: Tipo: Formato: Insira:


Channel: DINT tag 0
imediato
ANDMask DINT imediato Consulte a descrição.
tag
ORMask DINT imediato
tag
Porta Serial SERIAL_PORT_ tag tag que controla a operação
Control CONTROL
Channel DINT imediato 0
Status
(Decimal) Durante a execução, exibe o status das
linhas de controle.

Estrutura
SERIAL_PORT_CONTROL:

Mnemônico: Tipo de Dados: Descrição:


.EN BOOL O bit de habilitação indica que a instrução está habilitada.
.RN BOOL O bit de operação indica que a instrução está executando.
.EM BOOL O bit vazio indica que a instrução está concluída.
.ER BOOL O bit de erro indica quando a instrução falha (erros).
.FD BOOL O bit encontrado indica que a instrução encontra os caracteres de terminação
.POS DINT A posição determina o número de caracteres no buffer, até e incluindo o primeiro conjunto de
caracteres de terminação.
.ERRO DINT O erro contém um valor hexadecimal que identifica a causa de um erro.

Publicação 1756-RM003D-PT-P - Junho 2001


16-14 Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Quando a entrada de condição da linha passa de falsa para


verdadeira, a instrução AHL pode realizar estas ações:

• obter o status das linhas de controle da porta serial


• ligar ou desligar o sinal (DTR) pronto do terminal de dados
• ligar ou desligar o pedido para enviar o sinal (RTS)

Para programar a instrução AHL, siga estas orientações:

1. Configure a porta serial do controlador:

Se sua aplicação: Então:


usa as instruções ARD or ARL Selecione modo do Usuário
não usa as instruções ARD ou ARL Selecione ou o modo do Sistema ou do
Usuário

2. Use as tabelas seguintes para selecionar os valores corretos para


os operandos ANDMask e ORMask:

DTR: RTS: Digite este valor E digite este valor


ANDMask: ORMask:
off off 3 0
on 1 2
não mudado 1 0
on off 2 1
on 0 3
não mudado 0 1
não mudado off 2 0
on 0 2
não mudado 0 0

3. Passe a entrada da condição de linha para a instrução AHL de


falsa para verdadeira toda vez que a instrução estiver para
executar.

Flags de Status Aritmético: não afetados

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-15

Condições de Falha:

Tipo: Código: Causa: Método de Recuperação:


4 57 A instrução AHL falhou na execução, pois a porta serial Ou:
está configurada para sem handshaking. • Mude a configuração de Control Line da porta
serial.
• Delete a instrução AHL.

Execução de Lógica
Ladder:

Condição: Ação:
pré-scan A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira • O bit .EN está energizado.
• Os bits de status restantes, exceto .UL, são desenergizados.
• A instrução tenta entrar na fila ASCII.
• A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando get_control_line_status está on, a instrução AHL obtém o status das linhas de controle da porta serial e exibe o status no
operando Channel Status. Para vizualizar o status de uma linha de controle específica, monitore a tag SerialPort Control e expanda o
membro POS.

get_control_line_status AHL
ASCII Handshake Lines EN
Channel 0
AND Mask 0 DN

OR Mask 0 ER

SerialPort Control serial_port


Channel Status(Decimal) 29

42230

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


16-16 Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Leitura ASCII (ARD) Linguagens Disponíveis:

Lógica Ladder

A instrução ARD remove os caracteres do buffer e armazena-os em


Destination.

Operandos de Lógica
Ladder: ARD
ASCII Read EN
Channel ?
Destination ? DN
??
SerialPort Control ? ER
SerialPort Control Length ?
Characters Read ?
42225

Operando: Tipo: Formato: Insira: Notas:


Canal: DINT imediato 0
tag
Destination tipo de string tag tag para o qual os • Se você quiser comparar, converter ou
SINT caracteres são movidos manipular os caracteres, insira um tag
INT (leitura): do tipo string.
DINT • Para um tipo de • Os tipos de string são:
string, insira o • tipo de dados STRING padrão
nome do tag.
• qualquer tipo de string novo que
• Para uma matriz
SINT, INT ou DINT, você criar
insira o primeiro
elemento da matriz.
Serial Port SERIAL_PORT_ tag tag que controla a
Control CONTROL operação
Serial Port DINT imediato número de caracteres para • O Serial Port Control Length deve ser
Control Length mover para destination menor ou igual ao tamanho de
(leitura) Destination.
• Se você quiser configurar Serial Port
Control Length para igual ao tamanho
de Destination, insira 0.
Characters Read DINT imediato 0 Durante a execução, exibe o número de
caracteres que foram lidos.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-17

Estrutura
SERIAL_PORT_CONTROL:

Mnemônico: Tipo de Dados: Descrição:


.EN BOOL O bit de habilitação indica que a instrução está habilitada.
RN BOOL O bit de operação indica que a instrução está executando.
.EM BOOL O bit vazio indica que a instrução está concluída.
.ER BOOL O bit de erro indica quando a instrução falha (erros).
.FD BOOL O bit encontrado indica que a instrução encontra os caracteres de terminação
.LEN DINT O comprimento (length) indica o número de caracteres para mover para destination (leitura).
.POS DINT A posição (position) exibe o número de caracteres que foram lidos.
.ERRO DINT O erro contém um valor hexadecimal que identifica a causa de um erro.

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Quando a entrada da condição da linha passa de falsa para


verdadeira, a instrução ARD remove o número específico de
caracteres do buffer e armazena-os em Destination.

• A instrução ARD continua a ser executada até que remova o


número especificado de caracteres (Serial Port Control Length).
• Enquanto a instrução ARD está sendo executada, nenhuma
instrução de Porta Serial ASCII é executada.

Para programar a instrução ARD, siga estas orientações:

1. Configure a porta serial do controlador para o modo user.

2. Use os resultados de uma instrução ACB para iniciar a instrução


ARD. Isto previne a instrução ARD de segurar a fila ASCII
enquanto ela espera o número de caracteres requisitado.
Consulte “Exemplo de Lógica Ladder:” na página 16-18.

3. Alterne a entrada da condição de linha da instrução ARD de


falsa para verdadeira toda vez que o buffer for para ser lido.

4. Para disparar a ação subseqüente quando a instrução for


concluída, examine o bit EM.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Publicação 1756-RM003D-PT-P - Junho 2001


16-18 Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Execução de Lógica
Ladder:

Condição: Ação:
pré-scan A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira • O bit .EN está energizado.
• Os bits de status restantes, exceto .UL, são desenergizados.
• A instrução tenta entrar na fila ASCII.
• A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica O exemplo seguinte representa o uso de uma instrução ACB para
Ladder: verificar se o número correto de caracteres está no buffer antes que a
instrução ARD execute e leia os caracteres.

Uma leitora de códigos de barra envia os códigos de barra para a porta serial (canal 0) do controlador. Cada código de barra contém
24 caracteres. Para determinar quando o controlador recebe um código de barra, a instrução ACB conta continuamente os caracteres no
buffer.

bar_code_count.EN ACB
/ ASCII Chars in Buffer EN
Channel 0 DN
SerialPort Control bar_code_count ER
Character Count 0

Quando o buffer contiver pelo menos 24 caracteres, o controlador recebeu o código de barra. A instrução ARD move o código de barra para
o membro DATA do tag bag_bar_code, que é um tipo de string.

GEQ ARD
Grtr Than or Eql (A>=B) ASCII Read EN
Source A bar_code_count.pos Channel 0
0 Destination bag_bar_code DN
Source B 24 ''
SerialPort Control bar_code_read ER
SerialPort Control Length 24
Characters Read 0

42227

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-19

Linha de Leitura ASCII Linguagens Disponíveis:

(ARL)
Lógica Ladder

A instrução ARL remove caracteres do buffer e armazena-os em


Destination.

Operandos de Lógica
Ladder: ARL
ASCII Read Line EN
Channel ?
Destination ? DN
??
SerialPort Control ? ER
SerialPort Control Length ?
Characters Read ?
42225

Operando: Tipo: Formato: Insira: Notas:


Canal: DINT imediato 0
tag
Destination tipo de string tag tag para o qual os • Se você quiser comparar, converter ou
SINT caracteres são movidos manipular os caracteres, insira um tag
INT (leitura): do tipo string.
DINT • Para um tipo de • Os tipos de string são:
string, insira o • tipo de dados STRING padrão
nome do tag.
• qualquer tipo de string novo que
• Para uma matriz
SINT, INT ou DINT, você criar
insira o primeiro
elemento da matriz.
Serial Port SERIAL_PORT_ tag tag que controla a
Control CONTROL operação
Serial Port DINT imediato número máximo de • Digite o número máximo de caracteres
Control Length caracteres para ler se que qualquer mensagem conterá (ou
nenhum caracter de seja, quando parar de ler se nenhum
terminação for encontrado caracter de terminação for encontrado).

Por exemplo, se as mensagens variarem


de 3 a 6 caracteres no comprimento,
digite 6.

• O Serial Port Control Length deve ser


menor ou igual ao tamanho de
Destination.
• Se você quiser configurar Serial Port
Control Length para igual ao tamanho
de Destination, insira 0.
Characters Read DINT imediato 0 Durante a execução, exibe o número de
caracteres que foram lidos.

Publicação 1756-RM003D-PT-P - Junho 2001


16-20 Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Estrutura
SERIAL_PORT_CONTROL:

Mnemônico: Tipo de Dados: Descrição:


.EN BOOL O bit de habilitação indica que a instrução está habilitada.
RN BOOL O bit de operação indica que a instrução está executando.
.EM BOOL O bit vazio indica que a instrução está concluída.
.ER BOOL O bit de erro indica quando a instrução falha (erros).
.FD BOOL O bit encontrado indica que a instrução encontra os caracteres de terminação
.LEN DINT O comprimento (length) indica o número máximo de caracteres para mover para destination
(ou seja, quando parar de ler se nenhum caracter de terminação for encontrado).
.POS DINT A posição (position) exibe o número de caracteres que foram lidos.
.ERRO DINT O erro contém um valor hexadecimal que identifica a causa de um erro.

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Quando a entrada da condição da linha passa de falsa para


verdadeira, a instrução ARL remove os caracteres do buffer e
armazena-os em Destination como segue:

• A instrução ARL continua a ser executada até remover ou


– primeiro conjunto de caracteres de terminação
– número específico de caracteres (Serial Port Control Length)
• Enquanto a instrução ARL está sendo executada, nenhuma
instrução de porta serial ASCII é executada.

Para programar a instrução ARL, siga estas orientações:

1. Configure a porta serial do controlador:

a. Selecione modo do Usuário


b. Defina os caracteres que servem como caracteres de
terminação.

2. Use os resultados de uma instrução ABL para iniciar a instrução


ARL. Isto previne a instrução ARL de segurar a fila ASCII
enquanto espera pelos caracteres de terminação.
Consulte “Exemplo de Lógica Ladder:” na página 16-21.

3. Passe a entrada da condição de linha para a instrução ARL de


falsa para verdadeira toda vez que o buffer estiver para ser lido.

4. Para disparar a ação subseqüente quando a instrução for


concluída, examine o bit EM.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-21

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-scan A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira • O bit .EN está energizado.
• Os bits de status restantes, exceto .UL, são desenergizados.
• A instrução tenta entrar na fila ASCII.
• A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder: O seguinte exemplo representa o uso de uma instrução ABL para
testar o buffer quanto ao final da mensagem antes da instrução ARL
ler a mensagem.

Testa o buffer continuamente para uma mensagem do terminal MessageView. Como cada mensagem termina com um caracter $r, este
caracter é configurado como o caracter de terminação na janela Controller Properties, guia User Protocol. Quando a ABL encontra um
caracter $r, ela energiza o bit FD.

MV_line.EN ABL
/ ASCII Test For Buffer Line EN
Channel 0 DN
SerialPort Control MV_line ER
Character Count 0

Quando a instrução ABL encontra um $r (MV_line.FD é energizado) o controlador recebeu uma mensagem completa. A instrução ARL
remove os caracteres do buffer, até e incluindo o $r e coloca-os no membro DATA do tag MV_msg, que é um tipo de string.

MV_line.FD ARL
ASCII Read Line EN
Channel 0
Destination MV_msg DN
''
SerialPort Control MV_read ER
SerialPort Control Length 12
Characters Read 0

42226

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


16-22 Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Anexar Leitura ASCII Linguagens Disponíveis:

(AWA)
Lógica Ladder

A instrução AWA envia um número específico de caracteres do tag


Source para um dispositivo serial e anexa um ou dois caracteres
pré-definidos.

Operandos de Lógica
Ladder: AWA
ASCII Write Append EN
Channel ?
Source ? DN
??
SerialPort Control ? ER
SerialPort Control Length ?
Characters Sent ?
42225

Operando: Tipo: Formato: Insira: Notas:


Canal: DINT imediato 0
tag
Source tipo de string tag tag que contém os • Se você quiser comparar, converter ou
SINT caracteres a serem manipular os caracteres, insira um tag
INT enviados: do tipo string.
DINT • Para um tipo de • Os tipos de string são:
string, insira o • tipo de dados STRING padrão
nome do tag.
• qualquer tipo de string novo que
• Para uma matriz
você criar
SINT, INT ou DINT,
insira o primeiro
elemento da matriz.
Serial Port SERIAL_PORT_ tag tag que controla a
Control CONTROL operação
Serial Port DINT imediato número de caracteres a • O Serial Port Control Length deve ser
Control Length serem enviados menor ou igual ao tamanho de Source.
• Se você quiser configurar Serial Port
Control Length para igual ao número de
caracteres em Source, insira 0.
Characters Read DINT imediato 0 Durante a execução, exibe o número de
caracteres que foram enviados.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-23

SERIAL_PORT_CONTROL
Estrutura:

Mnemônico: Tipo de Dados: Descrição:


.EN BOOL O bit de habilitação indica que a instrução está habilitada.
.RN BOOL O bit de operação indica que a instrução está executando.
.EM BOOL O bit vazio indica que a instrução está concluída.
.ER BOOL O bit de erro indica quando a instrução falha (erros).
.FD BOOL O bit encontrado indica que a instrução encontra os caracteres de terminação
.LEN DINT O comprimento (length) indica o número de caracteres a serem enviados.
.POS DINT A posição (position) exibe o número de caracteres que foram enviados.
.ERRO DINT O erro contém um valor hexadecimal que identifica a causa de um erro.

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Quando a entrada da condição da linha passa de falsa para


verdadeira, a instrução AWA:

• envia o número específico de caracteres (Serial Port Control


Length) do tag Source para o dispositivo que está conectado à
porta serial do controlador
• adiciona ao fim de characters (anexa) um ou dois caracteres que
são definidos na janela Controller Properties, guia User Protocol

Publicação 1756-RM003D-PT-P - Junho 2001


16-24 Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Para programar a instrução AWA, siga estas orientações:

1. Configure a porta serial do controlador:

a. Sua aplicação também inclui as instruções ARD ou ARL?

Se: Então:
sim Selecione modo do Usuário
não Selecione ou o modo do Sistema ou do
Usuário

b. Defina os caracteres para anexar os dados.

2. Passe a entrada da condição de linha para a instrução AWA de


falsa para verdadeira toda vez que os caracteres estiverem para
ser enviados.

3. Você sempre quer enviar o mesmo número de caracteres a cada


vez que a instrução é executada?

Se: Então:
Sim Em Serial Port Control Length, insira o número de caracteres a serem
enviados.
Não Antes da instrução ser executada, mova o membro LEN do tag
Source para o membro LEN do tag Serial Port Control.
Consulte Exemplo 2 na página 16-27.

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-scan A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira • O bit .EN está energizado.
• Os bits de status restantes, exceto .UL, são desenergizados.
• A instrução tenta entrar na fila ASCII.
• A saída da condição da linha está definida como verdadeira.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-25

Exemplo de Lógica
Ladder:

Exemplo 1
Quando a temperatura exceder o limite superior (temp_high is on), a instrução AWA envia uma mensagem para o terminal MessageView
que está conectado à porta serial do controlador. A mensagem contém cinco caracteres do membro DATA do tag string[1], que é um tipo
de string. O $14 é contado como um caracter. (Ele é o código hexadecimal para o caracter Ctrl-T.) A instrução também envia (anexos) os
caracteres definidos nas propriedades do controlador. Neste exemplo, a instrução AWA envia um caracterer $0D, que marca o fim da
mensagem.

temp_high AWA
ASCII Write Append EN
Channel 0
Source string[1] DN
'$1425\1'
SerialPort Control temp_high_write ER
SerialPort Control Length 5
Characters Sent 6

Exemplo 2
Quando alarm estiver on, a instrução AWA envia o número específico de caracteres em alarm_msg e anexo um caracter de terminação (s).
Como o número de caracteres em alarm_msg varia, a linha move primeiro o comprimento do string (alarm_msg.LEN) para Serial Port
Control Length da instrução AWA (alarm_write.LEN). Em alarm_msg, o $14 é contado como um caracter. Ele é o código hexadecimal para
o caracter Ctrl-T.

alarm MOV AWA


Move ASCII Write Append EN
Source alarm_msg.LEN Channel 0
5 Source alarm_msg DN
Dest alarm_write.LEN '$1425\1'
5 SerialPort Control alarm_write ER
SerialPort Control Length 5
Characters Sent 6

42229

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


16-26 Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Escrita ASCII (AWT) Linguagens Disponíveis:

Lógica Ladder

A instrução AWT envia um número específico de caracteres do tag


Source para um dispositivo serial.

Operandos de Lógica
Ladder: AWT
ASCII Write EN
Channel ?
Source ? DN
??
SerialPort Control ? ER
SerialPort Control Length ?
Characters Sent ?
42225

Operando: Tipo: Formato: Insira: Notas:


Canal: DINT imediato 0
tag
Source tipo de string tag tag que contém os • Se você quiser comparar, converter ou
SINT caracteres a serem manipular os caracteres, insira um tag
INT enviados: do tipo string.
DINT • Para um tipo de • Os tipos de string são:
string, insira o • tipo de dados STRING padrão
nome do tag.
• qualquer tipo de string novo que
• Para uma matriz
SINT, INT ou DINT, você criar
insira o primeiro
elemento da matriz.
Serial Port SERIAL_PORT_ tag tag que controla a
Control CONTROL operação
Serial Port DINT imediato número de caracteres a • O Serial Port Control Length deve ser
Control Length serem enviados menor ou igual ao tamanho de Source.
• Se você quiser configurar Serial Port
Control Length para igual ao número de
caracteres em Source, insira 0.
Characters Read DINT imediato 0 Durante a execução, exibe o número de
caracteres que foram enviados.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) 16-27

Estrutura
SERIAL_PORT_CONTROL:

Mnemônico: Tipo de Dados: Descrição:


.EN BOOL O bit de habilitação indica que a instrução está habilitada.
.RN BOOL O bit de operação indica que a instrução está executando.
.EM BOOL O bit vazio indica que a instrução está concluída.
.ER BOOL O bit de erro indica quando a instrução falha (erros).
.FD BOOL O bit encontrado indica que a instrução encontra os caracteres de terminação.
.LEN DINT O comprimento (length) indica o número de caracteres a serem enviados.
.POS DINT A posição (position) exibe o número de caracteres que foram enviados.
.ERRO DINT O erro contém um valor hexadecimal que identifica a causa de um erro.

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Quando a entrada da condição de linha faz a transição de de falsa


para verdadeira, a instrução AWT envia o número específico de
caracteres (Serial Port Control Length) do tag Source para o
dispositivo que está conectado à porta serial do controlador.

Para programar a instrução AWT, siga estas orientações:

1. Configure a porta serial do controlador:

Se sua aplicação: Então:


usa as instruções ARD or ARL Selecione modo do Usuário
não usa as instruções ARD ou ARL Selecione ou o modo do Sistema ou do
Usuário

2. Passe a entrada da condição de linha para a instrução AWT de


falsa para verdadeira toda vez que os caracteres estiverem para
ser enviados.

3. Você sempre quer enviar o mesmo número de caracteres a cada


vez que a instrução é executada?

Se: Então:
Sim Em Serial Port Control Length, insira o número de caracteres a serem
enviados.
Não Antes da instrução ser executada, mova o membro LEN do tag
Source para o membro LEN do tag Serial Port Control.
Consulte Exemplo 2 na página 16-30.

Publicação 1756-RM003D-PT-P - Junho 2001


16-28 Instruções de Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT)

Flags de Status Aritmético: não afetados

Condições de Falha: nenhuma

Execução de Lógica
Ladder:

Condição: Ação:
pré-scan A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira • O bit .EN está energizado.
• Os bits de status restantes, exceto .UL, são desenergizados.
• A instrução tenta entrar na fila ASCII.
• A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder:

Exemplo 1
Quando a temperatura alcança o limite inferior (temp_low está energizado), a instrução AWT envia uma mensagem para o terminal
MessageView que está conectado à porta serial do controlador. A mensagem contém nove caracteres do membro DATA do tag string[2],
que é um tipo de string. O $14 é contado como um caracter. (Ele é o código hexadecimal para o caracter Ctrl-T.) O último caracter é um $r,
que marca o fim da mensagem.

temp_low AWT
ASCII Write EN
Channel 0
Source string[2] DN
'$142224\01$r'
SerialPort Control temp_low_write ER
SerialPort Control Length 9
Characters Sent 9

Exemplo 2
Quando MV_update estiver on, a instrução AWT envia o caracter em MV_msg. Como o número de caracteres em MV_msg varia, a linha
move primeiro o comprimento do string (MV_msg.LEN) para Serial Port Control Length da instrução AWT (MV_write.LEN). Em MV_msg, o
$16 é contado como um caracter. Ele é o código hexadecimal para o caracter Ctrl-V.

MV_update MOV AWT


Move ASCII Write EN
Source MV_msg.LEN Channel 0
10 Source MV_msg DN
Dest MV_write.LEN '$161365\8\1$r'
10 SerialPort Control MV_write ER
SerialPort Control Length 10
Characters Sent 10

42229

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Capítulo 17

Instruções de String ASCII


(CONCAT, DELETE, FIND, INSERT, MID)

Introdução Use as instruções de string ASCII para modificar e criar strings de


caracteres ASCII.

Se você quiser: Por exemplo: Use esta instrução: Consulte página:


adicionar caracteres ao final de um string adicionar caracteres de terminação ou CONCAT 17-3
delimitadores a um string
remover caracteres de um string remover caracteres de cabeçalho ou DELETE 17-5
controle de um string
determinar o caracter inicial de um sub-string localizar um grupo de caracteres dentro de FIND 17-7
um string
inserir caracteres em um string criar um string que usa variáveis INSERT 17-9
extrair caracteres de um string extrair informações de um código de barras MID 17-11

Você também pode usar as seguintes instruções para comparar ou


converter caracteres ASCII:

Se você quiser: Use esta instrução: Consulte página:


ver se os caracteres são iguais a caracteres específicos EQU 4-7
ver se os caracteres não são iguais a caracteres específicos NEQ 4-38
ver se os caracteres são iguais ou maiores que caracteres específicos GEQ 4-11
ver se os caracteres são maiores que caracteres específicos GRT 4-15
ver se os caracteres são iguais ou menores que caracteres específicos LEQ 4-19
ver se os caracteres são menores que caracteres específicos LES 4-23
converter caracteres para um valor SINT, INT, DINT ou REAL STOD 18-3
converter caracteres para um valor REAL STOR 18-5
converter um valor SINT, INT, DINT ou REAL para um string de caracteres ASCII DTOS 18-7
converter um valor REAL para um string de caracteres ASCII RTOS 18-9

1 Publicação 1756-RM003D-PT-P - Junho 2001


17-2 Instruções de String ASCII (CONCAT, DELETE, FIND, INSERT, MID)

Tipos de String

Você armazena caracteres ASCII em tags que usam um tipo de dados


tipo string.

• Você pode usar o tipo de dados STRING padrão. Ele armazena


até 82 caracteres.
• Você pode criar um novo tipo de string que armazene menos ou
mais caracteres.

Para criar um novo tipo de string, consulte Procedimentos Comuns


dos Controladores Logix5000, publicação 1756-PM001.
42811

Cada tipo de string contém os seguintes membros:

Nome: Tipo de Descrição: Notas:


Dados:
LEN DINT número de caracteres A LEN atualiza a nova contagem de caracteres automaticamente sempre que você:
no string • usar a janela String Browser para inserir caracteres
• usar as instruções que leêm, convertem ou manipulam um string

A LEN mostra o comprimento do string atual. O membro DATA pode conter


caracteres adicionais, antigos, que não estão incluídos na contagem de LEN.
DATA matriz SINT caracteres ASCII do • Para acessar os caracteres do string, endereçe o nome do tag.
string Por exemplo, para acessar os caracteres do tag string_1, insira string_1.

• Cada elemento da matriz DATA contém um caracter.

• Você pode criar novos tipos de string que armazenem menos ou mais
caracteres.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de String ASCII (CONCAT, DELETE, FIND, INSERT, MID) 17-3

Concatenação de String Linguagens Disponíveis:

(CONCAT)
Lógica Ladder

A instrução CONCAT adiciona caracteres ASCII ao final de um string.

Operandos de Lógica
Ladder: CONCAT
String Concatenate
Source A ?
??
Source B ?
??
Dest ?
??
42617

Operando: Tipo: Formato: Insira: Notas:


Source A tipo de string tag tag que contém os Os tipos de string são:
caracteres iniciais • tipo de dados STRING padrão
• qualquer tipo de string novo que você
Source B tipo de string tag tag que contém os
criar
caracteres finais
Destination tipo de string tag tag para armazenar o
resultado

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Quando a condição da linha for verdadeira, a instrução CONCAT


combina os caracteres em Source A com os caracteres em Source B e
coloca o resultado em Destination.

• Os caracteres de Source A são os primeiros, seguidos dos


caracteres de Source B.
• A menos que Source A e Destination sejam o mesmo tag, Source
A permanece inalterado.

Flags de Status Aritmético: não afetados

Publicação 1756-RM003D-PT-P - Junho 2001


17-4 Instruções de String ASCII (CONCAT, DELETE, FIND, INSERT, MID)

Condições de Falha:

Tipo: Código: Causa: Método de Recuperação:


4 51 O valor LEN do tag string é maior que 1. Verifique se nenhuma instrução está escrevendo para o membro
o tamanho de DATA do tag string. LEN do tag tipo string.
2. No valor de LEN, insira o número de caracteres que o string contém.

Execução da Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira • A instrução executa.
• A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder:

Para disparar uma mensagem em um terminal MessageView, o controlador deve enviar um string ASCII que contenha um número de
mensagem e um número de nó. String_1 contém o número da mensagem. Quando add_node estiver energizado, a instrução CONCAT
adiciona os caracteres em node_num_ascii (número do nó) ao final dos caracteres em string_1 e, então, armazena o resultado em msg.

add_node CONCAT
String Concatenate
Source A string_1
'$1423\'
Source B node_num_ascii
'1'
Dest msg
'$1423\1'

42613

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de String ASCII (CONCAT, DELETE, FIND, INSERT, MID) 17-5

Remoção de String Linguagens Disponíveis:

(DELETE)
Lógica Ladder

A instrução DELETE remove os caracteres ASCII de um string.

Operandos de Lógica
Ladder: DELETE
String Delete
Source ?
??
Qty ?
??
Start ?
??
Dest ?
??
42617

Operando: Tipo: Formato: Insira: Notas:


Source tipo de string tag o tag que contém o string Os tipos de string são:
do qual você quer remover • tipo de dados STRING padrão
caracteres • qualquer tipo de string novo que você
criar
Quantidade SINT imediato número de caracteres a O Start mais o Quantity deve ser menor ou igual
INT tag serem removidos ao tamanho de DATA de Source.
DINT
Start SINT imediato posição do primeiro Insira um número entre 1 e o tamanho de DATA
INT tag caracter a ser removido de Source.
DINT
Destination tipo de string tag tag para armazenar o
resultado

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Quando a condição da linha energizada for verdadeira, a instrução


DELETE remove um grupo de caracteres de Source e coloca os
caracteres restantes em Destination.

• A posição de Start e Quantity definem os caracteres a serem


removidos.
• A menos que Source e Destination sejam o mesmo tag, Source
permanece inalterado.

Flags de Status Aritmético: não afetados

Publicação 1756-RM003D-PT-P - Junho 2001


17-6 Instruções de String ASCII (CONCAT, DELETE, FIND, INSERT, MID)

Condições de Falha:

Tipo: Código: Causa: Método de Recuperação:


4 51 O valor LEN do tag string é maior que 1. Verifique se nenhuma instrução está escrevendo para o membro
o tamanho de DATA do tag string. LEN do tag tipo string.
2. No valor de LEN, insira o número de caracteres que o string contém.
4 56 O valor de Start ou Quantity é 1. Verifique se o valor de Start está entre 1 e o tamanho de DATA de
inválido. Source.
2. Verfique se o valor de Start mais o valor de Quantity é menor ou
igual ao tamanho de DATA de Source.

Execução da Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira • A instrução executa.
• A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder:

As informações ASCII de um terminal contêm um caracter de cabeçalho. Depois que o controlador lê os dados (term_read.EM está
energizado) a instrução DELETE remove o caracter de cabeçalho. O controlador pode, então, usar o texto da mensagem ou passá-lo para
outro dispositivo.

term_read.EM DELETE
String Delete
Source term_input
'$0655'
Qty 1

Start 1

Dest term_text
'55'

42613

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de String ASCII (CONCAT, DELETE, FIND, INSERT, MID) 17-7

Encontro de String (FIND) Linguagens Disponíveis:

Lógica Ladder

A instrução FIND localiza a posição inicial de um string específico


dentro de outro string.

Operandos de Lógica
Ladder: FIND
Find String
Source ?
??
Search ?
??
Start ?
??
Result ?
??
42617

Operando: Tipo: Formato: Insira: Notas:


Source tipo de string tag string a ser procurado Os tipos de string são:
• tipo de dados STRING padrão
Search tipo de string tag string a ser encontrado • qualquer tipo de string novo que você
criar
Start SINT imediato posição em Source para Insira um número entre 1 e o tamanho de DATA
INT tag iniciar a busca de Source.
DINT
Result: SINT tag tag que armazena a
INT posição inicial do string a
DINT ser encontrado

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Quando a condição da linha for verdadeira, a instrução FIND procura


o string Source para o string Search. Se a instrução encontrar o string
Search, Result mostra a posição inicial do string Search dentro do
string Source.

Flags de Status Aritmético: não afetados

Publicação 1756-RM003D-PT-P - Junho 2001


17-8 Instruções de String ASCII (CONCAT, DELETE, FIND, INSERT, MID)

Condições de Falha:

Tipo: Código: Causa: Método de Recuperação:


4 51 O valor LEN do tag string é maior que 1. Verifique se nenhuma instrução está escrevendo para o membro
o tamanho de DATA do tag string. LEN do tag tipo string.
2. No valor de LEN, insira o número de caracteres que o string contém.
4 56 O valor de Start é inválido. Verifique se o valor de Start está entre 1 e o tamanho de DATA de Source.

Execução da Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira • A instrução executa.
• A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder:

A mensagem de um terminal MessageView contém várias informações. O caracter de barra [ \ ] separa cada parte das informações. Para
localizar uma informação, a instrução FIND procura pelo caracter de barra ( /) e grava sua posição em find_pos.

MV_read.EM FIND
Find String
Source MV_msg
'$06324\12\1\$r'
Search find
'\'
Start 1

Result find_pos
5

42613

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de String ASCII (CONCAT, DELETE, FIND, INSERT, MID) 17-9

Inserção de String (INSERT) Linguagens Disponíveis:

Lógica Ladder

A instrução INSERT adiciona caracteres ASCII a um local específico


dentro de um string.

Operandos de Lógica
Ladder: INSERT
Insert String
Source A ?
??
Source B ?
??
Start ?
??
Dest ?
??
42617

Operando: Tipo: Formato: Insira: Notas:


Source A tipo de string tag string para o qual adicionar Os tipos de string são:
os caracteres • tipo de dados STRING padrão
• qualquer tipo de string novo que você
Source B tipo de string tag string contendo os
criar
caracteres a serem
adicionados
Start SINT imediato posição em Source A na Insira um número entre 1 e o tamanho de DATA
INT tag qual adicionar os de Source.
DINT caracteres
Result: tipo de string tag string para armazenar o
resultado

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Quando a condição da linha for verdadeira, a instrução INSERT


adiciona os caracteres em Source B a uma posição designada dentro
de Source A e coloca o resultado em Destination.

• O Start define onde em Source A que Source B será adicionado.


• A menos que Source A e Destination sejam o mesmo tag,
Source A permanece inalterado.

Flags de Status Aritmético: não afetados

Publicação 1756-RM003D-PT-P - Junho 2001


17-10 Instruções de String ASCII (CONCAT, DELETE, FIND, INSERT, MID)

Condições de Falha:

Tipo: Código: Causa: Método de Recuperação:


4 51 O valor LEN do tag string é maior que 1. Verifique se nenhuma instrução está escrevendo para o membro
o tamanho de DATA do tag string. LEN do tag tipo string.
2. No valor de LEN, insira o número de caracteres que o string contém.
4 56 O valor de Start é inválido. Verifique se o valor de Start está entre 1 e o tamanho de DATA de Source.

Execução da Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira • A instrução executa.
• A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando temp_high estiver energizado, a instrução INSERT adiciona os caracteres em string_2 na posição 2 dentro de string_1 e coloca o
resultado em string_3:

temp_high INSERT
Insert String
Source A string_1
'AD'
Source B string_2
'BC'
Start 2

Dest string_3
'ABCD'

42619

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de String ASCII (CONCAT, DELETE, FIND, INSERT, MID) 17-11

Meio do String (MID) Linguagens Disponíveis:

Lógica Ladder

A instrução MID copia um número específico de caracteres ASCII de


um string e os armazena em outro string.

Operandos de Lógica
Ladder: MID
Middle String
Source ?
??
Qty ?
??
Start ?
??
Dest ?
??
42617

Operando: Tipo: Formato: Insira: Notas:


Source tipo de string tag string do qual os caracteres Os tipos de string são:
são copiados • tipo de dados STRING padrão
• qualquer tipo de string novo que você
criar
Quantidade SINT imediato número de caracteres a O Start mais o Quantity deve ser menor ou igual
INT tag serem copiados ao tamanho de DATA de Source.
DINT
Start SINT imediato posição do primeiro Insira um número entre 1 e o tamanho de DATA
INT tag caracter a ser copiado de Source.
DINT
Destination tipo de string tag string para o qual os
caracteres são copiados

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Quando a condição da linha for verdadeira, a instrução MID copia um


grupo de caracteres de Source e coloca o resultado em Destination.

• A posição de Start e Quantity definem os caracteres a serem


copiados.
• A menos que Source e Destination sejam o mesmo tag, Source
permanece inalterado.

Flags de Status Aritmético: não afetados

Publicação 1756-RM003D-PT-P - Junho 2001


17-12 Instruções de String ASCII (CONCAT, DELETE, FIND, INSERT, MID)

Condições de Falha:

Tipo: Código: Causa: Método de Recuperação:


4 51 O valor LEN do tag string é maior que 1. Verifique se nenhuma instrução está escrevendo para o membro
o tamanho de DATA do tag string. LEN do tag tipo string.
2. No valor de LEN, insira o número de caracteres que o string contém.
4 56 O valor de Start ou Quantity é 1. Verifique se o valor de Start está entre 1 e o tamanho de DATA de
inválido. Source.
2. Verfique se o valor de Start mais o valor de Quantity é menor ou
igual ao tamanho de DATA de Source.

Execução da Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira • A instrução executa.
• A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder:

Na esteira transportadora para transporte de bagagens de um aeroporto, cada mala tem um código de barras. Os caracteres de 9 a 17 do
código de barras são o número do vôo e o aeroporto destino da mala. Se o código de barra for lido (bag_read.EM for energizado) a
instrução MID copia o número do vôo e o aeroporto destino para o string bag_flt_and_dest. As linhas subsequentes usam
bag_flt_and_dest para determinar para onde levar a mala.

bag_read.EM MID
Middle String
Source bag_barcode
'NWA HOP 5058 AMS 01'
Qty 9

Start 9

Dest bag_flt_and_dest
'5058 AMS '

42619

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Capítulo 18

Instruções de Coversão ASCII


(STOD, STOR, DTOS, RTOS)

Introdução Use as instruções de conversão ASCII para converter dados de ou para


strings de caracteres ASCII.

Se você quiser converter: Por exemplo: Use esta instrução: Consulte página:
Representação de um valor de inteiro em um converter um valor de uma balança ou outro STOD 18-3
valor SINT, INT, DINT ou REAL dispositivo ASCII para um inteiro, de forma
você o use em sua lógica
Representaçã ASCII de um valor de ponto converter um valor de uma balança ou outro STOR 18-5
flutuante para um valor REAL dispositivo ASCII para um valor REAL, de
forma você possa usá-lo em sua lógica
Valor SINT, INT, DINT ou REAL para um string converter uma variável para um string ASCII, DTOS 18-7
de caracteres ASCII de forma que você possa enviá-la para um
terminal MessageView
Valor REAL para um string de caracteres converter uma variável para um string ASCII, RTOS 18-9
ASCII de forma que você possa enviá-la para um
terminal MessageView

Você também pode usar as seguintes instruções para comparar ou


manipular caracteres ASCII:

Se você quiser: Use esta instrução: Consulte página:


adicionar caracteres ao final de um string CONCAT 17-3
remover caracteres de um string DELETE 17-5
determinar o caracter inicial de um sub-string FIND 17-7
inserir caracteres em um string INSERT 17-9
extrair caracteres de um string MID 17-11
ver se os caracteres são iguais a caracteres específicos EQU 4-7
ver se os caracteres não são iguais a caracteres específicos NEQ 4-38
ver se os caracteres são iguais ou maiores que caracteres específicos GEQ 4-11
ver se os caracteres são maiores que caracteres específicos GRT 4-15
ver se os caracteres são iguais ou menores que caracteres específicos LEQ 4-19
ver se os caracteres são menores que caracteres específicos LES 4-23

1 Publicação 1756-RM003D-PT-P - Junho 2001


18-2 Instruções de Coversão ASCII (STOD, STOR, DTOS, RTOS)

Tipos de String

Você armazena caracteres ASCII em tags que usam um tipo de dados


tipo string.

• Você pode usar o tipo de dados STRING padrão. Ele armazena


até 82 caracteres.
• Você pode criar um novo tipo de string que armazene menos ou
mais caracteres.

Para criar um novo tipo de string, consulte Procedimentos Comuns


dos Controladores Logix5000, publicação 1756-PM001.
42811

Cada tipo de string contém os seguintes membros:

Nome: Tipo de Descrição: Notas:


Dados:
LEN DINT número de caracteres A LEN atualiza a nova contagem de caracteres automaticamente sempre que você:
no string • usar a janela String Browser para inserir caracteres
• usar as instruções que leêm, convertem ou manipulam um string

A LEN mostra o comprimento do string atual. O membro DATA pode conter


caracteres adicionais, antigos, que não estão incluídos na contagem de LEN.
DATA matriz SINT caracteres ASCII do • Para acessar os caracteres do string, endereçe o nome do tag.
string Por exemplo, para acessar os caracteres do tag string_1, insira string_1.

• Cada elemento da matriz DATA contém um caracter.

• Você pode criar novos tipos de string que armazenem menos ou mais
caracteres.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Coversão ASCII (STOD, STOR, DTOS, RTOS) 18-3

String Para DINT (STOD) Linguagens Disponíveis:

Lógica Ladder

A instrução STOD converte a representação ASCII de um inteiro para


um valor inteiro ou REAL.

Operandos de Lógica
Ladder: STOD
String To DINT
Source ?
??
Dest ?
??

42617

Operando: Tipo: Formato: Insira: Notas:


Source tipo de string tag tag que contém o valor em Os tipos de string são:
ASCII • tipo de dados STRING padrão
• qualquer tipo de string novo que você
criar
Destination SINT tag tag para armazenar o valor Se o valor de Source for um número de ponto
INT inteiro flutuante, a instrução converte apenas a parte
DINT não fracionada do número (independente do
REAL tipo de dados de destino).

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Quando a condição da linha for verdadeira, a instrução STOD


converte Source em um inteiro e coloca o resultado em Destination.

• A instrução converte números positivos e negativos.


• Se o string Source contiver caracteres não-numéricos, a instrução
STOD converte o primeiro conjunto de números contínuos:
– A instrução salta os caracteres de controle iniciais ou
não-numéricos (exceto sinal de menos em frente a um
número).
– Se o string contiver múltiplos grupos de números que estão
separados por delimitadores (ex.:/), a instrução converte
somente o primeiro grupo de números.

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Publicação 1756-RM003D-PT-P - Junho 2001


18-4 Instruções de Coversão ASCII (STOD, STOR, DTOS, RTOS)

Condições de Falha:

Tipo: Código: Causa: Método de Recuperação:


4 51 O valor LEN do tag string é maior que o tamanho de 1. Verifique se nenhuma instrução está escrevendo
DATA do tag string. para o membro LEN do tag tipo string.
2. No valor de LEN, insira o número de caracteres
que o string contém.
4 53 O número de saída está além dos limites do tipo de Ou:
dados de destino. • Reduza o tamanho do valor ASCII.
• Use um tipo de dados maior para o destino.

Execução da Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira • S:C está energizadp.
• Destination é removido.
• A instrução converte Source.
• Se o resultado for zero, então S:Z está energizado.
• A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando MV_read.EM estiver energizado, a instrução STOD converte o primeiro conjunto de caracteres numéricos em MV_msg para um
valor inteiro. A instrução salta o caracter de controle inicial ($06) e pára no delimitador ( \ ).

MV_read.EM STOD
String To DINT
Source MV_msg
'$06324\12\1\$r'
Dest MV_msg_nmbr
324

42620

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Coversão ASCII (STOD, STOR, DTOS, RTOS) 18-5

String Para REAL (STOR) Linguagens Disponíveis:

Lógica Ladder

A instrução STOR converte a representação ASCII de um valor de


ponto flutuante para um valor REAL.

Operandos de Lógica
Ladder: STOR
String to Real
Source ?
??
Dest ?
??

42617

Operando: Tipo: Formato: Insira: Notas:


Source tipo de string tag tag que contém o valor em Os tipos de string são:
ASCII • tipo de dados STRING padrão
• qualquer tipo de string novo que você
criar
Destination REAL tag tag para armazenar o valor
REAL

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Quando a condição da linha for verdadeira, a instrução STOR


converte Source em um valor REAL e coloca o resultado em
Destination.

• A instrução converte números positivos e negativos.


• Se o string Source cpntiver caracteres não-numéricos, a instrução
STOR cpnverte o primeiro conjunto de números contínuos,
incluindo o ponto decimal [ . ]:
– A instrução salta os caracteres de controle iniciais ou
não-numéricos (exceto sinal de menos em frente a um
número).
– Se o string contiver múltiplos grupos de números que estão
separados por delimitadores (ex.:/), a instrução converte
somente o primeiro grupo de números.

Flags de Status Aritmético: Os flags de status aritmético são afetados.

Publicação 1756-RM003D-PT-P - Junho 2001


18-6 Instruções de Coversão ASCII (STOD, STOR, DTOS, RTOS)

Condições de Falha:

Tipo: Código: Causa: Método de Recuperação:


4 51 O valor LEN do tag string é maior que o tamanho de 1. Verifique se nenhuma instrução está escrevendo
DATA do tag string. para o membro LEN do tag tipo string.
2. No valor de LEN, insira o número de caracteres
que o string contém.
4 53 O número de saída está além dos limites do tipo de Ou:
dados de destino. • Reduza o tamanho do valor ASCII.
• Use um tipo de dados maior para o destino.

Execução da Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira • S:C está energizadp.
• Destination é removido.
• A instrução converte Source.
• Se o resultado for zero, então S:Z está energizado.
• A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder:

Depois de ler o peso de uma balança (weight_read.EM está energizado) a instrução STOR converte os caracteres numéricos em
weight_ascii para um valor REAL.

weight_read.EM STOR
String to Real
Source weight_ascii
'428.259'
Dest weight
428.259

42620

Você pode ver uma pequena diferença entre as partes fracionadas de


Source e Destination.

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Coversão ASCII (STOD, STOR, DTOS, RTOS) 18-7

DINT Para String (DTOS) Linguagens Disponíveis:

Lógica Ladder

A instrução DTOS produz a representação ASCII de um valor.

Operandos de Lógica
Ladder: DTOS
DINT to String
Source ?
??
Dest ?
??
42617

Operando: Tipo: Formato: Insira: Notas:


Source SINT tag tag que contém o valor Se Source for REAL, a instrução converte-o para
INT um valor DINT. Consulte REAL para um inteiro
DINT na página A-6.
REAL
Destination tipo de string tag tag para armazenar o valor Os tipos de string são:
ASCII • tipo de dados STRING padrão
• qualquer tipo de string novo que você
criar

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Quando a condição da linha for verdadeira, a instrução DTOS


converte Source para um string de caracteres ASCII e coloca o
resultado em Destination.

Flags de Status Aritmético: não afetados

Publicação 1756-RM003D-PT-P - Junho 2001


18-8 Instruções de Coversão ASCII (STOD, STOR, DTOS, RTOS)

Condições de Falha:

Tipo: Código: Causa: Método de Recuperação:


4 51 O valor LEN do tag string é maior que o tamanho de 1. Verifique se nenhuma instrução está escrevendo
DATA do tag string. para o membro LEN do tag tipo string.
2. No valor de LEN, insira o número de caracteres
que o string contém.
4 52 O string de saída é maior que o destino. Crie um novo tipo de string que seja grande o suficiente
para o string de saída. Use o novo tipo de string como o
tipo de dados para o destino.

Execução da Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira • A instrução executa.
• A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando temp_high estiver energizado, a instrução DTOS converte o valor em msg_num para um string de caracteres ASCII e coloca o
resultado em msg_num_ascii. As linhas subsequentes inserem ou concatenam msg_num_ascii com outros strings para produzir uma
mesnagem completa para um terminal de display.

temp_high DTOS
DINT to String
Source msg_num
23
Dest msg_num_ascii
'23'

42620

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Instruções de Coversão ASCII (STOD, STOR, DTOS, RTOS) 18-9

REAL Para String (RTOS) Linguagens Disponíveis:

Lógica Ladder

A instrução RTOS produz a representação ASCII de um valor REAL.

Operandos de Lógica
Ladder: RTOS
Real to String
Source ?
??
Dest ?
??
42617

Operando: Tipo: Formato: Insira: Notas:


Source REAL tag tag que contém o valor
REAL
Destination tipo de string tag tag para armazenar o valor Os tipos de string são:
ASCII • tipo de dados STRING padrão
• qualquer tipo de string novo que você
criar

Operandos do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Descrição: Quando a condição da linha for verdadeira, a instrução RTOS


converte Source para um string de caracteres ASCII e coloca o
resultado em Destination.

Flags de Status Aritmético: não afetados

Publicação 1756-RM003D-PT-P - Junho 2001


18-10 Instruções de Coversão ASCII (STOD, STOR, DTOS, RTOS)

Condições de Falha:

Tipo: Código: Causa: Método de Recuperação:


4 51 O valor LEN do tag string é maior que o tamanho de 1. Verifique se nenhuma instrução está escrevendo
DATA do tag string. para o membro LEN do tag tipo string.
2. No valor de LEN, insira o número de caracteres
que o string contém.
4 52 O string de saída é maior que o destino. Crie um novo tipo de string que seja grande o suficiente
para o string de saída. Use o novo tipo de string como o
tipo de dados para o destino.

Execução da Lógica
Ladder:

Condição: Ação:
pré-varredura A saída da condição da linha é definida como falsa.
entrada da condição da linha for falsa A saída da condição da linha é definida como falsa.
entrada da condição da linha for verdadeira • A instrução executa.
• A saída da condição da linha está definida como verdadeira.

Exemplo de Lógica
Ladder:

Quando send_data estiver energizado, a instrução RTOS converte o valor em data_1 para um string de caracteres ASCII e coloca o
resultado em data_1_ascii. As linhas subsequentes inserem ou concatenam data_1_ascii com outros strings para produzir uma
mesnagem completa para um terminal de display.

send_data RTOS
Real to String
Source data_1
15.3001
Dest data_1_ascii
'15.3001003'

42620

Você pode ver uma pequena diferença entre as partes fracionadas de


Source e Destination.

Execução do Bloco de
Função: Esta instrução não está disponível no bloco de função.

Publicação 1756-RM003D-PT-P - Junho 2001


Apêndice A

Atributos Comuns

Introdução Este apêndice descreve os atributos comuns às instruções Logix .

Para mais informações sobre: Consulte página:


Valores Imediatos A-1
Conversões de Dados A-1

Valores Imediatos Sempre que você inserir um valor imediato (constante) no formato
decimal (por ex.:-2,3), o controlador armazenará o valor usando 32
bits. Se você inserir um valor em uma base diferente da decimal
como, por exemplo, binária ou hexadecimal, e não especificar todos
os 32 bits, o controlador colocará um zero nos bits não especificados
(preenchimento com zero).

EXEMPLO Preenchimento com zero de valores imediatos

Se você inserir: O controlador armazenará:


-1 16#ffff ffff (-1)
16#ffff (-1) 16#0000 ffff (65535)
8#1234 (668) 16#0000 029 c (668)
2#1010 (10) 16#0000 000a (10)

Conversões de Dados As conversões de dados ocorrem quando se combina tipos de dados


na sua programação:

Ao programar em: As conversões podem ocorrer quando:


lógica ladder se combina tipos de dados para os parâmetros dentro de
uma instrução
bloco de função se liga dois parâmetros que possuem tipos diferentes de
dados

1 Publicação 1756-RM003D-PT-P - Junho 2001


A-2 Atributos Comuns

As instruções executam mais rápido e necessitam de menos memória


se todos os operandos da instrução usarem:

• os mesmos tipos de dados

• um tipo de dado ótimo:

– Na seção “Operandos“ de cada instrução neste manual, um


tipo de dados em negrito indica um tipo de dado ótimo.
– Os tipos de dados DINT e REAL são geralmente os tipos de
dados ótimos.
– A maioria das instruções do bloco de função somente suporta
um tipo de dados (o tipo de dados ótimo) para os operandos.

Se você combinar os tipos de dados e usar os tags que não são do


tipo de dado ótimo, o controlador converterá os dados de acordo
com estas regras

• Alguns operandos são um valor REAL?

Se: Então os operandos de entrada (por ex.: fonte, tag em uma


expressão, limite) são convertidos em:
sim REALs
não DINTs

• Depois da execução da instrução, o resultado (um valor DINT


ou REAL) é convertido para o tipo de dado de destino, se
necessário.

Não se pode especificar um tag BOOL na instrução que opera em


tipos de dados inteiros ou REAL.

Como a conversão de dados precisa de memória e tempo adicionais,


é possível aumentar a eficiência dos programas através:

• do uso do mesmo tipo de dado em toda a instrução


• da redução do uso de tipos de dados SINT ou INT

Em outras palavras, use todos os tags DINT ou REAL, juntamente com


os valores imediatos, nas suas instruções.

As seções a seguir explicam como os dados serão convertidos ao usar


os tags SINT ou INT ou ao combinar tipos de dados.

Publicação 1756-RM003D-PT-P - Junho 2001


Atributos Comuns A-3

SINT ou INT para DINT

Para aquelas instruções que convertem os valores SINT ou INT em


valores DINT, as seções “Operandos“ neste manual identificam o
método de conversão.

Este método de conversão: Converte os dados, colocando:


extensão de sinal o valor do bit mais à esquerda (o sinal do valor) em cada
posição de bit à esquerda dos bits existentes até que
haja 32 bits.
Preenchimento com zero zeros à esquerda dos bits existentes até que haja 32 bits

O exemplo a seguir mostra os resultados da conversão de um valor


usando uma extensão de sinal e preenchimento com zero.

Este valor. 2#1111_1111_1111_1111 (-1)


Converte para este 2#1111_1111_1111_1111_1111_1111_1111_1111 (-1)
valor por extensão
de sinal
Converte este valor 2#0000_0000_0000_0000_1111_1111_1111_1111 (65535)
por preenchimento
com zero

Como os valores imediatos são sempre preenchidos com zero, a


conversão de um valor SINT ou INT pode produzir resultados
inesperados. No exemplo a seguir, a comparação é falsa porque
Source A, tipo INT, converte por extensão de sinal; enquanto que
Source B, valor imediato, é preenchida com zero.
der Logic Listing - Total number of rungs: 3

EQU
Equal
Source A remote_rack_1:I.Data[0]
2#1111_1111_1111_1111
Source B 2#1111_1111_1111_1111
42093

Publicação 1756-RM003D-PT-P - Junho 2001


A-4 Atributos Comuns

Se você usar um tag SINT ou INT e um valor imediato em uma


instrução que converte dados por extensão de sinal, use um destes
métodos para manusear os valores imediatos:

• Especifique um valor imediato na base decimal

• Se você estiver inserindo o valor em uma base diferente da


decimal, especifique todos os 32 bits do valor imediato. Para
tanto, insira o valor no bit à esquerda em cada posição de bit a
sua esquerda até que haja 32 bits.

• Crie um tag para cada operando e use o mesmo tipo de dados


em toda a instrução. Para atribuir um valor constante, é possível:

– Insirir um valor em uma dessas variáveis


– Acrescentar uma instrução MOV que move o valor para um
dos tags.
• Use uma instrução MEQ para verificar somente os bits
requisitados.

Os exemplos a seguir mostram duas formas de misturar um valor


imediato com um tag INT. Os dois exemplos verificam os bits de um
módulo 1771 de E/S para determinar se todos os bits estão
energizados. Como a palavra de dados de entrada de um módulo
1771 de E/S é um tag INT, é mais fácil usar um valor constante de 16
bits.

EXEMPLO Exemplo :Combinação de um tag INT com um valor


imediato
Já que remote_rack_1:I.Data[0] é um tag INT, o valor
com o qual deve ser comparado também é inserido
como um tag INT.

EQU
Equal
Source A remote_rack_1:I.Data[0]
2#1111_1111_1111_1111
Source B int_0
2#1111_1111_1111_1111
42093

Publicação 1756-RM003D-PT-P - Junho 2001


Atributos Comuns A-5

EXEMPLO Exemplo: Combinação de um tag INT com um valor


imediato
Já que remote_rack_1:I.Data[0] é um tag INT, o valor
com o qual deve ser comparado primeiro se move
para int_0, em um tag INT, também. Em seguida, a
instrução EQU compara os dois tags.
2#1111_1111_1111_1111

MOV EQU
Move Equal
Source 2#1111_1111_1111_1111 Source A remote_rack_1:I.Data[0]
2#1111_1111_1111_1111
Dest int_0 Source B int_0
2#1111_1111_1111_1111 2#1111_1111_1111_1111
42093

Inteiro para REAL

O controlador armazena os valores REAL em uma precisão única


IEEE, formato de número de ponto flutuante. Use um bit para o sinal
do valor, 23 bits para o valor base e 8 bits para o expoente (total de
32 bits). Se combinar um tag de inteiro (SINT, INT ou DINT) e um tag
REAL como entradas na mesma instrução, o controlador converte o
valor inteiro em REAL antes da instrução ser executada.

• Um valor SINT ou INT sempre é convertido para o mesmo valor


REAL.

• Um valor DINT pode não ser convertido para o mesmo valor


REAL:

– Um valor REAL usa até 24 bits para o valor base (23 bits
armazenados mais um bit "escondido").
– Um valor DINT usa até 32 bits para o valor (um para o sinal e
31 para o valor).
– Se o valor DINT requerer mais do que 24 bits significativos,
pode não converter para o mesmo valor REAL. Se não
converter, o controlador arredonda para o valor REAL mais
próximo, usando 24 bits significativos.

DINT para SINT para INT

Para converter um valor DINT para um valor SINT ou INT, o


controlador trunca a parte superior de DINT e energiza o flag de

Publicação 1756-RM003D-PT-P - Junho 2001


A-6 Atributos Comuns

status de overflow, se necessário. O exemplo a seguir mostra o


resultado de um conversão de DINT para SINT ou INT.

EXEMPLO Conversão de um DINT para um INT e um SINT

Este valor DINT: Converte para este valor menor:


16#0001_0081 (65.665) INT: 16#0081 (129)
SINT: 16#81 (-127)

REAL para um inteiro

Para converter um valor REAL para um valor inteiro, o controlador


arredonda a parte fracionária e trunca a parte superior da parte não
fracionária. Se os dados forem perdidos, o controlador energiza o flag
de status de overflow. Os números são arredondados da seguinte
forma:

• Números diferentes de x,5 são arredondados para o número


inteiro mais próximo.
• X,5 é arredondado para o número par mais próximo.

O exemplo a seguir mostra o resultado da conversão de valores REAL


em valores DINT.

EXEMPLO Conversão de valores REAL em valores DINT

Este valor REAL: Converte para este valor DINT:


-2,5 -2
-1,6 -2
-1,5 -2
-1,4 -1
1,4 1
1,5 2
1,6 2
2,5 2

Publicação 1756-RM003D-PT-P - Junho 2001


Atributos Comuns A-7

IMPORTANTE Os flags de status aritmético são baseados no valor a


ser armazenado. As instruções que normalmente não
afetam as palavras-chaves do status aritmético
podem parecer fazê-lo se a conversão de tipo
ocorrer por causa dos tipos de dados para os
parâmetros da instrução. O processo de conversão
de tipo define as palavras-chaves do status
aritmético.

Publicação 1756-RM003D-PT-P - Junho 2001


A-8 Atributos Comuns

Publicação 1756-RM003D-PT-P - Junho 2001


Apêndice B

Atributos de Bloco de Função

Introdução Este apêndice descreve características únicas das instruções de bloco


de função. Estude as informações deste apêndice para entender
corretamente como as rotinas de bloco de função operarão.

IMPORTANTE Quando programar no bloco de função, limite a faixa de unidade de


medida para +/-10+/-15 pois os cálculos internos de ponto flutuante
são feitos usando ponto flutuante de precisão única. As unidades de
medida fora desta faixa podem acarretar em perda de precisão se os
resultados se aproximarem das limitações do ponto flutuante de
precisão única (+/-10+/-38).

Dados Retentivos Se usar um IREF para especificar dados de entrada para uma instrução
de bloco de função, os dados neste IREF serão retidos para a
varredura da rotina do bloco de função. O IREF retém dados de tags
de uso geral do controlador e específicos do programa. O controlador
atualiza todos os dados IREF no início de cada varredura.

IREF

Neste exemplo, o valor de tagA é armazenado no início da execução


da rotina. O valor armazenado é usado na execução do Block_01.
Este mesmo valor é também usado na execução do Block_02. Se o
valor de tagA se altera durante a execução da rotina, o valor
armazenado de tagA no IREF não se altera até a próxima execução da
rotina.
Block_01

tagA

Block_02

1 Publicação 1756-RM003D-PT-P - Junho 2001


B-2 Atributos de Bloco de Função

Este exemplo é igual ao do anterior. O valor de tagA é armazenado


somente uma vez no início da execução da rotina. A rotina usa este
valor armazenado durante toda a rotina.
Block_01

tagA

Block_02

tagA

Ordem de Execução O software de programação RSLogix 5000 determina automaticamente


a ordem de execução para os blocos de função na rotina quando:

• se verifica uma rotina de bloco de função


• se verifica um projeto que contém uma rotina de bloco de
função
• se descarrega um projeto que contém uma rotina de bloco de
função

Define-se a ordem de execução através da conexão de blocos de


função juntos e da indicação de fios localizados de feedback, se
necessário.

Se os blocos de função não são conectados juntos, não existe ordem


de execução para determinar.

Se os blocos são conectados sequencialmente, a ordem de execução


se move da entrada para saída. As entradas de um bloco devem estar
disponíveis antes que o controlador possa executar este bloco. Por
exemplo, o bloco 2 deve executar antes do bloco 3, pois as saídas do
bloco 2 alimentam as entradas do bloco 3.

1 2 3

Publicação 1756-RM003D-PT-P - Junho 2001


Atributos de Bloco de Função B-3

A ordem de execução se refere somente aos blocos que são


conectados juntos. O exemplo a seguir está correto pois os dois
grupos de blocos não estão conectados juntos. Os blocos dentro de
um grupo específico executam a ordem apropriada em relação aos
blocos daquele grupo.

1 3 5

2 4 6

Se um grupo de blocos estiver em uma malha, o controlador não


pode determinar que entradas devem estar disponíveis primeiro. Use
um fio de feedback localizado para determiná-las. Se um pino de
entrada estiver conectado a um fio de feedback localizado, a entrada
não deve estar disponível antes que o bloco possa executar. Neste
exemplo, o bloco 1 usa a saída do bloco 3 que foi produzido na
execução anterior da rotina.

1 2 3

fio de feedback localizado

Em resumo, uma rotina de bloco de função executa nesta ordem:

1. O controlador retém todos os valores de dados nos IREFs.

2. O controlador executa os outros blocos de função para


determinar como são conectados.

3. O controlador escreve saídas nos OREFs.

Publicação 1756-RM003D-PT-P - Junho 2001


B-4 Atributos de Bloco de Função

Respostas de Bloco de Em geral, as instruções de bloco de função que mantêm o histórico


não o atualiza com valores ±NAN, ou ±INF quando um overflow
Função para Condições de ocorre. Cada instrução tem uma destas respostas para uma condição
Overflow de overflow:

Resposta 1: Resposta 2: Resposta 3:


Os blocos executam seus algoritmos e Os blocos com saídas de limitação A condição de overflow não se aplica. Estas
verificam o resultado para ±NAN ou ±INF. executam seus algoritmos e verificam o instruções possuem geralmente uma saída
Se ±NAN ou ±INF, as saídas de bloco resultado por ±NAN ou ±INF. Os limites de booleana.
±NAN ou ±INF. saída são definidos pelos parâmetros de
entrada HighLimit e LowLimit. Se ±INF, o
bloco produz um resultado limitado.
Se ±NAN, os limites da saída não são
usados e os blocos produzem ±NAN.
ALM NTCH HLL BAND OSRI
DEDT PMUL INTG BNOT RESD
DERV POSP PI BOR RTOR
ESEL RLIM PIDE BXOR SETD
FGEN RMPS SCL CUTD TOFR
HPF SCRV SOC D2SD TONR
LDL2 SEL D3SD
LDLG SNEG DFF
LPF SRTP JKFF
MAVE SSUM OSFI
MAXC TOT
MINC UPDN
MSTD
MUX

Modos de Temporização Estas instruções de controle de processo e inversor suportam modos


diferentes de temporização.

DEDT NTCH
DERV PI
HPF PIDE
INTG RLIM
LDLG SCRV
LDL2 SOC
LPF TOT

Publicação 1756-RM003D-PT-P - Junho 2001


Atributos de Bloco de Função B-5

Existem três modos de temporização diferentes:

Modo de Temporização: Descrição:


periódico No modo periódico, o período delta (Delta T) usado pela instrução é a taxa de varredura da tarefa quando a
instrução é executada dentro de uma tarefa periódica. Se a instrução for executada em uma tarefa contínua,
o Delta T é igual ao tempo transcorrido desde a execução anterior.

A atualização da entrada do processo deve ser sincronizada com a execução da tarefa ou amostragem 5-10
vezes mais rápida do que a da tarefa, a fim de minimizar o erro de amostragem entre a entrada e
a instrução.
amostragem configurada No modo de amostragem configurada, o período delta (Delta T) usado pela instrução é o valor escrito no
parâmetro OversampleDT da instrução. Use este modo quando a instrução executa em uma tarefa contínua
e a entrada do processo não tem timestamp associado com as atualizações. Se a entrada do processo tiver
timestamp, prefira usar o modo de amostragem em tempo real.

Adicione lógica para o programa controlar quando a instrução executa. Por exemplo, pode-se usar um
temporizador ajustado para o valor OversampleDeltaT para controlar a execução usando a entrada EnableIn
da instrução.

A entrada do processo deve ser amostrada 5-10 vezes mais rápido do que a execução da instrução, a fim de
minimizar o erro de amostragem entre a entrada e a instrução.
amostragem em tempo real No modo de amostragem em tempo real, o período delta (Delta T) usado pela instrução é a diferença entre
dois valores de registro de data e hora que correspondem às atualizações da entrada do processo. Use este
modo quando a instrução executa em uma tarefa contínua e a entrada do processo tem um registro de data
e hora associado às atualizações.

O valor de registro de data e hora é lido a partir do nome do tag inserido no parâmetro RTSTimeStamp da
instrução. Normalmente, este nome de tag é um parâmetro no módulo de entrada associado com a entrada
do processo.

A instrução compara o valor configurado RTSTime (período programado de atualização) com o DeltaT
calculado para determinar se todas as atualizações da entrada do processo estão sendo lidas pela
instrução. Se o DeltaT não estiver dentro de 1 milissegundo do tempo de configuração, a instrução ajusta o
bit de status RTSMissed para indicar que um problema existe na leitura de atualizações para a entrada no
módulo.

As instruções baseadas no tempo requerem um valor constante para o


DeltaT, para que o algoritmo de controle calcule adequadamente a
saída do processo. Se o DeltaT varia, uma descontinuidade ocorre na
saída do processo. A gravidade da descontinuidade depende da
instrução e a faixa da variação do DeltaT. Uma descontinuidade
ocorre se:

• a instrução não é executada durante uma varredura.


• a instrução é executada múltiplas vezes durante uma tarefa.
• a tarefa estiver operando e a taxa de varredura da tarefa ou o
tempo de amostra da entrada do processo se altera.
• o usuário altera o modo de base de tempo enquanto a tarefa
estiver operando.
• O parâmetro de ordem é alterado no bloco de filtro enquanto a
tarefa está operando. A alteração do parâmetro Order seleciona
um algoritmo de controle diferente dentro da instrução.

Publicação 1756-RM003D-PT-P - Junho 2001


B-6 Atributos de Bloco de Função

Parâmetros comuns de instrução para modos de temporização

As instruções que suportam modos de base de tempo possuem estes


parâmetros de entrada e saída:

Parâmetros de entrada

Parâmetro de Tipo de Dados: Descrição:


Entrada:
TimingMode DINT Seleciona modo de execução de temporização.
Valor: Descrição:
0 modo periódico
1 modo de amostragem configurada
2 modo de amostragem em tempo real

válido = 0 a 2
valor inicial = 0

Quando TimingMode = 0 e a tarefa é periódica, a temporização periódica é habilitada e o


DeltaT é ajustado para a taxa de varredura da tarefa. Quando TimingMode = 0 e a tarefa é
contínua, a temporização periódica é habilitada e o DeltaT é ajustado à amplitude do tempo
transcorrido desde a última vez que a instrução foi executada.

Quando TimingMode = 1, a temporização da amostragem configurada é habilitada e o DeltaT


é ajustado para o valor do parâmetro OversampleDT.

Quando TimingMode = 2, a temporização da amostragem em tempo real é habilitada e o


DeltaT é a diferença entre os valores atual e anterior de registro de data e hora lidos a partir
do módulo associado com a entrada.

Se TimingMode for inválido, a instrução energiza o bit apropriado em Status.


OversampleDT REAL Tempo de execução para temporização de oversample. O valor usado para DeltaT está em
segundos. Se TimingMode = 1, então OversampleDT = 0,0 desabilita a execução do
algoritmo de controle. Se inválido, a instrução ajusta DeltaT=0,0 e energiza o bit apropriado
em Status.
válido = 0 a 4194,303 segundos
valor inicial = 0,0
RTSTime DINT Período de atualização do módulo para temporização de amostragem em tempo real. O
período programado de atualização DeltaT está em milissegundos. O período de atualização
normalmente é o valor que foi usado para configurar o tempo de atualização do módulo. Se
inválido, a instrução energiza o bit apropriado em Status e desabilita a verificação
RTSMissed.
válido = 1 a 32.767 ms
valor inicial = 1
RTSTimeStamp DINT Valor de registro de data e hora do módulo para temporização da amostragem em tempo
real. O valor de registro de data e hora que corresponde à última atualização do sinal de
entrada. Este valor é usado para calcular o DeltaT. Se inválido, a instrução energiza o bit
apropriado em Status, desabilita a execução do algoritmo de controle e desabilita a
verificação do RTSMissed.

válido =1 a 32.767 ms (varia de 32767 a 0)


1 pulso = 1 milissegundo
valor inicial = 0

Publicação 1756-RM003D-PT-P - Junho 2001


Atributos de Bloco de Função B-7

Parâmetros de saída

Parâmetro de Saída: Tipo de Dados: Descrição:


DeltaT REAL Tempo transcorrido entre atualizações. Este é o tempo transcorrido em segundos usado pelo
algoritmo de controle para calcular a saída de processo.

Periódico: DeltaT = taxa de varredura da tarefa se a tarefa for Periodic, DeltaT = tempo
transcorrido desde a execução da instrução anterior se a tarefa for Continuous

Amostragem Configurada: DeltaT = OversampleDT

Amostragem em Tempo Real: DeltaT = (RTSTimeStampn - RTSTimeStampn-1)


Status: DINT Status do bloco de função.
TimingModeInv BOOL Valor Invalid TimingMode.
(Status.27)
RTSMissed (Status.28) BOOL Usado somente no modo de amostragem em tempo real. Ajustado quando o ABS | DeltaT -
RTSTime | > 1 (,001 segundo).
RTSTimeInv BOOL Valor Invalid RTSTime.
(Status.29)
RTSTimeStampInv BOOL Valor Invalid RTSTimeStamp.
(Status.30)
DeltaTInv (Status.31) BOOL Valor Invalid DeltaT.

Publicação 1756-RM003D-PT-P - Junho 2001


B-8 Atributos de Bloco de Função

Características dos modos de temporização

O diagrama a seguir mostra como uma instrução determina o modo


apropriado de temporização.

Determina o modo baseado


no tempo

TimingMode = 0 TimingMode = 1 TimingMode = 2

Temporização na
Temporização periódica Temporização em tempo real
amostragem configurada

DeltaT = OversampleDT DeltaT = RTSTimeStampn - RTSTimeStampn-1

Se DeltaT < 0 ou DeltaT > 4194,303 segs. Se DeltaT > 0, a instrução executa.
a instrução ajusta DeltaT = 0,0 e
energiza o bit apropriado em Status. Se |RTSTIME - DeltaT| > 1, a instrução energiza o bit
RTSMissed em Status.
Se DeltaT > 0, a instrução executa.
Determine o tipo de tarefa

Tarefa periódica Tarefa não periódica

DeltaT = tempo de varredura da tarefa DeltaT = tempo transcorrido desde a


última execução
Se DeltaT > 0, a instrução executa.
Se DeltaT > 0, a instrução executa.

Publicação 1756-RM003D-PT-P - Junho 2001


Atributos de Bloco de Função B-9

Controle de Programa/pelo Diversas instruções suportam o conceito de controle de


Programa/pelo Operador. Estas instruções incluem:
Operador
• Enhanced Select (ESEL)
• Totalizer (TOT)
• Enhanced PID (PIDE)
• Ramp/Soak (RMPS)
• Discrete 2-State Device (D2SD)
• Discrete 3-State Device (D3SD)

O controle de programa/pelo operador permite que se controle estas


instruções simultaneamente tanto a partir do programa do usuário
como do dispositivo de interface de operação. Quando estiver em
controle de Programa, a instrução é controlada pelas entradas de
Programa para a instrução; quando estiver em controle pelo
Operador, a instrução é controlada pelas entradas do Operador para
a instrução.

O controle de Program ou pelo Operador é determinado através do


uso destas entradas:

Entrada: Descrição:
.ProgProgReq Um programa solicita para ir ao controle de
Programa.
.ProgOperReq Um programa solicita para ir ao controle pelo
Operador.
.OperProgReq Um operador solicita para ir ao controle de
Programa.
.OperOperReq Um operador solicita para ir ao controle pelo
Operador.

Para determinar se uma instrução está no controle de Programa ou


pelo Operador, examine a saída ProgOper. Se ProgOper estiver
energizado, a instrução está no controle de Programa; se ProgOper
estiver desenergizado, a instrução está no controle pelo Operaçãor.

O controle pelo Operador precede o controle de Programa se ambos


os bits de solicitações forem energizados. Por exemplo, se ambos
ProgProgReq e ProgOperReq estiverem energizados, a instrução vai
para o controle pelo Operador.

Publicação 1756-RM003D-PT-P - Junho 2001


B-10 Atributos de Bloco de Função

As entradas de solicitação de Program precedem as entradas de


solicitação do Operador. Isto possibilita que as entradas ProgProgReq
e ProgOperReq “travem” uma instrução em um controle desejado. Por
exemplo, supondo que uma instrução Totalizer irá sempre ser usada
no controle pelo Operador e o programa do usuário nunca controlará
a operação ou desligamento de Totalizer. Neste caso, seria possível
ligar um valor literal de 1 em ProgOperReq. Isto preveniria o
operador de colocar o Totalizer no controle de Programa através do
ajuste de OperProgReq a partir do dispositivo da interface de
operação.

Uma vez que a entrada ProgOperReq


sempre está energizada, nada
acontece ao apertar o botão
“Program” na tela de operação (que
energiza a entrada OperProgReg).
Normalmente, o ajuste de
OperProgReq coloca TOT no controle

Ligar um “1” em ProgOperReq significa


que o programa do usuário deseja que
TOT esteja no controle pelo Operador.

Publicação 1756-RM003D-PT-P - Junho 2001


Atributos de Bloco de Função B-11

Da mesma maneira, o ajuste constante do ProgProgReq pode "travar"


a instrução no controle de Programa. Isto é útil para sequências de
startup automático quando se deseja que o programa controle a ação
da instrução sem se preocupar se um operador está assumindo o
controle inadvertidamente da instrução. Neste exemplo, o programa
está energizando a entrada ProgProgReq durante o startup e depois
desenergizando a entrada ProgProgReq assim que o startup é
concluído. Uma vez que a entrada ProgProgReq for desenergizada, a
instrução se mantém no controle de Programa até que receba um
pedido de alteração. Por exemplo, o operador pode energizar a
entrada OperOperReq na tela de operação para assumir o controle da
instrução. O exemplo a seguir mostra como se trava uma instrução no
controle de Programa.

Quando StartupSequenceActive
é energizada, a instrução PIDE é
colocada no controle de
Programa e no modo Manual. O
valor StartupCV é usado como
uma saída de malha.

As entradas de pedido do operador sempre são desenergizadas pela


instrução quando esta executa. Isto permite que as interfaces de
operação trabalhem com estas instruções pela simples energização do
bit de solicitação no modo desejado. Não é preciso programar a
interface de operação para resetar os bits solicitados. Por exemplo, se
uma interface de operação energiza a entrada OperAutoReq para uma
instrução PIDE, quando a instrução PIDE executa, ela determina qual
seria a resposta apropriada e desenergiza o OperAutoReq.

As entradas de solicitação do programa são normalmente


desenergizadas pela instrução pois estas são normalmente conectadas
como entradas na instrução. Se a instrução desenergiza estas entradas,
a entrada seria apenas energizada novamente pela entrada conectada.
Pode haver situações onde se deseja usar outra lógica para ajustar as
solicitações de Programa de maneira que estas sejam desenergizadas
pela instrução. Neste caso, pode-se energizar a entrada
ProgValueReset e a instrução sempre desenergizará as entradas de
solicitação do modo de Programa ao executá-la..

Publicação 1756-RM003D-PT-P - Junho 2001


B-12 Atributos de Bloco de Função

Neste exemplo, uma linha de lógica de diagrama ladder em outra


rotina é usada para reter em monoestável um ProgAutoReq para uma
instrução PIDE quando um botão é pressionado. Como a instrução
PIDE desenergiza automaticamente as solicitações do modo de
Programa, não é preciso escrever qualquer lógica de diagrama ladder
para desenergizar o ProgAutoReq após a execução da rotina e a
instrução PIDE irá receber somente uma solicitação para passar para
Auto toda vez que o botão for apertado.

Quando o Botão TIC101AutoReq for pressionado, monoestável retém ProgAutoReq para a instrução PIDE
TIC101. O TIC101 foi configurado com o ajuste da entrada ProgValueReset, então quando a instrução PIDE
executa, esta desenergiza automaticamente ProgAutoReq.

Publicação 1756-RM003D-PT-P - Junho 2001


Índice

A conversão para BCD 15-8


adição 5-6 conversão para inteiro 15-12
AHL 16-14 cópia 7-32
ajuste 12-27 cópia síncrona 7-32
alarmes 12-28 co-seno 13-5
anexar leitura ASCII 16-24
arco co-seno 13-14 D
arco seno 13-11 dados retentivos B-1
arco tangente 13-16 dados transicionais 12-18
arquivamento aritmético e lógico 7-7 definição do valor do sistema 3-28
atributos desabilitação da interrupção pelo usuário 10-18
conversão de tipos de dados A-1 descarga FIFO 8-16
valores imediatos A-1 descarga LIFO 8-28
atributos comuns A-1 desenergizar saída com retenção 1-7
conversão de tipos de dados A-1 deslocamento de bit para a direita 8-6
valores imediatos A-1 deslocamento de bit para a esquerda 8-2
desvio padrão 7-49
B detecção de diagnóstico 12-10
base log de 10 14-4 diferente de 4-38
bitwise AND 6-17 DINT Para String 18-7
bitwise exclusive OR 6-25 distribuição do campo do bit 6-10
bitwise NOT 6-29 distribuição do campo do bit com target 6-13
bitwise OR 6-21 divisão 5-15
break 11-5 divisão do módulo 5-19
busca de string 17-7
E
C elementos
cálculo 5-2 instrução SIZE 7-53
caracteres ASCII no buffer 16-10 Encontro de String 17-7
carga do sequenciador 9-12 energizar saída 1-5
carga FIFO 8-10 energizar saída com retenção 1-6
carga LIFO 8-22 entrada do sequenciador 9-2
classificação 7-45 escala 12-29
códigos de erro escrita ASCII 16-28
ASCII 16-5 estrutura CONTROL 7-7, 7-20, 7-41, 7-45, 7-49, 8-2,
instrução MSG 3-7 8-6, 8-10, 8-17, 8-22, 8-28, 9-2, 9-7, 9-12,
combinação de tipos de dados A-1 12-3, 12-11
comparação 4-2 estrutura da MENSAGEM 3-2
comparação de bit de arquivo 12-2 estrutura do CONTADOR 2-23, 2-27
comparação e busca de arquivo 7-20 estrutura do tipo string 16-6
Concatenação de String 17-3 estrutura FBD_BIT_FIELD_DISTRIBUTE 6-13
condições de overflow B-5 estrutura FBD_COMPARE 4-8, 4-12, 4-16, 4-20, 4-24,
configuração 3-13 4-39
instrução MSG 3-13 estrutura FBD_CONVERT 6-29, 15-8, 15-12
instrução PID 12-26 estrutura FBD_COUNTER 2-31
contagem crescente 2-23 estrutura FBD_LIMIT 4-28
contagem crescente/decrescente 2-31 estrutura FBD_LOGICAL 6-17, 6-21, 6-25
contagem decrescente 2-27 estrutura FBD_MASK_EQUAL 4-34
controle de programa/pelo operador estrutura FBD_MASKED_MOVE 6-7
características gerais B-10 estrutura FBD_MATH 5-7, 5-10, 5-13, 5-16, 5-20,
conversão de tipos de dados A-1 14-7

Publicación 1756-RM003D-PT-P - Junho 2001


2 Índice

estrutura FBD_MATH_ADVANCED 5-23, 5-26, 5-29, H


13-2, 13-5, 13-8, 13-11, 13-14, 13-17, 14-2, habilitação da interrupção pelo usuário 10-18
14-5, 15-2, 15-5
estrutura FBD_TIMER 2-14, 2-17, 2-20
estrutura FBD_TRUNCATE 15-15 I
estrutura SERIAL_PORT_CONTROL 16-2, 16-5, 16-7, igual a 4-7
16-10, 16-14, 16-18, 16-21, 16-25, 16-29 Inserção de String 17-9
estrutura STRING 16-6, 17-2, 18-2 instrução 16-14
estrutura TEMPORIZADOR 2-2, 2-6, 2-10 instrução ABL 16-7
estrutura tipo string 17-2, 18-2 instrução ABS 5-29
estruturas instrução ACB 16-10
CONTADOR 2-23, 2-27 instrução ACL 16-12
CONTROL 7-7, 7-20, 7-41, 7-45, 7-49, 8-2, 8-6, instrução ACS 13-14
8-10, 8-17, 8-22, 8-28, 9-2, 9-7, 9-12, instrução ADD 5-6
12-3, 12-11 instrução AFI 10-20
FBD_BIT_FIELD_DISTRIBUTE 6-13 instrução AND 6-17
FBD_COMPARE 4-8, 4-12, 4-16, 4-20, 4-24, 4-39 instrução ARD 16-17
FBD_CONVERT 6-29, 15-8, 15-12 instrução ARL 16-20
FBD_COUNTER 2-31 instrução ASN 13-11
FBD_LIMIT 4-28 instrução ATN 13-16
FBD_LOGICAL 6-17, 6-21, 6-25 instrução AVE 7-41
FBD_MASK_EQUAL 4-34 instrução AWA 16-24
FBD_MASKED_MOVE 6-7 instrução AWT 16-28
FBD_MATH 5-7, 5-10, 5-13, 5-16, 5-20, 14-7 instrução BRK 11-5
FBD_MATH_ADVANCED 5-23, 5-26, 5-29, 13-2, instrução BSL 8-2
13-5, 13-8, 13-11, 13-14, 13-17, 14-2, instrução BSR 8-6
14-5, 15-2, 15-5 instrução BTD 6-10
FBD_TIMER 2-14, 2-17, 2-20 instrução BTDT 6-13
FBD_TRUNCATE 15-15 instrução CLR 6-16
instrução RES 2-35 instrução CMP 4-2
MSG 3-2 instrução CONCAT 17-3
PID 12-22 instrução COP 7-32
SERIAL_PORT_CONTROL 16-2, 16-5, 16-7, 16-10, instrução COS 13-5
16-14, 16-18, 16-21, 16-25, 16-29 instrução CPS 7-32
STRING 16-6, 17-2, 18-2 instrução CPT 5-2
TEMPORIZADOR 2-2, 2-6, 2-10 instrução CTD 2-27
tipo string 16-6, 17-2, 18-2 instrução CTU 2-23
examinar se energizado 1-3 instrução CTUD 2-31
exponencial 14-7 instrução DDT
expressões modo de busca 12-12
formato 4-6, 5-4, 7-19, 7-30 operandos 12-10
operadores válidos 4-4, 5-4, 7-18, 7-30 instrução de conversão
seqüência de operação 4-6, 5-5, 7-19, 7-31 TOD 15-8
instrução DEG 15-2
instrução DELETE 17-5
F instrução DIV 5-15
feedforward 12-38 instrução DTOS 18-7
fim temporário 10-13 instrução DTR 12-18
flags de status aritmético instrução EQU 4-7
overflow B-5 instrução FAL
modo de operação 7-2
G operandos 7-7
grau 15-2 instrução FBC
modo de busca 12-4

Publicación 1756-RM003D-PT-P - Junho 2001


Índice 3

operandos 12-2 ajuste 12-27


instrução FFL 8-10 alarmes 12-28
instrução FFU 8-16 configuração 12-26
instrução FIND 17-7 conversão de escala 12-29
instrução FLL 7-37 estrutura 12-22
instrução FOR 11-2 feedforward 12-38
instrução FRD 15-12 polarização da saída (bias) 12-38
instrução FSC zona morta 12-37
modo de operação 7-2 instrução RAD 15-5
operandos 7-20 instrução RES 2-35
instrução GEQ 4-11 instrução RET 10-4, 11-7
instrução GRT 4-15 instrução RTO 2-10
instrução GSV instrução RTOR 2-20
objetos 3-30 instrução RTOS 18-9
operandos 3-28 instrução SBR 10-4
instrução INSERT 17-9 instrução sempre falsa 10-20
instrução JMP 10-2 instrução SIN 13-2
instrução JSR 10-4 instrução SQI 9-2
instrução LBL 10-2 instrução SQL 9-12
instrução LEQ 4-19 instrução SQO 9-7
instrução LES 4-23 instrução SQR 5-23
instrução LFL 8-22 instrução SRT 7-45
instrução LFU 8-28 instrução SSV
instrução LIM 4-27 objetos 3-30
instrução LN 14-2 operandos 3-28
instrução LOG 14-4 instrução STOD 18-3
instrução MCR 10-15 instrução STOR 18-5
instrução MEQ 4-33 instrução SUB 5-9
instrução MID 17-11 instrução TAN 13-8
instrução MOD 5-19 instrução TND 10-13
instrução MOV 6-2 instrução TOD 15-8
instrução MSG 3-13 instrução TOF 2-6
códigos de erro 3-7 instrução TOFR 2-17
conexão de cache 3-27 instrução TON 2-2
estrutura 3-2 instrução TONR 2-14
método de comunicação 3-26 instrução TRN 15-15
operandos 3-2 instrução UID 10-18
instrução MUL 5-12 instrução UIE 10-18
instrução MVM 6-4 instrução XIO 1-3
instrução MVMT 6-7 instrução XOR 6-25
instrução NEG 5-26 instrução XPY 14-7
instrução NEQ 4-38 instruções
instrução NOP 10-21 binárias 1-1
instrução NOT 6-29 cálculo 5-1
instrução ONS 1-8 comparação 4-1
instrução OR 6-21 contador 2-1
instrução OSF 1-13 controle de programa 10-1
instrução OSFI 1-17 conversão 15-1
instrução OSR 1-10 conversão ASCII 18-1
instrução OSRI 1-15 conversão de string 18-1
instrução OTE 1-5 conversão matemática 15-1
instrução OTL 1-6 deslocamento 8-1
instrução OTU 1-7 entrada/saída 3-1
instrução PID especiais 12-1

Publicación 1756-RM003D-PT-P - Junho 2001


4 Índice

for/break 11-1 SQR 5-23


lógica 6-1 SUB 5-9
manipulação de string 17-1 instruções de comparação
manipulação de string ASCII 17-1 CMP 4-2
matemáticas avançadas 14-1 EQU 4-7
matriz formato da expressão 7-30
movimentação 6-1 formato de expressão 4-6
porta serial 16-1 GEQ 4-11
porta serial ASCII 16-1 GRT 4-15
seqüenciador 9-1 introdução 4-1
temporizador 2-1 LEQ 4-19
trigonométrica 13-1 LES 4-23
instruções ASCII LIM 4-27
ABL 16-7 MEQ 4-33
ACB 16-10 NEQ 4-38
ACL 16-12 operadores válidos 4-4, 7-30
AHL 16-14 seqüência de operação 4-6, 7-31
ARD 16-17 instruções de controle de programa
ARL 16-20 introdução 10-1
AWA 16-24 UID 10-18
AWT 16-28 UIE 10-18
CONCAT 17-3 instruções de controle do programa
DELETE 17-5 AFI 10-20
DTOS 18-7 JMP 10-2
FIND 17-7 JSR 10-4
INSERT 17-9 LBL 10-2
MID 17-11 MCR 10-15
RTOS 18-9 NOP 10-21
STOD 18-3 RET 10-4
STOR 18-5 SBR 10-4
instruções binárias TND 10-13
introdução 1-1 instruções de conversão
ONS 1-8 DEG 15-2
OSF 1-13 FRD 15-12
OSFI 1-17 introdução 15-1
OSR 1-10 RAD 15-5
OSRI 1-15 TRN 15-15
OTE 1-5 instruções de conversão de string
OTL 1-6 DTOS 18-7
OTU 1-7 introdução 18-1
XIO 1-3 RTOS 18-9
instruções de arquivo. Consulte instruções de matriz STOD 18-3
instruções de cálculo STOR 18-5
ABS 5-29 instruções de conversão matemática
ADD 5-6 DEG 15-2
CPT 5-2 FRD 15-12
DIV 5-15 introdução 15-1
formato da expressão 5-4, 7-19 RAD 15-5
introdução 5-1 TOD 15-8
MOD 5-19 TRN 15-15
MUL 5-12 instruções de deslocamento
NEG 5-26 BSL 8-2
operadores válidos 5-4, 7-18 BSR 8-6
seqüência de operação 5-5, 7-19 FFL 8-10

Publicación 1756-RM003D-PT-P - Junho 2001


Índice 5

FFU 8-16 MVMT 6-7


introdução 8-1 instruções de porta serial
LFL 8-22 ABL 16-7
LFU 8-28 ACB 16-10
instruções de entrada/saída ACL 16-12
GSV 3-28 AHL 16-14
introdução 3-1 ARD 16-17
MSG 3-2 ARL 16-20
SSV 3-28 AWA 16-24
instruções de lógica AWT 16-28
introdução 6-1 introdução 16-1
instruções de manipulação de string instruções de seqüenciador
CONCAT 17-3 introdução 9-1
DELETE 17-5 instruções de série
FIND 17-7 RES 2-35
INSERT 17-9 instruções de temporizador
introdução 17-1 TOF 2-6
MID 17-11 TOFR 2-17
instruções de matemática avançada instruções do contador
LOG 14-4 CTD 2-27
XPY 14-7 CTU 2-23
instruções de matriz CTUD 2-31
arquivo/misc. 7-1 introdução 2-1
AVE 7-41 RES 2-35
BSL 8-2 instruções do sequenciador
BSR 8-6 SQI 9-2
COP 7-32 SQL 9-12
CPS 7-32 SQO 9-7
DDT 12-10 instruções do temporizador
deslocamento 8-1 introdução 2-1
FBC 12-2 RES 2-35
FFL 8-10 RTO 2-10
FFU 8-16 RTOR 2-20
FLL 7-37 TON 2-2
FSC 7-20 TONR 2-14
LFL 8-22 instruções especiais
LFU 8-28 DDT 12-10
modo de operação 7-2 DTR 12-18
seqüenciador 9-1 FBC 12-2
SIZE 7-53 introdução 12-1
SQI 9-2 PID 12-21
SQL 9-12 instruções for/break
SQO 9-7 BRK 11-5
SRT 7-45 FOR 11-2
STD 7-49 introdução 11-1
instruções de matriza RET 11-7
FAL 7-7 instruções lógicas
instruções de movimentação AND 6-17
BTD 6-10 NOT 6-29
BTDT 6-13 OR 6-21
CLR 6-16 XOR 6-25
introdução 6-1 instruções matemáticas avançadas
MOV 6-2 introdução 14-1
MVM 6-4 LN 14-2

Publicación 1756-RM003D-PT-P - Junho 2001


6 Índice

instruções PID O
operandos 12-21 objeto AXIS 3-31
instruções STD 7-49 objeto CONTROLLER 3-39
instruções trigonométricas objeto CONTROLLERDEVICE 3-39
ACS 13-14 objeto CST 3-41
ASN 13-11 objeto DF1 3-42
ATN 13-16 objeto FAULTLOG 3-45
COS 13-5 objeto MESSAGE 3-46
introdução 13-1 objeto MODULE 3-48
SIN 13-2 objeto MOTIONGROUP 3-49
TAN 13-8 objeto PROGRAM 3-50
objeto ROUTINE 3-51
L objeto SERIALPORT 3-52
label 10-2 objeto TASK 3-54
leitura ASCII 16-17 objeto WALLCLOCKTIME 3-55
limite 4-27 objetos
linha de leitura ASCII 16-20 AXIS 3-31
linhas ASCII handshake 16-14 CONTROLLER 3-39
log CONTROLLERDEVICE 3-39
base 10 14-4 CST 3-41
natural 14-2 DF1 3-42
log natural 14-2 FAULTLOG 3-45
instrução GSV/SSV 3-30
MESSAGE 3-46
M MODULE 3-48
maior ou igual a 4-11 MOTIONGROUP 3-49
maior que 4-15 PROGRAM 3-50
mascarado igual a 4-33 ROUTINE 3-51
máscaras 12-19 SERIALPORT 3-52
média 7-41 TASK 3-54
Meio do String 17-11 WALLCLOCKTIME 3-55
menor ou igual a 4-19 obtenção do valor do sistema 3-28
menor que 4-23 operadores 4-4, 5-4, 7-18, 7-30
mensagem 3-2 ordem de execução B-2
modo All (todos) 7-2
modo de busca 12-4, 12-12
modo de operação 7-2
P
modo Incremental (Incremento) 7-5 polarização da saída (bias) 12-38
modo Numerical (numérico) 7-3 preenchimento de arquivo 7-37
modos de temporização B-5 proporcional, integral e derivativo 12-21
monoestável 1-8
monoestável borda de descida com entrada 1-17 R
monoestável com borda de descida 1-13 radianos 15-5
monoestável com borda de subida 1-10 raiz quadrada 5-23
monoestável com borda de subida com entrada 1-15 REAL Para String 18-9
movimentação 6-2 rearme do controle mestre 10-15
movimentação mascarada 6-4 remoção de buffer e da fila ASCII 16-12
movimentação mascarada com target 6-7 Remoção de String 17-5
multiplicação 5-12 reset 2-35
retorno 10-4, 11-7
N
negação 5-26 S
saída do sequenciador 9-7

Publicación 1756-RM003D-PT-P - Junho 2001


Índice 7

salto 10-2 truncagem 15-15


salto para sub-rotina 10-4
sem operação 10-21
V
seno 13-2
seqüência de operação 4-6, 5-5, 7-19, 7-31 valor absoluto 5-29
SIZE instrução 7-53 valores imediatos A-1
String Para DINT 18-3
String Para REAL 18-5 X
sub-rotina 10-4 X elevado à potência de Y 14-7
subtração 5-9

Z
T zeramento 6-16
tamanho em elementos 7-53 zona morta 12-37
tangente 13-8
temporizador de desenergização 2-6
temporizador de desenergização com reset 2-17
temporizador de energização 2-2
temporizador de energização com reset 2-14
temporizador retentivo energizado com reset 2-20
temporizador retentivo ligado 2-10
teste ASCII para linha buffer 16-7

Publicación 1756-RM003D-PT-P - Junho 2001


8 Índice

Notas:

Publicación 1756-RM003D-PT-P - Junho 2001


Códigos de Caracteres ASCII

Caracteres Dec Hex Caracteres Dec Hex Caracteres Dec Hex Caracteres Dec Hex
[ctrl-@] NUL 0 $00 SPACE 32 $20 @ 64 $40 ‘ 96 $60
[ctrl-A] SOH 1 $01 ! 33 $21 A 65 $41 a 97 $61
[ctrl-B] STX 2 $02 “ 34 $22 B 66 $42 b 98 $62
[ctrl-C] ETX 3 $03 # 35 $23 C 67 $43 c 99 $63
[ctrl-D] EOT 4 $04 $ 36 $24 D 68 $44 d 100 $64
[ctrl-E] ENQ 5 $05 % 37 $25 E 69 $45 e 101 $65
[ctrl-F] ACK 6 $06 & 38 $26 F 70 $46 f 102 $66
[ctrl-G] BEL 7 $07 ‘ 39 $27 G 71 $47 g 103 $67
[ctrl-H] BS 8 $08 ( 40 $28 H 72 $48 h 104 $68
[ctrl-I] HT 9 $09 ) 41 $29 I 73 $49 i 105 $69
[ctrl-J] LF 10 $l ($0A) * 42 $2A J 74 $4A j 106 $6A
[ctrl-K] VT 11 $0B + 43 $2B K 75 $4B k 107 $6B
[ctrl-L] FF 12 $0C , 44 $2C L 76 $4C l 108 $6C
[ctrl-M] CR 13 $r ($0D) - 45 $2D M 77 $4D m 109 $6D
[ctrl-N] SO 14 $0E . 46 $2E N 78 $4E n 110 $6E
[ctrl-O] SI 15 $0F / 47 $2F O 79 $4F o 111 $6F
[ctrl-P] DLE 16 $10 0 48 $30 P 80 $50 p 112 $70
[ctrl-Q] DC1 17 $11 1 49 $31 Q 81 $51 q 113 $71
[ctrl-R] DC2 18 $12 2 50 $32 R 82 $52 r 114 $72
[ctrl-S] DC3 19 $13 3 51 $33 S 83 $53 s 115 $73
[ctrl-T] DC4 20 $14 4 52 $34 T 84 $54 t 116 $74
[ctrl-U] NAK 21 $15 5 53 $35 U 85 $55 u 117 $75
[ctrl-V] SYN 22 $16 6 54 $36 V 86 $56 v 118 $76
[ctrl-W] ETB 23 $17 7 55 $37 W 87 $57 w 119 $77
[ctrl-X] CAN 24 $18 8 56 $38 X 88 $58 x 120 $78
[ctrl-Y] EM 25 $19 9 57 $39 Y 89 $59 y 121 $79
[ctrl-Z] SUB 26 $1A : 58 $3A Z 90 $5A z 122 $7A
ctrl-[ ESC 27 $1B ; 59 $3B [ 91 $5B { 123 $7B
[ctrl-\] FS 28 $1C < 60 $3C \ 92 $5C | 124 $7C
ctrl-] GS 29 $1D = 61 $3D ] 93 $5D } 125 $7D
[ctrl-^] RS 30 $1E > 62 $3E ^ 94 $5E ~ 126 $7E
[ctrl-_] US 31 $1F ? 63 $3F _ 95 $5F DEL 127 $7F

Publicação 1756-RM003D-PT-P - Junho 2001


Publicação 1756-RM003D-PT-P - Junho 2001 1 PN 957464-55
Substitui Publicação 1756-RM003C-EN-P - Novembro de 2000 © 2001 Rockwell International Corporation.

Você também pode gostar