Prévia do material em texto
Instruções Gerais dos Controladores Logix5000™ 1756-Lx, 1769-Lx, 1789-Lx, 1794-Lx, PowerFlex 700S Manual de Referência Informações Importantes ao Usuário Por causa da diversidade de usos dos produtos descritos nesta publicação, os responsáveis pela aplicação e usos deste equipamento de controle devem certificar-se de que todas as etapas necessárias foram tomadas para garantir que cada aplicação e uso cumpram todos os requisitos de desempenho e segurança, incluindo todas as leis, regulamentações, códigos e padrões aplicáveis. Em nenhum momento a Rockwell Automation (Allen-Bradley) será responsável por danos indiretos ou que possam vir acontecer como resultado do uso ou a aplicação destes produtos. As ilustrações, gráficos, exemplos de programas e de layout mostrados neste manual são apenas para fins ilustrativos. Visto que há diversas variáveis e requisitos associados a qualquer instalação em especial, a Rockwell Automation/Allen-Bradley não assume a responsabilidade (incluindo a responsabilidade por propriedade intelectual) pelo uso real baseado nos exemplos mostrados nesta publicação. A publicação SGI-1.1, Diretrizes de Segurança para Aplicação, Instalação e Manutenção dos Dispositivos de Controle Eletrônico (disponível no escritório local da Rockwell Automation/Allen-Bradley), descreve algumas diferenças importantes entre os equipamentos eletrônicos e dispositivos eletromecânicos, que devem ser levadas em consideração ao utilizar produtos como os descritos nesta publicação. É proibida a reprodução, parcial ou total, deste manual sem a permissão por escrito da Rockwell Automation. Ao longo deste manual, usamos observações a fim de chamar a sua atenção para algumas considerações de segurança. As anotações a seguir acompanham declarações que ajudam você a identificar, evitar um perigo potencial e a reconhecer as suas conseqüências: Allen-Bradley, ControlLogix, DH+, Logix5000, Logix5550, CLP-2, CLP-3, CLP-5 RSLinx, RSLogix 5000, RSNetWorx e SLC são marcas da Rockwell Automation ControlNet é uma marca registrada da ControlNet International, Ltda. Ethernet é uma marca registrada da Digital Equipment Corporation, Intel e Xerox Corporation. ATENÇÃO ! Identifica as informações sobre práticas ou circunstâncias que podem causar danos pessoais ou a morte, danos à propriedade ou perdas econômicas. IMPORTANTE Identifica as informações críticas para aplicação e compreensão bem-sucedidas do produto. Suporte da Rockwell Automation Antes de entrar em contato com a Rockwell Automation para assistência técnica, sugerimos que você revise as informações sobre as localizações de falhas contidas nesta primeira publicação. Caso o problema persista, telefone para o representante local da Rockwell Automation ou entre em contato com a Rockwell Automation por: Telefone Estados Unidos/Canadá 1.440.646.5800 Outras Localidades Você pode obter o número do telefone em seu país através da Internet: 1. Acesse o site http://www.ab.com 2. Clique em Product Support (http://support.automation.rockwell.com) 3. Em Support Centers, clique em Contact Information Internet ⇒ 1. Acesse o site http://www.ab.com 2. Clique em Product Support (http://support.automation.rockwell.com) Notas: Resumo das Alterações Introdução A versão desse documento contém informações novas e atualizadas. Informações Atualizadas Este documento contém as seguintes alterações: • Agora, este documento inclui texto estruturado, além da lógica ladder e bloco de funções. • O início de cada capítulo lista as linguagens disponíveis para as instruções descritas no capítulo. • A tabela de execução de cada instrução inclui uma condição postscan. Este documento contém estas alterações específicas: Alteração: Consulte o capítulo: As instruções BAND, BOR, BXOR e BNOT foram adicionadas a este manual para que o bitwise e as instruções de lógica estejam no mesmo manual. Elas foram removidas do Logix5000 Controllers Process Control and Drives Instruction Set Reference Manual, publicação 1756-RM006. 6 A fonte para uma instrução SIZE pode ser um tag do array. Você não precisa mais especificar o primeiro elemento no array. 7 Adição da instrução JXR que somente era compatível com os controladores SoftLogix5800 10 Adição das instruções EOT, SFP e SFR 10 O Apêndice A contém informações extras sobre retenção de IREFs e OREFs. IREFs e OREFs podem usar o mesmo nome de tag sem alterar os valores de IREFs para um scan. A Um novo apêndice explica como programar em texto estruturado. C 1 Publicação 1756-RM003F-PT-P - Maio 2002 2 Resumo das Alterações Notas: Publicação 1756-RM003F-PT-P - Maio 2002 Localizador de Instrução Onde Encontrar uma Instrução Use este localizador para encontrar detalhes de referência sobre as instruções do Logix (as instruções em cinza estão disponíveis em outros manuais). Este localizador também lista as linguagens de programação que estão disponíveis para as instruções. Se o localizador listar: A instrução está documentada em: um número de página este manual controle de processo Manual de Referência do Conjunto de Instruções dos Inversores e Controle de Processo dos Controladores Logix5000, publicação 1756-RM006 controle de posicionamento (motion) Logix5000 Controllers Motion Instruction Set Reference Manual, publicação 1756-RM007 Instrução: Local: Linguagens: ABL 16-5 lógica ladder texto estruturado ABS 5-26 lógica ladder texto estruturado bloco de funções ACB 16-8 lógica ladder texto estruturado ACL 16-10 lógica ladder texto estruturado ACOS 13-10 texto estruturado ACS 13-10 lógica ladder bloco de funções ADD 5-5 lógica ladder texto estruturado bloco de funções AFI 10-22 lógica ladder AHL 16-12 lógica ladder texto estruturado ALM controle de processo texto estruturado bloco de funções AND 6-21 lógica ladder texto estruturado bloco de funções ARD 16-15 lógica ladder texto estruturado ARL 16-18 lógica ladder texto estruturado ASIN 13-8 texto estruturado ASN 13-8 lógica ladder bloco de funções ATAN 13-12 texto estruturado ATN 13-12 lógica ladder bloco de funções AVE 7-35 lógica ladder AWA 16-22 lógica ladder texto estruturado AWT 16-26 lógica ladder texto estruturado BAND 6-33 texto estruturado bloco de funções BNOT 6-40 texto estruturado bloco de funções BOR 6-35 texto estruturado bloco de funções BRK 11-5 lógica ladder BSL 8-2 lógica ladder BSR 8-5 lógica ladder BTD 6-11 lógica ladder BTDT 6-14 texto estruturado bloco de funções BTR (tipo MSG) 3-2 lógica ladder texto estruturado BTW (tipo MSG) 3-2 lógica ladder texto estruturado BXOR 6-38 texto estruturado bloco de funções CLR 6-17 lógica ladder texto estruturado Instrução: Local: Linguagens: 1 Publicação 1756-RM003F-PT-P - Maio 2002 2 Localizador de Instrução CMP 4-2 lógica ladder CONCAT 17-3 lógica ladder texto estruturado COP 7-25 lógica ladder texto estruturado COS 13-4 lógica ladder texto estruturado bloco de funções CPS 7-25 lógica ladder texto estruturado CPT 5-2 lógica ladder CTD 2-25 lógica ladder CTU 2-22 lógica ladder CTUD 2-29 texto estruturado bloco de funções D2SD controle de processo texto estruturado bloco de funções D3SD controle de processo texto estruturado bloco de funções DDT 12-9 lógica ladder DEDT controle de processo texto estruturado bloco de funções DEG 15-2 lógica ladder texto estruturado bloco de funções DELETE 17-5 lógica ladder texto estruturado DERV controle de processo texto estruturado bloco de funções DFF controle de processo texto estruturado bloco de funções DIV 5-14 lógica ladder texto estruturado bloco de funções DTOS 18-7 lógica ladder texto estruturado DTR 12-16 lógica ladder EOT 10-24 lógica ladder texto estruturado EQU 4-7 lógica ladder texto estruturado bloco de funções Instrução: Local: Linguagens: ESEL controle de processo texto estruturado bloco de funções FAL 7-6 lógica ladder FBC 12-2 lógica ladder FFL 8-8 lógica ladder FFU 8-14 lógicaladder FGEN controle de processo texto estruturado bloco de funções FIND 17-7 lógica ladder texto estruturado FLL 7-31 lógica ladder FOR 11-2 lógica ladder FRD 15-9 lógica ladder bloco de funções FSC 7-17 lógica ladder GEQ 4-10 lógica ladder texto estruturado bloco de funções GRT 4-14 lógica ladder texto estruturado bloco de funções GSV 3-29 lógica ladder texto estruturado HLL controle de processo texto estruturado bloco de funções HPF controle de processo texto estruturado bloco de funções INSERT 17-9 lógica ladder texto estruturado INTG controle de processo texto estruturado bloco de funções JKFF controle de processo texto estruturado bloco de funções JMP 10-2 lógica ladder JSR 10-4 lógica ladder texto estruturado bloco de funções JXR 10-13 lógica ladder LBL 10-2 lógica ladder LDL2 controle de processo texto estruturado bloco de funções Instrução: Local: Linguagens: Publicação 1756-RM003F-PT-P - Maio 2002 Localizador de Instrução 3 LDLG controle de processo texto estruturado bloco de funções LEQ 4-18 lógica ladder texto estruturado bloco de funções LES 4-22 lógica ladder texto estruturado bloco de funções LFL 8-20 lógica ladder LFU 8-26 lógica ladder LIM 4-26 lógica ladder bloco de funções LN 14-2 lógica ladder texto estruturado bloco de funções LOG 14-4 lógica ladder texto estruturado bloco de funções LOWER 18-13 lógica ladder texto estruturado LPF controle de processo texto estruturado bloco de funções MAAT controle de posicionamento (motion) lógica ladder texto estruturado MAFR controle de posicionamento lógica ladder texto estruturado MAG controle de posicionamento lógica ladder texto estruturado MAH controle de posicionamento lógica ladder texto estruturado MAHD controle de posicionamento lógica ladder texto estruturado MAJ controle de posicionamento lógica ladder texto estruturado MAM controle de posicionamento lógica ladder texto estruturado MAOC controle de posicionamento lógica ladder texto estruturado MAPC controle de posicionamento lógica ladder texto estruturado MAR controle de posicionamento lógica ladder texto estruturado Instrução: Local: Linguagens: MAS controle de posicionamento lógica ladder texto estruturado MASD controle de posicionamento lógica ladder texto estruturado MASR controle de posicionamento lógica ladder texto estruturado MATC controle de posicionamento lógica ladder texto estruturado MAVE controle de processo texto estruturado bloco de funções MAW controle de posicionamento lógica ladder texto estruturado MAXC controle de processo texto estruturado bloco de funções MCCP controle de posicionamento lógica ladder texto estruturado MCD controle de posicionamento lógica ladder texto estruturado MCR 10-18 lógica ladder MDF controle de posicionamento lógica ladder texto estruturado MDO controle de posicionamento lógica ladder texto estruturado MDOC controle de posicionamento lógica ladder texto estruturado MDR controle de posicionamento lógica ladder texto estruturado MDW controle de posicionamento lógica ladder texto estruturado MEQ 4-32 lógica ladder texto estruturado bloco de funções MGS controle de posicionamento lógica ladder texto estruturado MGSD controle de posicionamento lógica ladder texto estruturado MGSP controle de posicionamento lógica ladder texto estruturado MGSR controle de posicionamento lógica ladder texto estruturado MID 17-11 lógica ladder texto estruturado Instrução: Local: Linguagens: Publicação 1756-RM003F-PT-P - Maio 2002 4 Localizador de Instrução MINC controle de processo texto estruturado bloco de funções MOD 5-18 lógica ladder texto estruturado bloco de funções MOV 6-3 lógica ladder MRAT controle de posicionamento lógica ladder texto estruturado MRHD controle de posicionamento lógica ladder texto estruturado MRP controle de controle de posicionamento lógica ladder texto estruturado MSF controle de controle de posicionamento lógica ladder texto estruturado MSG 3-2 lógica ladder texto estruturado MSO controle de controle de posicionamento lógica ladder texto estruturado MSTD controle de processo texto estruturado bloco de funções MUL 5-11 lógica ladder texto estruturado bloco de funções MUX controle de processo bloco de funções MVM 6-5 lógica ladder MVMT 6-8 texto estruturado bloco de funções NEG 5-24 lógica ladder texto estruturado bloco de funções NEQ 4-37 lógica ladder texto estruturado bloco de funções NOP 10-23 lógica ladder NOT 6-30 lógica ladder texto estruturado bloco de funções NTCH controle de processo texto estruturado bloco de funções Instrução: Local: Linguagens: ONS 1-11 lógica ladder OR 6-24 lógica ladder texto estruturado bloco de funções OSF 1-16 lógica ladder OSFI 1-16 texto estruturado bloco de funções OSR 1-14 lógica ladder OSRI 1-14 texto estruturado bloco de funções OTE 1-6 lógica ladder OTL 1-7 lógica ladder OTU 1-9 lógica ladder PI controle de processo texto estruturado bloco de funções PID 12-19 lógica ladder texto estruturado PIDE controle de processo texto estruturado bloco de funções PMUL controle de processo texto estruturado bloco de funções POSP controle de processo texto estruturado bloco de funções RAD 15-4 lógica ladder texto estruturado bloco de funções RES 2-33 lógica ladder RESD controle de processo texto estruturado bloco de funções RET 10-4 e 11-6 lógica ladder texto estruturado bloco de funções RLIM controle de processo texto estruturado bloco de funções RMPS controle de processo texto estruturado bloco de funções RTO 2-9 lógica ladder RTOR 2-19 texto estruturado bloco de funções RTOS 18-9 lógica ladder texto estruturado Instrução: Local: Linguagens: Publicação 1756-RM003F-PT-P - Maio 2002 Localizador de Instrução 5 SBR 10-4 lógica ladder texto estruturado bloco de funções SCL controle de processo texto estruturado bloco de funções SCRV controle de processo texto estruturado bloco de funções SEL controle de processo bloco de funções SETD controle de processo texto estruturado bloco de funções SFP 10-26 lógica ladder texto estruturado SFR 10-28 lógica ladder texto estruturado SIN 13-2 lógica ladder texto estruturado bloco de funções SIZE 7-50 lógica ladder texto estruturado SNEG controle de processo texto estruturado bloco de funções SOC controle de processo texto estruturado bloco de funções SQI 9-2 lógica ladder SQL 9-10 lógica ladder SQO 9-6 lógica ladder SQR 5-21 lógica ladder bloco de funções SQRT 5-21 texto estruturado SRT 7-40 lógica ladder texto estruturado SRTP controle de processo texto estruturado bloco de funções SSUM controle de processo texto estruturado bloco de funções SSV 3-29 lógica ladder texto estruturado STD 7-45 lógica ladder STOD 18-3 lógica ladder texto estruturado Instrução: Local: Linguagens: STOR 18-5 lógica ladder texto estruturado SUB 5-8 lógica ladder texto estruturado bloco de funções SWPB 6-18 lógica ladder texto estruturado TAN 13-6 lógica ladder texto estruturado bloco de funções TND 10-16 lógica ladder TOD 15-6 lógica ladder bloco de funções TOF 2-5 lógica ladder TOFR 2-16 texto estruturado bloco de funções TON 2-2 lógica ladder TONR 2-13 texto estruturado bloco de funções TOT controle de processo texto estruturado bloco de funções TRN 15-11 lógica ladder bloco de funções TRUNC 15-11 texto estruturado UID 10-20 lógica ladder texto estruturado UIE 10-20 lógica ladder texto estruturado UPDN controle de processo texto estruturado bloco de funções UPPER 18-11 lógica ladder texto estruturado XIC 1-2 lógica ladder XIO 1-4 lógica ladder XOR 6-27 lógica ladder texto estruturado bloco de funções XPY 14-6 lógica ladder texto estruturado bloco de funções Instrução: Local: Linguagens: Publicação 1756-RM003F-PT-P - Maio 2002 6 Localizador de Instrução Notas: Publicação 1756-RM003F-PT-P - Maio 2002 Prefácio Introdução Este manual é um dos diversosdocumentos de instrução baseado em Logix. Quem Deve Utilizar este Manual Este documento fornece ao programador detalhes sobre cada instrução disponível para um controlador baseado em Logix. Você já deve estar familiarizado sobre como o controlador baseado em Logix armazena e processa dados. Os programadores novos devem ler todos os detalhes sobre uma instrução antes de usá-la. Já programadores mais experientes podem consultar as informações sobre as instruções para verificar os detalhes. Tarefa/Meta: Documentos: Programação do controlador para aplicações seqüenciais Logix5000 Controllers General Instructions Reference Manual, publicação 1756-RM003 Programação do controlador para aplicações de processo ou inversores Manual de Referência do Conjunto de Instruções dos Inversores e Controle de Processo dos Controladores Logix5000 , publicação 1756-RM006 Programação do controlador para aplicações de posicionamento (motion) Logix5000 Controllers Motion Instructions Set Reference Manual, publicação 1756-RM007 Importação de um arquivo de texto ou tags em um projeto Logix5000 Controllers Import/Export Reference Manual, publicação 1756-RM084 Exportação de um projeto ou tags para um arquivo texto Conversão de uma aplicação CLP-5 ou SLC 500 para uma aplicação Logix5000 Logix5550 Controller Converting PLC-5 ou SLC 500 Logic to Logix5550 Logic Reference Manual, publicação 1756-RM085 Você está aqui 1 Publicação 1756-RM003F-PT-P - Maio 2002 2 Prefácio Objetivo do Manual Este manual fornece uma descrição de cada instrução neste formato. Os ícones a seguir ajudam a identificar as informações específicas da linguagem: Essa seção: Fornece este tipo de informação: Nome da instrução identifica a instrução define se a instrução é de entrada ou de saída Operandos lista todos os operandos da instrução Estrutura da instrução lista os valores e os bits de status de controle da instrução, se houver Descrição descreve o uso da instrução define quaisquer diferenças quando a instrução estiver habilitada e desabilitada, se apropriado Flags de Status Aritmético: define se a instrução interfere ou não nos flags de status aritmético consulte o apêndice Atributos Comuns Condições de Falha: define se a instrução gera falhas graves ou de advertência se necessário, define o código e o tipo da falha Execução define a maneira como a instrução opera EXEMPLO fornece pelo menos um exemplo de programação em cada linguagem de programação disponível inclui uma descrição explicando cada exemplo se disponível em lógica ladder, descreve os operandos se disponível em bloco de funções, descreve os operandos Os pinos mostrados no bloco de funções padrão são somente pinos básicos. A tabela de operandos lista todos os pinos possíveis para um bloco de funções. se disponível em texto estruturado, descreve os operandos Este ícone: Indica esta linguagem de programação: lógica ladder texto estruturado bloco de funções Publicação 1756-RM003F-PT-P - Maio 2002 Prefácio 3 Informações Comuns para Todas as Instruções O conjunto de instruções do Logix5000 possui alguns atributos comuns: Convenções e Termos Relacionados Energizar e desenergizar Este manual usa energizar e desenergizar para definir o status de bits (booleanos) e valores (não booleanos): Se um operando ou parâmetro suporta mais do que um tipo de dados, os tipos de dados em negrito indicam os tipos de dados ótimos. Uma instrução executa mais rapidamente e requer menos memória se todos os operandos da instrução usarem o mesmo tipo de dados ótimo, geralmente, DINT ou REAL. Condição de linha de lógica ladder O controlador avalia as instruções de lógica ladder com base na condição da linha que antecede a instrução (entrada da condição da linha). Com base na entrada da condição da linha e na instrução, o controlador define a condição da linha seguindo a instrução (saída da condição da linha) que, por sua vez, afeta qualquer instrução subseqüente. Para obter esta informação: Consulte este apêndice: atributos comuns apêndice Atributos Comuns define: • flags de status aritmético: • tipos de dados • palavras-chaves atributos do bloco de funções apêndice Atributos do Bloco de Funções define: • controle do programa e operador • modos de temporização Este termo: Significa: energizar o bit está energizado em 1 (ON) um valor está energizado em um número diferente de zero desenergizar o bit está desenergizado em 0 (OFF) todos os bits em um valor são desenergizados em 0 instrução de entrada condição da entrada da linha instrução de saída condição da saída da linha Publicação 1756-RM003F-PT-P - Maio 2002 4 Prefácio Se a condição da entrada da linha para uma instrução de entrada for verdadeira, o controlador avalia a instrução e energiza a condição da saída da linha com base nos resultados da instrução. Se a instrução for avaliada como verdadeira, a condição da saída da linha é verdadeira; Se a instrução for avaliada como falsa, a condição da saída da linha é falsa. O controlador também efetua o prescan das instruções. O prescan é um scan especial de todas as rotinas no controlador. O controlador efetua o scan de todas as rotinas e sub-rotinas principais durante o prescan, mas ignora os saltos que poderiam pular a execução das instruções. O controlador executa todas as malhas FOR e chamadas de sub-rotinas. Se uma sub-rotina for chamada mais do que uma vez, ela é executada toda vez que é chamada. O controlador usa o prescan de instruções de lógica ladder para resetar as E/S não retentivas e os valores internos. Durante o prescan, os valores de entrada não são atuais e as saídas não são escritas. As condições a seguir geram a prescan: • Passagem de modo de Programa para Operação • Entrada automática no modo de Operação de uma condição de energização. A prescan não ocorre para um programa quando: • O programa se torna determinado enquanto o controlador está operando. • O programa não é determinado quando o controlador entra no modo Run. Estados do bloco de funções O controlador avalia as instruções do bloco de funções baseado no estado de diferentes condições. Condição Possível: Descrição: prescan O prescan para as rotinas do bloco de funções é igual a das rotinas de lógica ladder. A única diferença é que o parâmetro EnableIn para cada instrução do bloco de funções é desenergizada durante a prescan. primeiro scan da instrução O primeiro scan da instrução se refere à primeira vez que uma instrução é executada após o prescan. O controlador usa o primeiro scan da instrução para ler as entradas em corrente e determinar o estado apropriado em que se deve estar. primeira execução da instrução A primeira operação da instrução se refere a primeira vez que a instrução executa com uma nova instância de estrutura de dados. O controlador usa a primeira operação da instrução para gerar coeficientes e outros armazenamentos de dados que não se alteram para um bloco de funções após o descarregamento inicial. Publicação 1756-RM003F-PT-P - Maio 2002 Prefácio 5 Toda instrução do bloco de funções também inclui os parâmetros EnableIn e EnableOut: • as instruções do bloco de funções executam normalmente quando o EnableIn é energizado. • Quando o EnableIn é desenergizado, a instrução do bloco de funções executa a lógica da prescan, a lógica da postscan ou apenas pula a execução do algoritmo normal. • O EnableOut espelha o EnableIn, porém, se a execução do bloco de funções detecta uma condição de overflow, o EnableOut também é desenergizado. • A execução do bloco de funções reinicia onde parou quando o EnableIn passa de desenergizado para energizado. Porém existem algumas instruções de bloco de funções que especificam funcionalidade especial, como reinicialização, quando o EnableIn passa de desenergizado para energizado. Para instruções do bloco de funções com parâmetros baseados no tempo, sempre quando o modo de temporização estiver no Oversample,a instrução sempre reiniciará onde parou quando o EnableIn passa de desenergizado para energizado. Se o parâmetro EnableIn não estiver conectado, a instrução sempre executa como normal e o EnableIn se mantém energizado. Se desenergizar o EnableIn, este se alterará para energizar na próxima vez que a instrução executar. IMPORTANTE Ao programar o bloco de funções, limite a amplitude das unidades de medida para +/-10+/-15 pois os cálculos de ponto flutuante interno são feitos através de um único ponto flutuante de precisão. As unidades de medida fora desta amplitude podem resultar em perda de precisão se os resultados ficarem próximos às limitações do único ponto flutuante de precisão (+/-10+/-38). Publicação 1756-RM003F-PT-P - Maio 2002 6 Prefácio Notas: Publicação 1756-RM003F-PT-P - Maio 2002 Conteúdo Capítulo 1 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1 Examinar Se Energizado (XIC) . . . . . . . . . . . . . . . . . . . . . . 1-2 Examinar Se Desenergizado (XIO) . . . . . . . . . . . . . . . . . . . 1-4 Energizar Saída (OTE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-6 Energizar Saída com Retenção (OTL) . . . . . . . . . . . . . . . . . 1-7 Desenergizar Saída com Retenção (OTU) . . . . . . . . . . . . . . 1-9 Monoestável (ONS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-11 Monoestável Sensível à Borda de Subida (OSR) . . . . . . . . . 1-14 Monoestável Sensível à Borda de Descida (OSF) . . . . . . . . 1-16 Monoestável Sensível à Borda de Subida com Entrada (OSRI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-18 Monoestável Sensível à Borda de Descida com Entrada (OSFI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-20 Capítulo 2 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1 Temporizador na Energização (TON). . . . . . . . . . . . . . . . . 2-2 Temporizador na Desenergização (TOF) . . . . . . . . . . . . . . 2-5 Temporizador Retentivo (RTO) . . . . . . . . . . . . . . . . . . . . . 2-9 Temporizador na Energização com Reset (TONR) . . . . . . . 2-13 Temporizador na Desenergização com Reset (TOFR) . . . . . 2-16 Temporizador Retentivo com Reset (RTOR) . . . . . . . . . . . . 2-19 Contador Crescente (CTU). . . . . . . . . . . . . . . . . . . . . . . . . 2-22 Contagem Decrescente (CTD) . . . . . . . . . . . . . . . . . . . . . . 2-25 Contagem Crescente/Decrescente (CTUD) . . . . . . . . . . . . . 2-29 Reset (RES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-33 Capítulo 3 Instruções de Entrada/Saída (MSG, GSV, SSV) Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1 Mensagem (MSG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2 Códigos de Erro MSG . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-7 Códigos de Erro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-8 Códigos de Erro Estendido . . . . . . . . . . . . . . . . . . . . . . 3-9 Códigos de Erro do CLP e do SLC (.ERR) . . . . . . . . . . . 3-11 Códigos de Erro de Block-transfer . . . . . . . . . . . . . . . . 3-12 Especificação dos Detalhes da Configuração . . . . . . . . . . . 3-13 Especificação das Mensagens de Leitura e Escrita da Tabela de Dados CIP. . . . . . . . . . . . . . . . . . . . . . . . 3-14 Reconfiguração de um Módulo de E/S . . . . . . . . . . . . . 3-14 Especificar Mensagens CIP Generic. . . . . . . . . . . . . . . . 3-16 Especificação das mensagens do CLP-5. . . . . . . . . . . . . 3-17 Especificação das Mensagens do SLC . . . . . . . . . . . . . . 3-18 Especificação das Mensagens Block-transfer . . . . . . . . . 3-18 Especificação de Mensagens do CLP-3 . . . . . . . . . . . . . 3-19 Especificação das mensagens do CLP-2. . . . . . . . . . . . . 3-20 Exemplos de Configuração MSG . . . . . . . . . . . . . . . . . . . . 3-21 Especificação de Detalhes de Comunicação . . . . . . . . . . . . 3-22 Especificar um caminho . . . . . . . . . . . . . . . . . . . . . . . . 3-22 i Publicação 1756-RM003F-PT-P - Maio 2002 ii Conteúdo Especificar um Módulo de Comunicação ou Endereço do Módulo:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-26 Escolha de uma opção de cache: . . . . . . . . . . . . . . . . . 3-27 Obtenção do Valor do Sistema (GSV) e Definição do Valor do Sistema (SSV) . . . . . . . . . . . . . . . . . . . . . . . . . 3-29 Objetos GSV/SSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-30 Acesso ao objeto CONTROLLER . . . . . . . . . . . . . . . . . 3-31 Acesso ao objeto CONTROLLERDEVICE . . . . . . . . . . . . 3-32 Acesso ao objeto CST. . . . . . . . . . . . . . . . . . . . . . . . . . 3-34 Acesso ao objeto DF1 . . . . . . . . . . . . . . . . . . . . . . . . . 3-35 Acesso ao objeto FAULTLOG . . . . . . . . . . . . . . . . . . . . 3-38 Acesso ao objeto MESSAGE . . . . . . . . . . . . . . . . . . . . . 3-39 Acesso ao objeto MODULE . . . . . . . . . . . . . . . . . . . . . 3-41 Acesso ao objeto MOTIONGROUP . . . . . . . . . . . . . . . 3-42 Acesso ao objeto PROGRAM . . . . . . . . . . . . . . . . . . . . 3-43 Acesso ao objeto ROUTINE . . . . . . . . . . . . . . . . . . . . . 3-44 Acesso ao objeto SERIALPORT . . . . . . . . . . . . . . . . . . . 3-44 Acesso ao objeto TASK . . . . . . . . . . . . . . . . . . . . . . . . 3-46 Acesso ao objeto WALLCLOCKTIME . . . . . . . . . . . . . . . 3-46 Exemplo de Programação GSV/SSV . . . . . . . . . . . . . . . . . . 3-48 Obtenção de informações de falha . . . . . . . . . . . . . . . . 3-48 Configuração de flags de habilitação e desabilitação . . . 3-49 Capítulo 4 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1 Comparação (CMP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2 Expressões CMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4 Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4 Formatação de expressões . . . . . . . . . . . . . . . . . . . . . . 4-4 Determinação da seqüência da operação . . . . . . . . . . . 4-5 Uso de strings em uma expressão. . . . . . . . . . . . . . . . . 4-5 Igual (EQU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-7 Maior ou Igual a (GEQ). . . . . . . . . . . . . . . . . . . . . . . . . . . 4-10 Maior que (GRT). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-14 Menor ou Igual a (LEQ) . . . . . . . . . . . . . . . . . . . . . . . . . . 4-18 Menor Que (LES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-22 Limite (LIM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-26 Máscara Igual a (MEQ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-32 Inserção de um valor de máscara imediato . . . . . . . . . . 4-33 Diferente de (NEQ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-37 Capítulo 5 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-1 Cálculo (CPT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-2 Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-3 Formatação de expressões . . . . . . . . . . . . . . . . . . . . . . 5-4 Determinação da seqüência da operação . . . . . . . . . . . 5-4 Adição (ADD). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-5 Subtração (SUB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-8 Publicação 1756-RM003F-PT-P - Maio 2002 Conteúdo iii Multiplicação (MUL) . . . . . . . .. . . . . . . . . . . . . . . . . . . . . 5-11 Divisão (DIV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-14 Módulo (MOD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-18 Raiz Quadrada (SQR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-21 Negação (NEG). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-24 Valor Absoluto (ABS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-26 Capítulo 6 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1 Movimentação (MOV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-3 Movimento com Máscara (MVM) . . . . . . . . . . . . . . . . . . . . 6-5 Inserção de um valor de máscara imediato . . . . . . . . . . 6-6 Movimentação com Máscara Com Arquivo-Alvo (MVMT) . . 6-8 Distribuição de Bits (BTD). . . . . . . . . . . . . . . . . . . . . . . . . 6-11 Distribuição de Bits com Arquivo-alvo (BTDT). . . . . . . . . . 6-14 Zeramento (CLR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-17 Swap (inversão) de Byte (SWPB) . . . . . . . . . . . . . . . . . . . . 6-18 AND (E) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-21 OR (OU). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-24 Ou Exclusivo (XOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-27 Complementação (NOT) . . . . . . . . . . . . . . . . . . . . . . . . . . 6-30 E Booleano (BAND) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-33 (OU) Booleano (BOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-35 (Ou Exclusivo) Booleano (BXOR) . . . . . . . . . . . . . . . . . . . 6-38 NOT Booleano (BNOT). . . . . . . . . . . . . . . . . . . . . . . . . . . 6-40 Capítulo 7 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-1 Seleção do Modo de Operação . . . . . . . . . . . . . . . . . . . . . 7-2 Modo ALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-2 Modo Numerical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-3 Modo Incremental . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-4 Aritmética de Arquivos (FAL). . . . . . . . . . . . . . . . . . . . . . . 7-6 expressões FAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-15 Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-15 Formatação de expressões . . . . . . . . . . . . . . . . . . . . . . 7-16 Determinação da seqüência da operação . . . . . . . . . . . 7-16 Comparação e Busca de Arquivo (FSC) . . . . . . . . . . . . . . . 7-17 Expressões FSC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-21 Operadores válidos . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-22 Formatação de expressões . . . . . . . . . . . . . . . . . . . . . . 7-22 Determinação da seqüência da operação . . . . . . . . . . . 7-23 Uso de strings em uma expressão. . . . . . . . . . . . . . . . . 7-23 Cópia de Arquivo (COP) Arquivo de Cópia Síncrono (CPS). 7-25 Preenchimento de Arquivo (FLL) . . . . . . . . . . . . . . . . . . . . 7-31 Média de Arquivo (AVE) . . . . . . . . . . . . . . . . . . . . . . . . . . 7-35 Classificação de Arquivo (SRT) . . . . . . . . . . . . . . . . . . . . . 7-40 Desvio Padrão do Arquivo (STD) . . . . . . . . . . . . . . . . . . . 7-45 Tamanho em Elementos (SIZE) . . . . . . . . . . . . . . . . . . . . . 7-50 Publicação 1756-RM003F-PT-P - Maio 2002 iv Conteúdo Capítulo 8 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-1 Deslocamento de Bit para a Esquerda (BSL). . . . . . . . . . . . 8-2 Deslocamento de Bit para a Direita (BSR) . . . . . . . . . . . . . 8-5 Carga FIFO (FFL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-8 Descarga FIFO (FFU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-14 Carga LIFO (LFL). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-20 Descarga LIFO (LFU). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-26 Capítulo 9 Instruções do Seqüenciador (SQI, SQO, SQL) Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-1 Entrada do Seqüenciador (SQI) . . . . . . . . . . . . . . . . . . . . . 9-2 Inserção de um valor de máscara imediato . . . . . . . . . . 9-3 Uso de SQI sem SQO. . . . . . . . . . . . . . . . . . . . . . . . . . 9-5 Saída do Seqüenciador (SQO) . . . . . . . . . . . . . . . . . . . . . . 9-6 Inserção de um valor de máscara imediato . . . . . . . . . . 9-7 Uso de SQI com SQO . . . . . . . . . . . . . . . . . . . . . . . . . 9-9 Reset da posição de SQO. . . . . . . . . . . . . . . . . . . . . . . 9-9 Carga do Seqüenciador (SQL) . . . . . . . . . . . . . . . . . . . . . . 9-10 Capítulo 10 Instruções de Controle do Programa (JMP, LBL, JSR, RET, SBR, JXR, TND, MCR, UID, UIE, AFI, NOP, EOT, SFP, SFR) Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-1 Salto para Label (JMP) Label (LBL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-2 Salto para Sub-rotina (JSR) Sub-rotina (SBR) Retorno da Sub-rotina (RET) . . . . . . . . . . . . . . . . . . . . . . . 10-4 Salto para a Rotina Externa (JXR) . . . . . . . . . . . . . . . . . . . 10-13 Fim Temporário (TND) . . . . . . . . . . . . . . . . . . . . . . . . . . 10-16 Rearme do Controle Mestre (MCR). . . . . . . . . . . . . . . . . . 10-18 Interrupção Desabilitada (UID) Interrupção Habilitada (UIE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-20 Instrução Sempre Falsa (AFI) . . . . . . . . . . . . . . . . . . . . . . 10-22 Sem Operação (NOP) . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-23 Fim da Transição (EOT) . . . . . . . . . . . . . . . . . . . . . . . . . 10-24 Pausa de SFC (SFP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-26 Reset de SFC (SFR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-28 Capítulo 11 Instruções For/Break (FOR, FOR...DO, BRK, EXIT, RET) Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-1 De... (FOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-2 Break (BRK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-5 Return (RET). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-6 Capítulo 12 Instruções Especiais (FBC, DDT, DTR, PID) Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-1 Comparação Entre os Bits de Arquivo (FBC) . . . . . . . . . . . 12-2 Seleção do modo de busca. . . . . . . . . . . . . . . . . . . . . . 12-3 Publicação 1756-RM003F-PT-P - Maio 2002 Conteúdo v Detecção de Diagnóstico (DDT) . . . . . . . . . . . . . . . . . . . . 12-9 Seleção do modo de busca. . . . . . . . . . . . . . . . . . . . . 12-10 Dados Transacionais (DTR) . . . . . . . . . . . . . . . . . . . . . . . 12-16 Inserção de um valor de máscara imediato . . . . . . . . . 12-16 Instrução PID (PID) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-19 Configuração de uma Instrução PID. . . . . . . . . . . . . . . . . 12-23 Especificação de ajuste. . . . . . . . . . . . . . . . . . . . . . . . 12-24 Especificação de configuração . . . . . . . . . . . . . . . . . . 12-24 Especificação de alarmes . . . . . . . . . . . . . . . . . . . . . . 12-25 Especificação de conversão de escala . . . . . . . . . . . . . 12-25 Uso das Instruções PID . . . . . . . . . . . . . . . . . . . . . . . . . . 12-26 Disparo anti-reset e transferência sem interrupção de manual para automático. . . . . . . . . . . . . . . . . . . . 12-28 Temporização da instrução PID . . . . . . . . . . . . . . . . . 12-29 Reinícialização Sem Interrupção . . . . . . . . . . . . . . . . . 12-32 Suavização do derivativo . . . . . . . . . . . . . . . . . . . . . . 12-33 Definição da zona morta . . . . . . . . . . . . . . . . . . . . . . 12-33 Utilização da limitação de saída . . . . . . . . . . . . . . . . . 12-34 Feedforward ou bias de saída. . . . . . . . . . . . . . . . . . . 12-34 Malhas em cascata . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-35 Controle de uma razão. . . . . . . . . . . . . . . . . . . . . . . . 12-35 Teoria PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-37 processo PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-37 Processo PID com malhas mestre/escravo. . . . . . . . . . 12-37 Capítulo 13 Instruções Trigonométricas (SIN, COS, TAN, ASN, ASIN, ACS, ACOS, ATN, ATAN) Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-1 Seno (SIN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-2 Co-seno (COS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-4 Tangente (TAN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-6 Arco Seno (ASN). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-8 Arco Co-seno (ACS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-10 Arco Tangente (ATN) . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-12 Capítulo 14 Instruções de Matemática Avançada (LN, LOG, XPY) Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-1 Log Neperiano (LN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-2 Log Base 10 (LOG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-4 X Elevado a Y (XPY). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-6 Capítulo 15 Instruções de Conversão Matemática (DEG, RAD, TOD, FRD, TRN, TRUNC) Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-1 Graus (DEG). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-2 Radianos (RAD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-4 Conversão para BCD (TOD) . . . . . . . . . . . . . . . . . . . . . . . 15-6 Conversão em Inteiro (FRD) . . . . . . . . . . . . . . . . . . . . . . . 15-9 Truncar (TRN). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-11 Publicação 1756-RM003F-PT-P - Maio 2002 vi Conteúdo Capítulo 16 Instruções da Porta Serial ASCII (ABL, ACB, ACL, AHL, ARD, ARL, AWA, AWT) Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-1 Execução da Instrução . . . . . . . . . . . . . . . . . . . . . . . . . 16-2 Códigos de Erro ASCII . . . . . . . . . . . . . . . . . . . . . . . . . 16-4 Tipos de Dados da String . . . . . . . . . . . . . . . . . . . . . . . 16-4 Teste ASCII Para Linha do Buffer (ABL) . . . . . . . . . . . . . . . 16-5 Caracteres ASCII no Buffer (ACB) . . . . . . . . . . . . . . . . . . . 16-8 Limpeza do Buffer ASCII (ACL) . . . . . . . . . . . . . . . . . . . . 16-10 Linhas de Handshake ASCII (AHL). . . . . . . . . . . . . . . . . . 16-12 Leitura ASCII (ARD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-15 Linha de Leitura ASCII (ARL) . . . . . . . . . . . . . . . . . . . . . . 16-18 Anexar Leitura ASCII (AWA) . . . . . . . . . . . . . . . . . . . . . . 16-22 Escrita ASCII (AWT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-26 Capítulo 17 Instruções de String ASCII (CONCAT, DELETE, FIND, INSERT, MID) Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-1 Tipos de Dados da String . . . . . . . . . . . . . . . . . . . . . . . 17-2 Concatenação de String (CONCAT) . . . . . . . . . . . . . . . . . . 17-3 Exclusão de String (DELETE) . . . . . . . . . . . . . . . . . . . . . . . 17-5 Localização de String (FIND) . . . . . . . . . . . . . . . . . . . . . . . 17-7 Inserção de String (INSERT). . . . . . . . . . . . . . . . . . . . . . . . 17-9 String Média (MID) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-11 Capítulo 18 Instruções de Conversão ASCII (STOD, STOR, DTOS, RTOS, UPPER, LOWER) Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-1 Tipos de Dados da String . . . . . . . . . . . . . . . . . . . . . . . 18-2 String Para DINT (STOD) . . . . . . . . . . . . . . . . . . . . . . . . . 18-3 String Para REAL (STOR) . . . . . . . . . . . . . . . . . . . . . . . . . . 18-5 DINT Para String (DTOS) . . . . . . . . . . . . . . . . . . . . . . . . . 18-7 REAL Para String (RTOS) . . . . . . . . . . . . . . . . . . . . . . . . . . 18-9 Letra Maiúscula (UPPER) . . . . . . . . . . . . . . . . . . . . . . . . . 18-11 Letra Minúscula (LOWER) . . . . . . . . . . . . . . . . . . . . . . . . 18-13 Apêndice A Atributos Comuns Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-1 Valores Imediatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-1 Conversões de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-1 SINT ou INT para DINT . . . . . . . . . . . . . . . . . . . . . . . . A-3 Inteiro para REAL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-4 DINT para SINT ou INT . . . . . . . . . . . . . . . . . . . . . . . . A-5 REAL para um inteiro . . . . . . . . . . . . . . . . . . . . . . . . . . A-5 Publicação 1756-RM003F-PT-P - Maio 2002 Conteúdo vii Apêndice B Atributos do Bloco de Funções Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-1 Lançamento de Dados. . . . . . . . . . . . . . . . . . . . . . . . . . . . B-2 Seqüência de Execução . . . . . . . . . . . . . . . . . . . . . . . . . . . B-3 Respostas do Bloco de Funções para as Condições de Overflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-5 Modos de Temporização . . . . . . . . . . . . . . . . . . . . . . . . . . B-5 Parâmetros de instrução comum para os modos de temporização. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-7 Características Gerais dos modos de temporização . . . . B-9 Controle de Program/Operator . . . . . . . . . . . . . . . . . . . . B-10 Apêndice C Programação de Texto Estruturado Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-1 Sintaxe do Texto Estruturado. . . . . . . . . . . . . . . . . . . . . . . C-1 Atributos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-2 Especificação de um atributo não retentivo . . . . . . . . . . C-3 Atribuição de um caractere ASCII para um string. . . . . . C-3 Expressões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-4 Use os operadores e funções aritméticas . . . . . . . . . . . . C-5 Uso dos operadores relacionados . . . . . . . . . . . . . . . . . C-6 Uso dos operadores lógicos . . . . . . . . . . . . . . . . . . . . . C-8 Uso de operadores bitwise . . . . . . . . . . . . . . . . . . . . . . C-9 Determinação da seqüência de execução . . . . . . . . . . . C-9 Instruções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-10 Construções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-11 IF...THEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-12 CASE...OF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-15 FOR…DO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-17 WHILE…DO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-20 REPEAT…UNTIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-22 Comentários . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-24 Index Códigos do Caractere ASCII Publicação 1756-RM003F-PT-P- Maio 2002 viii Conteúdo Publicação 1756-RM003F-PT-P - Maio 2002 Capítulo 1 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Introdução Use as instruções binárias (tipo com relé) para monitorar e controlar o status dos bits. Se você quiser: Use esta instrução: Disponível nessas linguagens: Consulte página: habilitar as saídas quando um bit estiver energizado XIC lógica ladder texto estruturado(1) 1-2 habilitar as saídas quando um bit estiver desenergizado XIO lógica ladder texto estruturado(1) 1-4 energizar um bit OTE lógica ladder texto estruturado(1) 1-6 energizar um bit (retentivo) OTL lógica ladder texto estruturado(1) 1-7 desenergizar um bit (retentivo) OTU lógica ladder texto estruturado(1) 1-9 habilitar as saídas para um scan toda vez que a linha tornar-se verdadeira ONS lógica ladder texto estruturado(1) 1-11 energizar um bit para um scan toda vez que a linha tornar-se verdadeira OSR lógica ladder 1-14 energizar um bit para um scan toda vez que a linha tornar-se falsa OSF lógica ladder 1-16 energizar um bit para um scan toda vez que o bit de entrada for verdadeiro no bloco de funções OSRI texto estruturado bloco de funções 1-14 energizar um bit para um scan toda vez que o bit de entrada estiver desenergizado no bloco de funções OSFI texto estruturado bloco de funções 1-16 (1) Não há instrução de texto estruturado equivalente. Use outra programação de texto estruturado para obter o mesmo resultado. Veja a descrição para a instrução. 1 Publicação 1756-RM003F-PT-P - Maio 2002 1-2 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Examinar Se Energizado (XIC) A instrução XIC examina o bit de dados para verificar se ele está energizado. Operandos: Lógica Ladder Texto Estruturado O texto estruturado não possui uma instrução XIC, mas é possível obter os mesmos resultados usando uma construção IF...THEN. IF data_bit THEN <statement>; END_IF; Consulte ApêndiceC para informações sobre a sintaxe de construções no texto estruturado. Descrição: A instrução XIC examina o bit de dados para verificar se ele está energizado. Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução: Operando: Tipo: Formato: Descrição: data bit BOOL tag bit a ser testado Condição: Ação da Lógica Ladder: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. postscan A saída da condição da linha é definida como falsa. examinar o bit de dados bit de dados = 0 bit de dados = 1 saída da condição da linha é definida como falsa saída da condição da linha é definida como verdadeira entrada da condição da linha é verdadeira fim Publicação 1756-RM003F-PT-P - Maio 2002 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-3 Exemplo 1: Se limit_switch_1 está energizado, isso habilita a próxima instrução (a saída da condição da linha é verdadeira). Lógica Ladder Texto Estruturado IF limit_switch THEN <statement>; END_IF; Exemplo 2: Se S:V está energizado (indica que um overflow ocorreu), isso habilita a próxima instrução (a saída da condição da linha é verdadeira). Lógica Ladder Texto Estruturado IF S:V THEN <statement>; END_IF; Publicação 1756-RM003F-PT-P - Maio 2002 1-4 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Examinar Se Desenergizado (XIO) A instrução XIO examina o bit de dados para verificar se ele está desenergizado. Operandos: Lógica Ladder Texto Estruturado O texto estruturado não possui uma instrução XIO, mas é possível alcançar os mesmos resultados usando uma construção IF...THEN. IF NOT data_bit THEN <statement>; END_IF; Consulte ApêndiceC para informações sobre a sintaxe de construções no texto estruturado. Descrição: A instrução XIO examina o bit de dados para verificar se ele está desenergizado. Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução: Operando: Tipo: Formato: Descrição: data bit BOOL tag bit a ser testado Condição: Ação da Lógica Ladder: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. postscan A saída da condição da linha é definida como falsa. examinar o bit de dados bit de dados = 0 bit de dados = 1 saída da condição da linha é definida como verdadeira saída da condição da linha é definida como falsa entrada da condição da linha é verdadeira fim Publicação 1756-RM003F-PT-P - Maio 2002 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-5 Exemplo 1: Se limit_switch_2 está desenergizado, isso habilita a próxima instrução (a saída da condição da linha é verdadeira). Lógica Ladder Texto Estruturado IF NOT limit_switch_2 THEN <statement>; END_IF; Exemplo 2: Se S:V está desenergizado (indica que um overflow não ocorreu), isso habilita a próxima instrução (a saída da condição da linha é verdadeira). Lógica Ladder Texto Estruturado IF NOT S:V THEN <statement>; END_IF; Publicação 1756-RM003F-PT-P - Maio 2002 1-6 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Energizar Saída (OTE) A instrução OTE energiza ou desenergiza o bit de dados. Operandos: Lógica Ladder Texto Estruturado O texto estruturado não possui uma instrução OTE, mas é possível obter os mesmos resultados usando um atributo não retentivo. data_bit [:=] BOOL_expression; Consulte ApêndiceC para informações sobre a sintaxe de atributos e expressões no texto estruturado. Descrição: Quando a instrução OTE está habilitada, o controlador energiza o bit de dados. Quando a instrução OTE está desabilitada, o controlador desenergiza o bit de dados. Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução: Exemplo: Quando switch está energizado, a instrução OTE energiza (acende) light_1. Quando switch é desenergizado, a instrução OTE desenergiza (apaga) light_1. Lógica Ladder Texto Estruturado light_1 [:=] switch; Operando: Tipo: Formato: Descrição: data bit BOOL tag bit a ser energizado ou desenergizado Condição: Ação da Lógica Ladder: prescan O bit de dados é desenergizado. A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa O bit de dados é desenergizado. A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira O bit de dados é energizado. A saída da condição da linha é definida como verdadeira. postscan O bit de dados é desenergizado. A saída da condição da linha é definida como falsa. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-7 Energizar Saída com Retenção (OTL) A instrução OTL energiza (retém) o bit de dados. Operandos: Lógica Ladder Texto Estruturado O texto estruturado não possui uma instrução OTL, mas é possível obter os mesmos resultados usando uma construção e um atributo IF...THEN. IF bool_expression THEN data_bit := 1; END_IF; Consulte ApêndiceC para informações sobre a sintaxe de construções, atributos e expressões no texto estruturado. Descrição: Quando habilitada, a instrução OTL energiza o bit de dados. O bit de dados permanece energizado até ser desenergizado, normalmente, por uma instrução OTU. Quando desabilitada, a instrução OTL não altera o status do bit de dados. Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução: Operando: Tipo: Formato: Descrição: data bit BOOL tag bit a ser energizado Condição: Ação da Lógica Ladder: prescan O bit de dados não é modificado. A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa O bit de dados não é modificado. A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira O bit de dados é energizado.A saída da condição da linha é definida como verdadeira. postscan O bit de dados não é modificado. A saída da condição da linha é definida como falsa. Publicação 1756-RM003F-PT-P - Maio 2002 1-8 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Exemplo: Quando habilitada, a instrução OTL energiza light_2. Esse bit permanece energizado até ser desenergizado, normalmente, por uma instrução OTU. Lógica Ladder Texto Estruturado IF BOOL_expression THEN light_2 := 1; END_IF; Publicação 1756-RM003F-PT-P - Maio 2002 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-9 Desenergizar Saída com Retenção (OTU) A instrução OTU desenergiza (não retém) o bit de dados. Operandos: Lógica Ladder Texto Estruturado O texto estruturado não possui uma instrução OTU, mas é possível alcançar os mesmos resultados usando uma construção e um atributo IF...THEN IF bool_expression THEN data_bit := 0; END_IF; Consulte ApêndiceC para informações sobre a sintaxe de construções, atributos e expressões no texto estruturado. Descrição: Quando habilitada, a instrução OTU desenergiza o bit de dados. Quando desabilitada, a instrução OTU não altera o status do bit de dados. Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução: Operando: Tipo: Formato: Descrição: data bit BOOL tag bit a ser desenergizado Condição: Ação da Lógica Ladder: prescan O bit de dados não é modificado. A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa O bit de dados não é modificado. A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira O bit de dados é desenergizado. A saída da condição da linha é definida como verdadeira. postscan O bit de dados não é modificado. A saída da condição da linha é definida como falsa. Publicação 1756-RM003F-PT-P - Maio 2002 1-10 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Exemplo: Quando habilitada, a instrução OTU desenergiza light_2. Lógica Ladder Texto Estruturado IF bool_expression THEN light_2 := 0; END_IF; Publicação 1756-RM003F-PT-P - Maio 2002 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-11 Monoestável (ONS) A instrução ONS habilita ou desabilita o resto da linha dependendo do status do bit de armazenamento. Operandos: Lógica Ladder Texto Estruturado O texto estruturado não possui uma instrução ONS, mas é possível obter os mesmos resultados usando uma construção IF...THEN. IF BOOL_expression AND NOT storage_bit THEN <statement>; END_IF; storage_bit := BOOL_expression; Consulte ApêndiceC para informações sobre a sintaxe de construções, atributos e expressões no texto estruturado. Descrição: Quando habilitada e o bit de armazenamento está desenergizado, a instrução ONS habilita o resto da linha. Quando habilitada ou o bit de armazenamento está energizado, a instrução ONS desabilita o resto da linha. Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Operando: Tipo: Formato: Descrição: storage bit BOOL tag bit de armazenamento interno armazena a entrada da condição da linha desde a última vez que a instrução foi executada Publicação 1756-RM003F-PT-P - Maio 2002 1-12 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Execução: Exemplo: Normalmente, uma instrução de entrada precede a instrução ONS, pois você varre esta instrução quando ela está habilitada e quando é desabilitada para que opere corretamente. Uma vez que a instrução ONS é habilitada, a entrada da condição da linha deve desenergizar ou o bit de armazenamento deve ser desenergizado para que a instrução ONS seja habilitada novamente. Condição: Ação da Lógica Ladder: prescan O bit de armazenamento é energizado para evitar um disparo inválido durante o primeiro scan. A saída da condição da linha é definida como falsa. entrada da condição da linha for falsa O bit de armazenamento é desenergizado. A saída da condição da linha é definida como falsa. postscan O bit de armazenamento é desenergizado. A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira fim examinar o bit de armazenamento bit de armazenamento = 0 bit de armazenamento = 1 bit de armazenamento é energizado saída da condição da linha é definida como verdadeira o bit de armazenamento permanece energizado saída da condição da linha é definida como falsa Publicação 1756-RM003F-PT-P - Maio 2002 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-13 Em qualquer scan cujo limit_switch_1 é desenergizado ou storage_1 é energizado, essa linha não tem efeito. Em qualquer scan cujo limit_switch_1 é energizado e storage_1 é desenergizado, a instrução ONS energiza storage_1 e a instrução ADD incrementa sum por 1. Enquanto limit_switch_1 permanecer energizado, sum fica com o mesmo valor. O limit_switch_1 deve passar de desenergizado para energizado novamente para que sum seja incrementado novamente. Lógica Ladder Texto Estruturado IF limit_switch_1 AND NOT storage_1 THEN sum := sum + 1; END_IF; storage_1 := limit_switch_1; Publicação 1756-RM003F-PT-P - Maio 2002 1-14 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Monoestável Sensível à Borda de Subida (OSR) A instrução OSR energiza ou desenergiza o bit de saída, dependendo do status do bit de armazenamento. Essa instrução está disponível no texto estruturado e bloco de funções como OSRI, consulte a página 1-14. Operandos: Lógica Ladder Descrição: Quando habilitada e o bit de armazenamento está desenergizado, a instrução OSR energiza o bit de saída. Quando habilitada e o bit de armazenamento está energizado ou quando desabilitada, a instrução OSR desenergiza o bit de saída Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Operando: Tipo: Formato: Descrição: storage bit BOOL tag bit de armazenamento interno armazena a entrada da condição da linha da última vez que a instrução foi executada output bit BOOL tag bit a ser energizado entrada da condição da linha bit de armazenamento bit de saída instrução é executada instrução reseta durante a execução do próximo scan Publicação 1756-RM003F-PT-P - Maio 2002 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-15 Execução: Exemplo: Cada vez que limit_switch_1 passar de desenergizado para energizado, a instrução OSR energiza output_bit_1 e a instrução ADD incrementa sum por 5. Enquanto limit_switch_1 estiver energizado, sum permanece com o mesmo valor. O limit_switch_1 deve passar de desenergizado para energizado novamente para sum ser incrementado novamente. É possível usar output_bit_1 em linhas múltiplas para disparar outras operações Condição: Ação da Lógica Ladder: prescan O bit de armazenamento é energizado para evitar um disparo inválido durante o primeiro scan. O bit de saída é desenergizado. A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa O bit de armazenamento é desenergizado. O bit de saída não é modificado. A saída da condição da linha é definida como falsa. postscan O bit de armazenamento é desenergizado. O bit de saída não é modificado. A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira fim examinar o bit de armazenamento bit de armazenamento = 0 bit de armazenamento = 1 bit de armazenamento é energizado bit de saída é energizado saída da condição da linha é definida como verdadeira o bit de armazenamento permanece energizado bit de saída é desenergizado. saída da condição da linha é definida como verdadeira Publicação 1756-RM003F-PT-P - Maio 2002 1-16 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Monoestável Sensível à Borda de Descida (OSF) A instrução OSF energiza ou desenergiza o bit de saídadependendo do status do bit de armazenamento. Essa instrução está disponível no texto estruturado e bloco de funções como OSFI, consulte a página 1-16. Operandos: Operandos de Lógica Ladder Descrição: Quando desabilitada e o bit de armazenamento está energizado, a instrução OSF energiza o bit de saída. Quando desabilitada e o bit de armazenamento está desenergizado ou quando habilitada, a instrução OSF desenergiza o bit de saída Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Operando: Tipo: Formato: Descrição: storage bit BOOL tag bit de armazenamento interno armazena a entrada da condição da linha desde a última vez que a instrução foi executada output bit BOOL tag bit a ser energizado entrada da condição da linha bit de armazenamento bit de saída instrução é executada instrução reseta durante a execução do próximo scan Publicação 1756-RM003F-PT-P - Maio 2002 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-17 Execução: Exemplo: Cada vez que limit_switch_1 passa de energizado para desenergizado, a instrução OSF energiza output_bit_2 e a instrução ADD incrementa sum por 5. Enquanto limit_switch_1 estiver desenergizado, sum permanece com o mesmo valor. O limit_switch_1 deve passar de energizado para desenergizado novamente para que sum seja incrementado novamente. É possível usar output_bit_2 em linhas múltiplas para disparar outras operações Condição: Ação da Lógica Ladder: prescan O bit de armazenamento é desenergizado para evitar um disparo inválido durante o primeiro scan. O bit de saída é desenergizado. A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira O bit de armazenamento é energizado. O bit de saída é desenergizado. A saída da condição da linha é definida como verdadeira. postscan Veja se a entrada da condição da linha acima é falsa. entrada da condição da linha é falsa fim examinar o bit de armazenamento bit de armazenamento = 0 bit de armazenamento = 1 o bit de armazenamento permanece desenergizado bit de saída é desenergizado. saída da condição da linha é definida como falsa bit de armazenamento é desenergizado. bit de saída é energizado saída da condição da linha é definida como falsa Publicação 1756-RM003F-PT-P - Maio 2002 1-18 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Monoestável Sensível à Borda de Subida com Entrada (OSRI) A instrução OSRI energiza o bit de saída para um ciclo de execução quando o bit de entrada alternar de desenergizado para energizado. Esta instrução está disponível em lógica ladder como OSR, consulte a página 1-14. Operandos: Texto Estruturado Bloco de Funções Estrutura FBD_ONESHOT Descrição: Quando InputBit está energizado e InputBitn-1 está desenergizado, a instrução OSRI energiza OutputBit. Quando InputBit é energizado ou quando InputBit é desenergizado, a instrução OSRI desenergiza OutputBit. Operando: Tipo: Formato: Descrição: OSRI tag FBD_ONESHOT estrutura estrutura OSR Operando: Tipo: Formato: Descrição: OSRI tag FBD_ONESHOT estrutura estrutura OSR OSRI(OSRI_tag); Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Bloco de Funções Se desenergizada, a instrução não executa e as saídas não são atualizadas. Se energizada, a instrução executa. O valor inicial é energizado Texto Estruturado: Sem efeito. A instrução executa. InputBit BOOL Bit de entrada. Isto equivale à condição da linha para a instrução OSR de Lógica Ladder. O valor inicial é desenergizado. Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. OutputBit BOOL Bit de saída InputBit OutputBit 40048 instrução é executada instrução reseta durante a execução do próximo scan InputBitn-1 Publicação 1756-RM003F-PT-P - Maio 2002 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-19 Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução: Exemplo: Quando limit_switch1 passa de desenergizado para energizado, a instrução OSRI energiza OutputBit para um scan. Texto Estruturado OSRI_01.InputBit := limit_switch1; OSRI(OSRI_01); State := OSRI_01.OutputBit; Bloco de Funções Condição: Ação do Bloco de Funções: Ação do Texto Estruturado: prescan Nenhuma ação tomada. Nenhuma ação tomada. primeiro scan da instrução InputBit n-1 é energizado. InputBit n-1 é energizado. primeira execução da instrução InputBit n-1 é energizado. InputBit n-1 é energizado. EnableIn está desenergizado EnableOut é desenergizado, a instrução não faz nada e as saídas não são atualizadas. na EnableIn está energizado Em uma transição de InputBit de desenergizado para energizado, a instrução energiza InputBit n-1. A instrução executa. EnableOut está energizado. Em uma transição de InputBit de desenergizado para energizado, a instrução energiza InputBit n-1. EnableIn está sempre energizado A instrução executa. postscan Nenhuma ação tomada. Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 1-20 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Monoestável Sensível à Borda de Descida com Entrada (OSFI) A instrução OSFI energiza o OutputBit para um ciclo de execução quando InputBit alternar de energizado para desenergizado. Esta instrução está disponível em lógica ladder como OSF, consulte a página 1-16. Operandos: Texto Estruturado Bloco de Funções Estrutura FBD_ONESHOT Descrição: Quando InputBit está desenergizado e InputBit n-1 está energizado, a instrução OSFI energiza OutputBit. Quando InputBit n-1 está desenergizado ou quando InputBit está energizado, a instrução OSFI desenergiza OutputBit. Operando: Tipo: Formato: Descrição: OSFI tag FBD_ONESHOT estrutura estrutura OSFI Operando: Tipo: Formato: Descrição: tag OSFI FBD_ONESHOT estrutura estrutura OSFI OSFI(OSFI_tag); Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Bloco de Funções Se desenergizada, a instrução não executa e as saídas não são atualizadas. Se energizada, a instrução executa. O valor inicial é energizado Texto Estruturado: Sem efeito. A instrução executa. InputBit BOOL Bit de entrada. Isto equivale à condição da linha para a instrução OSF de lógica ladder. O valor inicial é desenergizado. Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. OutputBit BOOL bit de saída InputBit OutputBit instrução é executada instrução reseta durante a execução do próximo scan InputBit n-1 40047 Publicação 1756-RM003F-PT-P - Maio 2002 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) 1-21 Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução: Exemplo: Quando limit_switch1 passa de energizado para desenergizado, a instrução OSFI energiza OutputBit para um scan. Texto Estruturado OSFI_01.InputBit := limit_switch1; OSFI(OSFI_01); Output_state := OSFI_01.OutputBit; Bloco de Funções Condição: Ação do Bloco de Funções: Ação do Texto Estruturado: prescan Nenhuma ação tomada. Nenhuma ação tomada. primeiro scan da instrução InputBit n-1 é desenergizado. InputBit n-1 é desenergizado. primeira execução da instrução InputBit n-1 é desenergizado. InputBit n-1 é desenergizado. EnableIn está desenergizado EnableOut é desenergizado, a instrução não faz nada e as saídas não são atualizadas. na EnableIn está energizado Em uma transição de InputBit de desenergizado para energizado, a instrução desenergiza InputBit n-1. A instrução executa. EnableOut está energizado. Em uma transição de InputBit de desenergizado para energizado, a instrução desenergiza InputBit n-1. EnableIn está sempre energizado A instrução executa. postscan Nenhuma ação tomada. Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 1-22 Instruções Binárias (XIC, XIO, OTE, OTL, OTU, ONS, OSR, OSF, OSRI, OSFI) Notas: Publicação 1756-RM003F-PT-P- Maio 2002 Capítulo 2 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Introdução As operações de temporizadores e contadores são baseadas no tempo ou no número de eventos. A base de tempo para todos os temporizadores é 1 mseg. Se você quiser: Use esta instrução: Disponível nestas linguagens: Consulte página: saber por quanto tempo o temporizador está habilitado TON lógica ladder 2-2 saber por quanto tempo o temporizador está desabilitado TOF lógica ladder 2-5 acumular o tempo RTO lógica ladder 2-9 saber por quanto tempo o temporizador está habilitado com o reset incorporado no bloco de funções TONR texto estruturado bloco de funções 2-13 saber por quanto tempo o temporizador está desabilitado com o reset integrado em um bloco de funções TOFR texto estrutural bloco de funções 2-16 acumular o tempo com o reset incorporado no bloco de funções RTOR texto estruturado bloco de funções 2-19 fazer a contagem crescente CTU lógica ladder 2-22 fazer a contagem decrescente CTD lógica ladder 2-25 fazer a contagem crescente e decrescente no bloco de funções CTUD texto estruturado bloco de funções 2-29 resetar um temporizador ou um contador RES lógica ladder 2-33 1 Publicação 1756-RM003F-PT-P - Maio 2002 2-2 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Temporizador na Energização (TON) A instrução TON é um temporizador não retentivo que acumula tempo quando a instrução está habilitada (entrada da condição da linha é verdadeira). A instrução está disponível em texto estruturado e bloco de funções como TONR, consulte a página 2-13. Operandos: Lógica Ladder Estrutura TIMER Descrição: A instrução TON acumulou o tempo até: • a instrução TON está desabilitada • o .ACC ≥ .PRE A base de tempo é sempre 1 mseg. Por exemplo, para um temporizador de 2 segundos, digite 2000 para o valor de .PRE. Quando a instrução TON é desabilitada, o valor de .ACC é removido. Operando: Tipo: Formato: Descrição: Timer TIMER tag estrutura do temporizador Preset DINT imediato quanto tempo atrasar (tempo acumulado) Accum DINT imediato total de mseg que o temporizador contou normalmente, valor inicial é 0 Mnemônico: Tipo de Dados: Descrição: .EN BOOL O bit habilitado indica que a instrução TON está habilitada. .TT BOOL O bit de temporização indica que uma operação de temporização está em execução .DN BOOL O bit executado está energizado quando .ACC ≥ .PRE. .PRE DINT O valor de preset especifica o valor (unidades de 1 mseg) que o valor acumulado deve atingir antes que a instrução energize o bit .DN. .ACC DINT O valor acumulado especifica o número de milissegundos que transcorreram desde que a instrução TON foi habilitada. entrada da condição da linha bit habilitado do temporizador (.EN) bit executado do temporizador (.DN) valor acumulado do temporizador (.ACC) bit de temporização do temporizador (.TT) preset 0 16649 o temporizador não alcançou o valor de .PRE atraso na ENER- GIZA- ÇÃO Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-3 Flags de Status Aritmético: não afetados Condições de Falha: Execução Uma falha grave ocorrerá se: Tipo de falha: Código de falha: .PRE < 0 4 34 .ACC < 0 4 34 Condição: Ação da Lógica Ladder: prescan Os bits .EN, .TT e .DN estão desenergizados. O valor de .ACC é removido. A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa Os bits .EN, .TT e .DN estão desenergizados. O valor de .ACC é removido. A saída da condição da linha é definida como falsa. postscan A saída da condição da linha é definida como falsa. examinar bit .DN bit .DN = 1 bit .DN = 0 bit .EN é energizado bit .TT é energizado. last_time = current_time entrada da condição da linha é verdadeira examinar .ACC .ACC ≥ .PRE .ACC < .PRE bit .TT é energizado. .ACC = .ACC + (current_time - last_time) last_time = current_time o valor .ACC ultrapassa não sim .ACC = 2,147,483,647 examinar bit .EN bit .EN = 0 bit .EN = 1 saída da condição da linha é definida como verdadeira fim .DN é energizado bit .TT é desenergizado. bit .EN é energizado Publicação 1756-RM003F-PT-P - Maio 2002 2-4 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Exemplo: Quando limit_switch_1 é energizado, light_2 acende por 180 mseg (timer_1 está temporizando). Quando timer_1.acc alcança 180, light_2 apaga e light_3 acende. Light_3 permanece aceso até que a instrução TON seja desabilitada. Se limit_switch_1 for desenergizado enquanto timer_1 estiver temporizando, light_2 desliga. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-5 Temporizador na Desenergização (TOF) A instrução TOF é um temporizador não retentivo que acumula tempo quando a instrução está habilitada (entrada da condição da linha é falsa). A instrução está disponível em texto estruturado e bloco de funções como TOFR, consulte a página 2-16. Operandos: Lógica Ladder Estrutura TIMER Descrição: A instrução TOF acumulou o tempo até: • a instrução TOF está desabilitada • a .ACC ≥ .PRE A base de tempo é sempre 1 mseg. Por exemplo, para um temporizador de 2 segundos, digite 2000 para o valor de .PRE. Operando: Tipo: Formato: Descrição: Timer TIMER tag estrutura do temporizador Preset DINT imediato quanto tempo atrasar (tempo acumulado) Accum DINT imediato total de mseg que o temporizador contou normalmente, o valor inicial é 0 Mnemônico: Tipo de Dados: Descrição: .EN BOOL O bit habilitado indica que a instrução TOF está habilitada. .TT BOOL O bit de temporização indica que uma operação de temporização está em execução .DN BOOL O bit executado é desenergizado quando .ACC ≥ .PRE. .PRE DINT O valor preset especifica o valor (unidades de 1 mseg) que o valor acumulado deve atingir antes que a instrução energize o bit .DN. .ACC DINT O valor acumulado especifica o número de milissegundos que transcorreram desde que a instrução TOF foi habilitada. Publicação 1756-RM003F-PT-P - Maio 2002 2-6 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Quando a instrução TOF está desativada, o valor de .ACC é desenergizado. Flags de Status Aritmético: não afetados Condições de Falha: entrada da condição da linha bit habilitado do temporizador (.EN) bit executado do temporizador (.DN) valor acumulado do temporizador (.ACC) bit de temporização do temporizador (.TT) 0 16650 o temporizador não atingiu o valor de .PRE preset atraso na DESE- NERGIZAÇÃO Uma falha grave ocorrerá se: Tipo de falha: Código de falha: .PRE < 0 4 34 .ACC < 0 4 34 Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-7 Execução Condição: Ação da Lógica Ladder: prescan Os bits .EN, .TT e .DN estão desenergizados. O valor de .ACC é ajustado para ser igual ao valor de .PRE. A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira Os bits .EN, .TT, e .DN estão energizados. O valor de .ACC está desenergizado. A saída da condição da linha é definida como verdadeira. postscan A saída da condição da linha é definida como falsa. examinar bit .DN bit .DN = 0 bit .DN = 1 bit .EN é desenergizado. bit .TT é energizado. last_time = current_time entrada da condição da linha é falsa examinar .ACC .ACC ≥ .PRE .ACC < .PRE bit .TT é energizado. .ACC = .ACC + (current_time - last_time) last_time = current_time o valor de .ACC ultrapassa não sim .ACC = 2,147,483,647 examinar bit .EN bit .EN = 1 bit .EN = 0 saída da condição da linha é definida como falsa fim bit .DN é desenergizado. bit .TT é desenergizado. bit .EN é desenergizado. Publicação 1756-RM003F-PT-P - Maio2002 2-8 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Exemplo: Quando limit_switch_2 é desenergizado, light_2 acende por 180 mseg (timer_2 está temporizando). Quando timer_2.acc atinge 180, light_2 apaga e light_3 acende. Light_3 permanece aceso até que a instrução TOF seja habilitada. Se limit_switch_2 for energizada enquanto timer_2 estiver temporizando, light_2 apaga. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-9 Temporizador Retentivo (RTO) A instrução RTO é um temporizador retentivo que acumula tempo quando a instrução é habilitada. A instrução está disponível em texto estruturado e bloco de funções como RTOR, consulte a página 2-19. Operandos: Lógica Ladder Estrutura TIMER Descrição: A instrução RTO acumula os tempos até que ela seja desabilitada. Quando a instrução RTO é desabilitada, os seus valores de .ACC são retidos. Você deve remover o valor de .ACC, geralmente, com uma instrução RES referenciando a mesma estrutura TIMER. Operando: Tipo: Formato: Descrição: Timer TIMER tag estrutura do temporizador Preset DINT imediato quanto tempo atrasar (tempo acumulado) Accum DINT imediato número de mseg que o temporizador contou normalmente, valor inicial é 0 Mnemônico: Tipo de Dados: Descrição: .EN BOOL O bit habilitado indica que a instrução RTO está habilitada. .TT BOOL O bit de temporização indica que uma operação de temporização está em execução .DN BOOL O bit executado indica .ACC ≥ .PRE. .PRE DINT O valor de preset especifica o valor (unidades de 1 mseg) que o valor acumulado deve atingir antes que a instrução energize o bit .DN. .ACC DINT O valor acumulado especifica o número de milissegundos que transcorreram desde que a instrução RTO foi habilitada. Publicação 1756-RM003F-PT-P - Maio 2002 2-10 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) A base de tempo é sempre 1 mseg. Por exemplo, para um temporizador de 2 segundos, digite 2000 para o valor de .PRE. Flags de Status Aritmético: não afetados Condições de Falha: entrada da condição da linha bit habilitado do temporizador (.EN) bit executado do temporizador (.DN) valor acumulado do temporizador (.ACC) bit de temporização do temporizador (.TT) preset 0 16651 condição da linha que controla a instrução RES o temporizador não alcançou o valor .PRE Uma falha grave ocorrerá se: Tipo de falha: Código de falha: .PRE < 0 4 34 .ACC < 0 4 34 Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-11 Execução Exemplo: Quando limit_switch_1 é energizado, light_1 acende por 180 mseg (timer_2 está temporizando). Quando timer_3.acc atinge 180, light_1 apaga e light_2 acende. Light_2 permanece aceso até que timer_3 seja energizado novamente. Se limit_switch_2 for desenergizada enquanto timer_3 estiver temporizando, light_1 permanece ligado. Quando limit_switch_2 está energizado, a instrução RES energiza novamente timer_3 (energiza os bits de status e o valor de .ACC). Condição: Ação da Lógica Ladder: prescan Os bits .EN, .TT e .DN estão desenergizados. O valor de .ACC não é modificado. A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa Os bits .EN e .TT estão desenergizados. O bit .DN não é modificado. O valor de .ACC não é modificado. A saída da condição da linha é definida como falsa. postscan A saída da condição da linha é definida como falsa. examinar bit .DN bit .DN = 1 bit .DN = 0 bit .EN é energizado bit .TT é energizado. last_time = current_time entrada da condição da linha é verdadeira verificar .ACC .ACC ≥ .PRE .ACC < .PRE bit .TT é energizado. .ACC = .ACC + (current_time - last_time) last_time = current_time o valor de .ACC ultrapassa não sim .ACC = 2,147,483,647 examinar bit .EN bit .EN = 0 bit .EN = 1 saída da condição da linha é definida como verdadeira fim .DN é energizado bit .TT é desenergizado. bit .EN é energizado Publicação 1756-RM003F-PT-P - Maio 2002 2-12 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-13 Temporizador na Energização com Reset (TONR) A instrução TONR é um temporizador retentivo que acumula tempos quando TimerEnable está energizado. Esta instrução está disponível na lógica ladder como duas instruções separadas: TON (consulte a página 2-2) e RES (consulte a página 2-33). Operandos: Texto Estruturado Bloco de Funções Estrutura FBD_TIMER Variável: Tipo: Formato: Descrição: TONR tag FBD_TIMER estrutura estrutura TONR Operando: Tipo: Formato: Descrição: TONR tag FBD_TIMER estrutura estrutura TONR TONR(TONR_tag); Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Bloco de Funções : Se desenergizada, a instrução não é executada e as saídas não são atualizadas. Se energizada, a instrução é executada. Valor inicial está energizado Texto Estruturado Sem efeito. A instrução é executada. TimerEnable BOOL Se estiver energizado, habilita o temporizador a executar e acumular tempos. Valor inicial está desenergizado. PRE DINT Valor de preset de temporizador. Este é o valor em unidades de 1 mseg que ACC deve atingir antes que a temporização termine. Se for inválido, a instrução energiza o bit apropriado em Status e o temporizador não executa. Válido = 0 para o inteiro positivo máximo Reset BOOL Solicitação para resetar o temporizador novamente. Quando energizado, o temporizador reseta novamente. Valor inicial está desenergizado. Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. ACC BOOL Tempo acumulado em milissegundos. EN BOOL Saída do temporizador habilitada. Indica que a instrução do temporizador está habilitada. TT BOOL Saída de temporização do temporizador. Quando energizada, uma operação de temporização está em execução. DN BOOL Saída de temporização executada. Indica quando o tempo acumulado é maior ou igual ao valor de preset. Publicação 1756-RM003F-PT-P - Maio 2002 2-14 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Descrição: A instrução TONR acumula tempo até o: • A instrução TONR está desabilitada • ACC * PRE A base de tempo é sempre 1 mseg. Por exemplo, para um temporizador de 2 segundos, digite 2000 para o valor PRE. Ajusta os parâmetros de entrada Reset para resetar a instrução. Se TimerEnable for energizado quando Reset estiver energizado, a instrução TONR começa a temporização novamente assim que Reset for removido. Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução Status DINT Status do bloco de funções . InstructFault (Status.0) BOOL A instrução detectou um dos seguintes erros de execução: Isto não é um controlador de erro grave ou de advertência. Verifique os bits de status restantes para determinar o que ocorreu. PresetInv (Status.1) BOOL O valor de preset é inválido. Parâmetro de Entrada: Tipo de Dados: Descrição: TimerEnable bit habilitado (EN) bit de temporização executado (DN) valor acumulado do temporizador (ACC) bit de temporização do temporizador (TT) Preset 0 16649 atraso NO o temporizador não atingiu o valor de PRE Condição: Ação do Bloco de Funções : Ação de Texto Estruturado: prescan Nenhuma ação tomada. Nenhuma ação tomada. primeiro scan da instrução EN, TT e DN estão desenergizados. O valor de ACC é ajustado em zero. EN, TT e DN estão desenergizados. o valor ACC é definido como zero. primeira execução da instrução EN, TT e DN estão desenergizados. O valor ACC é ajustado em zero. EN, TT e DN estão desligados. o valor ACC é definido como zero. EnableIn está desenergizadoO EnableOut é desenergizado, a instrução não faz nada e as saídas não são atualizadas. na EnableIn está energizado Quando EnableIn muda de desenergizado para energizado, a instrução inicializa conforme descrito no primeiro scan da instrução. A instrução executa. EnableOut está energizado. EnableIn é sempre energizado A instrução executa. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-15 Exemplo: A cada scan que limit_switch1 energiza, a instrução TONR incrementa o tempo decorrido ao valor de ACC, até que ele atinja o valor de PRE. Quando em ACC ≥ PRE, o parâmetro DN é energizado e timer_state é energizado. Texto Estruturado TONR_01.Preset := 500; TONR_01.Reset : = reset; TONR_O1.TimerEnable := limit_switch1; TONR(TONR_01); timer_state := TONR_01.DN; Exemplo de bloco de funções Reset Quando o parâmetro de entrada Reset é energizado, a instrução desenergizado EN, TT e DN e energiza ACC = zero. Quando o parâmetro de entrada Reset é energizado, a instrução desliga EN, TT e DN e define ACC = zero. postscan Nenhuma ação tomada. Nenhuma ação tomada. Condição: Ação do Bloco de Funções : Ação de Texto Estruturado: Publicação 1756-RM003F-PT-P - Maio 2002 2-16 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Temporizador na Desenergização com Reset (TOFR) A instrução TOFR é um temporizador retentivo que acumula tempos quando TimerEnable é desenergizado. Esta instrução está disponível na lógica ladder como duas instruções separadas. TOF (consulte a página 2-5) e RES (consulte a página 2-33). Operandos: Texto Estruturado Operandos do bloco de funções Estrutura FBD_TIMER Variável: Tipo: Formato: Descrição: TOFR tag FBD_TIMER estrutura estrutura TOF Operando: Tipo: Formato: Descrição: TOFR tag FBD_TIMER estrutura estrutura TOF TOFR(TOFR_tag); Parâmetro de Entrada Tipo de Dados: Descrição: EnableIn BOOL Bloco de Funções : Se desabilitada, a instrução não é executada e as saídas não são atualizadas. Se energizada, a instrução é executada. Valor inicial está energizado Texto Estruturado Sem efeito. A instrução executa. TimerEnable BOOL Se estiver desenergizado, habilita o temporizador a executar e acumular tempos. Valor inicial está desenergizado. PRE DINT Valor de preset do temporizador. Este é o valor em unidades de 1 mseg que o ACC deve atingir antes que a temporização termine. Se for inválido, as instruções energizam o bit apropriado em Status e o temporizador não executa. Válido = 0 para o inteiro positivo máximo Reset BOOL Solicitação para resetar o temporizador. Quando energizado, o temporizador reseta. Valor inicial está desenergizado. Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. ACC BOOL Tempo acumulado em milissegundos. EN BOOL Saída habilitada de temporizador. Indica que a instrução temporizador está habilitada. TT BOOL Saída de temporização do temporizador. Quando energizada, uma operação de temporização está em progresso. DN BOOL Saída de temporização executada. Indica quando o tempo acumulado é maior ou igual ao valor de preset. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-17 Descrição: A instrução TOFR acumula tempo até o: • A instrução TOFR está desabilitada • ACC * PRE A base de tempo é sempre 1 mseg. Por exemplo, para um temporizador de 2 segundos, digite 2000 para o valor PRE. Define os parâmetros de entrada de Reset para rearmar a instrução. Se o TimerEnable estiver desenergizado quando o Reset for energizado, a instrução TOFR não começa temporização novamente quando o Reset for desenergizado. Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução Status DINT Status do bloco de funções . InstructFault (Status.0) BOOL A instrução detectou um dos seguintes erros de execução: Isto não é um controlador de erro grave ou de advertência. Verifique os bits de status restantes para determinar o que ocorreu. PresetInv (Status.1) BOOL O valor de preset é inválido. Parâmetro de Entrada Tipo de Dados: Descrição: TimerEnable bit habilitado (EN) bit do temporizador executado (DN) valor do temporizador acumulado (ACC) bit de temporização do temporizador (TT) 0 atraso no estado DESENERGIZADO 16650 o temporizador não atingiu o valor de PRE Preset Condição: Ação do Bloco de Funções : Ação de Texto Estruturado: prescan Nenhuma ação tomada. Nenhuma ação tomada. primeiro scan da instrução EN, TT e DN estão desenergizados. o valor ACC é definido em PRE. EN, TT e DN estão desenergizados. o valor ACC é definido em PRE. primeira execução da instrução EN, TT e DN estão desenergizados. o valor ACC é definido em PRE. EN, TT e DN estão desligados. o valor ACC é definido em PRE. EnableIn está desenergizado O EnableOut é desenergizado, a instrução não faz nada e as saídas não são atualizadas. na Publicação 1756-RM003F-PT-P - Maio 2002 2-18 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Exemplo: A cada scan após limit_switch1 ser removido, a instrução TOFR incrementa o valor de ACC através do tempo transcorrido até que ele atinja o valor de PRE. Quando o parâmetro ACC ≥ PRE é removido e timer_state2 é energizado. Texto Estruturado TOFR_01.Preset := 500 TOFR_01.Reset := reset; TOFR_O1.TimerEnable := limit_switch1; TOFR(TOFR_01); timer_state2 := TOFR_01.DN; Bloco de Funções EnableIn está energizado Quando o EnableIn muda de desenergizado para energizado, a instrução inicializa como descrito na instrução do primeiro scan. A instrução executa. EnableOut está energizado. EnableIn é sempre energizado A instrução executa. Reset Quando o parâmetro de entrada Reset é energizado, a instrução desliga EN, TT e DN e energiza ACC = PRE. Observe que é diferente de utilizar uma instrução RES em uma instrução TOF. Quando o parâmetro de entrada Reset é energizado, a instrução desliga EN, TT e DN e energiza ACC = PRE é energizado . Observe que é diferente de utilizar uma instrução RES em uma instrução TOF. postscan Nenhuma ação tomada. Nenhuma ação tomada. Condição: Ação do Bloco de Funções : Ação de Texto Estruturado: Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-19 Temporizador Retentivo com Reset (RTOR) A instrução RTOR é um temporizador retentivo que acumula tempos quando TimerEnable é energizado. Esta instrução está disponível na lógica ladder como duas instruções separadas: RTO (consulte a página 2-9) e RES (consulte a página 2-33). Operandos: Texto Estruturado Operandos do bloco de funções FBD_TIMER Structure Variável: Tipo: Formato: Descrição: RTOR tag FBD_TIMER estrutura estrutura RTOR Operando: Tipo Formato Descrição: RTOR tag FBD_TIMER estrutura estrutura RTOR RTOR(RTOR_tag); Parâmetro de Entrada Tipo de Dados: Descrição: EnableIn BOOL Bloco de Funções Se desenergizada, a instrução não é executada e as saídas não são atualizadas. Se energizada, a instrução é executada. Valor inicial é energizado Texto Estruturado Sem efeito. A instrução executa. TimerEnable BOOL Se estiver energizado, habilita o temporizador executar e acumular tempos. Valor inicial é desenergizado. PRE DINT Valor de preset do temporizador. Este é o valor em unidades de 1 mseg que ACC deve atingir antes que a temporização termine. Se for inválido, a instrução energiza o bit apropriado em Status e o temporizador não executa. Válido = 0 para o inteiro positivo máximo Reset BOOL Solicitação para resetar o temporizador novamente. Quando energizado, o temporizador reseta. Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. ACC DINT Tempo acumulado em milissegundos. Este valor é retidomesmo enquanto a entrada TimerEnable estiver desenergizada. Isto torna o comportamento deste bloco diferente do bloco TONR. EN BOOL Saída do temporizador habilitada. Indica que a instrução do temporizador está habilitada. TT BOOL Saída de temporização do temporizador. Quando energizada, uma operação de temporização está em execução. DN BOOL Temporização da saída executada. Indica quando o tempo acumulado é maior ou igual ao valor de preset. Publicação 1756-RM003F-PT-P - Maio 2002 2-20 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Descrição A instrução RTOR acumula os tempos até que ela seja desabilitada. Quando a instrução RTOR é desabilitada, os seus valores de .ACC são retidos. Você deve desligar o valor de .ACC usando a entrada Reset. A base de tempo é sempre 1 mseg. Por exemplo, para um temporizador de 2 segundos, digite 2000 para o valor PRE. Define os parâmetros de entrada de Reset para resetar a instrução. Se TimerEnable for energizado quando o Reset estiver energizado, a instrução RTOR começa, novamente, a temporização quando o Reset for desenergizado. Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Status DINT Status do bloco de funções . InstructFault (Status.0) BOOL A instrução detectou um dos seguintes erros de execução: Isto não é um controlador de erro grave ou de advertência. Verifique os bits de status restantes para determinar o que ocorreu. PresetInv (Status.1) BOOL O valor de preset é inválido. Parâmetro de Entrada Tipo de Dados: Descrição: TimerEnable bit habilitado (EN) bit de temporização executado (DN) valor acumulado do temporizador (ACC) bit de temporização do temporizador (TT) Preset 0 16651 Reset o temporizador não atingiu o valor de .PRE Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-21 Execução: Exemplo: A cada scan que limit_switch1 energiza, a instrução RTOR incrementa o tempo transcorrido ao valor de ACC, até que ele atinja o valor de PRE. Quando em ACC ≥ PRE, o parâmetro DN é energizado e timer_state3 é energizado. Texto Estruturado RTOR_01.Preset := 500 RTOR_01.Reset := reset; RTOR_O1.TimerEnable := limit_switch1; RTOR(RTOR_01); timer_state3 := RTOR_01.DN; Bloco de Funções Condição: Ação do Bloco de Funções : Ação de Texto Estruturado: prescan Nenhuma ação tomada. Nenhuma ação tomada. primeiro scan da instrução EN, TT e DN estão desenergizados. O valor de .ACC não é modificado. EN, TT e DN estão desenergizados. O valor de .ACC não é modificado. primeira execução da instrução EN, TT e DN estão desenergizados. O valor de .ACC não é modificado. EN, TT e DN estão desenergizados. O valor de .ACC não é modificado. EnableIn está desenergizado EnableOut é desenergizado, a instrução não faz nada e as saídas não são atualizadas. na EnableIn está energizado Bloco de Funções : Quando o EnableIn muda de desenergizado para energizado, a instrução inicializa como descrito na instrução do primeiro scan. A instrução executa. EnableOut está energizado. EnableIn é sempre energizado A instrução executa. Reset Quando o parâmetro de entrada Reset é energizado, a instrução desenergiza EN, TT e DN e energiza ACC = zero. Quando o parâmetro de entrada Reset é definido, a instrução desenergiza EN, TT e DN e energiza ACC = zero. postscan Nenhuma ação tomada. Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 2-22 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Contador Crescente (CTU) A instrução CTU conta ascendente. A instrução está disponível no texto estruturado e no bloco de funções como CTUD, consulte a página 2-29. Operandos: Lógica Ladder Estrutura COUNTER Descrição: Quando habilitada e o bit .CU está desenergizado, a instrução CTU incrementa o contador em um. Quando habilitada e o bit .CU está energizado, ou quando desabilitada, a instrução CTU retém o seu valor de .ACC. O valor acumulado continua incrementando mesmo depois que o bit .DN está energizado. Para remover o valor acumulado, use a instrução RES que referencia a estrutura do contador ou escreva 0 para o valor acumulado. Operando: Tipo: Formato: Descrição: Counter COUNTER tag estrutura do contador Preset DINT imediato até quanto contar Accum DINT imediato número de vezes que o contador contou valor inicial é normalmente 0 Mnemônico: Tipo de Dados: Descrição: .CU BOOL O bit habilitado de contagem crescente indica que a instrução CTU está habilitada. .DN BOOL O bit executado indica .ACC ≥ .PRE. .OV BOOL O bit de overflow indica que o contador excedeu o limite superior de 2,147,483,647. O contador então ultrapassa -2,147,483,648 e recomeça a contagem crescente. .UN BOOL O bit de underflow indica que o contador excedeu o limite inferior de -2,147,483,648. O contador então ultrapassa 2,147,483,647 e recomeça a contagem decrescente. .PRE DINT O valor de preset especifica qual o valor que o valor acumulado deve atingir antes que a instrução energize o bit .DN. .ACC DINT O valor acumulado especifica o número de transições que a instrução contou. entrada da condição da linha bit de contagem crescente habilitado (.CU) bit de contagem crescente executado (.DN) valor acumulado do contador (.ACC) Preset 16636 Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-23 Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução Condição: Ação da Lógica Ladder: prescan O bit .CU é energizado para prevenir incrementos inválidos durante o primeiro scan do programa. A saída da condição da linha é definida como falsa. entrada da condição da linha for falsa O bit .CU é desenergizado. A saída da condição da linha é definida como falsa. postscan A saída da condição da linha é definida como falsa. examinar o bit .CU bit .CU = 0 bit .CU = 1 entrada da condição da linha é verdadeira ultrapassa o valor .ACC sim não verifique o bit .UN bit .UN = 0 bit .UN = 1 bit .CU é energizado. .ACC = .ACC + 1 examinar o bit .OV bit .OV = 0 examinar o bit .UN bit .UN = 1 bit .UN = 0 bit .UN é desenergizado. bit .DN é desenergizado. bit .OV é desenergizado. bit .OV é energizado. examinar .ACC .ACC ≥ .PRE .ACC < .PRE bit .DN é energizado. saída da condição da linha é definida como verdadeira fim bit .OV = 1 bit .DN é desenergizado. Publicação 1756-RM003F-PT-P - Maio 2002 2-24 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Exemplo: Depois que limit_switch_1 passar de desabilitado para habilitado por 10 vezes, o bit .DN é energizado e light_1 acende. Se limit_switch_1 continuar a mudar de desabilitado para habilitado, counter_1 continua a incrementar a sua contagem e o bit .DN permanece energizado. Quando limit_switch_2 está habilitado, a instrução RES reseta counter_1 (desenergiza os bits de status e o valor .ACC) e light_1 apaga. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-25 Contagem Decrescente (CTD) A instrução CTD conta de forma decrescente. A instrução está disponível em texto estruturado e bloco de funções como CTUD, consulte a página 2-29. Operandos: Lógica Ladder Estrutura COUNTER Descrição: A instrução CTD, geralmente, é usada com a instrução CTU que referencia a mesma estrutura do contador. Quando habilitada e o bit .CD está desenergizado, a instrução CTD decrementa o contador em um. Quando habilitada e o bit .CD está energizado, ou quando desabilitada, a instrução CTD retém o seu valor .ACC. Operando: Tipo: Formato: Descrição: Counter COUNTER tag estrutura do contador Preset DINT imediato até onde contar Accum DINT imediato número de vezes que o contador executou a contagem normalmente o valor inicialé 0 Mnemônico: Tipo de Dados: Descrição: .CD BOOL O bit habilitado de contagem decrescente indica que a instrução CTD está habilitada. .DN BOOL O bit executado indica que .ACC ≥ .PRE. .OV BOOL O bit de overflow indica que o contador excedeu o limite superior de 2,147,483,647. O contador então ultrapassa -2,147,483,648 e recomeça a contagem crescente. .UN BOOL O bit de underflow indica que o contador excedeu o limite inferior de -2,147,483,648. O contador então ultrapassa 2,147,483,647 e recomeça a contagem decrescente. .PRE DINT O valor de preset especifica qual valor que o valor acumulado deve atingir antes que a instrução energize o bit .DN. .ACC DINT O valor acumulado especifica o número de transições que a instrução contou. entrada da condição da linha bit habilitado da contagem decrescente (.CD) bit executado da contagem decrescente (.DN) valor acumulado do contador (.ACC) Preset 16637 Publicação 1756-RM003F-PT-P - Maio 2002 2-26 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) O valor acumulado continua decrementando mesmo depois que o bit .DN é energizado. Para remover o valor acumulado, use a instrução RES que referencia a estrutura do contador ou escreva 0 para o valor acumulado. Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-27 Condição: Ação da Lógica Ladder: prescan O bit .CD é energizado para prevenir decrementos inválidos durante o primeiro scan do programa. A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa O bit .CD é desligado. A saída da condição da linha é definida como falsa. postscan A saída da condição da linha é definida como falsa. examinar o bit .CD .CU bit = 0 .CU bit = 1 entrada da condição da linha é verdadeira o valor de .ACC ultrapassa sim não examinar o bit .UN bit .UN = 0 bit .UN = 1 bit .CD é energizado. .ACC = .ACC - 1 examinar o bit .OV bit .OV = 0 examinar o bit .OV bit .OV = 1 bit .OV = 0 bit .OV é desenergizado. bit .DN é desenergizado. bit .UN é desenergizado. bit .UN é energizado. examinar .ACC .ACC ≥ .PRE bit .DN é energizado. saída da condição da linha é definida como verdadeira fim bit .OV = 1 .ACC < .PRE bit .DN é desenergizado. Publicação 1756-RM003F-PT-P - Maio 2002 2-28 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Exemplo: Uma transportadora traz peças para uma zona de buffer. Cada vez que uma peça entra, limit_switch_1 é habilitado e counter_1 incrementa em 1. Cada vez que uma peça sai, limit_switch_2 é habilitado e counter_1 decrementa em 1. Se houver 100 peças na zona de buffer (counter_1.dn está energizado), conveyor_a liga e impede que a transportadora traga mais peças até que o buffer tenha espaço. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-29 Contagem Crescente/Decrescente (CTUD) A instrução CTUD conta de forma crescente de um em um quando as transições CUEnable passa de desenergizado para energizado. A instrução CTUD conta de forma decrescente de um em um quando CDEnable muda de desenergizado para energizado. Esta instrução está disponível na lógica ladder como três instruções separadas. CTU (consulte a página 2-22), CTD (consulte a página 2-25) e RES (consulte a página 2-33). Operandos: Texto Estruturado Bloco de Funções Estrutura FBD_COUNTER Variável: Tipo: Formato: Descrição: CTUD tag FBD_COUNTER estrutura estrutura CTUD Operando: Tipo: Formato: Descrição: CTUD tag FBD_COUNTER estrutura estrutura CTUD CTUD(CTUD_tag); Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Bloco de Funções : Se desenergizado, a instrução não é executada e as saídas não são atualizadas. Se energizado, a instrução é executada. Valor inicial está energizado Texto Estruturado Sem efeito. A instrução executa. CUEnable BOOL Habilita contagem crescente. Quando a entrada passa de desenergizado para energizado, o acumulador conta de forma crescente de um em um. Valor inicial está desenergizado. CDEnable BOOL Habilita contagem decrescente. Quando a entrada passa de desenergizado para energizado, o acumulador conta de forma decrescente de um em um. Valor inicial está desenergizado. PRE DINT Valor de preset do contador. Este é o valor que o valor acumulado deve atingir antes que DN seja energizado. Válido = qualquer inteiro Valor inicial é 0. Reset BOOL Solicitação para resetar o temporizador. Quando energizado, o temporizador reseta novamente. Valor inicial está desenergizado. Publicação 1756-RM003F-PT-P - Maio 2002 2-30 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Descrição: Quando habilitadas e a instrução CUEnable está energizada, as instruções CTUD incrementam o contador em um. Quando habilitada e a instrução CDEnable está energizada, a instrução CTUD decrementa o contador em um. Ambos os parâmetros de entrada CUEnable e CDEnable, podem ser comutados durante o mesmo scan. A instrução executa a contagem crescente antes da contagem decrescente. Contagem crescente Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. ACC DINT Valor acumulado. CU BOOL Contagem crescente habilitada. CD BOOL Contagem decrescente habilitada. DN BOOL Contagem executada. Define quando o valor acumulado é maior ou igual ao valor de preset. OV BOOL Overflow do contador. Indica que o contador excedeu o limite superior de 2,147,483,647. O contador então ultrapassa −2,147,483,648 e começa a contagem decrescente novamente. UN BOOL Underflow do contador. Indica que o contador excedeu o limite inferior de −2,147,483,648. O contador então ultrapassa 2,147,483,647 e recomeça a contagem decrescente. CUEnable bit de contagem crescente habilitado (CU) bit de contagem crescente executado (DN) valor acumulado do contador (ACC) preset 16636 Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-31 Contagem decrescente Quando desabilitada, a instrução CTUD retém o seu valor acumulado. Define o parâmetro de entrada Reset da estrutura FBD_COUNTER para resetar a instrução. Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução CDEnable bit de contagem decrescente habilitado (CD) bit de contagem decrescente executado (DN) valor acumulado do contador (ACC) preset 16637 Condição: Ação do Bloco de Funções : Ação de Texto Estruturado: prescan Não é necessária a inicialização. Não é necessária a inicialização. primeiro scan da instrução CUEnablen-1 e CDEnablen-1 estão energizados. CUEnablen-1 e CDEnablen-1 estão energizados. primeira execução da instrução CUEnablen-1 e CDEnablen-1 estão energizados. CUEnablen-1 e CDEnablen-1 estão energizados. EnableIn está desenergizado O EnableOut é desenergizado, a instrução não faz nada e as saídas não são atualizadas. na EnableIn está energizado a instrução energiza CUEnablen-1 e CDEnablen-1. De transição de energizado para energizado do EnableIn: • A instrução executa. • EnableOut está energizado. a instrução energiza CUEnablen-1 e CDEnablen-1. EnableIn é sempre energizado A instrução executa. Reset Quando energizada, a instrução desliga CUEnablen-1, CDEnablen-1, CU, CD, DN, OV e UN e energiza ACC = zero. Quando energizada, a instrução desliga CUEnablen-1, CDEnablen-1, CU, CD, DN, OV e UN e energiza ACC = zero. postscan Nenhuma ação tomada. Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 2-32 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Exemplo: Quando limit_switch1 passa de desenergizado para energizado, CUEnable é definidocomo um scan e a instrução CTUD incrementa o valor ACC em 1. Quando em ACC ≥ PRE, o parâmetro DN é energizado, o que habilita a instrução bloco de funções CTUD. Texto Estruturado CTUD_01.Preset := 500; CTUD_01.Reset := Restart; CTUD_O1.CUEnable := limit_switch1; CTUD(CTUD_01); counter_state := CTUD_01.DN; Bloco de Funções Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) 2-33 Reset (RES) A instrução RES reseta uma estrutura TIMER, COUNTER ou CONTROL. Operandos: Lógica Ladder Descrição: Quando habilitada, a instrução RES desenergiza estes elementos: Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução Operando: Tipo: Formato: Descrição: estrutura TIMER CONTROL COUNTER tag estrutura para reset Quando estiver usando a instrução RES para um: A instrução desliga: TIMER valor de .ACC bits de controle de status COUNTER valor de .ACC bits de controle de status CONTROL valor .POS bits de controle de status ATENÇÃO ! Desde que a instrução RES remova o valor de .ACC , desenergize os bits .DN e .TT bit, não use a instrução RES para resetar o temporizador TOF. Condição: Ação da Lógica Ladder: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira A instrução RES rearma a estrutura especificada. A saída da condição da linha está definida como verdadeira. postscan A saída da condição da linha é definida como falsa. Publicação 1756-RM003F-PT-P - Maio 2002 2-34 Instruções de Temporizador e Contador (TON, TOF, RTO, TONR, TOFR, RTOR, CTU, CTD, CTUD, RES) Exemplos: Exemplo: Descrição: Quando habilitado, reseta timer_3. Quando habilitado, reseta counter_1. Quando habilitado, reseta control_1. Publicação 1756-RM003F-PT-P - Maio 2002 Capítulo 3 Instruções de Entrada/Saída (MSG, GSV, SSV) Introdução As instruções de entrada/saída lêem ou escrevem dados a partir do controlador ou para o controlador, ou lêem um bloco de dados a partir de ou para um outro módulo, em uma outra rede. Se você quiser: Use esta instrução: Disponível nestas linguagens: Consulte a página: enviar dados de/para outro módulo MSG lógica ladder texto estruturado 3-2 obter informações de status do controlador GSV lógica ladder texto estruturado 3-29 definir informações de status do controlador SSV lógica ladder texto estruturado 3-29 1 Publicação 1756-RM003F-PT-P - Maio 2002 3-2 Instruções de Entrada/Saída (MSG, GSV, SSV) Mensagem (MSG) A instrução MSG realiza a leitura ou escreve de forma assíncrona em um bloco de dados para outro módulo em uma rede. Operandos: Lógica Ladder Texto Estruturado Os operandos são os mesmos, como aqueles da instrução MSG da lógica ladder. Estrutura MESSAGE Operando: Tipo: Formato: Descrição: Controle de mensagem MESSAGE tag estrutura da mensagem MSG(MessageControl); Mnemônico: Tipo de Dados: Descrição: .FLAGS INT O membro .FLAGS fornece acesso aos membros de status (bits) em uma palavra de 16 bits. Este bit: Corresponde a este membro: 2 .EW 4 .ER 5 .DN 6 .ST 7 .EN 8 .TO 9 .EN_CC Importante: O reset de qualquer bit de status da MSG enquanto ela estiver habilitada pode interromper as comunicações. .ERR INT Se o bit .ER for energizado, a palavra de código de erro identifica os códigos de erro para a instrução MSG. .EXERR INT A palavra de código de erro estendido especifica as informações de código de erro adicionais para alguns códigos de erro. .REQ_LEN INT O comprimento requisitado especifica quantas palavras a instrução de mensagem tentará transferir. .DN_LEN INT O comprimento executado identifica quantas palavras realmente foram transferidas. .EW BOOL O bit de espera habilitado está energizado quando o controlador detecta a entrada de um pedido de mensagem na fila. O controlador reseta o bit .EW quando o bit .ST estiver energizado. .ER BOOL O bit de erro é energizado quando o controlador detecta uma falha na transferência. O bit .ER é resetado na próxima vez que a entrada da condição da linha passar de falsa para verdadeira. .DN BOOL O bit executado é energizado quando o último pacote de mensagens for transferido com sucesso. O bit .DN é resetado na próxima vez que a entrada da condição da linha passar de falsa para verdadeira. .ST BOOL O bit de partida é energizado quando o controlador começar a executar a instrução MSG. O bit .ST é resetado quando o bit .DN ou o bit .ER for energizado. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-3 .EN BOOL O bit habilitado é energizado quando a entrada da condição da linha se tornar verdadeira e permanecer energizada até o bit .DN ou .ER ser energizado e a entrada da condição da linha se tornar falsa. Se a entrada da condição da linha se tornar falsa, mas os bits .DN e .ER forem desenergizados, o bit .EN permanecerá energizado. .TO BOOL Se você energizar o bit .TO manualmente, o controlador interrompe o processamento da mensagem e energiza o bit .ER. .EN_CC BOOL O bit habilitado de cache determina como controlar a conexão MSG. Consulte Escolha de uma opção de cache: na página 3-27 As conexões para as instruções MSG que saem da porta serial não estão em memória cache, mesmo que o bit .EN_CC esteja energizado. .ERR_SRC SINT Usado pelo software RSLogix 5000 para apresentar o caminho de erro na caixa de seleção Message Configuration .DestinationLink INT Para mudar o Link Destination de um DH+ ou CIP com a mensagem Source ID, ajuste o membro para o valor solicitado. .DestinationNode INT Para mudar o Nó de Destino de um DH+ ou CIP com a mensagem Source ID, ajuste o membro para o valor solicitado. .SourceLink INT Para mudar o Link Source de um DH+ ou CIP com a mensagem Source ID, ajuste o membro para o valor solicitado. .Class INT Para mudar o parâmetro Class de uma mensagem CIP Generic, ajuste o membro para o valor solicitado. .Attribute INT Para mudar o parâmetro Attribute de uma mensagem CIP Generic, ajuste o membro para o valor solicitado. .Instance DINT Para mudar o parâmetro Instance de uma mensagem CIP Generic, ajuste o membro para o valor solicitado. .LocalIndex DINT Caso use um asterisco [*] para designar o número do elemento do array local, o LocalIndex fornece o número do elemento. Para alterar o número do elemento, ajuste o membro para o valor solicitado. Se a mensagem: Logo, o array local: lê os dados o Elemento Destino escreve os dados O Elemento Fonte .Channel SINT Para enviar a mensagem de um outro canal diferente do módulo 1756-DHRIO, ajuste este membro para o valor solicitado. Use o caracter ASCII A ou B. .Rack SINT Para alterar o número do rack para uma mensagem de block-transfer, ajuste este membro para o número do rack requisitado (octal). .Group SINT Para alterar o número do grupo para uma mensagem de block-transfer, ajuste este membro para o número de grupo requisitado (octal). .Slot SINT Para alterar o número do slot para uma mensagem de block-transfer, ajuste este membro para o número do slot requisitado (octal). Se a mensagem passar direto pela rede: Especifique o número do slot em: remote I/O octal ControlNet decimal (0-15) .Path STRING Para enviar a mensagem para um controlador diferente, ajuste este membro para um novo caminho. • Insira o caminho como valores decimais. • Omita as vírgulas [,] Por exemplo, para um caminho de 1, 0, 2, 42, 1, 3, insira $01$00$02$2A$01$03. Para navegar para um dispositivo e criar automaticamente uma parte ou toda uma nova string, clique com o botão direito do mouse sobre o tag da string e selecione Go to Message Path Editor. Mnemônico: Tipo de Dados: Descrição: Publicação 1756-RM003F-PT-P - Maio 2002 3-4 Instruções de Entrada/Saída (MSG, GSV, SSV) Descrição: A instrução MSG transfere os elementos dos dados. Esta é uma instrução transicional: • Na lógica ladder,comute a entrada da condição da linha de desenergizada para energizada toda vez que a instrução tiver que ser executada. • Em texto estruturado, condicione a instrução de forma que só seja executada em uma transição. Consulte o Apêndice C .RemoteIndex DINT Caso use um asterisco [*] para designar o número do elemento do array local, o LocalIndex fornece o número do elemento. Para alterar o número do elemento, ajuste o membro para o valor solicitado. Se a mensagem: Logo, o array remoto é: lê os dados O elemento Source escreve os dados O elemento Destination .RemoteElement STRING Para especificar um tag ou endereço diferente no controlador para o qual a mensagem é enviada, ajuste este membro para o valor requisitado. Insira o tag ou endereço como caracteres ASCII. Se a mensagem: Logo, o array remoto é: lê os dados O elemento Source escreve os dados O elemento Destination .UnconnnectedTimeout DINT O timeout para mensagens desconectadas. O valor padrão é 30 segundos. .ConnectionRate DINT O ConnectionRate vezes o TimeoutMultiplier produz o timeout para mensagens conectadas. • O ConnectionRate padrão é 7,5 segundos. • O TimeoutMultiplier padrão é 0 (que equivale a um fator de multiplicação por 4). • O timeout padrão para as mensagens conectadas é 30 segundos (7,5 segundos x 4 = 30 segundos). • Para alterar o timeout, altere o ConnectionRate e deixe o TimeoutMultiplier no valor padrão. .TimeoutMultiplier SINT Mnemônico: Tipo de Dados: Descrição: ATENÇÃO ! O controlador processa os bits .ST, .EW, .DN e .ER de uma maneira assíncrona a do scan. Para verificar estes bits em lógica ladder, copie as palavras .FLAGS para um tag INT e verifique os bits a partir deste ponto. Caso contrário, problemas de temporização podem invalidar a sua aplicação com possíveis danos ao equipamento e ferimentos pessoais. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-5 O tamanho de cada elemento depende dos tipos de dados especificados e do tipo de comando de mensagem usado. Execução conexão com .EN_CC = 1 entrada da condição da linha bit .EW conexão com .EN_CC = 0 41382 bit .ST bit .DN ou .ER bit .EN 1 2 3 4 5 6 7 Onde: Descrição: Onde: Descrição: 1 entrada da condição da linha é verdadeira .EN está energizado .EW está energizado a conexão está aberta* 5 a mensagem é enviada .ST está energizado .EW é desenergizado. 2 a mensagem é enviada .ST está energizado .EW está desenergizado. 6 a mensagem é executada ou está errada a entrada da condição da linha continua verdadeira .DN ou .ER está energizado .ST é desenergizado. a conexão é fechada (se .EN_CC = 0) 3 a mensagem é executada ou está errada entrada da condição da linha é falsa .DN ou .ER está energizado .ST é desenergizado. a conexão é fechada (se .EN_CC = 0) .EN está energizado(a entrada da condição da linha é falsa) 7 a entrada da condição da linha se torna falsa e .DN ou .ER é energizado .EN é desenergizado. 4 entrada da condição da linha é verdadeira .DN ou .ER foi energizado anteriormente .EN está energizado .EW está energizado a conexão está aberta* .DN ou .ER está desenergizado Condição: Ação da Lógica Ladder: Ação de Texto Estruturado: prescan A saída da condição da linha é definida como falsa. Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 3-6 Instruções de Entrada/Saída (MSG, GSV, SSV) entrada da condição da linha é verdadeira A instrução executa. A saída da condição da linha é definida como verdadeira. na Condição: Ação da Lógica Ladder: Ação de Texto Estruturado: entrada da condição da linha é falsa (não se aplica a texto estruturado) fim saída da condição da linha é definida como examinar bit .EN bit .EN = 1 bit .EN = 0 examinar o bit .EW bit .EW = 1 bit .EW = 0 examinar o bit .ST bit .ST = 1 bit .ST = 0 examinar bit .DN bit .DN = 1 bit .DN = 0 examinar bit .DN bit .DN = 1 bit .DN = 0 examinar bit .ER bit .ER = 1 bit .ER = 0 bit .EN é desenergizado. examinar bit .ER bit .ER = 1 bit .ER = 0 comando de block-transfer caminho válido do módulo sim não não executar pedido de mensagem bit .EW está energizado conexão do módulo em operação não sim sim bit .ER é energizado Condição: Ação da Lógica Ladder: Ação de Texto Estruturado: EnableIn está energizado na EnableIn é sempre energizado A instrução executa. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-7 Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Códigos de Erro MSG Os códigos de erro dependem do tipo de instrução MSG. postscan A saída da condição da linha é definida como falsa. Nenhuma ação tomada. Condição: Ação da Lógica Ladder: Ação de Texto Estruturado: execução da instrução fim saída da condição da linha é definida como falsa bit .EN = 0 examinar o bit .EW bit .EW = 1 bit .EW = 0 examinar o bit .ST bit .ST = 1 bit .ST = 0 examinar bit .DN bit .DN = 1 bit .DN = 0 examinar bit .ER bit .ER = 1 bit .ER = 0 comando de block-transfer caminho válido do módulo sim não não bits .EW, .ST, .TO, .DN e .ER são desenergizados bit .EN é energizado executar pedido de mensagem bit .EW está energizado conexão do módulo em operação não sim sim bit .ER é energizado examinar bit .EN bit .EN = 1 examinar o bit .EW bit .EW = 0 examinar o bit .ST bit .ST = 0 bits .EW, .ST, .TO, .DN e .ER são desenergizados bit .EN é energizado bit .EN é energizado bit .EW = 1 bit .ST = 1 Publicação 1756-RM003F-PT-P - Maio 2002 3-8 Instruções de Entrada/Saída (MSG, GSV, SSV) Códigos de Erro O software RSLogix 5000 nem sempre exibe a descrição completa. Código de erro (hex): Descrição: Display do software: 0001 Falha de conexão (consulte os códigos de erro estendidos) igual à descrição 0002 Recurso insuficiente igual à descrição 0003 Valor inválido igual à descrição 0004 Erro de sintaxe IOI (consulte os códigos de erro estendidos) igual à descrição 0005 Destino desconhecido, classe não suportada, instância indefinida ou elemento de estrutura indefinida (consulte os códigos de erro estendidos) igual à descrição 0006 Espaço insuficiente no pacote igual à descrição 0007 Perda de conexão igual à descrição 0008 Serviço não suportado igual à descrição 0009 Erro no segmento de dados ou valor de atributo inválido igual à descrição 000A Erro na lista de atributo igual à descrição 000B Estado já existe igual à descrição 000C Conflito no modelo do objeto igual à descrição 000D Objeto já existe igual à descrição 000E Atributo não configurável igual à descrição 000F Permissão negada igual à descrição 0010 Conflito com o estado do dispositivo igual à descrição 0011 A resposta não será adequada igual à descrição 0012 Fragmento primitivo igual à descrição 0013 Dados de comando insuficientes igual à descrição 0014 Atributo não suportado igual à descrição 0015 Excesso de dados igual à descrição 001A Pedido de ponte muito grande igual à descrição 001B Resposta da ponte muito grande igual à descrição 001C Escassez de lista de atributos igual à descrição 001D Lista de atributos inválidos igual à descrição 001E Erro no serviço incorporado igual à descrição 001F Falha relacionada à conexão (consulte os códigos de erro estendidos) igual à descrição 0022 Resposta recebida inválida igual à descrição 0025 Erro de segmento principal igual à descrição 0026 Erro de IOI inválido igual à descrição 0027 Atributo inesperado na lista igual à descrição 0028 Erro na DeviceNet - Identificação de membro inválido igual à descrição 0029 Erro na DeviceNet - membro não configurável igual à descrição 00D1 Módulo não está no estado de operação erro desconhecido Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-9 Códigos de Erro Estendido O software RSLogix 5000 não exibe texto para os códigos de erro estendidos. Estes são os códigos de erro estendidos para o código de erro 0001. Estes são os códigos de erro estendidospara o código de erro 001F. Estes são os códigos de erro estendidos para os códigos de erro 0004 e 0005. 00FB Porta de mensagem não suportada erro desconhecido 00FC Tipo de dados não suportados pela mensagem erro desconhecido 00FD Mensagem não inicializada erro desconhecido 00FE timeout de mensagem erro desconhecido 00FF Erro geral (consulte os códigos de erro estendidos) erro desconhecido Código de erro (hex): Descrição: Display do software: Código de erro estendid o (hex): Descrição: 0100 Conexão em uso 0103 Transporte não suportado 0106 Conflito de Dispositivo de Armazenamento de Configuração 0107 Conexão não encontrada 0108 Tipo de conexão inválida 0109 Tamanho de conexão inválida 0110 Módulo não configurado 0111 EPR não suportado 0114 Módulo errado 0115 Tipo de dispositivo errado 0116 Revisão errada 0118 Formato de configuração inválido 011A Aplicação fora das conexões 0203 Timeout da conexão 0204 Timeout de mensagem não conectada 0205 Erro de parâmetro enviado não conectado 0206 Mensagem muito grande 0301 Sem espaço de memória no buffer 0302 Largura de faixa não disponível 0303 Não há disponibilidade de screeners 0305 Correspondência de assinatura 0311 Porta não disponível 0312 Endereço de rede não disponível 0315 Tipo de segmento inválido 0317 Conexão não programada Código de erro estendid o (hex): Descrição: Código de erro estendido (hex): Descrição: 0203 Timeout da conexão Código de erro estendido (hex): Descrição 0000 status estendido fora da memória 0001 status estendido fora dos exemplos Publicação 1756-RM003F-PT-P - Maio 2002 3-10 Instruções de Entrada/Saída (MSG, GSV, SSV) Estes são os códigos de erro estendidos para o código de erro 00FF. Código de erro estendid o (hex): Descrição: 2001 Excesso de IOI 2002 Valor do parâmetro deficiente 2018 Sinalização rejeitada 201B Tamanho muito pequeno 201C Tamanho inválido 2100 Falha de privilégio 2101 Posição da chave seletora de modo inválida 2102 Senha inválida 2103 Sem emissão de senha 2104 Endereço fora da faixa 2105 Endereço e quantos estão fora da faixa 2106 Dados em uso 2107 Tipo inválido ou não suportado 2108 Controlador no modo de carga ou descarga 2109 Tentativa de alterar o número das dimensões do array 210A Nome inválido do símbolo 210B Símbolo não existe 210E Busca apresentou falha 210F Tarefa não pode ser iniciada 2110 Não há condições de escrita 2111 Não há condições de leitura 2112 Rotina compartilhada que não pode ser editada 2113 Controlador no modo de falha 2114 Modo de operação inibido Código de erro estendid o (hex): Descrição: P ublicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-11 Códigos de Erro do CLP e do SLC (.ERR) Para os códigos de erro do CLP e SLC, o software de programação não exibe a descrição completa. Código de erro (hex): Descrição: 1000 Comando ilegal ou formato do controlador local 2000 Módulo de comunicação não está funcionando 3000 Nó remoto está faltando, desconectado ou desligado 4000 Controlador conectado, mas com falha (hardware) 5000 Número de estação errado 6000 Função requisitada não está disponível 7000 Controlador está no modo Program 8000 Arquivo de compatibilidade do controlador não existe 9000 Nó remoto não consegue comandar o buffer B000 Controlador está executando um download, portanto não pode ser acessado F001 Controlador converteu incorretamente o endereço F002 Endereço incompleto F003 Endereço incorreto F004 Formato ilegal do endereço - símbolo não encontrado F005 Formato ilegal do endereço - o símbolo tem o valor 0 ou maior do que o número máximo de caracteres suportados pelo dispositivo F006 Arquivo de endereço não existe no controlador alvo. F007 Arquivo de destino é muito pequeno para o número de palavras solicitado. F008 Não consegue completar o pedido Situação alterada durante operação com vários pacotes F009 Dados ou arquivo muito grande Memória não disponível F00A Controlador alvo não consegue colocar as informações requisitadas em pacotes F00B Erro de privilégio; acesso negado F00C Função requisitada não está disponível F00D Pedido redundante F00E Comando não pode ser executado F00F Overflow; histograma de overflow F010 Sem acesso F011 Tipo de dados requisitados não corresponde aos dados disponíveis F012 Parâmetros de comando incorretos F013 Referência de endereço existe para uma área apagada F014 Falha na execução do comando por motivo desconhecido Overflow do histograma do CLP-3 F015 Erro na conversão dos dados F016 Scanner não está disponível para comunicação com um adaptador de rack 1771 F017 Adaptador não está disponível para comunicação com o módulo F018 Resposta do módulo 1771 não foi válida F019 Etiqueta duplicada F01A Controlador que armazena a configuração do arquivo ativo - o arquivo está sendo usado F01B Controlador que armazena a configuração do programa ativo - alguém está fazendo o download de dados ou a edição on-line F01C Arquivo do disco está protegido contra escrita ou não pode ser acessado (somente off-line) F01D Arquivo do disco está sendo usado por outra aplicação Atualização não realizada (somente off-line) Código de erro (hex): Descrição: Publicação 1756-RM003F-PT-P - Maio 2002 3-12 Instruções de Entrada/Saída (MSG, GSV, SSV) Códigos de Erro de Block-transfer Estes são os códigos de erros específicos de block-transfer no Logix5000. Código de erro (hex): Descrição: Display do software: 00D0 O scanner não recebeu uma resposta de block-transfer do módulo de block-transfer dentro de 3,5 s do pedido erro desconhecido 00D1 O checksum da resposta de leitura não corresponde ao checksum do conjunto de dados erro desconhecido 00D2 O scanner solicitou uma leitura ou escrita, mas o módulo de block-transfer forneceu uma resposta contrária. erro desconhecido 00D3 O scanner solicitou um comprimento e o módulo de block-transfer respondeu com um comprimento diferente. erro desconhecido 00D6 O scanner recebeu uma resposta do módulo de block-transfer, indicando que o pedido de escrita apresentou falha. erro desconhecido 00EA O scanner não foi configurado para comunicar-se com o rack deste módulo de block-transfer erro desconhecido 00EB O slot lógico específico não está disponível para o tamanho de rack determinado erro desconhecido 00EC No momento, há um pedido de block-transfer em andamento e uma resposta é solicitada antes que outro pedido possa ser iniciado erro desconhecido 00ED O tamanho de pedido de block-transfer não está de acordo com os pedidos de tamanho válidos para block-transfer erro desconhecido 00EE O tipo de pedido de block-transfer não está de acordo com o BT_READ ou BT_WRITE previsto erro desconhecido 00EF O scanner não conseguiu encontrar um slot disponível na tabela de block-transfer para acomodar o pedido de block-transfer erro desconhecido 00F0 O scanner recebeu um pedido para resetar os canais de E/S remota enquanto houvesse block-transfers em aberto. erro desconhecido 00F3 As filas para block-transfers remotos estão cheias erro desconhecido 00F5 Nenhum canal de comunicação está configurado para o slot ou rack solicitado erro desconhecido 00F6 Nenhum canal de comunicação está configurado para E/S remota erro desconhecido 00F7 O timeout de block-transfer configurado na instrução encerrou a temporização antes da conclusão erro desconhecido 00F8 Erro no protocolo de block-transfer - block-transfer não solicitado erro desconhecido 00F9 Os dados de block-transfer foram perdidos devido a um canal de comunicação em más condições erro desconhecido 00FA O módulo de block-transfer solicitou um comprimento diferente daquele associado à instrução de block-transfer. erro desconhecido 00FB O checksum dos dados de leitura do block-transfer estava errado erro desconhecido 00FC Houve uma transferência inválida dos dados de escrita de block-transfer entre o adaptador e o módulo de block-transfer erro desconhecido00FD O tamanho do block-transfer mais o tamanho do índice na tabela de dados de block-transfer era maior do que o tamanho do arquivo da tabela de dados de block-transfer erro desconhecido Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-13 Especificação dos Detalhes da Configuração Depois de inserir a instrução MSG e especificar a estrutura MESSAGE, use a caixa de diálogo Message Configuration para especificar os detalhes da mensagem. Os detalhes de configuração dependem do tipo de mensagem selecionado. Clique aqui para configurar a instrução MSG 42976 Se o dispositivo alvo for um: Selecione um dos seguintes tipos de mensagens: Consulte a página: Controlador Logix5000 CIP Data Table Read 3-14 CIP Data Table Write Módulo de E/S que você configura usando o software RSLogix 5000 Module Reconfigure 3-14 CIP Generic 3-16 Controlador CLP-5 PLC5 Typed Read 3-17 PLC5 Typed Write PLC5 Word Range Read PLC5 Word Range Write Controlador SLC Controlador MicroLogix SLC Typed Read 3-18 SLC Typed Write Módulo de block-transfer Block-Transfer Read 3-18 Block-Transfer Write Controlador CLP-3 PLC3 typed read 3-19 PLC3 typed write PLC3 word range read PLC3 word range write Controlador CLP-2 PLC2 unprotected read 3-20 PLC2 unprotected write Publicação 1756-RM003F-PT-P - Maio 2002 3-14 Instruções de Entrada/Saída (MSG, GSV, SSV) Você deve especificar essa informação de configuração: Especificação das Mensagens de Leitura e Escrita da Tabela de Dados CIP Os tipos de mensagens Leitura e Escrita da Tabela de Dados CIP transferem dados entre os controladores Logix5000. Reconfiguração de um Módulo de E/S Use a mensagem Module Reconfigure para enviar as novas informações de configuração para um módulo de E/S. Durante a reconfiguração: • Os módulos de entrada continuam a enviar dados de entrada para o controlador. • Os módulos de saída continuam a enviar para o controlador seus dispositivos de saída. Uma mensagem de Module Reconfigure solicita estas propriedades de configuração: Para esta propriedade: Especifique Source Element • Se você selecionar um tipo de mensagem de leitura, Source Element é o endereço de dados que você quer ler no dispositivo alvo. Use a sintaxe de endereçamento do dispositivo alvo. • Se você selecionar um tipo de mensagem de escrita, Source Tag é o primeiro elemento do tag que você quer enviar para o dispositivo alvo. Number of Elements O número de elementos que você lê/escreve depende do tipo de dados que está sendo usado. Um elemento se refere a um "fragmento" dos dados relacionados. Por exemplo, o tag timer1 é um elemento composto por uma estrutura de controle do temporizador. Destination Element • Se você selecionar um tipo de mensagem de leitura, o Destination Element é o primeiro elemento do tag no controlador Logix5000 no qual você quer armazenar os dados que você lê a partir do dispositivo alvo. • Se você selecionar o tipo de mensagem de escrita, o Destination Element é o endereço do local no dispositivo alvo onde você escreverá os dados. Selecione este comando: Se você quiser: CIP Data Table Read ler os dados a partir de outro controlador. Os tipos Source e Destination devem corresponder. CIP Data Table Write escrever os dados em outro controlador. Os tipos Source e Destination devem corresponder. Nesta propriedade: Selecione: Message Type Module Reconfigure Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-15 Exemplo: Para reconfigurar um módulo de E/S: 1. Configure o membro requisitado do tag de configuração do módulo para o novo valor. 2. Envie uma mensagem Module Reconfigure para o módulo. Quando reconfigure[5] é energizado, ajusta o alarme em 60 para o módulo local no slot 4. A mensagem Module Reconfigure envia o novo valor de alarme para o módulo. A instrução de uma etapa previne que a linha envie mensagens múltiplas para o módulo enquanto o reconfigure[5] estiver ligado. Lógica Ladder Texto Estruturado IF reconfigure[5] AND NOT reconfigure[6]THEN Local:4:C.Ch0Config.HAlarmLimit := 60; IF NOT change_Halarm.EN THEN MSG(change_Halarm); END_IF; END_IF; reconfigure[6] := reconfigure[5]; Publicação 1756-RM003F-PT-P - Maio 2002 3-16 Instruções de Entrada/Saída (MSG, GSV, SSV) Especificar Mensagens CIP Generic Uma mensagem CIP Generic realiza uma ação específica em um módulo de E/S. Se você quiser Nesta propriedade: Digite ou selecione: Realizar um teste de pulso em um módulo de saída digital Message Type CIP Generic Service Type Pulse Test Source tag_name do tipo INT [5] Este array contém: tag_name[0] máscara de bit dos pontos para teste (teste somente um ponto de cada vez) tag_name[1] reservado, deixe 0 tag_name[2] largura do pulso (centenas de µ segundos, normalmente 20) tag_name[3] atraso no cruzamento zero para ControlLogix I/O (centenas deµsegundos, normalmente 40) tag_name[4] verifique o atraso Destination deixe em branco Resetar os fusíveis eletrônicos em um módulo de saída digital Message Type CIP Generic Service Type Reset Electronic Fuse Source tag_name do tipo DINT Este tag representa uma máscara de bit dos pontos para resetar os fusíveis para energizado. Destination deixe em branco Resetar diagnósticos travados em um módulo de entrada digital Message Type CIP Generic Service Type Reset Latched Diagnostics (I) Source tag_name do tipo DINT Esse tag representa uma máscara de bit dos pontos para resetar o diagnóstico para energizado. Resetar diagnósticos em um módulo de saída digital Message Type CIP Generic Service Type Reset Latched Diagnostics (O) Source tag_name do tipo DINT Esse tag representa uma máscara de bit dos pontos para resetar o diagnóstico para energizado. Destravar o alarme de um módulo de entrada analógica Message Type CIP Generic Service Type Selecione qual alarme você quer destravar: • Unlatch All Alarms (I) • Unlatch Analog High Alarm (I) • Unlatch Analog High High Alarm (I) • Unlatch Analog Low Alarm (I) • Unlatch Analog Low Low Alarm (I) • Unlatch Rate Alarm (I) Instance O canal do alarme que você quer destravar Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-17 Especificação das mensagens do CLP-5 Use os tipos de mensagem CLP-5 para comunicar-se com os controladores CLP-5. A tabela a seguir mostra os tipos de dados para usar com as mensagens PLC5 Typed Read e PLC5 Typed Write. Os comandos Typed Read e Typed Write também funcionam com os controladores SLC 5/03 (OS303 e acima), controladores SLC 5/04 (OS402 e acima) e os controladores SLC 5/05. Destravar o alarme de um módulo de saída analógica Message Type CIP Generic Service Type Selecione qual alarme você quer destravar: • Unlatch All Alarms (O) • Unlatch High Alarm (O) • Unlatch Low Alarm (O) • Unlatch Ramp Alarm (O) Instance O canal do alarme que você quer destravar Se você quiser Nesta propriedade: Digite ou selecione: Selecione este comando: Se você quiser: PLC5 Typed Read Ler o inteiro de 16 bits, ponto flutuante ou os dados do tipo da string e manter a integridade dos dados. Veja a Tabela3.1 na página 3-17. PLC5 Typed Write Escrever o inteiro de 16 bits, ponto flutuante ou os dados do tipo da string e manter a integridade dos dados.Veja a Tabela3.1 na página 3-17 PLC5 Word Range Read Ler uma faixa contínua de palavras de 16 bits na memória do CLP-5, independente do tipo dos dados. Este comando começa no endereço especificado como Source Element e realiza uma leitura seqüencial das palavras de 16 bits solicitadas. Os dados do Source Element são armazenados, iniciando no endereço especificado como Destination Tag. PLC5 Word Range Write Escrever uma faixa contínua de palavras de 16 bits da memória do Logix5000, independente do tipo de dados para a memória do CLP-5. Este comando começa no endereço especificado como Source Tag e realiza uma leitura seqüencial das palavras de 16 bits solicitadas. Osdados de Source Tag são armazenados, iniciando no endereço especificado como Destination Element no controlador CLP-5. Tabela 3.1 Tipos de dados para mensagens PLC5 Typed Read e Typed Write Para este tipo de dados do CLP-5: Use este tipo de dados do Logix5000: B INT F REAL N INT DINT (Escreve somente valores DINT para um controlador CLP-5 se o valor for ≥ −32,768 e ≤ 32,767.) S INT ST STRING Publicação 1756-RM003F-PT-P - Maio 2002 3-18 Instruções de Entrada/Saída (MSG, GSV, SSV) Os diagramas a seguir mostram como os comandos de faixa de palavra e de tipo são diferentes. O exemplo usa comandos de leitura de um controlador CLP-5 para um controlador Logix5000. Especificação das Mensagens do SLC Use os tipos da mensagem SLC para comunicar-se com os controladores SLC e MicroLogix. A tabela a seguir mostra quais os tipos de dados a instrução permite que você acesse. A tabela também mostra o tipo correspondente de dados do Logix5000. Especificação das Mensagens Block-transfer Os tipos de mensagem de block-transfer são usados para comunicação com módulos de block-transfer em uma rede Universal Remote I/O. palavras de 16 bits no controlador CLP-5 palavras de 32 bits no controlador Logix5000 Os comandos de tipo mantêm o valor e a estrutura dos dados. 1 2 3 4 Comando de leitura de tipo 1 2 3 4 palavras de 16 bits no controlador CLP-5 palavras de 32 bits no controlador Logix5000 Os comandos de faixa de palavra preenchem o tag de destino de forma contínua. O valor e a estrutura dos dados são modificados dependendo do tipo de dado de destino. 1 2 3 4 Comando de leitura da faixa de palavra 1 3 2 4 Para este tipo de dados do SLC ou MicroLogix: Use este tipo de dados do Logix5000: F REAL L (controladores MicroLogix 1200 e 1500) DINT N INT Se você quiser: Selecione este comando: ler dados de um módulo de block-transfer. Este tipo de mensagem substitui a instrução BTR. Block-Transfer Read escrever dados em um módulo de block-transfer. Este tipo de mensagem substitui a instrução BTW. Block-Transfer Write Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-19 Para configurar uma mensagem block-transfer, siga as orientações: • Os tags de fonte (para BTW) e destino (para BTR) devem ter um tamanho suficiente para aceitar os dados solicitados, exceto para as estruturas MESSAGE, AXIS e MODULE. • Especifique quantos inteiros de 16 bits (INT) enviar ou receber. É possível especificar de 0 a 64 inteiros. Especificação de Mensagens do CLP-3 Os tipos de mensagem do CLP-3 são determinados para os controladores CLP-3. Se você quiser o: Especifique: Módulo block-transfer para determinar quantos inteiros de 16 bits enviar (BTR). 0 para o número de elementos O controlador para enviar 64 inteiros (BTW). Selecione este comando: Se você quiser: PLC3 Typed Read ler inteiros ou dados do tipo REAL . Para inteiros, este comando lê inteiros de 16 bits a partir do controlador CLP-3 e armazena-os nos arrays de dados SINT, INT ou DINT no controlador Logix5000 mantém a integridade dos dados. Este comando também lê os dados do ponto flutuante do CLP-3 e armazena-os em um tag do tipo de dados REAL no controlador Logix5000. PLC3 Typed Write escrever de inteiros ou dados do tipo REAL. Este comando escreve os dados SINT ou INT em um arquivo de inteiros do controlador CLP-3 e mantém a integridade dos dados. É possível escrever dados DINT até onde eles se ajustem em um tipo de dados INT (−32,768 ≥ data ≤ 32,767). Este comando também escreve os dados do tipo REAL do controlador Logix5000 para um arquivo de ponto flutuante do CLP-3. PLC3 Word Range Read ler uma faixa contínua de palavras de 16 bits na memória do CLP-3, independente do tipo de dados. Este comando começa no endereço especificado como Source Element e realiza uma leitura seqüencial das palavras de 16 bits solicitadas. Os dados do Source Element são armazenados, iniciando no endereço especificado como Destination Tag . PLC3 Word Range Write Escrever uma faixa contínua de palavras de 16 bits da memória do Logix5000, independente do tipo de dados para a memória do CLP-3. Este comando começa no endereço especificado como Source Tag e realiza uma leitura seqüencial das palavras de 16 bits solicitadas. Os dados de Source Tag são armazenados, iniciando no endereço especificado como Destination Element no controlador CLP-3. Publicação 1756-RM003F-PT-P - Maio 2002 3-20 Instruções de Entrada/Saída (MSG, GSV, SSV) Os diagramas a seguir mostram como os comandos de faixa de palavra e de tipo são diferentes. O exemplo usa os comandos de leitura de um controlador CLP-3 para um controlador Logix5000. Especificação das mensagens do CLP-2 Os tipos de mensagem do CLP-2 são determinados para os controladores CLP-2. A transferência da mensagem usa palavras de 16 bits, então, certifique-se de que o tag do Logix5000 armazena adequadamente os dados transferidos (normalmente como um array INT). palavras de 16 bits no controlador CLP-3 palavras de 32 bits no controlador Logix5000 Os comandos de tipo mantêm o valor e a estrutura dos dados. 1 2 3 4 Comando de leitura de tipo 1 2 3 4 palavras de 16 bits no controlador CLP-3 palavras de 32 bits no controlador Logix5000 Os comandos de faixa de palavra preenchem o tag de destino de forma contínua. O valor e a estrutura dos dados são modificados dependendo do tipo de dado de destino. 1 2 3 4 Comando de leitura de faixa de palavra 1 3 2 4 Selecione este comando: Se você quiser: PLC2 Unprotected Read realizar a leitura de palavras de 16 bits de qualquer área da tabela de dados do CLP-2 ou do arquivo de compatibilidade do CLP-2 de outro controlador. PLC2 Unprotected Write escrever palavras de 16 bits para qualquer área da tabela de dados do CLP-2 ou do arquivo de compatibilidade do CLP-2 de outro controlador. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-21 Exemplos de Configuração MSG Os exemplos a seguir mostram os tags e elementos source e destination para combinações de controladores diferentes. Para instruções MSG originadas em um controlador Logix5000 e escrevendo para um outro controlador: Para instruções MSG originárias de um controlador Logix5000 e lidas de um outro controlador: Percurso da Mensagem: Exemplo de Fonte e Destino: Logix5000 → Logix5000 tag da fonte array_1[0] tag de destino array_2[0] Você pode usar um tag alias para o tag fonte (no controlador Logix5000 original). Você não pode usar um nome alternativo para o tag de destino. O destino deve ser um tag de base. Logix5000 → PLC-5 Logix5000 → SLC tag da fonte array_1[0] elemento de destino N7:10 Você pode usar um tag alias para o tag fonte (no controlador Logix5000 original). Logix5000 → PLC-2 tag da fonte array_1[0] elemento de destino 010 Percurso da Mensagem: Exemplo de Fonte e Destino: Logix5000 → Logix5000 tag da fonte array_1[0] tag de destino array_2[0] Você não pode usar um tag com nome alternativo para o tag de fonte. A fonte deve ser um tag de base. Você pode usar um tag alias para o tag destino (no controlador Logix5000 original). Logix5000 → PLC-5 Logix5000 → SLC elemento fonte N7:10 tag de destino array_1[0] Você pode usar um tag alias para o tag destino (no controlador Logix5000 original). Logix5000 → PLC-2 elemento fonte 010 tag de destino array_1[0] Publicação 1756-RM003F-PT-P - Maio 2002 3-22 Instruções de Entrada/Saída (MSG, GSV, SSV) Especificação de Detalhes de Comunicação Ao configurar uma instrução MSG, você especifica estes detalhes na guia Communication. Especificar um caminho O caminho descreve a rota que a mensagem pega para chegar ao destino. • Se você adicionar o módulo de comunicação local, o módulo de comunicação remoto e o controlador ou dispositivo de destino à configuração da E/S do controlador, o botão Browse permite que você selecione o destino. 43008 Message Path BrowserPath: peer_controller peer_controller I/O Configuration [0] 1756-CNB/x Local_CNB 2 [0] 1756-CNB/x chassis_b [1] 1756-L55/x peer_controller − − − peer_controller Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-23 • Alguns módulos ou dispositivos de comunicação não estão disponíveis para a configuração da E/S do controlador. Para aquelas situações, conclua o caminho conforme segue: • Para mensagens block-transfer, adicione os seguintes módulos à configuração da E/S do controlador: Onde: Para: É: port backplane de qualquer controlador ou módulo 1756 1 Porta DF1 de um controlador Logix5000 2 a porta ControlNet de um módulo 1756-CNB Porta Ethernet de um módulo 1756-ENBx ou -ENET Porta DH+ em um canal A de um módulo 1756-DHRIO Porta DH+ em um canal B de um módulo 1756-DHRIO 3 address backplane ControlLogix número do slot rede DF1 endereço da estação (0-254) rede ControlNet número do nó (1-99 decimal) rede DH+ 8# seguido pelo número do nó (1-77 octal) Por exemplo, para especificar o endereço do nó octal de 37, tipo 8#37. Rede EtherNet/IP Você pode especificar um módulo em uma rede EtherNet/IP usando qualquer um destes formatos: endereço IP (ex.: 130.130.130.5) endereço IP:Porta (ex.: 130.130.130.5:24) nome DNS (ex.: tanks) nome DNS:Porta (ex.: tanks:24) 1. Use o botão Browse para selecionar o módulo de comunicação local. 2. Na caixa de texto Path, insira a porta pela qual a mensagem sai do módulo. 3. Digite o endereço do próximo módulo pelo caminho até o destino. local_module,port,address,port,address 4. Digite combinações adicionais de portas e endereços, se necessário. Para block-transfers nesta rede: Adicione estes módulos à configuração da E/S: ControlNet • módulo de comunicação local (ex.: módulo 1756-CNB) • módulo adaptador remoto (ex.: módulo 1771-ACN) Remote I/O • módulo de comunicação local (ex.: módulo 1756-DHRIO) • um módulo adaptador remoto (ex.: módulo 1771-ASB) para cada rack ou parte do rack no chassi • módulo block-transfer (opcional) Publicação 1756-RM003F-PT-P - Maio 2002 3-24 Instruções de Entrada/Saída (MSG, GSV, SSV) As páginas seguintes mostram exemplos de caminhos: • na ControlNet, página 3-24 • na EtherNet/IP, página 3-25 • para uma mensagem DH+, página 3-25 EXEMPLO Especificação de um caminho na ControlNet Percurso: peer_controller Onde: peer_controller é o nome do controlador que recebe a mensagem. 42042rede ControlNet Mensagem I/O Configuration [0] 1756-CNB/x Local_CNB 2 [0] 1756-CNB/x chassis_b [3] 1756-L55/x peer_controller − − − Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-25 EXEMPLO Especificação de um caminho na EtherNet/IP Percurso: Local_ENB,2,127.127.127.12 Mensagem switch I/O Configuration [1] 1756-ENBx Local_ENB − − Onde: É: Local_ENB nome do módulo 1756-ENBx no chassi local 2 porta da Ethernet do módulo 1756-ENBx no chassi local 127.127.127.12 endereço IP do controlador SLC 5/05 EXEMPLO Especificação de um caminho na DH+ Percurso: Local_DHRIO Onde: Local_DHRIO é o nome no módulo 1756-DHRIO no mesmo chassi como o controlador que envia a mensagem. rede DH+ Mensagem I/O Configuration [1] 1756-DHRIO Local_DHRIO − − Publicação 1756-RM003F-PT-P - Maio 2002 3-26 Instruções de Entrada/Saída (MSG, GSV, SSV) Especificar um Módulo de Comunicação ou Endereço do Módulo: Use a seguinte tabela para selecionar um método de comunicação ou endereço de módulo para a mensagem. Se o dispositivo de destino for um: Então selecione: E especifique: Controlador Logix5000 CIP outras especificações não são necessárias Controlador CLP-5 na rede EtherNet/IP Controlador CLP-5 na rede ControlNet Controlador SLC 5/05 Controlador CLP-5 na rede DH+ DH+ Canal: Canal A ou B do módulo 1756-DHRIO que está conectado à rede DH+ Controlador SLC na rede DH+ Source Link: Identificação da rede atribuída ao backplane do controlador na tabela de roteamento do módulo 1756-DHRIO. (O source node na tabela de roteamento corresponde automaticamente ao número do slot do controlador.) Controlador CLP-3 Destination Link Identificação da rede DH+ remota onde o dispositivo alvo reside Controlador CLP-2 Destination Node: Endereço da estação do dispositivo alvo, em octal Se houver somente um link DH+ e você não usou o software RSLinx para configurar o módulo DH/RIO para os links remotos, especifique 0 para o Source Link e para o Destination Link. Aplicação em uma estação de trabalho que está recebendo uma mensagem não solicitada encaminhada em uma rede EtherNet/IP ou ControlNet através do RSLinx CIP com Fonte de ID (Isto permite que a aplicação receba dados de um controlador.) Source Link: ID remota do tópico no software RSLinx Destination Link: Destination Link virtual configurado em RSLinx (0-65535) Destination Node: Destination ID (0-77 octal) fornecido pela aplicação ao RSLinx. Para um tópico DDE em RSLinx, use 77. O número do slot do controlador ControlLogix é usada como o Nó Fonte. módulo block-transfer na rede remota I/O RIO Canal: Canal A ou B do módulo 1756-DHRIO que está conectado à rede RIO Rack Número do rack (octal) do módulo Group Número do grupo do módulo Slot Número do slot que o módulo está módulo de block-transfer em uma rede ControlNet ControlNet Slot Número do slot em que o módulo está Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-27 Escolha de uma opção de cache: Alguns tipos de mensagens usam uma conexão para enviar ou receber dados. Alguns possibilitam duas opções: deixar a conexão aberta (cache) ou fechar a conexão quando a transmissão da mensagem terminar. A tabela a seguir mostra quais mensagens usam uma conexão e se você pode ou não copiar no cache a conexão: 1 Somente certos tipos de módulo alvo requisitam uma conexão. 2 Considere como cache somente se o módulo alvo requisitar uma conexão. Use o seguinte procedimento para escolher uma opção de cache para uma mensagem que você pode gravar em cache. 1. Sua lógica altera o caminho de uma mensagem? (ou seja, uma instrução MSG se comunica com mais de um dispositivo?) Esse tipo de mensagem: Usando esse método de comunicação: Usa uma conexão: Que você pode colocar no cache: leitura ou escrita da tabela de dados CIP CIP ✓ ✓ CLP2, CLP3, CLP5 ou SLC (todos os tipos) CIP CIP com Source ID DH+ ✓ ✓ CIP generic N/A ✓ 1 ✓ 2 leitura ou escrita em block-transfer N/A ✓ ✓ Se: Então: sim A. Limpe a caixa de verificação Cache Connection . B. Pule a etapa 2. não Vá para etapa 2. Publicação 1756-RM003F-PT-P - Maio 2002 3-28 Instruções de Entrada/Saída (MSG, GSV, SSV) 2. Seleção de uma opção cache: Se a mensagem for para um: Então: controlador Para quantos controladores este controlador envia as mensagens para aquele que você pode gravar em cache? Se: Então: 16 ou menos controladores Deixe a caixa verificação Cache Connection selecionada (marcada). mais de 16 controladores 1. Selecione os 16 controladores que requisitem as mensagens mais freqüentes. 2. A mensagem é para um daqueles controladores? módulo de block-transfer Quantos dispositivos requerem as instruções block-transfer? Se: Então: 16 ou menos dispositivos Deixe a caixa verificação Cache Connection selecionada (verificada). mais de 16 dispositivos 1. Selecione 16 dispositivos que requisitem as atualizações mais recentes. 2. A mensagem é para um daqueles dispositivos? Se: Então: sim Deixe a caixa de verificação Cache Connection selecionada. não Limpe a caixa de verificação Cache Connection . Se: Então: sim Deixe a caixa de verificação Cache Connection selecionada. não Limpe a caixa de verificação Cache Connection . Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-29 Obtenção do Valor do Sistema (GSV) e Definição do Valor do Sistema (SSV) As instruções GSV/SSV obtêm e definem os dados do sistemado controlador que estão armazenados nos objetos. Operandos: Lógica Ladder Texto Estruturado Os operandos são os mesmos que aqueles para as instruções GSV e SSV. Descrição: As instruções GSV/SSV obtêm e definem os dados do sistema do controlador que estão armazenados nos objetos. O controlador armazena os dados do sistema nos objetos. Não há arquivo de status, como no controlador CLP-5. Quando habilitada, a instrução GSV recupera a informação específica e a coloca no destino. Quando habilitada, a instrução SSV define o atributo especificado com os dados da fonte. Ao inserir uma instrução GSV/SSV, o software de programação exibe as classes válidas de objeto, os nomes do objeto e os nomes de Operando: Tipo: Formato: Descrição: Class name nome nome do objeto Instance name nome nome do objeto específico, quando o objeto requisitar um nome Attribute Name nome atributo do objeto tipo dos dados dependem do atributo que você seleciona Destination (GSV) SINT INT DINT REAL tag destino para dados de atributo Source (SSV) SINT INT DINT REAL tag tag que contenha dados que você quer copiar para o atributo GSV(ClassName,InstanceName,AttributeName,Dest); SSV(ClassName,InstanceName,AttributeName,Source); Publicação 1756-RM003F-PT-P - Maio 2002 3-30 Instruções de Entrada/Saída (MSG, GSV, SSV) atributo para cada instrução. Para a instrução GSV, você pode obter valores para todos os atributos disponíveis. Para a instrução SSV, o software exibe somente aqueles atributos, cuja configuração é permitida Se o tamanho da Fonte ou Destino for muito pequeno, a instrução não executa e uma falha de advertência é registrada. A seção a seguir, Objetos GSV/SSV , define os atributos de cada objeto e seus tipos de dados associados. Por exemplo, o atributo MajorFaultRecord do objeto Programa requer um tipo de dado DINT[11]. Flags de Status Aritmético: não afetados Condições de Falha: Execução Objetos GSV/SSV Ao inserir uma instrução GSV/SSV, você especifica o objeto e atributo que você acessará. Em alguns casos, haverá mais do que um exemplo do mesmo tipo de objeto, de forma que você também possa ATENÇÃO ! Use as instruções GSV/SSV cuidadosamente. As alterações realizadas nos objetos podem causar operação inesperada do controlador ou ferimentos pessoais. Uma falha de advertência ocorrerá se: Tipo de falha: Código de falha: endereço de objeto inválido 4 5 objeto especificado que não suporta GSV/SSV 4 6 atributo inválido 4 6 informações suficientes não foram fornecidas para uma instrução SSV 4 6 o destino GSV não era grande o suficiente para suportar os dados requisitados. 4 7 Condição: Ação da Lógica Ladder: Ação de Texto Estruturado: prescan A saída da condição da linha é definida como falsa. Nenhuma ação tomada. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. na entrada da condição da linha é verdadeira A instrução executa. A saída da condição da linha é definida como verdadeira. na EnableIn está energizado na EnableIn é sempre energizado A instrução executa. a instrução executa Obtenha ou configure o valor especificado. Obtenha ou configure o valor especificado. postscan A saída da condição da linha é definida como falsa. Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-31 especificar o nome do objeto. Por exemplo, a sua aplicação pode ter várias tarefas. Cada tarefa tem o seu próprio objeto TASK que é acessado pelo nome da tarefa. É possível acessar estes objetos: Acesso ao objeto CONTROLLER O objeto CONTROLLER fornece as informações de status sobre a execução do controlador. ATENÇÃO ! Para a instrução GSV, somente o tamanho especificado do dado é copiado para o destino. Por exemplo, se o atributo for especificado como um SINT e o destino é um DINT, somente os 8 bits menos significativos do destino DINT são atualizados, sendo que os 24 bits restantes permanecem inalterados. Para informações sobre este objeto: Consulte esta página ou a publicação: AXIS ControlLogix Motion Module Setup and Configuration Manual, publicação 1756-UM006 CONTROLLER 3-31 CONTROLLERDEVICE 3-32 CST 3-34 DF1 3-35 FAULTLOG 3-38 MESSAGE 3-39 MODULE 3-41 MOTIONGROUP 3-42 PROGRAM 3-43 ROUTINE 3-44 SERIALPORT 3-44 TASK 3-46 WALLCLOCKTIME 3-46 Atributo: Tipo de Dados: Instrução: Descrição: TimeSlice INT GSV SSV Porcentagem de CPU disponível atribuída para a comunicação. Os valores válidos são 10-90. Este valor não pode ser alterado quando a chave seletora de modo estiver posicionada em Run. Publicação 1756-RM003F-PT-P - Maio 2002 3-32 Instruções de Entrada/Saída (MSG, GSV, SSV) Acesso ao objeto CONTROLLERDEVICE O objeto CONTROLLERDEVICE identifica o hardware do controlador. Atributo: Tipo de Dados: Instrução: Descrição: DeviceName SINT[33] GSV String ASCII que identifica o código de catálogo do controlador e placa de memória. O primeiro byte contém uma contagem do número de caracteres ASCII que retornaram na string do array. ProductCode INT GSV Identifica o tipo de controlador ProductRev INT GSV Identifica a revisão atual do produto. O display deve ser hexadecimal. O byte menos significativo contém a revisão principal; o byte mais significativo contém a revisão principal. SerialNumber DINT GSV Número serial do dispositivo. O número serial é atribuído quando o dispositivo é construído. Este código de produto: Identifica este controlador Logix: 3 5550 15 5860 41 5433 42 5434 43 5320 50 5553 51 5555 Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-33 Status INT GSV Os bits identificam o status: Os bits 3-0 são reservados Bits de Status do Dispositivo Bits 7-4: Significado: 0000 reservado 0001 atualização flash em andamento 0010 reservado 0011 reservado 0100 flash está deficiente 0101 em falha 0110 operação 0111 programa Bits de Status de Falha Bits 11-8: Significado: 0001 falha de advertência recuperável 0010 falha de advertência não recuperável 0100 falha grave recuperável 1000 falha grave não recuperável Bits de Status Específicos do Logix5000 Bits 13-12: Significado: 01 chave seletora em Run 10 chave seletora em Program 11 chave seletora em Remote Bits 15-14: Significado: 01 controlador está alterando os modos 10 modo de depuração se o controlador estiver no modo Run Type INT GSV Identifica o dispositivo como um controlador. Controlador = 14 Vendor INT GSV Identifica o fornecedor do dispositivo. Allen-Bradley = 0001 Atributo: Tipo de Dados: Instrução: Descrição: Publicação 1756-RM003F-PT-P - Maio 2002 3-34 Instruções de Entrada/Saída (MSG, GSV, SSV) Acesso ao objeto CST O objeto CST (coordinated system time) fornece um tempo de sistema coordenado para os dispositivos em um chassi. Atributo: Tipo de Dados: Instrução: Descrição: CurrentStatus INT GSV Status atual do tempo de sistema coordenado. Os bits identificam o status: Bit: Significado: 0 falha no hardware do temporizador: o hardware do temporizador interno do dispositivo está em falha 1 rampa habilitada: o valor atual dos 16 bits menos significativos do temporizador aumentam em rampa até o valor requisitado, ao invés de permanecer no valor menor. Estes bits são manipulados pelo método de sincronização de seleção específica da rede. 2 mestre do tempo do sistema: o objeto CST é uma fonte de tempo mestre no sistema ControlLogix 3 sincronizado: o CurrentValue de 64 bits do objeto CST é sincronizado por um objeto CST mestre através de uma atualização de tempo do sistema. 4 mestre da rede local: o objeto CST é a fonte de tempo mestre da rede local 5 modo do relé de entrada: o objeto CST está agindo em um modo de relé de tempo 6 detecção de mestre duplicado: um mestre de tempo duplicado na rede local foi detectado. Este bit é sempre 0 para os nós que dependem do tempo. 7 não usado 8-9 00 = nó que depende do tempo 01 = nó do mestre de tempo 10 = nó do relé de tempo 11 = nãousado 10-15 não usado CurrentValue DINT[2] GSV Valor atual do temporizador. DINT[0] contém os bits 32 menos significativos; DINT[1] contém os bits 32 mais significativos. A fonte do temporizador é ajustada para corresponder ao valor fornecido nos serviços de atualização e da sincronização da rede de comunicação local. O ajuste pode ser tanto um aumento em rampa até atingir o valor requisitado como uma configuração imediata no valor requisitado, conforme definido no atributo CurrentStatus. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-35 Acesso ao objeto DF1 O objeto DF1 fornece uma interface para o driver de comunicação DF1 que pode ser configurada para a porta serial. Atributo: Tipo de Dados: Instrução: Descrição: ACKTimeout := , DINT GSV Quantidade de tempo que se espera para se reconhecer uma transmissão de mensagem (somente mestre e ponto-a-ponto) Valor válido 0-32.767. Atraso nas contagens de períodos de 20 mseg. O valor inicial é de 50 (1 segundo). DiagnosticCounters INT[19] GSV Série de contadores de diagnóstico para o driver de comunicação DF1. offset da palavra DF1 ponto-a-ponto DF1 escravo mestre 0 assinatura (0x0043) assinatura (0x0042)assinatura (0x0044) 1 bits do modem bits do modembits do modem 2 pacotes enviados pacotes enviadospacotes enviados 3 pacotes recebidos pacotes recebidospacotes recebidos 4 pacotes não entregues pacotes não entreguespacotes não entregues 5 não usado tentativas de mensagenstentativas de mensagens 6 NAKs recebidos NAKs recebidosnão usado 7 ENQs recebidos poll de pacotes recebidosnão usado 8 pacotes NAKed defeituosospacotes not ACKed defeituosospacotes não ACKed defeituosos 9 nenhuma memória enviou um NAKnenhuma memória não ACKednão usado 10 pacotes duplicados recebidospacotes duplicados recebidospacotes duplicados recebidos 11 caracteres defeituosos recebidosnão usadonão usado 12 contagem de recuperações DCDcontagem de recuperações DCDcontagem de recuperações DCD 13 contagem de modem perdidacontagem de modem perdidacontagem de modem perdida 14 não usado não usado prioridade do tempo máximo de scan 15 não usado não usado última prioridade do tempo de scan 16 não usado não usado tempo de scan normal máximo 17 não usado não usado último tempo normal de scan 18 ENQs enviados não usado não usado DuplicateDetection SINT GSV Habilita a detecção de mensagem duplicada. Valor: Significado: 0 detecção de mensagem duplicada desabilitada diferente de zero detecção de mensagem duplicada desabilitada EmbeddedResponseEnable SINT GSV Habilita funcionalidade de resposta incorporada (somente ponto-a-ponto). Valor: Significado: 0 iniciado somente depois que um é recebido (padrão) 1 habilitado incondicionalmente ENQTransmitLimit SINT GSV O número de pedidos (ENQs) a serem enviados após um timeout ACK (somente ponto-a-ponto). Valor válido 0-127. Ajuste inicial é 3. EOTSuppression SINT GSV Habilita a supressão de transmissões EOT em resposta ao poll de pacotes (somente escravo). Valor: Significado: 0 supressão de EOT desabilitada (desabilitado) diferente de zero supressão de EOT habilitada ErrorDetection SINT GSV Especifica o esquema de detecção de erro. Valor: Significado: 0 BCC (padrão) 1 CRC Publicação 1756-RM003F-PT-P - Maio 2002 3-36 Instruções de Entrada/Saída (MSG, GSV, SSV) MasterMessageTransmit SINT GSV Valor atual da transmissão de mensagem mestre (somente mestre). Valor: Significado: 0 entre os polls da estação 1 na seqüência do poll (no lugar do número da estação do mestre) Valor inicial é 0. NAKReceiveLimit SINT GSV O número de NAKs recebidos em resposta a uma mensagem antes da interrupção da transmissão (somente comunicação ponto-a-ponto). Valor válido 0-127. Ajuste inicial é 3. NormalPollGroupSize INT GSV Número de estações para ser distribuído no array normal de nós do poll, depois de realizar um polling de todas as estações no array de nós de polling de prioridade (somente mestre). Valor válido 0-255. Valor inicial é 0. PollingMode SINT GSV Modo de polling atual (somente mestre). Valor: Significado: 0 baseado em mensagem, mas não permite escravos para iniciar as mensagens 1 baseado em mensagens, mas permite escravos para iniciar as mensagens (padrão) 2 transferência padrão de uma única mensagem por scan do nó 3 transferência padrão de várias mensagens por scan do nó O valor inicial é 1. ReplyMessageWait DINT GSV O tempo (atuando como mestre) para esperar o recebimento de um ACK antes de realizar um polling do escravo para uma resposta (somente mestre). Valor válido 0-65.535. Atraso nas contagens de períodos de 20 ms. O valor inicial é de 5 períodos (100 ms). StationAddress INT GSV Endereço atual da estação da porta serial. Valor válido 0-254. O valor inicial é 0. SlavePollTimeout DINT GSV A quantidade de tempo em mseg que o escravo espera pelo mestre para realizar um polling, antes que o escravo declare que não tem condições de transmitir porque o mestre está inativo (somente escravo). Valor válido 0-32.767. Atraso nas contagens de períodos de 20 ms. O valor inicial é de 3000 períodos (1 minuto). TransmitRetries SINT GSV Número de vezes para reenviar uma mensagem sem obter um reconhecimento (somente mestre e escravo) Valor válido 0-127. Ajuste inicial é 3. PendingACKTimeout DINT SSV Valor pendente para o atributo ACKTimeout. PendingDuplicateDetection SINT SSV Valor pendente para o atributo DuplicateDetection. PendingEmbeddedResponse Enable SINT SSV Valor pendente para o atributo EmbeddedResponse. PendingENQTransmitLimit SINT SSV Valor pendente para o atributo ENQTransmitLimit. PendingEOTSuppression SINT SSV Valor pendente para o atributo EOTSuppression. PendingErrorDetection SINT SSV Valor pendente para o atributo ErrorDetection. PendingNormalPollGroupSize INT SSV Valor pendente para o atributo NormalPollGroupSize. PendingMasterMessage Transmit SINT SSV Valor pendente para o atributo MasterMessageTransmit. Atributo: Tipo de Dados: Instrução: Descrição: Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-37 Para aplicar os valores para qualquer um dos atributos pendentes de DF1: 1. Use uma instrução SSV para definir o valor para o atributo pendente. É possível definir a quantidade de atributos que desejar, usando uma instrução SSV para cada atributo pendente. 2. Use uma instrução MSG para aplicar o valor. A instrução MSG se aplica a todos atributos pendentes configurados. Configure a instrução MSG da seguinte forma: PendingNAKReceiveLimit SINT SSV Valor pendente para o atributo NAKReceiveLimit. PendingPollingMode SINT SSV Valor pendente para o atributo PollingMode . PendingReplyMessageWait DINT SSV Valor pendente para o atributo ReplyMessageWait. PendingStationAddress INT SSV Valor pendente para o atributo StationAddress. PendingSlavePollTimeout DINT SSV Valor pendente para o atributo SlavePollTimeout. PendingTransmitRetries SINT SSV Valor pendente para o atributo TransmitRetries. Atributo: Tipo de Dados: Instrução: Descrição: Guia MSG Configuration: Campo: Valor: Configuration Message Type CIP Generic Service Code 0d hex Object Type a2 Object ID 1 Object Attribute deixe em branco Source deixe em branco Number of Elements 0 Destination deixe em branco Communication Path percurso de comunicação automático ( 1,s onde s = número do slot do controlador) Publicação 1756-RM003F-PT-P - Maio 2002 3-38 Instruções de Entrada/Saída (MSG, GSV, SSV) Acesso ao objeto FAULTLOG O objeto FAULTLOG fornece informações de falha sobre o controlador. Atributo: Tipo de Dados: Instrução: Descrição: MajorEvents INT GSV SSV Quantas falhas graves ocorreram desde a última vez que este contador foi resetado. MinorEvents INT GSV SSV Quantas falhas de advertência ocorreram desde a última vez que este contador foi resetado. MajorFaultBits DINT GSV SSV Os bits individuais indicam o motivo da falha grave atual. Bit: Significado: 1 perda de alimentação 3 E/S 4 execução da instrução(programa) 5 rotina de falhas 6 watchdog 7 stack 8 alteração de modo 11 movimento MinorFaultBits DINT GSV SSV Os bits individuais indicam o motivo da falha de advertência atual. Bit: Significado: 4 execução da instrução (programa) 6 watchdog 9 porta serial 10 bateria Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-39 Acesso ao objeto MESSAGE É possível acessar o objeto MESSAGE através das instruções GSV/SSV. Especifique o nome do tag da mensagem para determinar qual objeto MESSAGE você quer. O objeto MESSAGE fornece uma interface para configuração e disparo das comunicações peer-to-peer. Este objeto substitui o tipo de dados MG do controlador CLP-5. Para alterar o atributo MESSAGE, siga essas etapas: 1. Use uma instrução GSV para obter o atributo MessageType e salvá-lo em um tag. 2. Use uma instrução SSV para configurar MessageType em 0. 3. Use uma instrução SSV para configurar um atributo MESSAGE que você deseja alterar. 4. Use uma instrução SSV para configurar o atributo MessageType no valor original novamente obtido na etapa 1. Exemplo: O seguinte exemplo a seguir muda o atributo ConnectionPath, de forma que a mensagem vá para um controlador diferente.Quando msg_path estiver energizado, configure o caminho da mensagem Atributo: Tipo de Dados: Instrução: Descrição: ConnectionPath SINT[130] GSV SSV Dados para configuração do percurso de conexão. Os primeiros dois bytes (byte desenergizado e byte energizado) são o comprimento em bytes do percurso de conexão. ConnectionRate DINT GSV SSV Taxa (velocidade) requisitada para o pacote da conexão. MessageType SINT GSV SSV Especifica o tipo de mensagem. Valor: Significado: 0 não inicializado Port SINT GSV SSV Indica por qual porta a mensagem deve ser enviada. Valor: Significado: 1 backplane 2 porta serial TimeoutMultiplier SINT GSV SSV Determina o término da temporização de uma conexão e quando deve ser fechada. Valor: Significado: 0 conexão interromperá o timeout em 4 vezes a taxa de atualização padrão) 1 conexão interromperá o timeout em 8 vezes a taxa de atualização 2 conexão interromperá o timeout em 16 vezes a taxa de atualização UnconnectedTimeout DINT GSV SSV Timeout em microssegundos para todas as mensagens não conectadas. O valor inicial é de 30.000.000 microssegundos (30 segundos). Publicação 1756-RM003F-PT-P - Maio 2002 3-40 Instruções de Entrada/Saída (MSG, GSV, SSV) msg_1 para o valor de msg_1_path. Isto envia a mensagem para um controlador diferente. Lógica Ladder Texto Estruturado IF msg_path THEN GSV(MESSAGE,msg_1,MessageType,msg_1_type); SSV(MESSAGE,msg_1,MessageType,tag_a); SSV(MESSAGE,msg_1,ConnectionPath,msg_1_path[0]); SSV(MESSAGE,msg_1,MessageType,msg_1_type); END_IF; IF NOT msg_1.EN THEN MSG(msg_1); END_IF; Onde: É: msg_1 mensagem cujo atributo você quer alterar msg_1_type tag que armazena o valor do atributo MessageType tag_a tag que armazena um 0. msg_1_path tag do array que armazena o novo caminho da conexão para mensagem 0 msg_path Get System Value Class name MESSAGE Instance name msg_1 Attribute Name MessageType Dest msg_1_type 2 GSV Set System Value Class name MESSAGE Instance name msg_1 Attribute Name MessageType Source tag_a 0 SSV Set System Value Class name MESSAGE Instance name msg_1 Attribute Name ConnectionPath Source msg_1_path[0] 6 SSV Set System Value Class name MESSAGE Instance name msg_1 Attribute Name MessageType Source msg_1_type 2 SSV 1 / msg_1.EN EN DN ER Type - CIP Data Table Write Message Control msg_1 ... MSG Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-41 Acesso ao objeto MODULE O objeto MODULE fornece as informações de status sobre um módulo. Para selecionar um determinado objeto MODULE, configure o operando Object Name da instrução GSV/SSV no nome do módulo. O módulo especificado deve estar presente na seção I/O Configuration do organizador do controlador e deve ter um nome de dispositivo. Atributo: Tipo de Dados: Instrução: Descrição: EntryStatus INT GSV Especifica o estado atual da entrada do mapa especificado. Os 12 bits menos significativos devem ser filtrados pela máscara na execução de uma operação de comparação. Somente os bits de 12 a 15 são válidos. Valor: Significado: 16#0000 Standby: o controlador está energizando. 16#1000 Em Falha: quaisquer uma das conexões do objeto MODULE com a falha do módulo associado. Este valor não deve ser usado para determinar se o módulo apresentou falha porque o objeto MODULE sai deste estado periodicamente ao tentar reconectar-se ao módulo. Ao invés disso, verifique Running state (16#4000). Verifique se FaultCode não é igual a 0 para determinar se um módulo apresenta falha. Quando estiver na condição de Falha (Faulted), os atributos FaultCode e FaultInfo são válidos até que a condição de falha seja corrigida. 16#2000 Validação: o objeto MODULE está verificando a integridade do objeto MODULE antes de estabelecer as conexões para o módulo. 16#3000 Conexão: o objeto MODULE está iniciando as conexões para o módulo. 16#4000 Em Operação: todas as conexões com o módulo são estabelecidas e os dados são transferidos com sucesso. 16#5000 Desligamento: o objeto MODULE está no processo de desligar todas as conexões para o módulo. 16#6000 Inibido: o objeto MODULE está inibido (o bit inibido no atributo Mode está energizado). 16#7000 Na Espera: o objeto-pai MODULE do qual este objeto MODULE depende não está em operação. FaultCode INT GSV Número que identifica uma falha no módulo, em caso de ocorrência. FaultInfo DINT GSV Fornece informações específicas sobre o código de falha do objeto MODULE. ForceStatus INT GSV Especifica o status dos pontos forçados. Bit: Significado: 0 pontos forçados instalados (1=sim, 0-não) 1 pontos forçados habilitados (1=sim, 0=não) 2-15 não usado Publicação 1756-RM003F-PT-P - Maio 2002 3-42 Instruções de Entrada/Saída (MSG, GSV, SSV) Acesso ao objeto MOTIONGROUP O objeto MOTIONGROUP fornece as informações de status sobre um grupo de eixos para o servo módulo. Especifique o nome do tag do grupo de posicionamento (motion) para determinar qual objeto MOTIONGROUP você quer. Instance DINT GSV Fornece o número de instância deste objeto MODULE. LEDStatus INT GSV Especifica o estado atual do LED de E/S localizado na parte frontal do controlador. Valor: Significado: 0 LED desligado: Nenhum objeto MODULE foi configurado para o controlador (não há módulos na seção I/O Configuration do organizador do controlador). 1 Vermelho piscando: Nenhum dos objetos MODULE está em operação. 2 Verde piscando: Pelo menos um objeto MODULE não está em operação. 3 Verde permanente: Todos os objetos MODULE estão em operação. Nota: Não é possível inserir um nome de objeto com este atributo porque este atributo se aplica a todo o conjunto de módulos. Mode INT GSV SSV Especifica o modo atual do objeto MODULE. Bit: Significado: 0 Se configurado, causa uma falha grave se uma das conexões do objeto MODULE apresentar falha enquanto o controlador estiver no modo de operação. 2 Se configurado, faz com que o objeto MODULE seja introduzido no estado Inibido depois de desligar todas as conexões do módulo. Atributo: Tipo de Dados: Instrução: Descrição: Atributo: Tipo de Dados: Instrução: Descrição: Instance DINT GSV Fornece o número de exemplo deste objeto MOTION_GROUP. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-43 Acesso ao objeto PROGRAM O objeto PROGRAM fornece as informações de status sobre um programa. Especifique o nome do programa para determinar qual objeto PROGRAM você quer. Atributo: Tipo de Dados: Instrução: Descrição: DisableFlag SINT GSV SSV Controla essa execução do programa. Valor: Significado: 0 execução habilitada 1 execução desabilitada Instance DINT GSV Fornece o número de instância deste objeto PROGRAM. LastScanTime DINT GSV SSV Tempo que a execuçãodo programa demorou da última vez. O tempo está em microssegundos. MajorFaultRecord DINT[11] GSV SSV Registra as falhas graves para este programa Recomendamos que você crie uma estrutura definida pelo usuário para simplificar o acesso ao atributo MajorFaultRecord: Nome Tipo de Dados: Estilo: Descrição: TimeLow DINT Decimal 32 bits menos significativos de valor de registro de data e hora da falha TimeHIgh DINT Decimal 32 bits mais significativos de valor de registro de data e hora da falha Type INT Decimal tipo de falha (programa, E/S etc.) Code INT Decimal código exclusivo para a falha (depende do tipo de falha) Info DINT[8] Hexadecimal informação específica sobre a falha (depende do tipo e do código de falha) MaxScanTime DINT GSV SSV Tempo máximo de execução registrado para este programa. O tempo está em microssegundos. MinorFaultRecord DINT[11] GSV SSV Registra as falhas de advertência para este programa Recomendamos que você crie uma estrutura definida pelo usuário para simplificar o acesso ao atributo MinorFaultRecord: Nome Tipo de Dados: Estilo: Descrição: TimeLow DINT Decimal 32 bits menos significativos de valor de registro de data e hora da falha TimeHIgh DINT Decimal 32 bits mais significativos de valor de registro de data e hora da falha Type INT Decimal tipo de falha (programa, E/S etc.) Code INT Decimal código exclusivo para a falha (depende do tipo de falha) Info DINT[8] Hexadecimal informações específicas sobre a falha (depende do tipo e do código de falha) SFCRestart INT GSV SSV não usado - reservado para uso futuro Publicação 1756-RM003F-PT-P - Maio 2002 3-44 Instruções de Entrada/Saída (MSG, GSV, SSV) Acesso ao objeto ROUTINE O objeto ROUTINE fornece as informações de status sobre uma rotina. Especifique o nome da rotina para determinar qual objeto ROUTINE você quer. Acesso ao objeto SERIALPORT O objeto SERIALPORT fornece uma interface com a porta de comunicação serial. Atributo: Tipo de Dados: Instrução: Descrição: Instance DINT GSV Fornece o número de instância deste objeto ROUTINE. Valores válidos são 0-65.535. Atributo: Tipo de Dados: Instrução: Descrição: BaudRate DINT GSV Especifica a taxa de transmissão. Os valores válidos são 110, 300, 600, 1200, 2400, 4800, 9600 e 19200 (padrão). DataBits SINT GSV Especifica o número de bits de dados por caracter. Valor: Significado: 7 7 bits de dados (somente ASCII) 8 8 bits de dados (padrão) Paridade SINT GSV Especifica a paridade. Valor: Significado: 0 sem paridade (sem padrão) 1 paridade ímpar (somente ASCII) 2 paridade par RTSOffDelay INT GSV Quantidade de tempo para retardar o desligamento da linha RTS depois da transmissão do último caracter. Valor válido 0-32.767. Atraso nas contagens de períodos de 20 ms. O valor inicial é 0 ms. RTSSendDelay INT GSV Quantidade de tempo para retardar a transmissão do primeiro caracter de uma mensagem depois de se energizar a linha RTS. Valor válido 0-32.767. Atraso nas contagens de períodos de 20 ms. O valor inicial é 0 ms. StopBits SINT GSV Especifica o número de bits de parada. Valor: Significado: 1 1 bit de parada (padrão) 2 2 bits de parada (somente ASCII) PendingBaudRate DINT SSV Valor pendente para o atributo BaudRate. PendingDataBits SINT SSV Valor pendente para o atributo DataBits. PendingParity SINT SSV Valor pendente para o atributo Parity. PendingRTSOffDelay INT SSV Valor pendente para o atributo RTSOffDelay. PendingRTSSendDelay INT SSV Valor pendente para o atributo RTSSendDelay. PendingStopBits SINT SSV Valor pendente para o atributo StopBits. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-45 Para aplicar os valores para qualquer um dos atributos pendentes SERIALPORT: 1. Use uma instrução SSV para definir o valor para o atributo pendente. É possível definir a quantidade de atributos que desejar, usando uma instrução SSV para cada atributo pendente. 2. Use uma instrução MSG para aplicar o valor. A instrução MSG se aplica para cada atributo pendente configurado. Configure as instruções MSG da seguinte forma: Guia MSG Configuration: Campo: Valor: Configuration Message Type CIP Generic Service Code 0d hex Object Type 6f hex Object ID 1 Object Attribute deixe em branco Source deixe em branco Number of Elements 0 Destination deixe em branco Communication Path percurso de comunicação automático (1,s onde s = número do slot do controlador) Publicação 1756-RM003F-PT-P - Maio 2002 3-46 Instruções de Entrada/Saída (MSG, GSV, SSV) Acesso ao objeto TASK O objeto TASK fornece as informações de status sobre uma tarefa. Especifique o nome do programa para determinar qual objeto TASK você quer. Acesso ao objeto WALLCLOCKTIME O objeto WALLCLOCKTIME fornece um registro de data e hora que o controlador pode usar para programação. Atributo: Tipo de Dados: Instrução: Descrição: Instance DINT GSV Fornece o número de instância deste objeto TASK. Valores válidos são 0-31. LastScanTime DINT GSV SSV Tempo que a execução desta tarefa demorou da última vez. O tempo está em microssegundos. MaxInterval DINT[2] GSV SSV O tempo máximo de intervalo entre as execuções sucessivas da tarefa. DINT[0] contém os bits 32 menos significativos do valor; DINT[1] contém os bits 32 mais significativos do valor; Um valor de 0 indica 1 ou menos execuções da tarefa. MaxScanTime DINT GSV SSV Tempo máximo de execução registrado para este programa. O tempo está em microssegundos. MinInterval DINT[2] GSV SSV O tempo mínimo de intervalo entre as execuções sucessivas da tarefa. DINT[0] contém os bits 32 menos significativos do valor; DINT[1] contém os bits 32 mais significativos do valor; Um valor de 0 indica 1 ou menos execuções da tarefa. Priority INT GSV Prioridade relativa dessa tarefa comparada com outras tarefas. Valores válidos são 0-15. Rate DINT GSV O intervalo de tempo entre as execuções sucessivas da tarefa. O tempo está em microssegundos. StartTime DINT[2] GSV SSV O valor de WALLCLOCKTIME quando a última execução da tarefa foi iniciada. DINT[0] contém os bits 32 menos significativos do valor; DINT[1] contém os 32 bits 32 mais significativos do valor; Watchdog DINT GSV SSV Limite de tempo para a execução de todos os programas associados a essa tarefa. O tempo está em microssegundos. Se você inserir 0, estes valores serão atribuídos: Tempo: Tipo de Tarefa: 0,5 s periódico 5,0 s contínuo Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-47 Atributo: Tipo de Dados: Instrução: Descrição: CSTOffset DINT[2] GSV SSV Desvio positivo do CurrentValue do objeto CST (tempo do sistema coordenado, consulte a página 3-34). DINT[0] contém os 32 bits menos significativos do valor; DINT[1] contém os 32 bits mais significativos do valor; Valor em µsegundos. O valor inicial é 0. CurrentValue DINT[2] GSV SSV O valor atual de WALLCLOCKTIME. DINT[0] contém os 32 bits menos significativos do valor; DINT[1] contém os 32 bits mais significativos do valor; O valor é a quantidade de microssegundos que decorreram desde 0000 hs 1 janeiro de 1972. Os objetos CST e WALLCLOCKTIME são relacionados matematicamente no controlador. Por exemplo, se você acrescentar CST CurrentValue e WALLCLOCKTIME CTSOffset, terá como resultado WALLCLOCKTIME CurrentValue. DateTime DINT[7] GSV SSV Data e hora em formato que possibilita a leitura. DINT[0] ano DINT[1] representação do mês através de inteiros (1-12) DINT[2] representação do dia através de inteiros (1-31) DINT[3] hora (0-23) DINT[4] minuto (0-59) DINT[5] segundos (0-59) DINT[6] microssegundos (0-999.999) Publicação 1756-RM003F-PT-P - Maio 2002 3-48 Instruções de Entrada/Saída (MSG, GSV, SSV) Exemplo de Programação GSV/SSV Obtenção de informações de falha Os exemplos a seguir usam as instruções GSV para obter informações de falha. Exemplo 1: Neste exemplo, as informações de falha do módulo de E/S são obtidas em disc_in_2 e colocadas nos dados em uma estrutura definida pelo usuárioem disc_in_2_info. Lógica Ladder Texto Estruturado GSV(MODULE,disc_in_2,FaultCode,disc_in_2_info.FaultCode); GSV(MODULE,disc_in_2,FaultInfo,disc_in_2_info.FaultInfo); GSV(MODULE,disc_in_2,Mode,disc_in_2info.Mode); Exemplo 2: Neste exemplo, as informações de status são obtidas sobre o programa discrete e colocadas nos dados em uma estrutura definida pelo usuário em discrete_info. Lógica Ladder Texto Estruturado GSV(PROGRAM,DISCRETE,LASTSCANTIME, discrete_info.LastScanTime); GSV(PROGRAM,DISCRETE,MAXSCANTIME,discrete_info.MaxScanTime); Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Entrada/Saída (MSG, GSV, SSV) 3-49 Exemplo 3: Neste exemplo, as informações de status são obtidas sobre a tarefa IO_test e colocadas nos dados em uma estrutura definida pelo usuário em io_test_info. Lógica Ladder Texto Estruturado GSV(TASK,IO_TEST,LASTSCANTIME,io_test_info.LastScanTime); GSV(TASK,IO_TEST,MAXSCANTIME,io_test_info.MaxScanTime); GSV(TASK,IO_TEST,WATCHDOG,io_test_info.WatchDog); Configuração de flags de habilitação e desabilitação O exemplo a seguir usa a instrução SSV para habilitar ou desabilitar um programa. É possível também, utilizar este método para habilitar ou desabilitar um módulo E/S, o que é similar à utilização de bits inibidos em um controlador CLP-5. Exemplo: Com base no status de SW.1, coloque o valor apropriado no atributo disableflag do programa discrete. Lógica Ladder Publicação 1756-RM003F-PT-P - Maio 2002 3-50 Instruções de Entrada/Saída (MSG, GSV, SSV) Texto Estruturado IF SW.1 THEN discrete_prog_flag := enable_prog; ELSE discrete_prog_flag := disable_prog; END_IF; SSV(PROGRAM,DISCRETE,DISABLEFLAG,discrete_prog_flag); Publicação 1756-RM003F-PT-P - Maio 2002 Capítulo 4 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Introdução As instruções de comparação permitem a comparação de valores através do uso de uma expressão ou uma instrução de comparação específica. Você pode comparar valores de diferentes tipos de dados como, por exemplo, ponto flutuante e inteiro. Para instruções de lógica ladder, os tipos de dados em negrito indicam tipos de dados ótimos. Uma instrução executa mais rapidamente e requer menos memória, se todos os operandos da instrução usarem o mesmo tipo de dados ótimos, geralmente DINT ou REAL. Se você quiser: Use esta instrução: Disponível nestas linguagens: Consulte a página: comparar valores com base em uma expressão CMP lógica ladder texto estruturado(1) 4-2 testar se dois valores são iguais EQU lógica ladder texto estruturado(2) bloco de funções 4-7 testar se um valor é maior ou igual a um segundo valor GEQ lógica ladder texto estruturado(1) bloco de funções 4-10 testar se um valor é maior que um segundo valor GRT lógica ladder texto estruturado(1) bloco de funções 4-14 testar se um valor é menor ou igual a um segundo valor LEQ lógica ladder texto estruturado(1) bloco de funções 4-18 testar se um valor é menor que um segundo valor LES lógica ladder texto estruturado(1) bloco de funções 4-22 testar se um valor está entre outros dois valores LIM lógica ladder bloco de funções texto estruturado(1) 4-26 passar dois valores por uma máscara e testar se são iguais MEQ lógica ladder bloco de funções texto estruturado(1) 4-32 testar se um valor é diferente a um segundo valor NEQ lógica ladder texto estruturado(1) bloco de funções 4-37 (1) Não há instrução de texto estruturado equivalente. Use outra programação de texto estruturado para obter o mesmo resultado. Consulte a descrição da instrução. (2) Não há instrução de texto estruturado equivalente. Use o operador em uma expressão. 1 Publicação 1756-RM003F-PT-P - Maio 2002 4-2 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Comparação (CMP) A instrução CMP realiza uma comparação nas operações aritméticas especificadas na expressão. Operandos: Lógica Ladder Texto Estruturado O texto estruturado não tem um a instrução CMP, mas você pode obter o mesmo resultado usando uma construção e expressão IF...THEN. IF BOOL_expression THEN <statement>; END_IF; Consulte o Apêndice C para informações de sintaxe de atribuições e expressões em textos estruturados. Descrição: Define a expressão CMP usando operadores, tags e valores imediatos. Use parênteses ( ) para definir as seções das expressões mais complexas. A execução de uma instrução CMP é um pouco mais lenta e usa mais memória que a execução de outras instruções de comparação. A vantagem da instrução CMP é que a mesma permite a inserção de expressões complexas em uma instrução. Flags de Status Aritmético: A instrução CMP afeta apenas os flags de status aritmético se a expressão contiver um operador (ex: +, −, *, /) que os afete. Condições de Falha: nenhuma Operando: Tipo: Formato: Descrição: Expression SINT INT DINT REAL string imediato tag uma expressão composta por tags e/ou valores imediatos separados por operadores Um tag SINT ou INT converte em um valor DINT pela extensão de sinal. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-3 Execução Exemplos: Se a instrução CMP encontrar a expressão verdadeira, a saída da condição da linha será verdadeira. Caso uma expressão seja inserida sem um operador de comparação como, por exemplo, value_1 + value_2 ou value_1, a instrução avaliará a expressão como: Condição: Ação da Lógica Ladder: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. postscan A saída da condição da linha é definida como falsa. fim avaliar a expressão a expressão é verdadeira a expressão é falsa saída da condição da linha é definida como verdadeira saída da condição da linha é definida como falsa entrada da condição da linha é verdadeira Se a expressão: A saída da condição da linha é definida em: diferente de zero verdadeira zero falsa Publicação 1756-RM003F-PT-P - Maio 2002 Expressões CMP As expressões das instruções CMP são programadas da mesma forma que as expressões nas instruções FSC. Use as seções a seguir para mais informações sobre operadores válidos, formato e seqüência de operação que são comuns nas duas instruções. Operadores válidos Formatação de expressões Para cada operador utilizador, você deve fornecer um ou dois operandos (tags ou valores imediatos). Use a tabela a seguir para formatar os operadores e os operandos em uma expressão: Operador: Descrição: Ótimo: + adição DINT, REAL - subtração/negativo DINT, REAL * multiplicação DINT, REAL / divisão DINT, REAL = igual DINT, REAL < menor que DINT, REAL <= menor ou igual a DINT, REAL > maior que DINT, REAL <= maior ou igual a DINT, REAL <> diferente de DINT, REAL ** expoente (x elevado a y) DINT, REAL ABS valor absoluto DINT, REAL ACS arcos co-seno AND AND DINT ASN arco seno ATN arco tangente COS co-seno DEG radianos em graus DINT, REAL FRD BCD para inteiro DINT LN log neperiano REAL LOG log base 10 REAL MOD módulo DINT, REAL NOT complementação DINT OR OR DINT RAD graus em radianos DINT, REAL SIN seno REAL SQR raiz quadrada DINT, REAL TAN tangente REAL TOD inteiro para BCD DINT TRN trancar DINT, REAL XOR XOR DINT Operador: Descrição: Ótimo: Para operadores que operam em: Use este formato: Exemplos: um operando operator(operand) ABS(tag_a) dois operandos operand_a operator operand_b • tag_b + 5 • tag_c AND tag_d • (tag_e ** 2) MOD (tag_f / tag_g) 4-4 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-5 Determinação da seqüência da operação As operações que você escreve na expressão são executadas pela instrução na seqüência prescrita e não, necessariamente, na ordem que você as escreveu. É possível suprimir a seqüência da operaçãoagrupando-se os termos dentro de parênteses, forçando a instrução para realizar uma operação dentro dos parênteses, antes de outras operações. As operações com a mesma seqüência são executadas da esquerda para a direita. Uso de strings em uma expressão Use uma expressão em lógica ladder ou em texto estruturado para comparar os tipos de dados da string. Para usar strings em uma expressão, siga estas orientações: • Uma expressão permite que você compare dois tags da string. • Você não pode inserir caracteres ASCII em uma expressão diretamente. • Somente os operadores a seguir são permitidos Seqüência: Operação: 1. ( ) 2. ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG, RAD, SIN, SQR, TAN, TOD, TRN 3. ** 4. − (negativo), NOT 5. *, /, MOD 6. <, <=, >, >=, = 7. − (subtração), + 8. AND 9. XOR 10. OR Operador: Descrição: = igual < menor que <= menor ou igual a > maior que >= maior ou igual a <> diferente de Publicação 1756-RM003F-PT-P - Maio 2002 4-6 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) • As strings são iguais se os caracteres corresponderem. • Os caracteres ASCII são sensíveis ao contexto. A letra “A” ($41) maiúscula não é igual à letra "a" minúscula ($61). • Os valores hexadecimais dos caracteres determinam se um string é menor ou maior que outro. Para o código hexadecimal de caractere, consulte a parte de trás deste manual. • Quando duas strings são classificadas em um diretório de telefones, a seqüência das strings determina qual é maior Caracteres ASCII Códigos Hex 1ab $31$61$62 1b $31$62 a $41 AB $41$42 B $42 a $61 ab $61$62 m ai or q u e m e n or q u e AB < B a > B Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-7 Igual (EQU) A instrução EQU testa se Source A é igual a Source B. Operandos: Lógica Ladder • Se você inserir um tag SINT ou INT, o valor converte em um valor DINT pelo sinal de extensão. • Valores REAL raramente são absolutamente iguais. Caso seja necessário determinar a igualdade de dois valores do tipo REAL, use a instrução LIM. • Os tipos de dados da string são: – tipo de dados STRING padrão – qualquer novo tipo de dados da string que você criar • Para testar os caracteres de uma string, insira um tag da string para Source A e Source B. Texto Estruturado Use um sinal igual “=” como um operador em uma expressão. Esta expressão avalia se sourceA é igual a sourceB. Consulte o Apêndice C para informações sobre a sintaxe de expressões de texto estruturado. Bloco de Funções Operando: Tipo: Formato: Descrição: Source A SINT INT DINT REAL string imediato tag valor a ser testado em relação Source B Source B SINT INT DINT REAL string imediato tag valor a ser testado em relação Source A Operando: Tipo: Formato: Descrição: EQU tag FBD_COMPARE estrutura estrutura EQU IF sourceA = sourceB THEN <statements>; Publicação 1756-RM003F-PT-P - Maio 2002 4-8 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) estrutura FBD_COMPARE Descrição: Use a instrução EQU para comparar dois números ou duas strings de caracteres ASCII. Quando comparar strings: • As strings são iguais se os caracteres corresponderem. • Os caracteres ASCII são sensíveis ao contexto. O "A" maiúsculo ($41) não é igual ao "a" minúsculo ($61). Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução Lógica Ladder Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não é executada e as saídas não são atualizadas. Valor inicial está energizado SourceA REAL Valor para comparar com SourceB. Válido = qualquer flutuante SourceB REAL Valor para comparar com SourceA. Válido = qualquer flutuante Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest BOOL Resultado da instrução. Isto equivale à saída da condição da linha da instrução EQU da lógica ladder. Condição: Ação: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. postscan A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira fim Source A = Source B; sim não saída da condição da linha é definida como verdadeira saída da condição da linha é definida como falsa Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-9 Bloco de Funções Exemplo: Se value_1 for igual a value_2, energize light_a. Se value_1 não for igual a value_2, desligue light_a. Lógica Ladder Texto Estruturado light_a := (value_1 = value_2); Bloco de Funções Condição: Ação: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado EnableOut está desenergizado. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 4-10 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Maior ou Igual a (GEQ) A instrução GEQ testa se Source A é maior ou igual a Source B. Operandos: Lógica Ladder • Se você inserir um tag SINT ou INT, o valor converte a um valor DINT pelo sinal de extensão. • Tipos de dados da string são: – tipo de dados STRING padrão – qualquer novo tipo de dados da string que você criar • Para testar os caracteres de uma string, insira um tag da string para Source A e Source B. Texto Estruturado Use sinais 'maior que', adjacentes e iguais “>=” como operador em uma expressão. Esta expressão avalia se sourceA é maior ou igual a sourceB. Consulte o Apêndice C para informações sobre a sintaxe de expressões de texto estruturado. Bloco de Funções Operando: Tipo: Formato: Descrição: Source A SINT INT DINT REAL string imediato tag valor a ser testado em relação a Source B Source B SINT INT DINT REAL string imediato tag valor a ser testado em relação a Source A Operando: Tipo: Formato: Descrição: GEQ tag FBD_COMPARE estrutura estrutura GEQ IF sourceA >= sourceB THEN <statements>; Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-11 Estrutura FBD_COMPARE Descrição: A instrução GEQ testa se Source A é maior ou igual a Source B. Quando comparar strings: • Os valores hexadecimais dos caracteres determinam se uma string é menor ou maior que outro. Para o código hexadecimal de caractere, consulte a quarta capa deste manual. • Quando duas strings estão classificadas como em um diretório de telefone, a ordem das strings determina qual é o maior. Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita a entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas. Valor inicial está energizado SourceA REAL Valor para comparar a SourceB. Válido = qualquer flutuante SourceB REAL Valor para comparar a SourceA. Válido = qualquer flutuante Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest BOOL Resultado da instrução. Isto é equivalente à saída da condição da linha para a instrução GEQ da lógica ladder. Caracteres ASCII Códigos Hexadecimais 1ab $31$61$62 1b $31$62 A $41 AB $41$42 B $42 a $61 ab $61$62 m ai or q u e m e n or q u e AB < B a > B Publicação 1756-RM003F-PT-P - Maio 2002 4-12 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Lógica Ladder Bloco de Funções Condição: Ação: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. postscan A saída da condição da linha é definida como falsa. entradada condição da linha é verdadeira fim Source A ≥ Source B sim não saída da condição da linha é definida como verdadeira saída da condição da linha é definida como falsa Condição: Ação: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado EnableOut está desenergizado. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-13 Exemplo: Se value_1 for maior ou igual a value_2, energiza light_b. Se value_1 for menor que value_2, desligue light_a. Lógica Ladder Texto Estruturado light_b := (value_1 >= value_2); Bloco de Funções Publicação 1756-RM003F-PT-P - Maio 2002 4-14 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Maior que (GRT) A instrução GRT testa se Source A é maior que Source B. Operandos: Lógica Ladder • Se você inserir um tag SINT ou INT, o valor converte em um valor DINT pelo sinal de extensão. • Tipos de dados da string são: – tipo de dados STRING padrão – qualquer novo tipo de dados da string que você criar • Para testar os caracteres de uma string, insira um tag da string para Source A e Source B. Texto Estruturado Use o sinal maior que ">" como um operador em uma expressão. Esta expressão avalia se sourceA é maior que sourceB. Consulte o Apêndice C para informações sobre a sintaxe de expressões de texto estruturado. Bloco de Funções Operando: Tipo: Formato: Descrição: Source A SINT INT DINT REAL string imediato tag valor a ser testado em relação a Source B Source B SINT INT DINT REAL string imediato tag valor a ser testado em relação a Source A Operando: Tipo: Formato: Descrição: GRT tag FBD_COMPARE estrutura estrutura GRT IF sourceA > sourceB THEN <statements>; Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-15 estrutura FBD_COMPARE Descrição: A instrução GRT testa se Source A é maior ou igual a Source B. Ao comparar strings: • Os valores hexadecimais dos caracteres determinam se uma string é menor ou maior que outro. Para o código hexadecimal de caractere, consulte a quarta capa deste manual. • Quando duas strings estão classificadas como em um diretório de telefone, a ordem dos strings determina qual é o maior. Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não é executada e as saídas não são atualizadas. Valor inicial está energizado SourceA REAL Valor para comparar com SourceB. Válido = qualquer flutuante SourceB REAL Valor para comparar com SourceA. Válido = qualquer flutuante Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest BOOL Resultado da instrução. Isto equivale à saída da condição da linha para instrução GRT da lógica ladder. Caracteres ASCII Códigos Hexadecimais 1ab $31$61$62 1b $31$62 A $41 AB $41$42 B $42 a $61 ab $61$62 m ai or q u e m e n or q u e AB < B a > B Publicação 1756-RM003F-PT-P - Maio 2002 4-16 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Lógica Ladder Bloco de Funções Condição: Ação: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. postscan A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira fim Source A * Source B sim não saída da condição da linha é definida como verdadeira saída da condição da linha é definida como falsa Condição: Ação: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado EnableOut está desenergizado. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-17 Exemplo: Se value_1 for maior que value_2, energize light_1. Se value_1 for menor ou igual a value_2, desligue light_1. Lógica Ladder Texto Estruturado light_1 := (value_1 > value_2); Bloco de Funções Publicação 1756-RM003F-PT-P - Maio 2002 4-18 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Menor ou Igual a (LEQ) A instrução LEQ testa se Source A é menor ou igual a Source B. Operandos: Lógica Ladder • Se você inserir um tag SINT ou INT, o valor converte em um valor DINT pelo sinal de extensão. • Tipos de dados da string são: – tipo de dados STRING padrão – qualquer novo tipo de dados da string que você criar • Para testar os caracteres de uma string, insira um tag da string para Source A e Source B. Texto Estruturado Use sinais 'menor que', adjacentes e iguais “<=" como operadores em uma expressão. Esta expressão avalia se sourceA é menor ou igual a sourceB. Consulte o Apêndice C para informações sobre a sintaxe de expressões de texto estruturado. Bloco de Funções Operando: Tipo: Formato: Descrição: Source A SINT INT DINT REAL string imediato tag valor a ser testado em relação Source B Source B SINT INT DINT REAL string imediato tag valor a ser testado em relação Source A Operando: Tipo: Formato: Descrição: LEQ tag FBD_COMPARE estrutura estrutura LEQ IF sourceA <= sourceB THEN <statements>; Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-19 estrutura FBD_COMPARE Descrição: A instrução LEQ testa se Source A é menor ou igual a Source B. Quando comparar strings: • Os valores hexadecimais dos caracteres determinam se uma string é menor ou maior que outra. Para o código hexadecimal de caractere, consulte a quarta capa deste manual. • Quando duas strings estão classificadas como em um diretório de telefone, a ordem das strings determina qual é maior. Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não é executada e as saídas não são atualizadas. Valor inicial está energizado SourceA REAL Valor para comparar a SourceB. Válido = qualquer flutuante SourceB REAL Valor para comparar a SourceA. Válido = qualquer flutuante Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest BOOL Resultado da instrução. Isto equivale à saída da condição da saída para a instrução LEQ de lógica ladder. Caracteres ASCII Códigos Hexadecimais 1ab $31$61$62 1b $31$62 A $41 AB $41$42 B $42 a $61 ab $61$62 m ai or q u e m e n or q u e AB < B a > B Publicação 1756-RM003F-PT-P - Maio 2002 4-20 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Lógica Ladder Bloco de Funções Condição: Ação: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. postscan A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira fim Source A * Source B sim não saída da condição da linha é definida como verdadeira saída da condição da linha é definida como falsa Condição: Ação: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado EnableOut está desenergizado. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ)4-21 Exemplo: Se value_1 for menor ou igual a value_2, energize light_2. Se value_1 for maior que value_2, desenergize light_2. Lógica Ladder Texto Estruturado light_2 := (value_1 <= value_2); Bloco de Funções Publicação 1756-RM003F-PT-P - Maio 2002 4-22 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Menor Que (LES) A instrução LES testa se Source A é menor que Source B. Operandos: Lógica Ladder • Se você inserir um tag SINT ou INT, o valor converte em um valor DINT pelo sinal de extensão. • Tipos de dados da string são: – tipo de dados STRING padrão • qualquer novo tipo de dados da string que você criar • Para testar os caracteres de uma string, insira um tag da string para Source A e Source B. Texto Estruturado Use o sinal menor que "<" como um operador em uma expressão. Esta expressão avalia se sourceA é menor que sourceB. Consulte o Apêndice C para informações sobre a sintaxe de expressões de texto estruturado. Bloco de Funções Operando: Tipo: Formato: Descrição: Source A SINT INT DINT REAL string imediato tag valor a ser testado em relação a Source B Source B SINT INT DINT REAL string imediato tag valor a ser testado em relação a Source A Operando: Tipo: Formato: Descrição: LES tag FBD_COMPARE estrutura estrutura LES IF sourceA < sourceB THEN <statements>; Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-23 Estrutura FBD_COMPARE Descrição: A instrução LES testa se Source A é menor que Source B. Quando comparar strings: • Os valores hexadecimais dos caracteres determinam se uma string é menor ou maior que outra. Para o código hexadecimal de caractere, consulte a quarta capa deste manual. • Quando duas strings estão classificadas como em um diretório de telefone, a ordem das strings determina qual é maior. Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não é executada e as saídas não são atualizadas. Valor inicial está energizado SourceA REAL Valor para comparar a SourceB. Válido = qualquer flutuante SourceB REAL Valor para comparar com SourceA. Válido = qualquer flutuante Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest BOOL Resultado da instrução. Isto equivale à saída da condição da linha da instrução LES da lógica ladder. Caracteres ASCII Códigos Hexadecimais 1ab $31$61$62 1b $31$62 A $41 AB $41$42 B $42 a $61 ab $61$62 m ai or q u e m e n or q u e AB < B a > B Publicação 1756-RM003F-PT-P - Maio 2002 4-24 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Lógica Ladder Bloco de Funções Condição: Ação: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. postscan A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira fim Source A * Source B sim não saída da condição da linha é definida como verdadeira saída da condição da linha é definida como falsa Condição: Ação: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn é falso EnableOut é desenergizado. EnableIn é verdadeiro A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-25 Exemplo: Se value_1 for menor que value_2, energize light_3. Se value_1 for maior ou igual a value_2, desenergize light_3. Lógica Ladder Texto Estruturado light_3 := (value_1 < value_2); Bloco de Funções Publicação 1756-RM003F-PT-P - Maio 2002 4-26 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Limite (LIM) A instrução LIM testa se o valor de teste está dentro da faixa de Limite Inferior a Limite Superior. Operandos: Lógica Ladder Texto Estruturado Texto estruturado não tem uma instrução LIM, mas é possível obter os mesmos resultados usando texto estruturado. IF (LowLimit <= HighLimit AND (Test >= LowLimit AND Test <= HighLimit)) OR (LowLimit >= HighLimit AND (Test <= LowLimit OR Test >= HighLimit)) THEN <statement>; END_IF; Bloco de Funções Operando: Tipo: Formato: Descrição: Low Limit SINT INT DINT REAL imediato tag valor do limite inferior Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal. Test SINT INT DINT REAL imediato tag valor de acordo com o teste Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal. High Limit SINT INT DINT REAL imediato tag valor do limite superior Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal. Operando: Tipo: Formato: Descrição: LIM tag FBD_LIMIT estrutura estrutura LIM Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-27 Estrutura FBD_LIMIT Descrição: A instrução LIM testa se o valor de Test está dentro da faixa do Limite Inferior ao Limite Superior. Os inteiros com sinal mudam do número positivo máximo para o número negativo máximo quando o bit mais significativo estiver energizado. Por exemplo, em inteiros com 16 bits (tipo INT), o inteiro positivo máximo é 32.767, que é representado em hexadecimal como 16#7FFF (bits 0 a 14 estão todos energizados). Se você incrementar esse número em um, o resultado é 16#8000 (bit 15 está energizado). Para inteiros com sinal, o hexadecimal 16#8000 é igual ao decimal -32.768. Incremente a partir desse ponto até que todos os 16 bits estejam energizados e terminem em 16#FFFF, que é igual ao decimal -1. Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Se desenergizada, a instrução não é executada e as saídas não são atualizadas. Se energizada, a instrução é executada como descrito em Execution. Valor inicial está energizado LowLimit REAL Valor do limite inferior. Válido = qualquer flutuante Test REAL Valor para comparar aos limites Válido = qualquer flutuante Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest BOOL Resultado da instrução. Isto equivale à saída da condição da linha para a instrução LIM da lógica ladder. HighLimit REAL Valor do limite superior. Válido = qualquer flutuante Se o Limite Inferior: E o valor de Teste for: A saída da condição da linha é definida em: ≤ limite superior igual a ou entre os limites verdadeira diferente ou fora dos limites falsa ≥limite superior igual a ou fora dos limites verdadeira diferente ou dentro dos limites falsa Publicação 1756-RM003F-PT-P - Maio 2002 4-28 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Isto pode ser representado como uma linha de número circular (consulte os seguintes diagramas). A instrução LIM começa no Limite Inferior e incrementa no sentido horário até atingir o Limite Superior. Qualquer valor de teste na faixa de sentido horário, desde o Limite Inferior até o Limite Superior define a saída da condição da linha como verdadeira. Qualquer valor de teste na faixa de sentido horário desde o Limite Superior até o Limite Inferior define a saída da condição da linha como falsa. Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução −1 0 +1 limite inferior limite superior +n−(n+1) n = valor máximo Limite Inferior ≤ Limite Superior A instrução é verdadeira se o valor de teste for igual ou situar-se entre os limites superior e inferior. Limite Inferior * Limite Superior A instrução é verdadeira se o valor de teste for igual ou estiver fora da faixa entre os limites superior e inferior. −1 0 +1 limite superior limite inferior +n−(n+1) n = valor máximo Publicação 1756-RM003F-PT-P- Maio 2002 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-29 Lógica Ladder Bloco de Funções Exemplo 1: Limite Inferior * Limite Superior Quando 0 ≤ value ≥ 100, energiza light_1. Se value < 0 ou value >100, desenergize light_1. Lógica Ladder Condição: Ação: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. postscan A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira fim avalia limite a comparação é verdadeira a comparação é falsa saída da condição da linha é definida como verdadeira saída da condição da linha é definida como falsa Condição: Ação: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado O EnableOut é desenergizado, a instrução não faz nada e as saídas não são atualizadas. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 4-30 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Texto Estruturado IF (value <= 100 AND(value >= 0 AND value <= 100)) OR (value >= 100 AND value <= 0 OR value >= 100)) THEN light_1 := 1; ELSE light_1 := 0; END_IF; Bloco de Funções Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-31 Exemplo 2: Limite Inferior ≥ Limite Superior Quando value ≥ 0 ou value ≤ −100, energiza light_1. Se value < 0 ou value >−100, desenergize light_1. Lógica Ladder Texto Estruturado IF (0 <= -100 AND value >= 0 AND value <= -100)) OR (0 >= -100 AND(value <= 0 OR value >= -100)) THEN light_1 := 1; ELSE light_1 := 0; END_IF; Bloco de Funções Publicação 1756-RM003F-PT-P - Maio 2002 4-32 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Máscara Igual a (MEQ) A instrução MEQ passa os valores de Source e Compare através de uma Máscara e compara os resultados. Operandos: Lógica Ladder Texto Estruturado Texto estruturado não tem uma instrução MEQ, mas é possível obter os mesmos resultados usando texto estruturado. IF (Source AND Mask) = (Compare AND Mask) THEN <statement>; END_IF; Bloco de Funções Operando: Tipo: Formato: Descrição: Source SINT INT DINT imediato tag valor para ser testado comparando-se a Compare Um tag SINT ou INT é convertido para um valor DINT por preenchimento com zero. Mask SINT INT DINT imediato tag define que bits são bloqueados ou os que passam Um tag SINT ou INT é convertido para um valor DINT por preenchimento com zero. Compare SINT INT DINT imediato tag valor a ser testado em relação a Source Um tag SINT ou INT é convertido para um valor DINT por preenchimento com zero. Operando: Tipo: Formato: Descrição: MEQ tag FBD_MASK_EQUAL estrutura estrutura MEQ Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-33 estrutura FBD_MASK_EQUAL Descrição: “1“ na máscara significa que o bit de dados passou. “0“ na máscara significa que o bit de dados foi bloqueado. Geralmente, os valores Source, Mask e Compare são todos do mesmo tipo de dados. Se houver uma combinação dos tipos de dados de inteiros, a instrução preencherá os bits mais significativos dos tipos de dados de inteiros menores com 0s, de forma que fiquem com o mesmo tamanho dos tipos de dados maiores. Inserção de um valor de máscara imediato Ao inserir uma máscara, o software de programação retorna ao padrão dos valores decimais. Caso você queira inserir uma máscara usando outro formato, coloque o prefixo correto antes do valor. Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Se desenergizado, a instrução não é executada e as saídas não são atualizadas. Se energizado, a instrução é executada como descrito em Execution. Valor inicial está energizado Source DINT Valor para testar com Compare. Válido = qualquer inteiro Mask DINT Define quais bits bloquear (máscara). Válido = qualquer inteiro Compare DINT Comparação de valor. válido = qualquer inteiro Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest BOOL Resultado da instrução. Isto equivale à saída da condição da linha para a instrução MEQ de lógica ladder. Prefixo: Descrição: 16# hexadecimal por exemplo: 16#0F0F 8# octal por exemplo: 8#16 2# binário por exemplo: 2#00110011 Publicação 1756-RM003F-PT-P - Maio 2002 4-34 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Lógica Ladder Bloco de Funções Condição: Ação: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. postscan A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira fim fonte mascarada = comparação mascarada sim não saída da condição da linha é definida como verdadeira saída da condição da linha é definida como falsa Condição: Ação: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado O EnableOut é desenergizado, a instrução não faz nada e as saídas não são atualizadas. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-35 Exemplo 1: Se value_1 mascarado for igual a value_2 mascarado, energize light_1. Se a value_1 mascarada não for igual a value_2 mascarada, desligue light_1. Este exemplo mostra que os valores mascarados são iguais. Um 0 na máscara impede que ela compare aquele bit (mostrado por x no exemplo). Lógica Ladder Texto Estruturado light_1 := ((value_1 AND mask_1)=(value_2 AND mask_2)); Bloco de Funções value_1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 value_2 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0 mask_1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 mask_1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 value_1 mascarado 0 1 0 1 0 1 0 1 1 1 1 1 x x x x value_2 mascarado 0 1 0 1 0 1 0 1 1 1 1 1 x x x x Publicação 1756-RM003F-PT-P - Maio 2002 4-36 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Exemplo 2: Se value_1 mascarado for igual a value_2 mascarado, energize light_1. Se value_1 mascarado não for igual a value_2 mascarado, desligue light_1. Este exemplo mostra que os valores mascarados não são iguais. Um 0 na máscara impede que ela compare aquele bit (mostrado por x no exemplo). Lógica Ladder Texto Estruturado light_1 := ((value_1 AND mask_1)=(value_2 AND mask_2)); Bloco de Funções value_1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 value_2 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0 mask_1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 mask_1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 value_1 mascarado x x x x x x x x x x x x 1 1 1 1 value_2 mascarado x x x x x x x x x x x x 0 0 0 0 Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-37 Diferente de (NEQ) A instrução NEQ testa se Source A é diferente de Source B. Operandos: Lógica Ladder • Se você inserir um tag SINT ou INT, o valor converte a um valor DINT pelo sinal de extensão. • Tipos de dados da string são: – tipo de dados STRING padrão – qualquer novo tipo de dados da string que você criar • Para testar os caracteres de uma string, insira um tag da string para Source A e Source B. Texto Estruturado Use os sinais maior que e menor que “<>“ juntos como operador em uma expressão. Esta expressão avalia se sourceA é diferente de sourceB. Consulte o Apêndice C para informações sobre a sintaxe de expressões de textoestruturado. Bloco de Funções Operando: Tipo: Formato: Descrição: Source A SINT INT DINT REAL string imediato tag valor a ser testado em relação Source B Source B SINT INT DINT REAL string imediato tag valor a ser testado em relação Source A Operando: Tipo: Formato: Descrição: NEQ tag FBD_COMPARE estrutura estrutura NEQ IF sourceA <> sourceB THEN <statements>; Publicação 1756-RM003F-PT-P - Maio 2002 4-38 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) estrutura FBD_COMPARE Descrição: A instrução NEQ testa se Source A é diferente de Source B. Quando comparar strings: • As strings são diferentes se algum caractere não corresponder. • Os caracteres ASCII são sensíveis ao contexto. O "A" maiúsculo ($41) não é igual ao "a" minúsculo ($61). Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas. Valor inicial está energizado SourceA REAL Valor para comparar com SourceB. Válido = qualquer flutuante SourceB REAL Valor para comparar com SourceA. Válido = qualquer flutuante Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest BOOL Resultado da instrução. Isto equivale à saída da condição da linha para a instrução NEQ de lógica ladder. Caracteres ASCII Códigos Hexadecimais 1ab $31$61$62 1b $31$62 A $41 AB $41$42 B $42 a $61 ab $61$62 m ai or q u e m e n or q u e AB < B a > B Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) 4-39 Lógica Ladder Bloco de Funções Condição: Ação: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. postscan A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira fim Source A = Source B; sim não saída da condição da linha é definida como verdadeira saída da condição da linha é definida como falsa Condição: Ação: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado EnableOut está desenergizado. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 4-40 Instruções de Comparação (CMP, EQU, GEQ, GRT, LEQ, LES, LIM, MEQ, NEQ) Exemplo: Se value_1 não for igual a value_2, energize light_4. Se value_1 for igual a value_2, desenergize light_4. Lógica Ladder Texto Estruturado light_4 := (value_1 <> value_2); Bloco de Funções Publicação 1756-RM003F-PT-P - Maio 2002 Capítulo 5 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Introdução As instruções de cálculo/matemáticas avaliam as operações aritméticas usando uma expressão ou uma instrução aritmética específica. É possível combinar tipos de dados, mas perda de precisão e erros de arredondamentos podem ocorrer, bem como demora na execução da instrução. Verifique o bit S:V para observar se o resultado foi truncado. Para instruções de lógica ladder, os tipos de dados em negrito indicam tipos de dados otimizados. Uma instrução executa mais rapidamente e requer menos memória se todos os operandos da instrução usarem o mesmo tipo de dados otimizados, geralmente, DINT ou REAL. Se você quiser: Use esta instrução: Disponível nessas linguagens: Consulte página: avaliar uma expressão CPT lógica ladder texto estruturado(1) 5-2 somar dois valores ADD lógica ladder texto estruturado(2) bloco de funções 5-5 subtrair dois valores SUB lógica ladder texto estruturado(2) bloco de funções 5-8 multiplicar dois valores MUL lógica ladder texto estruturado(2) bloco de funções 5-11 dividir dois valores DIV lógica ladder texto estruturado(2) bloco de funções 5-14 determinar o resto após a divisão de um valor por outro MOD lógica ladder texto estruturado(2) bloco de funções 5-18 calcular a raiz quadrada de um valor SQR SQRT(3) lógica ladder texto estruturado bloco de funções 5-21 considerar o sinal oposto de um valor NEG lógica ladder texto estruturado(2) bloco de funções 5-24 considerar o valor absoluto de um valor ABS lógica ladder texto estruturado bloco de funções 5-26 (1) Não há instrução de texto estruturado equivalente. Use outra programação de texto estruturado para alcançar o mesmo resultado. Veja a descrição para a instrução. (2) Não há instrução de texto estruturado equivalente. Use o operador em uma expressão. (3) Texto estruturado somente. 1 Publicação 1756-RM003F-PT-P - Maio 2002 5-2 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Cálculo (CPT) A instrução CPT realiza as operações aritméticas definidas na expressão. Operandos: Lógica Ladder Texto Estruturado O texto estruturado não possui uma instrução CPT, mas é possível alcançar os mesmos resultados usando um atributo e expressão. destination := numeric_expresion; Consulte ApêndiceC para informações sobre a sintaxe de atributos e expressões no texto estruturado. Descrição: A instrução CPT realiza as operações aritméticas definidas na expressão. Quando habilitada, a instrução CPT avalia a expressão específica e coloca o resultado em Destination. A execução de uma instrução CPT é um pouco mais lenta e usa mais memória do que a execução de outras instruções de cálculo/matemáticas. A vantagem da instrução CPT é que a mesma permite a inserção de expressões complexas em uma instrução. Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: nenhuma Operando: Tipo: Formato: Descrição: Destination SINT INT DINT REAL tag tag para armazenar o resultado Expression SINT INT DINT REAL imediato tag uma expressão composta por tags e/ou valores imediatos separados por operadores Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal. DICA Não há limite para o comprimento de uma expressão. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-3 Execução: Exemplo 1: Quando habilitada, a instrução CPT avalia o value_1 multiplicado por 5 e divide esse resultado pelo resultado do value_2 dividido por 7 e coloca o resultado final em result_1. Exemplo 2: Quando habilitada, a instrução CPT trunca float_value_1 e float_value_2, eleva float_value_2 truncado ao quadrado, divide por float_value_1 truncado pelo resultado e armazena o resto dessa operação da divisão em float_value_result_cpt. Operadores válidos Condição: Ação da Lógica Ladder: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira A instrução avalia Expression e coloca o resultado em Destination. A saída da condição da linha é definida como verdadeira. postscan A saída da condição da linha é definida como falsa. Operadores: Descrição: Ótimo: + adição DINT, REAL - subtração/negativo DINT, REAL * multiplicação DINT, REAL / divisão DINT, REAL ** expoente (x elevado a y) DINT, REAL ABS valor absoluto DINT, REAL ACS arco co-seno REAL AND AND (E) DINT ASN arco seno REAL ATN arco tangente REAL COS co-seno REAL DEG radianos em graus DINT, REAL FRD BCD para inteiro DINT LN log neperiano REAL LOG log base 10 REAL MOD módulo DINT, REAL NOT complementação DINT OR OR (OU) DINT RAD graus em radianos DINT, REAL SIN seno REAL SQR raiz quadrada DINT, REAL TAN tangente REAL TOD inteiro para BCD DINT TRN truncamento DINT, REAL XOR OR exclusivo DINT Operadores: Descrição: Ótimo: Publicação 1756-RM003F-PT-P - Maio 2002 5-4 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB,MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Formatação de expressões Para cada operador utilizador, você deve fornecer um ou dois operandos (tags ou valores imediatos). Use a tabela a seguir para formatar os operadores e os operandos em uma expressão: Determinação da seqüência da operação As operações que você escreve na expressão são executadas pela instrução na seqüência prescrita e não, necessariamente, na ordem que você as escreveu. É possível suprimir a seqüência da operação agrupando-se os termos dentro de parênteses, forçando a instrução para realizar uma operação dentro dos parênteses, antes de outras operações. As operações com a mesma seqüência são executadas da esquerda para a direita. Para operadores que operam em: Use este formato: Exemplos: um operando operator(operand) ABS(tag_a) dois operandos operand_a operator operand_b • tag_b + 5 • tag_c AND tag_d • (tag_e ** 2) MOD (tag_f / tag_g) Seqüência: Operação: 1. ( ) 2. ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG, RAD, SIN, SQR, TAN, TOD, TRN 3. ** 4. − (negativo), NOT 5. *, /, MOD 6. − (subtração), + 7. AND 8. XOR 9. OR Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-5 Adição (ADD) A instrução ADD soma Source A e Source B e coloca o resultado em Destination Operandos: Lógica Ladder Texto Estruturado Use o sinal mais “+” como um operador em uma expressão. Essa expressão adiciona sourceA a sourceB e armazena o resultado em dest. Consulte ApêndiceC para informações sobre a sintaxe de expressões no texto estruturado. Bloco de Funções Operando: Tipo: Formato: Descrição: Source A SINT INT DINT REAL imediato tag valor a ser somado à Source B Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal. Source B SINT INT DINT REAL imediato tag valor a ser adicionado à Source A Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal. Destination SINT INT DINT REAL tag tag para armazenar o resultado Operando: Tipo: Formato: Descrição: tag ADD FBD_MATH estrutura estrutura ADD dest := sourceA + sourceB; Publicação 1756-RM003F-PT-P - Maio 2002 5-6 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Estrutura FBD_MATH Descrição: A instrução ADD soma Source A e Source B e coloca o resultado em Destination Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: nenhuma Execução: Lógica Ladder Bloco de Funções Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas. Valor inicial é energizado SourceA REAL Valor para adicionar a SourceB. Válido = qualquer flutuante SourceB REAL Valor para adicionar a SourceA. Válido = qualquer flutuante Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest REAL Resultado da instrução matemática. Os flags de status aritmético são energizados para esta saída. Condição: Ação: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira Destination = Source A + Source B A saída da condição da linha é definida como verdadeira. postscan A saída da condição da linha é definida como falsa. Condição: Ação: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado EnableOut está desenergizado. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-7 Exemplo: Adicione float_value_1 a float_value_2 e coloque o resultado em add_result. Lógica Ladder Texto Estruturado add_result := float_value_1 + float_value_2; Bloco de Funções Publicação 1756-RM003F-PT-P - Maio 2002 5-8 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Subtração (SUB) A instrução SUB subtrai Source B de Source A e coloca o resultado em Destination Operandos: Lógica Ladder Texto Estruturado Use o sinal de menos (“−”) como um operador em uma expressão. Essa expressão subtrai sourceA da sourceB e armazena o resultado em dest. Consulte ApêndiceC para informações sobre a sintaxe de expressões no texto estruturado. Bloco de Funções Operando: Tipo: Formato: Descrição: Source A SINT INT DINT REAL imediato tag valor a partir do qual se subtrai a FonteB Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal. Source B SINT INT DINT REAL imediato tag valor a ser subtraído de Source A Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal. Destination SINT INT DINT REAL tag tag para armazenar o resultado Operando: Tipo: Formato: Descrição: tag SUB FBD_MATH estrutura estrutura SUB dest := sourceA - sourceB; Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-9 Estrutura FBD_MATH Descrição: A instrução SUB subtrai Source B de Source A e coloca o resultado em Destination Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: nenhuma Execução: Lógica Ladder Bloco de Funções Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita entrada. Se desenergizado, a instrução não executa e as saídas não são atualizadas. Valor inicial é energizado SourceA REAL Valor do qual se subtrai SourceB. Válido = qualquer flutuante SourceB REAL Valor do qual se subtrai SourceA. Válido = qualquer flutuante Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest REAL Resultado da instrução matemática. Os flags de status aritmético são energizados para esta saída. Condição: Ação: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira Destination = Source B - Source A A saída da condição da linha é definida como verdadeira. postscan A saída da condição da linha é definida como falsa. Condição: Ação: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado EnableOut está desenergizado. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 5-10 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Exemplo: Subtraia float_value_2 de float_value_1 e coloque o resultado em subtract_result. Lógica Ladder Texto Estruturado subtract_result := float_value_1 - float_value_2; Bloco de Funções Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-11 Multiplicação (MUL) A instrução MUL multiplica Source A por Source B e coloca o resultado em Destination Operandos: Lógica Ladder Texto Estruturado Use o sinal de multiplicar (“∗ ”) como um operador em uma expressão. Essa expressão multiplica sourceA por sourceB e armazena o resultado em dest. Consulte ApêndiceC para informações sobre a sintaxe de expressões no texto estruturado. Bloco de Funções Operando: Tipo: Formato: Descrição: Source A SINT INT DINT REAL imediato tag valor do multiplicando Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal. Source B SINT INT DINT REAL imediato tag valor do multiplicador Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal. Destination SINT INT DINT REALtag tag para armazenar o resultado Operando: Tipo: Formato: Descrição: tag MUL FBD_MATH estrutura estrutura MUL dest := sourceA * sourceB; Publicação 1756-RM003F-PT-P - Maio 2002 5-12 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Estrutura FBD_MATH Descrição: A instrução MUL multiplica Source A por Source B e coloca o resultado em Destination Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: nenhuma Execução: Lógica Ladder Bloco de Funções Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita entrada. Se desenergizado, a instrução não executa e as saídas não são atualizadas. Valor inicial é energizado Source A REAL Valor do multiplicando. Válido = qualquer flutuante Source B REAL Valor do multiplicador. Válido = qualquer flutuante Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest REAL Resultado da instrução matemática. Os flags de status aritmético são energizados para esta saída. Condição: Ação: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira Destination = Source B x Source A A saída da condição da linha é definida como verdadeira. postscan A saída da condição da linha é definida como falsa. Condição: Ação: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado EnableOut está desenergizado. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-13 Exemplo: Multiplique float_value_1 por float_value_2 e coloque o resultado em multiply_result. Lógica Ladder Texto Estruturado multiply_result := float_value_1 ∗ float_value_2; Bloco de Funções Publicação 1756-RM003F-PT-P - Maio 2002 5-14 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Divisão (DIV) A instrução DIV divide Source A por Source B e coloca o resultado em Destination. Operandos: Lógica Ladder Texto Estruturado Use o sinal de dividir (“/”) como um operador em uma expressão. Essa expressão divide sourceA por sourceB e armazena o resultado em dest. Consulte ApêndiceC para informações sobre a sintaxe de expressões no texto estruturado. Bloco de Funções Operando: Tipo: Formato: Descrição: Source A SINT INT DINT REAL imediato tag valor do dividendo Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal. Source B SINT INT DINT REAL imediato tag valor do divisor Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal. Destination SINT INT DINT REAL tag tag para armazenar o resultado Operando: Tipo: Formato: Descrição: tag DIV FBD_MATH estrutura estrutura DIV dest := sourceA / sourceB; Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-15 Estrutura FBD_MATH Descrição: Se Destination não for REAL, a instrução trabalha com a porção fracionária do resultado da seguinte forma: Se Source B (o divisor) for zero: • uma falha de advertência ocorre: – Tipo 4: falha no programa – Código 4: overflow aritimético • Destination é definido conforme segue: Para detectar uma divisão por zero possível, examine o bit de falha de advertência (S:MINOR). Consulte Logix5000 Controllers Common Procedures, publicação 1756-PM001. Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita entrada. Se desenergizado, a instrução não executa e as saídas não são atualizadas. Valor inicial é energizado Source A REAL Valor do dividendo. Válido = qualquer flutuante Source B REAL Valor do divisor. Válido = qualquer flutuante Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest REAL Resultado da instrução matemática. Os flags de status aritmético são energizados para esta saída. Se Source A: Então a parte fracionária do resultado: Exemplo: e Source B não forem do tipo REAL trunca Source A DINT 5 Source B DINT 3 Destination DINT 1 ou Source B for do tipo REAL é arredondada Source A REAL 5.0 Source B DINT 3 Destination DINT 2 Se Source B for zero e: E o Destination for um: E o resultado for: Então Destination será definido em: todos os operandos são inteiros (SINT, INT ou DINT) Source A pelo menos um operando é um REAL SINT, INT ou DINT positivo -1 negativo 0 REAL positivo 1.$ (infinito positivo) negativo -1.$ (infinito negativo) Publicação 1756-RM003F-PT-P - Maio 2002 5-16 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: Execução: Lógica Ladder Bloco de Funções Exemplo 1: Divida float_value_1 por float_value_2 e coloque o resultado em divide_result. Lógica Ladder Texto Estruturado divide_result := float_value_1 / float_value_2; Uma falha de advertência ocorrerá se: Tipo de falha: Código de falha: o divisor for zero 4 4 Condição: Ação: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira Destination = Source A / Source B A saída da condição da linha é definida como verdadeira. postscan A saída da condição da linha é definida como falsa. Condição: Ação: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado EnableOut está desenergizado. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-17 Bloco de Funções Exemplo 2: As instruções DIV e MOV trabalham juntas para dividir dois inteiros, arredondar o resultado e colocá-lo em um tag inteiro: • A instrução DIV divide dint_a por dint_b. • Para arredondar o resultado, o Destination é um tag REAL. (Se o destino fosse um tag inteiro (SINT, INT ou DINT), a instrução truncaria o resultado.) • A instrução MOV muda o resultado arredondado (real_temp) de DIV para divide_result_rounded. • Como divide_result_rounded é um tag DINT o valor de real_temp é arredondado e colocado no DINT destino. Lógica Ladder 43009 Publicação 1756-RM003F-PT-P - Maio 2002 5-18 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Módulo (MOD) A instrução MOD divide Source A por Source B e coloca o resto em Destination Operandos: Lógica Ladder Texto Estruturado Use MOD como um operador em uma expressão. Essa expressão divide sourceA por sourceB e armazena o restante em dest. Consulte ApêndiceC para informações sobre a sintaxe de expressões no texto estruturado. Bloco de Funções Operando: Tipo: Formato: Descrição: Source A SINT INT DINT REAL imediato tag valor do dividendo Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal. Source B SINT INT DINT REAL imediato tag valor do divisor Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal. Destination SINT INT DINT REAL tag tag para armazenar o resultado Operando: Tipo: Formato: Descrição: tag MOD FBD_MATH estrutura estrutura MOD dest := sourceA MOD sourceB; Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-19 Estrutura FBD_MATH Descrição: Se Source B (o divisor) for zero: • uma falha de advertência ocorre: – Tipo4: falha no programa – Código 4: overflow aritimético • o Destination é definido conforme segue: Para detectar uma divisão por zero possível, examine o bit de falha de advertência (S:MINOR). Consulte Logix5000 Controllers Common Procedures, publicação 1756-PM001. Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita entrada. Se desenergizado, a instrução não executa e as saídas não são atualizadas. Valor inicial é energizado. Source A REAL Valor do dividendo. Válido = qualquer flutuante Source B REAL Valor do divisor. Válido = qualquer flutuante Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest REAL Resultado da instrução matemática. Os flags de status aritmético são energizados para esta saída. Se Source B for zero e: E o destino for um: E o resultado for: Então o destino será definido em: todos os operandos são inteiros (SINT, INT ou DINT) Source A pelo menos um operando é um REAL SINT, INT ou DINT positivo -1 negativo 0 REAL positivo 1.$ (infinito positivo) negativo -1.$ (infinito negativo) Uma falha de advertência ocorrerá se: Tipo de falha: Código de falha: o divisor é zero 4 4 Publicação 1756-RM003F-PT-P - Maio 2002 5-20 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Execução: Lógica Ladder Bloco de Funções Exemplo: Divide dividend por divisor e coloca o resto em remainder. Nesse exemplo, 10 é dividido por 3, com um resto de um. Lógica Ladder Texto Estruturado remainder := dividend MOD divisor; Bloco de Funções Condição: Ação: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira Destination = Source A – ( TRN ( Source A / Source B ) * Source B ) A saída da condição da linha é definida como verdadeira. postscan A saída da condição da linha é definida como falsa. Condição: Ação: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado EnableOut está desenergizado. postscan Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-21 Raiz Quadrada (SQR) A instrução SQR calcula a raiz quadrada de Source e coloca o resultado em Destination. Operandos: Lógica Ladder Texto Estruturado Use SQRT como uma função. Esta expressão calcula a raiz quadrada de source e armazena o resultado em dest. Consulte ApêndiceC para informações sobre a sintaxe de expressões no texto estruturado. Bloco de Funções Estrutura FBD_MATH_ADVANCED Operando: Tipo: Formato: Descrição: Source SINT INT DINT REAL imediato tag calcula a raiz quadrada desse valor Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal. Destination SINT INT DINT REAL tag tag para armazenar o resultado Operando: Tipo: Formato: Descrição: SQR tag FBD_MATH_ADVANCED estrutura estrutura SQR dest := SQRT(source); Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita entrada. Se desenergizado, a instrução não executa e as saídas não são atualizadas. Valor inicial é energizado. Source REAL Encontre a raiz quadrada deste valor. Válido = qualquer flutuante Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest REAL Resultado da instrução matemática. Os flags de status aritmético são energizados para esta saída. Publicação 1756-RM003F-PT-P - Maio 2002 5-22 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Descrição: Se Destination não for REAL, a instrução trabalha com a porção fracionária do resultado da seguinte forma: Se Source for negativo, a instrução retira o valor absoluto de Source, antes de calcular a raiz quadrada. Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: nenhuma Execução: Lógica Ladder Bloco de Funções Se Source for: Então a parte fracionária do resultado: Exemplo: diferente do tipo REAL trunca Source DINT 3 Destination DINT 1 do tipo REAL é arredondada Source REAL 3,0 Destination DINT 2 Condição: Ação: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira A saída da condição da linha é definida como verdadeira. postscan A saída da condição da linha é definida como falsa. Destination Source= Condição: Ação: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado EnableOut está desenergizado. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-23 Exemplo: Calcule a raiz quadrada de value_1 e coloque o resultado em sqr_result. Lógica Ladder Texto Estruturado multiply_result := SQRT(value_1); Bloco de Funções Publicação 1756-RM003F-PT-P - Maio 2002 5-24 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Negação (NEG) A instrução NEG altera o sinal de Source e coloca o resultado em Destination. Operandos: Lógica Ladder Texto Estruturado Use o sinal menos (“−”) como um operador em uma expressão. Esta expressão altera o sinal de source e armazena o resultado em dest. Consulte ApêndiceC para informações sobre a sintaxe de expressões no texto estruturado. Bloco de Funções Estrutura FBD_MATH Descrição: Se você tornar negativo um valor negativo, o resultado será positivo. Se você tornar negativo um valor positivo, o resultado será negativo. Operando: Tipo: Formato: Descrição: Source SINT INT DINT REAL imediato tag valor a ser transformado em negativo Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal. Destination SINT INT DINT REAL tag tag para armazenar o resultado Operando: Tipo: Formato: Descrição: tag NEG FBD_MATH_ADVANCED estrutura estrutura NEG dest := -source; Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita entrada. Se desenergizado, a instrução não executa e as saídas não são atualizadas. Valor inicial é energizado Source REAL Valor para negar. Válido = qualquer flutuante Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest REAL Resultado da instrução matemática. Os flags de status aritmético são energizados para esta saída. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-25 Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: nenhuma Execução: Lógica Ladder Bloco de Funções Exemplo: Altere o sinal de value_1 e coloque o resultado em negate_result. Lógica Ladder Texto Estruturado negate_result := -value_1; Bloco de Funções Condição: Ação: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira Destination = 0 − Source A saída da condição da linha é definida como verdadeira. postscan A saída da condição da linha é definida como falsa. Condição: Ação: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado EnableOut está desenergizado. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada.Publicação 1756-RM003F-PT-P - Maio 2002 5-26 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Valor Absoluto (ABS) A instrução ABS retira o valor absoluto de Source e coloca o resultado em Destination. Operandos: Lógica Ladder Texto Estruturado Use ABS como uma função. Esta expressão calcula o valor absoluto de source e armazena o resultado em dest. Consulte ApêndiceC para informações sobre a sintaxe de expressões no texto estruturado. Bloco de Funções Estrutura FBD_MATH_ADVANCED Descrição: A instrução ABS retira o valor absoluto de Source e coloca o resultado em Destination. Operando: Tipo: Formato: Descrição: Source SINT INT DINT REAL imediato tag valor do qual se tira o valor absoluto Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal. Destination SINT INT DINT REAL tag tag para armazenar o resultado Operando: Tipo: Formato: Descrição: tag ABS FBD_MATH_ADVANCED estrutura estrutura ABS dest := ABS(source); Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita entrada. Se desenergizado, a instrução não executa e as saídas não são atualizadas. Valor inicial é energizado Source REAL Valor do qual se tira o valor absoluto. Válido = qualquer flutuante Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest REAL Resultado da instrução matemática. Os flags de status aritmético são energizados para esta saída. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) 5-27 Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: nenhuma Execução: Lógica Ladder Bloco de Funções Exemplo: Coloque o valor absoluto de value_1 em value_1_absolute. Nesse exemplo, o valor absoluto de quatro negativo é quatro positivo. Lógica Ladder Texto Estruturado value_1_absolute := ABS(value_1); Condição: Ação: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira Destination = | Source | A saída da condição da linha é definida como verdadeira. postscan A saída da condição da linha é definida como falsa. Condição: Ação: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado EnableOut está desenergizado. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 5-28 Instruções de Cálculo/Matemáticas (CPT, ADD, SUB, MUL, DIV, MOD, SQR, SQRT, NEG, ABS) Bloco de Funções Publicação 1756-RM003F-PT-P - Maio 2002 Capítulo 6 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Introdução É possível combinar tipos de dados, mas perda de precisão e erros de arredondamentos podem ocorrer, bem como demora na execução da instrução. Verifique o bit S:V para observar se o resultado foi truncado. Para instruções de lógica ladder, os tipos de dados em negrito indicam tipos de dados otimizados. Uma instrução executa mais rapidamente e requer menos memória se todos os operandos da instrução usam o mesmo tipo de dado otimizado, geralmente DINT ou REAL. As instruções de movimentação modificam e movimentam os bits. Se você quiser: Use esta instrução: Disponível nessas linguagens: Consulte página: copiar um valor MOV lógica ladder texto estruturado(1) 6-3 copiar uma parte específica de um inteiro MVM lógica ladder 6-5 copiar uma parte específica de um inteiro no bloco de funções MVMT texto estruturado bloco de funções 6-8 mover bits dentro de um inteiro ou entre inteiros BTD lógica ladder 6-11 movimentar bits dentro de um inteiro ou entre inteiros no bloco de funções BTDT texto estruturado bloco de funções 6-14 zerar um valor CLR texto estruturado(1) lógica ladder 6-17 reorganizar os bytes de um tag INT, DINT ou REAL SWPB lógica ladder texto estruturado 6-18 (1) Não há instrução de texto estruturado equivalente. Use outra programação de texto estruturado para alcançar o mesmo resultado. Veja a descrição para a instrução. 1 Publicação 1756-RM003F-PT-P - Maio 2002 6-2 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) As instruções de lógica executam operações em bits. Se você quiser: Use esta instrução: Disponível nessas linguagens: Consulte página: operação AND (E) AND &(1) lógica ladder texto estruturado(2) bloco de funções 6-21 operação OR (OU) OR lógica ladder texto estruturado(2) bloco de funções 6-24 operação XOR XOR lógica ladder texto estruturado(2) bloco de funções 6-27 operação NOT NOT lógica ladder texto estruturado(2) bloco de funções 6-30 AND logicamente com oito entradas booleanas. BAND texto estruturado(2) bloco de funções 6-33 OR logicamente com oito entradas booleanas. BOR texto estruturado(2) bloco de funções 6-35 executar uma XOR em duas entradas booleanas. BXOR texto estruturado(2) bloco de funções 6-38 complementar uma entrada booleana. BNOT texto estruturado(2) bloco de funções 6-40 (1) Texto estruturado somente. (2) No texto estruturado, as operações AND, OR, XOR e NOT podem ser de bitwise ou de lógica. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-3 Movimentação (MOV) A instrução MOV copia Source em Destination. Source permanece inalterado. Operandos: Lógica Ladder Texto Estruturado Use um atributo “:=” com uma expressão. Este atributo movimenta o valor em source para dest. Consulte Apêndice C para informações sobre a sintaxe de expressões e atributos no texto estruturado. Descrição: A instrução MOV copia Source em Destination. Source permanece inalterado. Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: nenhuma Operando: Tipo: Formato: Descrição: Source SINT INT DINT REAL imediato tag valor a ser movido (copiar) Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal. Destination SINT INT DINT REAL tag tag para armazenar o resultado dest := source; Publicação 1756-RM003F-PT-P - Maio 2002 6-4 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Execução: Exemplo: Movimenta os dados em value_1 para value_2. Lógica Ladder Texto Estruturado value_2 := value_1 Condição: Ação da Lógica Ladder: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira A instrução copia Source em Destination. A saída da condição da linha é definida como verdadeira. postscan A saída da condição da linha é definida como falsa. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-5 Movimento com Máscara (MVM) A instrução MVM copia Source em Destination e permite que parte dos dados sejam mascarados. Essa instrução está disponível no texto estruturado e bloco de funções como MVMT, consulte a página 6-8. Operandos: Lógica Ladder Texto Estruturado Esta instrução está disponível no texto estruturado como MVMT. Ou você combina a lógica bitwise em uma expressão e atribui o resultado ao destino. Esta expressão realiza um movimento com máscara em Source. Consulte Apêndice C para informações sobre a sintaxe de expressões e atributos no texto estruturado. Descrição: A instrução MVM usa Mask para passar ou bloquear os bits de dados Source. Um “1“ na máscara significa que o bit de dados passou. Um “0“ namáscara significa que o bit de dados foi bloqueado. Se houver uma mistura dos tipos de dados de inteiros, a instrução preenche os bits mais significativos dos tipos de dados de inteiros menores com 0, de forma que fiquem com o mesmo tamanho dos tipos de dados maiores. Operando: Tipo: Formato: Descrição: Source SINT INT DINT imediato tag valor a ser movido Um tag SINT ou INT é convertido para um valor DINT por preenchimento com zero. Mask SINT INT DINT imediato tag quais bits devem ser bloqueados ou podem passar Um tag SINT ou INT é convertido para um valor DINT por preenchimento com zero. Destination SINT INT DINT tag tag para armazenar o resultado dest := (Dest AND NOT (Mask) OR (Source AND Mask); Publicação 1756-RM003F-PT-P - Maio 2002 6-6 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Inserção de um valor de máscara imediato Ao inserir uma máscara, o software de programação retorna ao padrão dos valores decimais. Caso você queira inserir uma máscara usando outro formato, coloque o prefixo correto antes do valor. Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: nenhuma Execução: Prefixo: Descrição: 16# hexadecimal por exemplo; 16#0F0F 8# octal por exemplo; 8#16 2# binário por exemplo; 2#00110011 Condição: Ação da Lógica Ladder: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira A instrução passa o valor de Source por Mask e copia o resultado em Destination. Os bits não mascarados em Destination permanecem inalterados. A saída da condição da linha é definida como verdadeira. postscan A saída da condição da linha é definida como falsa. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-7 Exemplo: Copia os dados de value_a para value_b, enquanto permite que os dados sejam mascarados ( 0 mascara os dados em value_a). Lógica Ladder Texto Estruturado value_b := (value_b AND NOT (mask_2)) OR (value_a AND mask_2); 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 As caixas sombreadas mostram os bits alterados em value_b. Publicação 1756-RM003F-PT-P - Maio 2002 6-8 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Movimentação com Máscara Com Arquivo-Alvo (MVMT) A instrução MVMT primeiro copia o Target para Destination. Em seguida, a instrução compara Source mascarado com Destination e efetua as alterações solicitadas para Destination. Target e Source permanecem inalterados. Esta instrução está disponível em lógica ladder como MVM, consulte a página 6-5. Operandos: Texto Estruturado Bloco de Funções Estrutura FBD_MASKED_MOVE Variável: Tipo: Formato: Descrição: MVMT tag FBD_MASKED_MOVE estrutura estrutura MVMT Operando: Tipo: Formato: Descrição: tag MVMT FBD_MASKED_MOVE estrutura estrutura MVMT MVMT(MVMT_tag); Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Bloco de Funções Se desenergizado, a instrução não executa e as saídas não são atualizadas. Se energizado, a instrução executa. Valor inicial é energizado Texto Estruturado Sem efeito. A instrução executa. Source DINT Insira o valor para movimentar para Destination baseado no valor de Mask. Válido = qualquer inteiro Mask DINT Mask de bits para movimentar de Source para Dest. Todos os bits energizados para um fazer que os bits correspondentes se movimentem de Source para Dest. Todos os bits energizados como zero fazem com que os bits correspondentes se movimentem de Source para Dest. Válido = qualquer inteiro Target DINT Insira valor para movimentar para Dest antes de mover os bits Source através de Mask. Válido = qualquer inteiro Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest DINT Resultado da instrução de movimentação mascarada. Os flags de status aritmético são energizados para esta saída. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-9 Descrição: Quando habilitada, a instrução MVMT usa Mask para passar ou bloquear os bits de dados Source. Um “1“ na máscara significa que o bit de dados passou. Um “0“ na máscara significa que o bit de dados foi bloqueado. Se houver uma combinação dos tipos de dados de inteiros, a instrução preencherá os bits mais significativos dos tipos de dados de inteiros menores com 0s, de forma que fiquem com o mesmo tamanho dos tipos de dados maiores. Inserção de um valor de máscara imediato usando uma Referência de Entrada Ao inserir uma máscara, o software de programação retorna os valores decimais. Caso você queira inserir uma máscara usando outro formato, coloque o prefixo correto antes do valor. Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: nenhuma Execução: Prefixo: Descrição: 16# hexadecimal por exemplo; 16#0F0F 8# octal por exemplo; 8#16 2# binário por exemplo; 2#00110011 Condição: Ação do Bloco de Funções: Ação do Texto Estruturado: prescan Nenhuma ação tomada. Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. Nenhuma ação tomada. EnableIn está desenergizado EnableOut é desenergizado, a instrução não faz nada e as saídas não são atualizadas. na EnableIn está energizado A instrução executa. EnableOut está energizado. EnableIn está sempre energizado A instrução executa. postscan Nenhuma ação tomada. Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 6-10 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Exemplo: 1. Copia Target em Dest. 2. Mascara Source e compara a Dest. Não são feitas alterações necessárias em Dest. O Source e o Target se mantêm inalterados. Um 0 na máscara impede que a máscara compare aquele bit (mostrado por x no exemplo). Texto Estruturado MVMT_01.Source := value_1; MVMT_01.Mask := mask1; MVMT_01.Target := target; MVMT(MVMT_01); value_masked := MVMT_01.Dest; Bloco de Funções Target 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Dest 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Source 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Mask1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 Dest 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 As caixas sombreadas mostram os bits que foram alterados. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-11 Distribuição de Bits (BTD) A instrução BTD copia os bits especificados de Source, muda os bits para a posição adequada e escreve os bits em Destination. Essa instrução está disponível no texto estruturado e bloco de funções como BTDTI, consulte a página 6-14. Operandos: Lógica Ladder Descrição: Quando habilitada, a instrução BTD copia um grupo de bits de Source para Destination. O grupo de bits é identificado pelo bit Source (número de bit menos significativo do grupo) e Length (número de bits a serem copiados). O bit Destination identifica o número de bit menos significativo para iniciar em Destination. Source permanece inalterado. Se o comprimento do campo do bit ultrapassar Destination, a instrução não salvará os bits extras. Qualquer bit extra não dá seqüência à próximapalavra. Se houver uma combinação dos tipos de dados de inteiros, a instrução preencherá os bits mais significativos dos tipos de dados de inteiros menores com 0s, de forma que fiquem com o mesmo tamanho dos tipos de dados maiores. Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: nenhuma Operando: Tipo: Formato: Descrição: Source SINT INT DINT imediato tag tag que contém os bits a serem movimentados Um tag SINT ou INT é convertido para um valor DINT por preenchimento com zero. Source bit DINT imediato (0-31 DINT) (0-15 INT) (0-7 SINT) número do bit (número do bit menos significativo) a partir do qual a movimentação foi iniciada deve estar dentro da faixa válida de tipos de dados Source Destination SINT INT DINT tag tag para onde os bits serão movidos Detination bit DINT imediato (0-31 DINT) (0-15 INT) (0-7 SINT) o número do bit (número de bit menos significativo) em que se inicia a cópia de bits Source deve estar dentro da faixa válida de tipos de dados Destination Length DINT imediato (1-32) número de bits a ser movido Publicação 1756-RM003F-PT-P - Maio 2002 6-12 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Execução: Exemplo 1: Quando habilitada, a instrução BTD movimenta os bits dentro de value_1. Condição: Ação da Lógica Ladder: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira A instrução copia e muda os bits de Source para Destination. A saída da condição da linha é definida como verdadeira. postscan A saída da condição da linha é definida como falsa. value_1 antes da instrução BTD 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 value_1 depois da instrução BTD 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 As caixas sombreadas mostram os bits alterados em value_1. Bit SourceBit Destination Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-13 Exemplo 2: Quando habilitada, a instrução BTD move 10 bits de value_1 para value_2. value_1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 value_2 antes da instrução BTD 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 value_2 depois da instrução BTD 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 As caixas sombreadas mostram os bits que foram alterados em value_2. source bit destination bit Publicação 1756-RM003F-PT-P - Maio 2002 6-14 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Distribuição de Bits com Arquivo-alvo (BTDT) A instrução BTDT primeiro copia Target para Destination. Em seguida, copia os bits específicos de Source, muda os bits para a posição apropriada e os escreve os bits em Destination. Target e Source se mantêm inalterados. Esta instrução está disponível em lógica ladder como BTD, consulte a página 6-11. Operandos: Texto Estruturado Bloco de Funções Estrutura FBD_BIT_FIELD_DISTRIBUTE Variável: Tipo: Formato: Descrição: BTDT tag FBD_BIT_FIELD_DISTRIBUTE estrutura estrutura BTDT Operando: Tipo: Formato: Descrição: tag BTDT FBD_BIT_FIELD_DISTRIBUTE estrutura estrutura BTDT BTDT(BTDT_tag); Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Bloco de Funções: Se desenergizada, a instrução não executa e as saídas não são atualizadas. Se energizada, a instrução executa. Valor inicial é energizado Texto Estruturado: Sem efeito. A instrução executa. Source DINT Insira o valor que contém os bits a serem movidos para Destination. Válido = qualquer inteiro SourceBit DINT A posição do bit em Source (menor número de bit a partir do qual s inicia a movimentação). Válido = 0-31 Length DINT Número de bits a movimentar Válido = 1-32 DestBit DINT A posição do bit em Dest (menor número para iniciar a cópia dos bits). Válido = 0-31 Target DINT Insira o valor para movimentar para Dest antes de movimentar bits de Source. Válido = qualquer inteiro Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest DINT Resultado da operação de movimentação do bit. Os flags de status aritmético são energizados para esta saída. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-15 Descrição: Quando habilitada, a instrução BTD copia um grupo de bits de Source para Destination. O grupo de bits é identificado pelo bit Source (número de bit menos significativo do grupo) e Length (número de bits a serem copiados). O bit Destination identifica o número de bit menos significativo para iniciar em Destination. Source permanece inalterado. Se o comprimento do campo do bit ultrapassar Destination, a instrução não salvará os bits extras. Qualquer bit extra não dá seqüência à próxima palavra. Flags de Status Aritmético: Os flags de status aritmético são afetados Condições de Falha: nenhuma Execução: Condição: Ação do Bloco de Funções: Ação do Texto Estruturado: prescan Nenhuma ação tomada. Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. Nenhuma ação tomada. EnableIn está desenergizado EnableOut é desenergizado, a instrução não faz nada e as saídas não são atualizadas. na EnableIn está energizado A instrução executa. EnableOut está energizado. EnableIn está sempre energizado A instrução executa. postscan Nenhuma ação tomada. Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 6-16 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Exemplo: 1. O controlador copia Target para Dest. 2. SourceBit e Length especificam quais bits em Source devem ser copiados em Dest, começando por DestBit. Source e Target se mantêm inalterados. Texto Estruturado BTDT_01.Source := source BTDT_01.SourceBit := source_bit; BTDT_01.Length := length; BTDT_01.DestBit := dest_bit; BTDT_01.Target := target BTDT(BTDT_01); distributed_value := BTDT_01.Dest; Bloco de Funções Target 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 Dest 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 Source 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 Dest 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 As caixas sombreadas mostram os bits que foram alterados. SourceBitDestBit Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-17 Zeramento (CLR) A instrução CLR zera todos os bits de Destination. Operandos: Lógica Ladder Texto Estruturado O texto estruturado não possui uma instrução CLR. Entretanto, atribui 0 ao tag que você quer desenergizar. Esta declaração de atributo desenergiza dest. Consulte Apêndice C para informações sobre a sintaxe declarações de atributos no texto estruturado. Descrição: A instrução CLR zera todos os bits de Destination. Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: nenhuma Execução: Exemplo: Desenergiza todos os bits de value para 0. Lógica Ladder Texto Estruturado value := 0; Operando: Tipo: Formato: Descrição: Destination SINT INT DINT REAL tag tag a ser zerado dest := 0; Condição: Ação da Lógica Ladder: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira A instrução zera Destination. A saída da condição da linha é definida como verdadeira.postscan A saída da condição da linha é definida como falsa. Publicação 1756-RM003F-PT-P - Maio 2002 6-18 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Swap (inversão) de Byte (SWPB) A instrução SWPB reorganiza os bytes de um valor. Operandos: Lógica Ladder Texto Estruturado Os operandos são os mesmos que aqueles para a instrução de lógica ladder SWPB. Se você selecionar o modo HIGH/LOW, insira-o como HIGHLOW ou HIGH_LOW (sem slash). Descrição: A instrução SWPB redistribui a seqüência de bytes do Source. Ele coloca o resultado em Destination. Quando você lê ou escreve os caracteres ASCII, geralmente, você não precisa trocar os caracteres. As instruções de leitura e escrita ASCII (ARD, ARL, AWA, AWT) troca os caracteres automaticamente, conforme mostrado abaixo. Operando: Tipo: Formato: Insira: Source INT DINT REAL tag tag que contém os bytes que você quer reorganizar Order Mode Se o Source for um: E você quer alterar os bytes para este modelo (cada letra representa um byte diferente): Então selecione: INT n/a alguma das opções DINT REAL ABCD ⇒ DCBA REVERSE (ou insira 0) ABCD ⇒ CDAB WORD (ou insira 1) ABCD ⇒ BADC HIGH/LOW (ou insira 2) Destination INT DINT REAL tag tag para armazenar os bytes em uma nova ordem Se Source for um: Destination deve ser um: INT INT DINT DINT DINT REAL REAL SWPB(Source,OrderMode,Dest); 42969 42968 B A Nome do Tag Valor Estilo Tipo bar_code[0] AB ASCII INT A B leitor do código de barras Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-19 Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução: Exemplo 1: As três instruções SWPB reorganizam os bytes de DINT_1 de acordo com um modo de ordem diferente. O estilo do display é ASCII e cada caractere representa um byte. Cada instrução coloca os bytes, em uma nova ordem, em um Destination diferente. Lógica Ladder Texto Estruturado SWPB(DINT_1,REVERSE,DINT_1_reverse); SWPB(DINT_1,WORD,DINT_1_swap_word); SWPB(DINT_1,HIGHLOW,DINT_1_swap_high_low); Exemplo 2: O exemplo a seguir reverte os bytes em cada elemento de um array. Para um projeto RSLogix 5000 que contém este exemplo, abra a pasta RSLogix 5000\Projects\Samples, arquivo Swap_Bytes_in_Array.ACD. 1. Inicie os tags. A instrução SIZE encontra o número de elementos em array e armazena aquele valor em array_length. Uma instrução subseqüente usa esse valor para determinar quando a rotina agiu sobre todos os elementos no array. 2. Reverta os bytes em um elemento do array. Condição: Ação da Lógica Ladder: Ação do Texto Estruturado: prescan A saída da condição da linha é definida como falsa. Nenhuma ação tomada. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. na entrada da condição da linha é verdadeira A saída da condição da linha é definida como verdadeira. na EnableIn está energizado na EnableIn está sempre energizado A instrução executa. Execução da instrução A instrução redistribui os bytes especificados. A instrução redistribui os bytes especificados. postscan A saída da condição da linha é definida como falsa. Nenhuma ação tomada. Publicação 1756-RM003F-PT-P - Maio 2002 6-20 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) • A instrução SWPB reverte os bytes do número do elemento que é indicado pelo valor de index. Por exemplo, quando index igual a 0, a instrução SWPB age em array[0]. • A instrução ADD incrementa index. A próxima vez que a instrução executar, a instrução SWPB age sobre o próximo elemento em array. 3. Determine quando a instrução SWPB agiu sobre todos os elementos no array. • Se index for menor que o número de elementos no array (array_length), continue com o próximo elemento no array. • Se index for igual array_length, então SWPB agiu sobre todos os elementos no array. Lógica Ladder Texto Estruturado index := 0; SIZE (array[0],0,array_length); REPEAT SWPB(array[index],REVERSE,array_bytes_reverse[index]); index := index + 1; UNTIL(index >= array_length)END_REPEAT; Inicie os tags. Reverta os bytes. Determine se a instrução SWPB agiu sobre todos os elementos no array. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-21 AND (E) A instrução AND realiza uma operação AND usando os bits em Source A e Source B e coloca o resultado em Destination. Para realizar um AND de lógica, consulte a página 6-33. Operandos: Lógica Ladder Texto Estruturado Use AND ou o sinal “&” como um operador dentro de uma expressão. Esta expressão avalia sourceA E sourceB. Consulte Apêndice C para informações sobre a sintaxe de expressões no texto estruturado. Bloco de Funções Operando: Tipo: Formato: Descrição: Source A SINT INT DINT imediato tag valor para AND com Source B Um tag SINT ou INT é convertido para um valor DINT por preenchimento com zero. Source B SINT INT DINT imediato tag valor para AND com Source A Um tag SINT ou INT é convertido para um valor DINT por preenchimento com zero. Destination SINT INT DINT tag armazena o resultado Operando: Tipo: Formato: Descrição: tag AND FBD_LOGICAL estrutura estrutura AND dest := sourceA AND sourceB Publicação 1756-RM003F-PT-P - Maio 2002 6-22 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Estrutura FBD_LOGICAL Descrição: Quando habilitada, a instrução avalia a operação AND Se houver combinação dos tipos de dados de inteiros, a instrução preencherá os bits mais significativos dos tipos de dados de inteiros menores com 0 de forma que fiquem com o mesmo tamanho dos tipos de dados maiores. Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: nenhuma Execução: Lógica Ladder Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas. Valor inicial é energizado SourceA DINT Valor para AND com SourceB. Válido = qualquer inteiro SourceB DINT Valor para AND com SourceA. Válido = qualquer inteiro Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest DINT Resultado da instrução. Os flags de status aritmético são energizados para esta saída. Se o bit em Source A for: E o bit em Source B for: O bit em Destination será: 0 0 0 0 1 0 1 0 0 1 1 1 Condição: Ação: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira A instrução realiza uma operação AND. A saída da condição da linha é definida como verdadeira. postscan A saída da condição da linha é definida como falsa. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-23 Bloco de Funções Exemplo: Quando habilitada, a instrução AND realiza uma operação AND em SourceA e SourceB e coloca o resultado em Dest. Lógica Ladder Texto Estruturado value_result_and := value_1 AND value_2; Bloco de Funções Condição: Ação: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado EnableOut está desenergizado. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. SourceA 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 SourceB 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 Dest 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 00 0 0 0 0 0 0 Publicação 1756-RM003F-PT-P - Maio 2002 6-24 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) OR (OU) A instrução OR realiza uma operação OR usando os bits em Source A e Source B e coloca o resultado em Destination. Para realizar um OR lógico, consulte a página 6-35. Operandos: Lógica Ladder Texto Estruturado Use OR como um operador dentro de uma expressão. Esta expressão avalia sourceA OU sourceB. Consulte Apêndice C para informações sobre a sintaxe de expressões no texto estruturado. Bloco de Funções Operando: Tipo: Formato: Descrição: Source A SINT INT DINT imediato tag valor para OR com Source B Um tag SINT ou INT é convertido para um valor DINT por preenchimento com zero. Source B SINT INT DINT imediato tag valor para OR com Source A Um tag SINT ou INT é convertido para um valor DINT por preenchimento com zero. Destination SINT INT DINT tag armazena o resultado Operando: Tipo: Formato: Descrição: tag OR FBD_LOGICAL estrutura estrutura OR dest := sourceA OR sourceB Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-25 Estrutura FBD_LOGICAL Descrição: Quando habilitada, a instrução avalia a operação OR Se houver uma mistura dos tipos de dados de inteiros, a instrução preencherá os bits mais significativos dos tipos de dados de inteiros menores com 0, de forma que fiquem com o mesmo tamanho dos tipos de dados maiores. Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: nenhuma Execução: Lógica Ladder Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas. Valor inicial é energizado SourceA DINT Valor para OR com SourceB. Válido = qualquer inteiro SourceB DINT Valor para OR com SourceA. Válido = qualquer inteiro Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest DINT Resultado da instrução. Os flags de status aritmético são energizados para esta saída. Se o bit em Source A for: E o bit em Source B for: O bit em Destination será: 0 0 0 0 1 1 1 0 1 1 1 1 Condição: Ação: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira A instrução realiza uma operação OR. A saída da condição da linha é definida como verdadeira. postscan A saída da condição da linha é definida como falsa. Publicação 1756-RM003F-PT-P - Maio 2002 6-26 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Bloco de Funções Exemplo: Quando habilitada, a instrução OR realiza uma operação OR em SourceA e SourceB e coloca o resultado em Dest. Lógica Ladder Texto Estruturado value_result_or := value_1 OR value_2; Bloco de Funções Condição: Ação: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado EnableOut está desenergizado. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. SourceA 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 SourceB 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 Dest 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-27 Ou Exclusivo (XOR) A instrução XOR realiza uma operação XOR usando os bits em Source A e Source B e coloca o resultado em Destination. Para realizar um XOR de lógica, consulte a página 6-38. Operandos: Lógica Ladder Texto Estruturado Use XOR como um operador dentro de uma expressão. Esta expressão avalia sourceA XOR sourceB. Consulte Apêndice C para informações sobre a sintaxe de expressões no texto estruturado. Bloco de Funções Operando: Tipo: Formato: Descrição: Source A SINT INT DINT imediato tag valor para XOR com Source B Um tag SINT ou INT é convertido para um valor DINT por preenchimento com zero. Source B SINT INT DINT imediato tag valor para XOR com Source A Um tag SINT ou INT é convertido para um valor DINT por preenchimento com zero. Destination SINT INT DINT tag armazena o resultado Operando: Tipo: Formato: Descrição: tag XOR FBD_LOGICAL estrutura estrutura XOR dest := sourceA XOR Publicação 1756-RM003F-PT-P - Maio 2002 6-28 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Estrutura FBD_LOGICAL Descrição: Quando habilitada, a instrução avalia a operação XOR: Se houver uma combinação dos tipos de dados de inteiros, a instrução preencherá os bits mais significativos dos tipos de dados de inteiros menores com 0, de forma que fiquem com o mesmo tamanho dos tipos de dados maiores. Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: nenhuma Execução: Lógica Ladder Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas. Valor inicial é energizado SourceA DINT Valor para XOR com SourceB. Válido = qualquer inteiro SourceB DINT Valor para XOR com SourceA. Válido = qualquer inteiro Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest DINT Resultado da instrução. Os flags de status aritmético são energizados para esta saída. Se o bit em Source A for: E o bit em Source B for: O bit em Destination será: 0 0 0 0 1 1 1 0 1 1 1 0 Condição: Ação: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira A instrução realiza uma operação OR. A saída da condição da linha é definida como verdadeira. postscan A saída da condição da linha é definida como falsa. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-29 Bloco de Funções Exemplo: Quando habilitada, a instrução XOR realiza uma operação XOR em SourceA e SourceB e coloca o resultado no tag Destination Lógica Ladder Texto Estruturado value_result_xor := value_1 XOR value_2; Bloco de Funções Condição: Ação: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado EnableOut está desenergizado. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. value_1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 value_2 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 value_result_xor 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 Publicação 1756-RM003F-PT-P - Maio 2002 6-30 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Complementação (NOT) A instrução NOT realiza uma operação NOT usando os bits em Source e coloca o resultado em Destination. Para realizar um NOT de lógica, consulte a página 6-40. Operandos: Lógica Ladder Texto Estruturado Use NOT como um operador dentro de uma expressão. Esta expressão avalia NOT source. Consulte Apêndice C para informações sobre a sintaxe de expressões no texto estruturado. Bloco de Funções Estrutura FBD_LOGICAL Operando: Tipo: Formato: Descrição: Source SINT INT DINT imediato tag valor para NOT Um tag SINT ou INT é convertido paraum valor DINT por preenchimento com zero. Destination SINT INT DINT tag armazena o resultado Operando: Tipo: Formato: Descrição: tag NOT FBD_LOGICAL estrutura estrutura NOT dest := NOT source Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas. Valor inicial é energizado Source DINT Valor para NOT. Válido = qualquer inteiro Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL A instrução produziu um resultado válido. Dest DINT Resultado da instrução. Os flags de status aritmético são energizados para esta saída. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-31 Descrição: Quando habilitada, a instrução avalia a operação NOT Se houver uma combinação dos tipos de dados de inteiros, a instrução preencherá os bits mais significativos dos tipos de dados de inteiros menores com 0, de forma que fiquem com o mesmo tamanho dos tipos de dados maiores. Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: nenhuma Execução: Lógica Ladder Bloco de Funções Exemplo: Quando habilitada, a instrução NOT realiza uma operação NOT sobre Source e coloca o resultado em Dest. Se o bit em Source for: O bit em Destination será: 0 1 1 0 Condição: Ação: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira A instrução realiza uma operação NOT. A saída da condição da linha é definida como verdadeira. postscan A saída da condição da linha é definida como falsa. Condição: Ação: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado EnableOut é desenergizado. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. value_1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 value_result_not 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 Publicação 1756-RM003F-PT-P - Maio 2002 6-32 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Lógica Ladder Texto Estruturado value_result_not := NOT value_1; Bloco de Funções Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-33 E Booleano (BAND) A instrução BAND utiliza de forma lógica até 8 entradas booleanas. Para realizar um bitwise AND, consulte a página 6-21. Operandos: Texto Estruturado Use AND ou o sinal “&” como um operador dentro de uma expressão. Os operandos devem ser valores BOOL ou expressões que avaliem valores BOOL. Esta expressão avalia se operandA e operandB estão energizados (verdadeiro). Consulte Apêndice C para informações sobre a sintaxe de expressões no texto estruturado. Bloco de Funções Estrutura FBD_BOOLEAN_AND Operando: Tipo: Formato: Descrição: tag BAND FBD_BOOLEAN_AND estrutura estrutura BAND IF operandA AND operandB THEN <statement>; Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas. Valor inicial é energizado In1 BOOL Primeira entrada booleana. Valor inicial é energizado In2 BOOL Segunda entrada booleana. Valor inicial é energizado In3 BOOL Terceira entrada booleana. Valor inicial é energizado In4 BOOL Quarta entrada booleana. Valor inicial é energizado In5 BOOL Quinta entrada booleana. Valor inicial é energizado In6 BOOL Sexta entrada booleana. Valor inicial é energizado In7 BOOL Sétima entrada booleana. Valor inicial é energizado In8 BOOL Oitava entrada booleana. Valor inicial é energizado Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL Habilita saída. Out BOOL A saída da instrução. Publicação 1756-RM003F-PT-P - Maio 2002 6-34 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Descrição: A instrução BAND possui oito entradas booleanas ANDs. Se uma entrada não é usada, ela padroniza para energizada (1). Out = In1 AND In2 AND In3 AND In4 AND In5 AND In6 AND In7 AND In8 Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução: Exemplo 1: Este exemplo ANDs bool_in1 e bool_in2 e coloca o resultado em value_result_and. Texto Estruturado value_result_not := bool_in1 AND bool_in2; Bloco de Funções Exemplo 2: Se bool_in1 e bool_in2 estão energizados (verdadeiro), light1 é energizado (aceso). Ou, light1 é desenergizado (apagado). Texto Estruturado IF bool_in1 AND bool_in2 THEN light1 := 1; ELSE light1 := 0; END_IF; Condição: Ação do Bloco de Funções: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado EnableOut está desenergizado. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. Se bool_in1 for: Se bool_in2 for: Então value_result_and é: 0 0 0 0 1 0 1 0 0 1 1 1 Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-35 (OU) Booleano (BOR) A instrução BOR possui oito entradas lógicas ORs booleanas possíveis. Para realizar uma operação OR, consulte a página 6-24. Operandos: Texto Estruturado Use OR como um operador dentro de uma expressão. Os operandos devem ser valores BOOL ou expressões que avaliem em valores BOOL. Esta expressão avalia se operandA ou operandB ou ambos estão energizados (verdadeiro). Consulte Apêndice C para informações sobre a sintaxe de expressões no texto estruturado. Bloco de Funções Estrutura FBD_BOOLEAN_OR Operando: Tipo: Formato: Descrição: tag BOR FBD_BOOLEAN_OR estrutura estrutura BOR IF operandA OR operandB THEN <statement>; END_IF; Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas. Valor inicial é energizado In1 BOOL Primeira entrada booleana. Valor inicial é desenergizado. In2 BOOL Segunda entrada booleana. Valor inicial é desenergizado. In3 BOOL Terceira entrada booleana. Valor inicial é desenergizado. In4 BOOL Quarta entrada booleana. Valor inicial é desenergizado. In5 BOOL Quinta entrada booleana. Valor inicial é desenergizado. In6 BOOL Sexta entrada booleana. Valor inicial é desenergizado. In7 BOOL Sétima entrada booleana. Valor inicial é desenergizado. In8 BOOL Oitava entrada booleana. Valor inicial é desenergizado. Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL Habilita saída. Out BOOL A saída da instrução. Publicação 1756-RM003F-PT-P - Maio 2002 6-36 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Descrição: A instrução BOR l ORs possui oito entradas booleanas. Se uma entrada não é usada, ela retorna para desenergizada (0). Out = In1 OR In2 OR In3 OR In4 OR In5 OR In6 OR In7 OR In8 Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Execução Exemplo 1: Este exemplo ORs bool_in1 e bool_in2 e coloca o resultado em value_result_or. Texto Estruturado value_result_not := bool_in1 OR bool_in2; Bloco de Funções Condição: Ação do Bloco de Funções: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado EnableOut está desenergizado. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. Se bool_in2 for: Sebool_in2 for: Então value_result_or é: 0 0 0 0 1 1 1 0 1 1 1 1 Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-37 Exemplo 2: Nesse exemplo, light1 é energizado (aceso) se: • somente bool_in1 estiver energizado (verdadeiro). • somente bool_in2 estiver energizado (verdadeiro). • bool_in1 e bool_in2 estiverem energizados (verdadeiro). Ou, light1 é desenergizado (apagado). Texto Estruturado IF bool_in1 OR bool_in2 THEN light1 := 1; ELSE light1 := 0; END_IF; Publicação 1756-RM003F-PT-P - Maio 2002 6-38 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) (Ou Exclusivo) Booleano (BXOR) A BXOR realiza um OR exclusivo em duas entradas booleanas. Para realizar uma operação XOR, consulte a página 6-27. Operandos: Texto Estruturado Use XOR como um operador dentro de uma expressão. Os operandos devem ser valores BOOL ou expressões que avaliem em valores BOOL. Esta expressão avalia se somente operandA ou somente operandB está energizado (verdadeiro). Consulte Apêndice C para informações sobre a sintaxe de expressões no texto estruturado. Bloco de Funções Estrutura FBD_BOOLEAN_XOR Descrição: A instrução BXOR realiza um OU exclusivo em duas entradas booleanas. Out = In1 XOR In2 Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Operando: Tipo: Formato: Descrição: BXOR tag FBD_BOOLEAN_XOR estrutura estrutura BXOR IF operandA XOR operandB THEN <statement>; END_IF; Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas. Valor inicial é energizado In1 BOOL Primeira entrada booleana. Valor inicial é desenergizado. In2 BOOL Segunda entrada booleana. Valor inicial é desenergizado. Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL Habilita saída. Out BOOL A saída da instrução. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-39 Execução: Exemplo 1: Este exemplo executa uma instrução XOR em bool_in1 e bool_in2 e coloca o resultado em value_result_xor. Texto Estruturado value_result_xor bool_in1 XOR bool_in2; Bloco de Funções Exemplo 2: Nesse exemplo, light1 é energizado (aceso) se: • somente bool_in2 estiver energizado (verdadeiro). • somente bool_in1 estiver energizado (verdadeiro). Ou, light1 é desenergizado (apagado). Texto Estruturado IF bool_in1 XOR bool_in2 THEN light1 := 1; ELSE light1 := 0; END_IF; Condição: Ação do Bloco de Funções: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado EnableOut está desenergizado. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. Se bool_in1 for: Se bool_in2 for: Então value_result_xor é: 0 0 0 0 1 1 1 0 1 1 1 0 Publicação 1756-RM003F-PT-P - Maio 2002 6-40 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) NOT Booleano (BNOT) A instrução BNOT complementa uma entrada booleana. Para executar uma instrução NOT, consulte a página 6-30. Operandos: Texto Estruturado Use OR como um operador dentro de uma expressão. O operando deve ser valores BOOL ou expressões que avaliem em valores BOOL. Esta expressão avalia se operand está desenergizado (falso). Consulte Apêndice C para informações sobre a sintaxe de expressões no texto estruturado. Bloco de Funções Estrutura FBD_BOOLEAN_NOT Descrição: A instrução BNOT complementa uma entrada booleana. Out = NOT In Flags de Status Aritmético: não afetados WD1 Writer Designed tag 1Condições de Falha: nenhuma Operando: Tipo: Formato: Descrição: tag BNOT FBD_BOOLEAN_NOT estrutura estrutura BNOT IF NOT operand THEN <statement>; END_IF; Parâmetro de Entrada: Tipo de Dados: Descrição: EnableIn BOOL Habilita entrada. Se desenergizada, a instrução não executa e as saídas não são atualizadas. Valor inicial é energizado In BOOL Entrada para a instrução. Valor inicial é energizado Parâmetro de Saída: Tipo de Dados: Descrição: EnableOut BOOL Habilita saída. Out BOOL A saída da instrução. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) 6-41 Execução: Exemplo 1: Este exemplo complementa bool_in1 e coloca o resultado em value_result_not. Texto Estruturado value_result_not NOT bool_in1; Bloco de Funções Exemplo 2: Se bool_in1 é desenergizado, light1 é desenergizado (apagado). Ou, light1 é energizado (aceso). Texto Estruturado IF NOT bool_in1 THEN light1 := 0; ELSE light1 := 1; END_IF; Condição: Ação do Bloco de Funções: prescan Nenhuma ação tomada. primeiro scan da instrução Nenhuma ação tomada. primeira execução da instrução Nenhuma ação tomada. EnableIn está desenergizado EnableOut está desenergizado. EnableIn está energizado A instrução executa. EnableOut está energizado. postscan Nenhuma ação tomada. Se bool_in1 for: Então value_result_not é: 0 1 1 0 Publicação 1756-RM003F-PT-P - Maio 2002 6-42 Instruções de Movimentação/Lógica (MOV, MVM, BTD, MVMT, BTDT, CLR, SWPB, AND, OR, XOR, NOT, BAND, BOR, BXOR, BNOT) Notas: Publicação 1756-RM003F-PT-P - Maio 2002 Capítulo 7 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE) Introdução As instruções de arquivo/miscelânea nos arrays de dados. É possível combinar tipos de dados, mas a perda de precisão e erros de arredondamentos podem ocorrer, bem como demora na execução da instrução. Verifique o bit S:V para observar se o resultado foi truncado. Para instruções de lógica ladder, os tipos de dados em negrito indicam tipos de dados otimizados. Uma instrução executa mais rapidamente e requer menos memória se todos os operandos da instrução usam o mesmo tipo de dados otimizados, geralmente DINT ou REAL. Se você quiser: Use esta instrução: Disponível nessas linguagens: Consulte página: realizar operações de função, desvio, lógica e aritmética nos valores dos arrays FAL lógica ladder texto estruturado(1) 7-6 buscar e comparar valores em arrays FSC lógica ladder 7-17 copiar o conteúdo de um array para outro array COP lógica ladder texto estruturado 7-25 copiar o conteúdo de um array para outro array sem interrupção CPS lógica ladder texto estruturado 7-25 preencher um array com dados específicos FLL lógica ladder texto estruturado(1) 7-31 calcular a média de um array de valores AVE lógica ladder texto estruturado(1) 7-35 classificar uma dimensão de dados do array em ordem crescente SRT lógica ladder texto estruturado 7-40 calcular o desvio padrão de um array de valores STD lógica ladder texto estruturado(1) 7-45 encontrar o tamanho de uma dimensão de um array SIZE lógica ladder texto estruturado 7-50 (1) Não há instrução de texto estruturado equivalente. Use outra programação de texto estruturado para alcançar o mesmo resultado. Veja a descrição para a instrução. 1 Publicação 1756-RM003F-PT-P - Maio 2002 7-2 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- Seleção do Modo de Operação Para as instruções FAL e FSC, o modo informa o controlador sobre como distribuir a operação de array Modo ALL No modo All, todos os elementos especificados no array são operados antes de prosseguir para a próxima instrução. A operação começa quando a entrada da condição da linha da instrução passa de falsa para verdadeira. O valor de posição (.POS) na estrutura de controle indica o elemento no array que a instrução está usando atualmente. A operação pára quando o valor .POS for igual ao valor.LEN. O diagrama de temporização a seguir mostra a relação entre os bits de status e a operação da instrução. Quando a execução da instrução estiver completa, o bit .DN será energizado. O bit .DN, o bit .EN e o valor .POS são zerados quando a entrada da condição da linha se torna falsa. Somente após isto é que outra execução da instrução Se você quiser: Selecione este modo: operar em todos os elementos especificados em um array antes de prosseguir para a próxima instrução All (Todos) distribuir a operação de array em vários scans inserir o número de elementos para operar por scan (1-2147483647) Numerical (Numérico) manipular um elemento do array cada vez que a entrada da condição da linha passa de falsa para verdadeira Incremental (Incremento) Array de dados um scan 16639 Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-3 pode ser disparada por uma transição de falsa para verdadeira da entrada da condição da linha. Modo Numerical O modo Numerical distribui a operação de array em vários scans. Esse modo é útil quando se trabalha com dados críticos não temporizados ou um grande volume de dados. É necessário inserir o número de elementos para operar para cada scan, o que mantém o tempo de scan menor. A execução é disparada quando a entrada da condição da linha passa de falsa para verdadeira. Após o disparo, a instrução é executada cada vez que se realiza o scan na mesma para o número de scans necessários para completar a operação em todo o array. Após o disparo, a entrada da condição da linha pode se alterar repetidamente sem interromper a execução da instrução. um scan operação completa zera os bits de status e zera o valor .POS entrada da condição da linha bit .EN bit DN scan da instrução 40010 nenhuma execução ocorre um scan 16641 segundo scan próximo scan Publicação 1756-RM003F-PT-P - Maio 2002 7-4 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- O diagrama de temporização a seguir mostra a relação entre os bits de status e a operação da instrução. Quando a execução da instrução estiver completa, o bit .DN será energizado. Se a entrada da condição da linha se tornar verdadeira na conclusão, os bits .DN e .ER são energizados até que a entrada da condição da linha se torne falsa. Quando a entrada da condição da linha se torna falsa, esses bits são zerados e o valor .POS é desenergizado. Se a entrada da condição da linha for falsa na conclusão, o bit .EN será zerado imediatamente. Um scan depois que o bit .EN é desenergizado, o bit .DN e o valor .POS são zerados. Modo Incremental O modo Incremental manipula um elemento do array cada vez que a entrada da condição da linha da instrução passa de falsa para verdadeira. IMPORTANTE Evite usar os resultados de uma instrução de arquivo quando em modo numérico até que o bit .DN fique energizado. scans múltiplos scans múltiplos entrada da condição da linha bit .EN bit .DN scan da instrução zera os bits de status e zera o valor .POS zera os bits de status e zera o valor .POS a linha se torna verdadeira na conclusão a linha se torna falsa na conclusão 40013operação completa operação completa 16643 1a. instrução habilitada 2a. instrução habilitada 3a. instrução habilitada última instrução habilitada Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-5 O diagrama de temporização a seguir mostra a relação entre os bits de status e a operação da instrução. A execução ocorre somente em um scan no qual a entrada da condição da linha passa de falsa para verdadeira. Cada vez que isso ocorre, apenas um elemento do array é manipulado. Se a entrada da condição da linha permanecer verdadeira durante mais de um scan, a instrução executa somente durante o primeiro scan. O bit .EN é energizado quando a entrada da condição da linha se torna verdadeira. O bit .DN é energizado quando o último elemento no array for manipulado. Quando o último elemento for manipulado e a entrada da condição da linha se tornar falsa, o bit .EN, o bit .DN e o valor .POS são removidos. A diferença entre o modo Incremental e o modo Numerical a uma taxa de um elemento por scan é: • O modo Numerical com qualquer número de elementos por scan requer somente uma transição de falsa para verdadeira da entrada da condição da linha para iniciar a execução. A instrução continua a executar o número especificado de elementos a cada scan até a conclusão, independente do estado da entrada da condição da linha. • O modo Incremental requer que a entrada da condição da linha da instrução passe de falsa para verdadeira para manipular um elemento no array. um scan entrada da condição da linha bit .EN bit DN scan da instrução operação completa zera os bits de status e zera o valor .POS 40014 Publicação 1756-RM003F-PT-P - Maio 2002 7-6 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- Aritmética de Arquivos (FAL) A instrução FAL realiza as operações de cópia, aritmética, lógica e função nos dados armazenados em um array. Operandos: Lógica Ladder Texto Estruturado O texto estruturado não possui uma instrução FAL, mas é possível alcançar os mesmos resultados usando uma instrução SIZE e uma FOR...DO ou outra construção de malha. SIZE(destination,0,length-1); FOR position = 0 TO length DO destination[position] := numeric_expression; END_FOR; Consulte página C- para informações sobre a sintaxe de construções no texto estruturado. Operando: Tipo: Formato: Descrição: Control CONTROL tag estrutura de controle para a operação Length DINT imediato número de elementos no array a serem manipulados Position DINT imediato elemento atual no array normalmente, o valor inicial é 0 Mode DINT imediato como distribuir a operação seleccione INC, ALL ou insira um número Destination SINTA INT DINT REAL tag tag para armazenar o resultado Expression SINT INT DINT REAL imediato tag uma expressão composta por tags e/ou valores imediatos separados por operadores Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal. Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-7 Estrutura CONTROL Descrição: A instrução FAL realiza as mesmas operações nos arrays conforme a instrução CPT realiza as operações dos elementos. Os exemplos que começam na página 7-13 mostram como usar o valor .POS para entrar em um array. Se o subscrito na expressão de Destination está fora da faixa, a instrução FAL gera uma falha grave (tipo 4, código 20). Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: Mnemônico: Tipo de Dados: Descrição: .EN BOOL O bit habilitado indica que a instrução FAL está habilitada. .DN BOOL O bit executado é energizado quando a instrução operou no último elemento (.POS = .LEN). .ER BOOL O bit de erro é energizado se a expressão gerar um overflow (S:V é energizado). A instrução pára a execução até que o programa zere o bit .ER. O valor .POS contém a posição do elemento que provocou o overflow. .LEN DINT O comprimento especifica o número dos elementos no array no qual a instrução FAL opera. .POS DINT A posição contém a posição do elemento atual que a instrução está acessando. Uma falha grave ocorrerá se: Tipo de falha: Código de falha: subscrito estiver fora da faixa 4 20 .POS < 0 ou .LEN < 0 4 21 Publicação 1756-RM003F-PT-P - Maio 2002 7-8 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- Execução: Condição: Ação da Lógica Ladder: prescan A saída da condição da linha é definida como falsa. examinar bit .DN bit .DN = 0 bit .DN = 1 entrada da condição da linha é falsasaída da condição da linha é definida como falsa fim bit .EN é desenergizado. bit .ER é desenergizado. bit .DN é desenergizado. valor .POS é desenergizado modo INC não sim modo ALL não sim bit .EN é desenergizado. .POS = .POS + 1 modo numérico bit interno é desenergizado .LEN < 0 ou .POS < 0 sim não falha grave .POS = .POS -1 .POS = 0 sim não bit .DN é energizado. bit .EN é energizado .POS < .LEN não sim modo .LEN > sim não modo .LEN> .LEN = 0 sim não bit .DN é energizado. bit .EN é desenergizado. página 7-12 Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-9 Condição: Ação da Lógica Ladder: entrada da condição da linha é verdadeira saída da condição da linha é definida como verdadeira fim examinar bit .DN bit .DN = 0 bit .DN = 1 .LEN = 0 não sim modo INC não sim modo ALL não sim loop_count = loop_count - 1 loop_count < 0 não sim .POS = .POS + 1 avaliar a expressão .POS = .POS + 1 examine S:V não sim bit .ER é energizado .POS = .LEN não sim bit .DN é energizado. bit .EN é energizado .POS = .POS + 1 examinar bit .ER bit .ER = 0 bit .ER = 1 bit .DN é energizado. bit .EN é energizado modo INC modo ALL modo numérico comum página 7-12 página 7-10 página 7-11 .LEN < 0 ou .POS < 0 sim não falha grave Publicação 1756-RM003F-PT-P - Maio 2002 7-10 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- Condição: Ação da Lógica Ladder: examinar bit .EN bit .EN = 1 bit .EN = 0 .POS = .POS + 1 .POS ≥ .LEN sim não bit .EN é energizado loop_count = 1 .POS = .POS -1 examinar bit interno bit = 1 bit = 0 bit interno é energizado modo INC comum .POS = .POS -1 .POS = 0 sim não bit .DN é energizado. bit .EN é energizado saída da condição da linha é definida como verdadeira fim página 7-9 Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-11 Condição: Ação da Lógica Ladder: examinar bit .EN bit .EN = 0 bit .EN = 1 .POS = .POS + 1 .POS ≥ .LEN sim não loop_count = .LEN - .POS .POS = .POS -1 examinar bit interno bit = 1 bit = 0 bit .EN é energizado modo ALL comum .POS = .POS -1 .POS = 0 sim não bit .DN é energizado. bit .EN é energizado saída da condição da linha é definida como verdadeira fim página 7-9 Publicação 1756-RM003F-PT-P - Maio 2002 7-12 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- postscan A saída da condição da linha é definida como falsa. Condição: Ação da Lógica Ladder: examinar bit .EN bit .EN = 1 bit .EN = 0 .POS = .POS + 1 .POS ≥ .LEN sim não examinar bit interno bit = 1 bit = 0 bit interno é energizado modo numérico comum .POS = .POS -1 .POS = 0 sim não bit .DN é energizado. bit .EN é energizado saída da condição da linha é definida como verdadeira fim modo .LEN ≥ sim não modo .LEN> bit .EN é energizado loop_count = .LEN - .POS .POS = .POS -1 modo ≥ loop_count não bit .EN é energizado modo loop_count sim página 7-9 Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-13 Exemplo 1: Quando habilitada, a instrução FAL copia cada elemento de array_2 na mesma posição dentro de array_1. Exemplo 2: Quando habilitada, a instrução FAL copia value_1 nas primeiras 10 posições da segunda dimensão de array_2. Exemplo 3: Cada vez que a instrução FAL é habilitada, ela copia o valor atual de array_1 para value_1. A instrução FAL usa o modo incremento, portanto, somente um valor de array é copiado a cada hora em que a instrução é habilitada. Na próxima vez em que a instrução é habilitada, ela sobrescreve value_1 sobre o próximo valor em array_1. Exemplo 4: Quando habilitada, a instrução FAL adiciona value_1 e value_2 e armazena o resultado na posição atual de array_1. cópia de array para array Expressão: array_2[control_2.pos] Destination array_1[control_2.pos] cópia de elemento para array Expressão: value_1 Destination array_2[0,control_2.pos] cópia de array para elemento Expressão: array_1[control_1.pos] Destination value_1 operação aritmética:(elemento + elemento) para array Expressão: value_1 + value_2 Destination array_1[control_1.pos] Publicação 1756-RM003F-PT-P - Maio 2002 7-14 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- Exemplo 5: Quando habilitada, a instrução FAL divide o valor da posição atual de array_2 pelo valor da posição atual de array_3 e armazena o resultado na posição atual de array_1. Exemplo 6: Quando habilitada, a instrução FAL adiciona o valor na posição atual em array_1 para value_1 e armazena o resultado na posição atual em array_3. A instrução deve executar 10 para o array_1 inteiro e array_3 para ser manipulada. Exemplo 7: Cada vez que a instrução FAL é habilitada, ela adiciona value_1 para o valor atual de array_1 e armazena o resultado em value_2. A instrução FAL usa o modo incremento, portanto, somente um valor de array é adicionado a value_1 cada hora que a instrução é habilitada. A próxima vez que a instrução é habilitada, a instrução sobrescreve value_2. operação aritmética:(array / array) para array Expressão: array_2[control_2.pos] / array_3[control_2.pos] Destination array_1[control_2.pos] operação aritmética:(array + elemento) para array Expressão: array_1[control_1.pos] + value_1 Destination array_3[control_1.pos] operação aritmética:(elemento + array) para elemento Expressão value_1 + array_1[control_1.pos] Destination value_2 Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-15 Exemplo 8: Quando habilitada, a instrução FAL multiplica o valor atual de array_1 pelo valor atual de array_3 e armazena o resultado em value_1. A instrução FAL usa o modo incremento, então somente um par de valores de array é multiplicado cada vez que a instrução é habilitada. A próxima vez que a instrução é habilitada, a instrução sobrescreve value_1. expressões FAL As expressões das instruções FAL são programadas da mesma forma que as expressões nas instruções CPT. Use as seções a seguir para mais informações sobre operadores válidos, formato e seqüência de operação que são comuns para as duas instruções. Operadores válidos operação aritmética:(array ∗ array) para elemento Expressão: array_1[control_1.pos] * array_3[control_1.pos] Destination: value_1 Operadores: Descrição: Ótimo: + adição DINT, REAL - subtração/negativo DINT, REAL * multiplicação DINT, REAL / divisão DINT, REAL ** expoente (x elevado a y) DINT, REAL ABS valor absoluto DINT, REAL ACS arco co-seno REAL AND AND (E) DINT ASN arco seno REAL ATN arco tangente REAL COS co-seno REAL DEG radianos em graus DINT, REAL FRD BCD para inteiro DINT LN log neperiano REAL LOG log base 10 REAL MOD módulo DINT, REAL NOT complementação DINT OR OR (OU) DINT RAD graus em radianos DINT, REAL SIN seno REAL SQR raiz quadrada DINT, REAL TAN tangente REAL TOD inteiro para BCD DINT TRN truncamento DINT, REAL XOR OR exclusivo DINT Operadores: Descrição: Ótimo: Publicação 1756-RM003F-PT-P - Maio 2002 7-16 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- Formatação de expressões Para cada operador utilizador, você deve fornecer um ou dois operandos (tags ou valores imediatos). Use a tabela a seguir para formatar os operadores e os operandos em uma expressão: Determinação da seqüência da operação As operações que você escreve na expressão são executadas pela instrução na seqüência prescrita e não, necessariamente, na ordem que você as escreveu. É possível suprimir a seqüência da operaçãoagrupando-se os termos dentro de parênteses, forçando a instrução para realizar uma operação dentro dos parênteses, antes de outras operações. As operações com a mesma seqüência são executadas da esquerda para a direita. Para operadores que operam em: Use este formato: Exemplos: um operando operator(operand) ABS(tag_a) dois operandos operand_a operator operand_b • tag_b + 5 • tag_c AND tag_d • (tag_e ** 2) MOD (tag_f / tag_g) Seqüência: Operação: 1. ( ) 2. ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG, RAD, SIN, SQR, TAN, TOD, TRN 3. ** 4. − (negativo), NOT 5. *, /, MOD 6. − (subtração), + 7. AND 8. XOR 9. OR Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-17 Comparação e Busca de Arquivo (FSC) A instrução FSC compara valores em um array, elemento por elemento. Operandos: Lógica Ladder Estrutura CONTROL Descrição: Quando a instrução FSC está habilitada e a comparação é verdadeira, a instrução energiza o bit .FD e o bit .POS reflete a posição do array onde a instrução encontrou a comparação verdadeira. A instrução energiza o bit .IN para evitar outra busca. Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: Operando: Tipo: Formato: Descrição: Control CONTROL tag estrutura de controle para a operação Length DINT imediato número de elementos no array a serem manipulados Position DINT imediato offset no array normalmente, valor inicial é 0 Mnemônico: Tipo de Dados: Descrição: .EN BOOL O bit habilitado indica que a instrução FSC está habilitada. .DN BOOL O bit executado é energizado quando a instrução operou no último elemento (.POS = .LEN). .ER BOOL O bit de erro não é modificado. .IN BOOL O bit inibido indica que a instrução FSC detectou uma comparação verdadeira. É necessário zerar esse bit para continuar a operação de busca. .FD BOOL O bit encontrado indica que a instrução FSC detectou uma comparação verdadeira. .LEN DINT O comprimento especifica o número dos elementos no array na qual a instrução opera. .POS DINT A posição contém a posição do elemento atual que a instrução está acessando. Uma falha grave ocorrerá se: Tipo de falha: Código de falha: .POS < 0 ou .LEN < 0 4 21 Publicação 1756-RM003F-PT-P - Maio 2002 7-18 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- Execução: Condição: Ação da Lógica Ladder: prescan A saída da condição da linha é definida como falsa. examinar bit .DN bit .DN = 0 bit .DN = 1 entrada da condição da linha é falsa saída da condição da linha é definida como falsa fim bit .EN é desenergizado. bit .ER é desenergizado. bit .DN é desenergizado. valor .POS é desenergizado modo INC não sim modo ALL não sim bit .EN é desenergizado. .POS = .POS + 1 modo numérico bit interno é desenergizado .LEN < 0 ou .POS < 0 sim não falha grave .POS = .POS -1 .POS = 0 sim não bit .DN é energizado. bit .EN é energizado .POS < .LEN não sim modo .LEN > sim não modo .LEN> .LEN = 0 sim não bit .DN é energizado. bit .EN é desenergizado. página 7-12 Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-19 postscan A saída da condição da linha é definida como falsa. Condição: Ação da Lógica Ladder: entrada da condição da linha for verdadeira saída da condição da linha é definida como verdadeira fim examinar bit .IN bit .DN = 0 bit .DN = 1 .LEN = 0 não sim modo INC não sim modo ALL não sim loop_count = loop_count - 1 loop_count < 0 não sim .POS = .POS + 1 avaliar comparação .POS = .POS + 1 correspondência não sim bit .EN é energizado bit .FD é energizado. bit .IN é energizado .POS = .LEN não sim bit .DN é energizado. bit .EN é energizado .POS = .POS + 1 examinar bit .ER bit .ER = 0 bit .ER = 1 bit .DN é energizado. bit .EN é energizado modo INC modo ALL modo numérico comum página 7-12 página 7-10 página 7-11 .LEN < 0 ou .POS < 0 sim não falha grave examinar bit .DN bit .DN = 1 bit .IN = 0 bit .DN = 0 Publicação 1756-RM003F-PT-P - Maio 2002 7-20 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- Exemplo 1: Buscar uma combinação entre dois arrays. Quando habilitada, a instrução FSC compara cada um dos 10 primeiros elementos em array_1 com os elementos correspondentes em array_2. Exemplo 2: Buscar uma combinação em um array. Quando habilitada, a instrução FSC compara MySearchKey com 10 elementos em array_1. 00000000000000000000000000000000 0 00000000000000000000000000000000 1 00000000000000000000000000000000 2 00000000000000000000000000000000 3 11111111111111110000000000000000 4 11111111111111111111111111111111 5 11111111111111111111111111111111 6 11111111111111111111111111111111 7 11111111111111111111111111111111 8 11111111111111111111111111111111 9 array_1 array_2 A instrução FSC descobre que esses elementos não são iguais. A instrução energiza os bits .FD e .IN. O valor .POS (4) indica a posição dos elementos que são diferentes. Para continuar a realizar a comparação no restante do array, zere o bit .IN. control_3.pos 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000001111111111111111 11111111111111111111111111111111 11111111111111111111111111111111 11111111111111111111111111111111 11111111111111111111111111111111 11111111111111111111111111111111 MySearchKey referência A instrução FSC descobre que esse elemento do array é igual a MySearchKey. A instrução energiza os bits .FD e .IN. O valor .POS (4) indica a posição dos elementos iguais. Para continuar a realizar a comparação no restante do array, zere o bit .IN. control_3.pos 00000000000000000000000000000000 0 00000000000000000000000000000000 1 00000000000000000000000000000000 2 00000000000000000000000000000000 3 11111111111111110000000000000000 4 11111111111111111111111111111111 5 11111111111111111111111111111111 6 11111111111111111111111111111111 7 11111111111111111111111111111111 8 11111111111111111111111111111111 9 11111111111111110000000000000000 Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-21 Exemplo 3: Buscar uma string em um array de strings. Quando habilitada, a instrução FSC compara os caracteres em código para 10 elementos em code_table. Expressões FSC As expressões das instruções FSC são programadas da mesma forma que as expressões nas instruções CMP. Use as seções a seguir para mais informações sobre operadores válidos, formato e seqüência de operação que são comuns nas duas instruções. SAM AFG 0 BEH 1 HUO 2 SAK 3 SAM 4 FQG 5 CLE 6 CAK 7 DET 8 BWG 9 code code_table A instrução FSC acha que este elemento de array é igual a code. A instrução energiza os bits .FD e .IN. O valor .POS (4) indica a posição dos elementos iguais. Para continuar a realizar a comparação no restante do array, zere o bit .IN. code_table_search.POS Publicação 1756-RM003F-PT-P - Maio 2002 Operadores válidos Formatação de expressões Para cada operador utilizador, você deve fornecer um ou dois operandos (tags ou valores imediatos). Use a tabela a seguir para formatar os operadores e os operandos em uma expressão: Operador: Descrição: Ótimo: + adição DINT, REAL - subtração/negativo DINT, REAL * multiplicação DINT, REAL / divisão DINT, REAL = igual DINT, REAL < menor que DINT, REAL <= menor ou igual a DINT, REAL > maior que DINT, REAL <= maior ou igual a DINT, REAL <> diferente de DINT, REAL ** expoente (x elevado a y) DINT, REAL ABS valor absoluto DINT, REAL ACS arcos co-seno AND AND DINT ASN arco seno ATN arco tangente COS co-seno DEG radianos em graus DINT, REAL FRDBCD para inteiro DINT LN log neperiano REAL LOG log base 10 REAL MOD módulo DINT, REAL NOT complementação DINT OR OR DINT RAD graus em radianos DINT, REAL SIN seno REAL SQR raiz quadrada DINT, REAL TAN tangente REAL TOD inteiro para BCD DINT TRN trancar DINT, REAL XOR XOR DINT Operador: Descrição: Ótimo: Para operadores que operam em: Use este formato: Exemplos: um operando operator(operand) ABS(tag_a) dois operandos operand_a operator operand_b • tag_b + 5 • tag_c AND tag_d • (tag_e ** 2) MOD (tag_f / tag_g) 7-22 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-23 Determinação da seqüência da operação As operações que você escreve na expressão são executadas pela instrução na seqüência prescrita e não, necessariamente, na ordem que você as escreveu. É possível suprimir a seqüência da operação agrupando-se os termos dentro de parênteses, forçando a instrução para realizar uma operação dentro dos parênteses, antes de outras operações. As operações com a mesma seqüência são executadas da esquerda para a direita. Uso de strings em uma expressão Use uma expressão em lógica ladder ou em texto estruturado para comparar os tipos de dados da string. Para usar strings em uma expressão, siga estas orientações: • Uma expressão permite que você compare dois tags da string. • Você não pode inserir caracteres ASCII em uma expressão diretamente. • Somente os operadores a seguir são permitidos Seqüência: Operação: 1. ( ) 2. ABS, ACS, ASN, ATN, COS, DEG, FRD, LN, LOG, RAD, SIN, SQR, TAN, TOD, TRN 3. ** 4. − (negativo), NOT 5. *, /, MOD 6. <, <=, >, >=, = 7. − (subtração), + 8. AND 9. XOR 10. OR Operador: Descrição: = igual < menor que <= menor ou igual a > maior que >= maior ou igual a <> diferente de Publicação 1756-RM003F-PT-P - Maio 2002 7-24 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- • As strings são iguais se os caracteres corresponderem. • Os caracteres ASCII são sensíveis ao contexto. A letra “A” ($41) maiúscula não é igual à letra "a" minúscula ($61). • Os valores hexadecimais dos caracteres determinam se um string é menor ou maior que outro. Para o código hexadecimal de caractere, consulte a parte de trás deste manual. • Quando duas strings são classificadas em um diretório de telefones, a seqüência das strings determina qual é maior Caracteres ASCII Códigos Hex 1ab $31$61$62 1b $31$62 a $41 AB $41$42 B $42 a $61 ab $61$62 m ai or q u e m e n or q u e AB < B a > B Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-25 Cópia de Arquivo (COP) Arquivo de Cópia Síncrono (CPS) As instruções COP e CPS copiam o(s) valor(es) em Source para Destination. Source permanece inalterado. Operandos: Lógica Ladder Texto Estruturado Os operandos são os mesmos que aqueles para as instruções de lógica ladder COP e CPS. Descrição: Durante a execução das instruções COP e CPS, outras ações do controlador podem tentar interromper a operação de cópia e mudar os dados de fonte ou destino: O número de bytes copiados é: Operando: Tipo: Formato: Descrição: Source SINT INT DINT REAL string estrutura tag elemento inicial para cópia Importante: os operandos Source e Destination devem ter o mesmo tipo de dados ou podem ocorrer resultados inesperados. Destination SINT INT DINT REAL string structure tag elemento inicial a ser sobrescrito por Source Importante: os operandos Source e Destination devem ter o mesmo tipo de dados ou podem ocorrer resultados inesperados. Length DINT imediato tag número de elementos em Destination a serem copiados COP(Source,Dest,Length); CPS(Source,Dest,Length); Se a fonte ou destino for: E você quiser: Então selecione: Notas: • tag produzido • tag consumido • dados de E/S • dados que outra tarefa pode sobrescrever prevenir que os dados mudem durante a operação de cópia CPS • Tarefas que tentam interromper uma instrução CPS são atrasadas até que a instrução seja concluída. • Para estimar o tempo de execução da instrução CPS, consulte ControlLogix System User Manual, publicação 1756-UM001. permitir que os dados mudem durante a operação de cópia COP nenhum dos acima COP Publicação 1756-RM003F-PT-P - Maio 2002 7-26 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- Contagem de Byte = Comprimento ∗ (número de bytes no tipo de dados de Destination) As instruções COP e CPS operam na memória de dados contígua e realizam uma cópia de memória byte por byte, o que requisita um entendimento do layout da memória do controlador. As instruções COP e CPS não escrevem após o final do array. Se Length for maior do que o número total de elementos no array Destination, as instruções COP e CPS param no final do array. Nenhuma falha grave é gerada. Flags de Status Aritmético: não afetados Condições de Falha: nenhuma ATENÇÃO ! Se a contagem de byte for maior do que o comprimento de Source, dados não previstos serão copiados para os elementos restantes. Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-27 Execução: Exemplo 1: Tanto array_4 como array_5 são o mesmo tipo de dados. Quando habilitada, a instrução COP copia os primeiros 10 elementos de array_4 nos primeiros 10 elementos de array_5. Condição: Ação da Lógica Ladder: Ação do Texto Estruturado prescan A saída da condição da linha é definida como falsa. Nenhuma ação tomada. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. na entrada da condição da linha é verdadeira A instrução executa. A saída da condição da linha está definida como verdadeira. na EnableIn está energizado na EnableIn está sempre energizado A instrução executa. postscan A saída da condição da linha é definida como falsa. Nenhuma ação tomada. execução da instrução saída da condição da linha é definida como verdadeira fim end_address = start_address + (Comprimento ∗ número de bytes em um elemento de destino) sim não end_address > fim do array destination end_address = fim do array destination source_address = Source sim não destination_address = end_address copiar os dados de source_address para destination _address source_address = source _address + 1 destination_address = destination_address + 1 Publicação 1756-RM003F-PT-P - Maio 2002 7-28 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- Lógica Ladder Texto Estruturado: COP(array_4[0],array_5[0],10); Exemplo 2: Quando habilitada, a instrução COP copia a estrutura timer_1 no elemento 5 de array_timer. A instrução copia somente uma estrutura para um elemento do array. Lógica Ladder Texto Estruturado: COP(timer_1,array_timer[5],1); Exemplo 3: O array project_data (100 elementos) armazena uma variedade de valores que mudam em momentos diferentes na aplicação. Para enviar uma imagem completa de project_data a uma instância por vez para outro controlador, a instrução CPS copia project_data para produced_array. • Enquanto a instrução CPS copia os dados, nenhuma atualização de E/S ou outras tarefas podem mudar os dados. • O tag produced_array produz os dados em uma rede ControlNet para o consumo por outros controladores. • Para usar a mesma imagem de dados (ou seja, fazer uma cópia sincronizada de dados), o controlador consumidor usa uma instrução CPS para copiar os dados de um tag consumido para outro tag para uso na aplicação. Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE,SRT, STD, SIZE)- 7-29 Lógica Ladder Texto Estruturado: CPS(project_data[0],produced_array[0],100); Exemplo 4: Local:0:I.Data armazena os dados de entrada para a rede DeviceNet que está conectada ao módulo 1756-DNB no slot 0. Para sincronizar as entradas com a aplicação, a instrução CPS copia os dados de entrada para input_buffer. • Enquanto a instrução CPS copia os dados, nenhuma atualização de E/S pode mudar os dados. • Conforme a aplicação executa, ela usa os dados de entrada em input_buffer para suas entradas. Lógica Ladder Texto Estruturado: CPS(Local:0:I.Data[0],input_buffer[0],20); Publicação 1756-RM003F-PT-P - Maio 2002 7-30 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- Exemplo 5: Esse exemplo inicializa um array de estruturas de temporizador. Quando habilitadas, as instruções MOV inicializam os valores .PRE e .ACC do primeiro elemento array_timer. Quando habilitada, a instrução COP copia um bloco contínuo de bytes, iniciando em array_timer[0]. O comprimento é de nove estruturas de temporizador. Lógica Ladder Texto Estruturado: IF S:FS THEN array_timer[0].pre := 500; array_timer[0].acc := 0; COP(array_timer[0],array_timer[1],10); END_IF; array_timer[0] Primeiro a instrução copia os valores timer[0] em timer[1] array_timer[1] Então, a instrução copia os valores timer[1] em timer[2] array_timer[2] Depois, a instrução copia os valores timer[2] em timer[3] array_timer[3] Então, a instrução copia os valores timer[3] em timer[4] array_timer[4] • • • array_timer[9] Finalmente, a instrução copia os valores timer[9] em timer[10] array_timer[10] Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-31 Preenchimento de Arquivo (FLL) A instrução FLL preenche os elementos de um array com o valor Source. Source permanece inalterado. Operandos: Lógica Ladder Texto Estruturado O texto estruturado não possui uma instrução FLL, mas é possível alcançar os mesmos resultados usando uma instrução SIZE e uma FOR...DO ou outra construção de malha. SIZE(destination,0,length); FOR position = 0 TO length-1 DO destination[position] := source; END_FOR; Consulte página C- para informações sobre a sintaxe de construções no texto estruturado. Descrição: O número de bytes preenchidos é: Contagem de Byte = Comprimento ∗ (número de bytes no tipo de dados de Destination) A instrução FLL opera na memória de dados contínua. A instrução FLL não gravará logo após o final de um array. Se o comprimento for maior do que o número total de elementos no array Destination, a instrução COP pára no final do array. Nenhuma falha grave é gerada. Para obter resultados melhores, Source e Destination devem ser do mesmo tipo. Se você quiser preencher uma estrutura, use a instrução COP (consulte o exemplo 3 na página 7-28). Se você quiser combinar Operando: Tipo: Formato: Descrição: Source SINT INT DINT REAL imediato tag elemento para cópia Importante: os operandos Source e Destination devem ter o mesmo tipo de dados ou podem ocorrer resultados inesperados. Destination SINT INT DINT REAL structure tag elemento inicial a ser sobrescrito por Source Importante: os operandos Source e Destination devem ter o mesmo tipo de dados ou podem ocorrer resultados inesperados. O melhor jeito para inicializar uma estrutura é usar a instrução COP. Length DINT imediato número de elementos a serem preenchidos Publicação 1756-RM003F-PT-P - Maio 2002 7-32 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- os tipos de dados para Source e Destination, os elementos em Destination são preenchidos com os valores convertidos de Source. Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Se Source for: E Destination for: Source é convertido para: SINT, INT, DINT ou REAL SINT SINT SINT, INT, DINT ou REAL INT INT SINT, INT, DINT ou REAL DINT DINT SINT, INT, DINT ou REAL REAL REAL SINT structure SINT (não convertido) INT structure INT (não convertido) DINT structure DINT (não convertido) REAL structure REAL (não convertido) Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-33 Execução: Exemplo: A instrução FLL copia o valor em value_1 para dest_1 Condição: Ação da Lógica Ladder: prescan A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. postscan A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira saída da condição da linha é definida como verdadeira fim end_address = start_address + (Comprimento ∗ número de bytes em um elemento de destino) sim não end_address > fim do array destino end_address = fim do array destino source_address = Source sim não destination_address = end_address copiar os dados de source_address para destination _address destination_address = destination_address + 1 Publicação 1756-RM003F-PT-P - Maio 2002 7-34 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- Lógica Ladder Texto Estruturado: dest_1 := value_1; Tipo de dados (value_1) Source: Valor (value_1) Source: Destination (dest_1) tipo de dados: Destination (dest_1) valor depois de FLL: SINT 16#80 (-128) DINT 16#FFFF FF80 (-128) DINT 16#1234 5678 SINT 16#78 SINT 16#01 REAL 1.0 REAL 2.0 INT 16#0002 SINT 16#01 TIMER 16#0101 0101 16#0101 0101 16#0101 0101 INT 16#0001 TIMER 16#0001 0001 16#0001 0001 16#0001 0001 DINT 16#0000 0001 TIMER 16#0000 0001 16#0000 0001 16#0000 0001 Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-35 Média de Arquivo (AVE) A instrução AVE calcula a média de um conjunto de valores. Operandos: Lógica Ladder Texto Estruturado O texto estruturado não possui uma instrução AVE, mas é possível alcançar os mesmos resultados usando uma instrução SIZE e uma FOR...DO ou outra construção de malha. SIZE(array,0,length); sum := 0; FOR position = 0 TO length DO-1 sum := sum + array[position]; END_FOR; Destination = sum / length; Consulte página C- para informações sobre a sintaxe de construções no texto estruturado. estrutura CONTROL Operando: Tipo: Formato: Descrição: Array SINT INT DINT REAL tag do array encontre a média dos valores nesse array especifique o primeiro elemento do grupo de elementos para a média não use CONTROL.POS no subscrito Dimension to vary DINT imediato (0, 1, 2) a dimensão a ser usada depende do número de dimensões, a seqüência é array[dim_0,dim_1,dim_2] array[dim_0,dim_1] array[dim_0] Destination SINT INT DINT REAL tag resultado da operação Control CONTROL tag estrutura de controle para a operação Length DINT imediato número de elementos do array para a média Position DINT imediato elemento atual no array normalmente, valor inicial é 0 Mnemônico: Tipo de Dados: Descrição: .EN BOOL O bit habilitado indica que a instrução AVE está habilitada. .DN BOOL O bit executado é energizado quando a instrução operou no último elemento no Array (.POS = .LEN). Publicação 1756-RM003F-PT-P - Maio 2002 7-36 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- Descrição: A instrução AVE calcula a média de um conjunto de valores. Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: .ER BOOL O bit de erro é energizado se a instrução gerar um overflow. A instrução pára a execução até que o programa zere o bit .ER. A posição do elemento que provocou o overflow está armazenada no valor .POS. .LEN DINT O comprimento especifica o número dos elementos no array no qual a instrução opera. .POS DINT Aposição contém a posição do elemento atual que a instrução está acessando. Mnemônico: Tipo de Dados: Descrição: IMPORTANTE Certifique-se de que Length não faça com que a instrução exceda o operando Dimension to vary especificado. Se isso ocorrer, Destination ficará incorreto. Uma falha grave ocorrerá se: Tipo de falha: Código de falha: .POS < 0 ou .LEN < 0 4 21 o operando Dimension to vary não existe para o array especificado 4 20 Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-37 Execução: Exemplo 1: Média array_dint, que é DINT[4,5]. Condição: Ação da Lógica Ladder: prescan O bit .EN é desenergizado. O bit .DN é desenergizado. O bit .ER é desenergizado. A saída da condição da linha é definida como falsa. entrada da condição da linha for verdadeira A instrução AVE calcula a média, adicionando todos os elementos especificados no array e dividindo pelo número de elementos. Internamente, a instrução usa uma instrução FAL para calcular a média. Expressão = cálculo da média Modo = ALL Para obter detalhes sobre como a instrução FAL executa, consulte a página 7-8. postscan A saída da condição da linha é definida como falsa. examinar bit .DN bit .DN = 0 bit .DN = 1 entrada da condição da linha for falsa saída da condição da linha é definida como falsa fim bit .EN é desenergizado. bit .ER é desenergizado. bit .DN é desenergizado. valor .POS é desenergizado dimensão 1 dimensão 0 0 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 0 1 2 3 4 AVE 19 14 9 4+ + + 4 ------------------------------------- 46 4 ------ 11.5= = = dint_ave = 12 subscritos Publicação 1756-RM003F-PT-P - Maio 2002 7-38 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- Lógica Ladder Texto Estruturado: SIZE(array_dint,0,length); sum := 0; FOR position = 0 TO (length-1) DO sum := sum + array_dint[position]; END_FOR; dint_ave := sum / length; Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-39 Exemplo 2: Média array_dint, que é DINT[4,5]. Lógica Ladder Texto Estruturado: SIZE(array_dint,1,length); sum := 0; FOR position = 0 TO length-1 DO sum := sum + array_dint[position]; END_FOR; dint_ave = sum / length; dimensão 1 dimensão 0 0 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 0 1 2 3 4 AVE 5 4 3 2 1+ + + + 5 ---------------------------------------- 15 5 ------ 3= = = subscritos dint_ave = 3 Publicação 1756-RM003F-PT-P - Maio 2002 7-40 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- Classificação de Arquivo (SRT) A instrução SRT classifica um conjunto de valores em uma dimensão (Dim to vary) do array em ordem crescente. Operandos: Lógica Ladder Texto Estruturado Os operandos são os mesmos que aqueles para a instrução de lógica ladder SRT. Entretanto, pode-se especificar os valores de Length e Position ao acessar os membros .LEN e .POS da estrutura CONTROL, ou ao incluir os valores na lista de operando. Estrutura CONTROL Operando: Tipo: Formato: Descrição: Array SINT INT DINT REAL tag do array array para classificação especifique o primeiro elemento do grupo de elementos para classificação não use CONTROL.POS no subscrito Dimension to vary DINT imediato (0, 1, 2) a dimensão a ser usada depende do número de dimensões, a seqüência é array[dim_0,dim_1,dim_2] array[dim_0,dim_1] array[dim_0] Control CONTROL tag estrutura de controle para a operação Length DINT imediato número de elementos do array para classificação Position DINT imediato elemento atual no array normalmente, valor inicial é 0 SRT(Array,Dimtovary, Control); Mnemônico: Tipo de Dados: Descrição: .EN BOOL O bit habilitado indica que a instrução SRT está habilitada. .DN BOOL O bit executado é energizado quando os elementos especificados forem classificados. .ER BOOL O bit de erro é energizado quando uma das condições .LEN < 0 ou .POS < 0 também gerar uma falha grave. .LEN DINT O comprimento especifica o número dos elementos no array no qual a instrução opera. .POS DINT A posição contém a posição do elemento atual que a instrução está acessando. Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-41 Descrição: A instrução SRT classifica um conjunto de valores em uma dimensão (Dim to vary) do array em ordem crescente. Essa é uma instrução transicional: • Na lógica ladder, alterna-se a entrada da condição de linha de desenergizado para energizado a cada hora que a instrução deveria ser executada. • No texto estruturado, condicione a instrução para que ela somente execute em uma transição. Consulte página C-. Flags de Status Aritmético: Os flags de status aritmético são afetados. Condições de Falha: IMPORTANTE Certifique-se de que Length não faça com que a instrução exceda o operando Dimension to vary especificado. Se isto acontecer, resultados inesperados ocorrerão. Uma falha grave ocorrerá se: Tipo de falha: Código de falha: .POS < 0 ou .LEN < 0 4 21 o operando Dimension to vary não existe para o array especificado 4 20 A instrução tenta acessar os dados localizados fora dos limites do array. 4 20 Publicação 1756-RM003F-PT-P - Maio 2002 7-42 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- Execução: Condição: Ação da Lógica Ladder: Ação do Texto Estruturado prescan O bit .EN é desenergizado. O bit .DN é desenergizado. O bit .ER é desenergizado. A saída da condição da linha é definida como falsa. O bit .EN é desenergizado. O bit .DN é desenergizado. O bit .ER é desenergizado. na entrada da condição da linha é verdadeira A instrução executa. A saída da condição da linha está definida como verdadeira. na EnableIn está energizado na EnableIn está sempre energizado A instrução executa. Execução da Instrução A instrução escolhe os elementos especificados do array em ordem ascendente. A instrução escolhe os elementos especificados do array em ordem ascendente. postscan A saída da condição da linha é definida como falsa. Nenhuma ação tomada. examinar bit .DN bit .DN = 0 bit .DN = 1 saída da condição da linha é definida como falsa fim bit .EN é desenergizado. bit .ER é desenergizado. bit .DN é desenergizado. valor .POS é desenergizado entrada da condição da linha é falsa Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-43 Exemplo 1: Classifique array_dint, que é DINT[4,5]. Lógica Ladder Texto Estruturado: control_1.LEN := 4; control_1.POS := 0; SRT(int_array[0,2],0,control_1); dimensão 1 dimensão 0 0 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 0 1 2 3 4 dimensão 1 dimensão 0 0 20 19 3 17 16 15 14 8 12 11 10 9 13 7 6 5 4 18 2 1 1 2 3 0 1 2 3 4 Antes Depois subscritos subscritos Publicação 1756-RM003F-PT-P - Maio 2002 7-44 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- Exemplo 2: Classifique int _array, que é DINT[4,5]. Lógica Ladder Texto Estruturado control_1.POS := 5; control_1.pos = 0; SRT(int_array[2,0],1,control_1); dimensão 1 dimensão 0 0 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 0 1 2 3 4 dimensão 1 dimensão 0 0 20 19 18 17 16 15 14 13 12 11 6 7 8 9 10 5 4 3 2 1 1 2 3 0 1 2 3 4 Antes Depois subscritos subscritos Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-45 Desvio Padrão do Arquivo (STD) A instrução STD calcula o desvio padrão de um conjunto de valores em uma dimensão do Array e armazena o resultadoem Destination. Operandos: Lógica Ladder estrutura CONTROL Texto Estruturado O texto estruturado não possui uma instrução STD, mas é possível alcançar os mesmos resultados usando uma instrução SIZE e uma FOR...DO ou outra construção de malha. SIZE(destination,0,length); sum := 0; FOR position = 0 TO length-1 DO sum := sum + array[position]; Operando: Tipo: Formato: Descrição: Array SINT INT DINT REAL tag do array encontra o desvio padrão dos valores nesse array especifica o primeiro elemento do grupo de elementos a serem usados no cálculo do desvio padrão não use CONTROL.POS no subscrito Um tag SINT ou INT é convertido para um valor DINT pela extensão de sinal. Dimension to vary DINT imediato (0, 1, 2) a dimensão a ser usada depende do número de dimensões, a seqüência é array[dim_0,dim_1,dim_2] array[dim_0,dim_1] array[dim_0] Destination REAL tag resultado da operação Control CONTROL tag estrutura de controle para a operação Length DINT imediato número de elementos do array a serem usados no cálculo do desvio padrão Position DINT imediato elemento atual no array normalmente, valor inicial é 0 Mnemônico: Tipo de Dados: Descrição: .EN BOOL O bit habilitado indica que a instrução STD está habilitada. .DN BOOL O bit executado é energizado quando o cálculo é concluído. .ER BOOL O bit de erro é energizado quando a instrução gerar um overflow. A instrução pára a execução até que o programa zere o bit .ER. A posição do elemento que provocou o overflow está armazenada no valor .POS. .LEN DINT O comprimento especifica o número dos elementos no array no qual a instrução opera. .POS DINT A posição contém a posição do elemento atual que a instrução está acessando. Publicação 1756-RM003F-PT-P - Maio 2002 7-46 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- END_FOR; average := sum / length; sum := 0; FOR position = 0 TO length-1 DO sum := sum + ((array[position] - average)**2); END_FOR; destination := SQRT(sum /(length-1)); Consulte página C- para informações sobre a sintaxe de construções no texto estruturado. Descrição: O desvio padrão é calculado de acordo com esta fórmula: Onde: • start = subscrito dimension-to-vary do operando array • xi = elemento do tag no array • N = número de elementos especificados no array • AVE = Flags de Status Aritmético: Os flags de status aritmético são afetados. IMPORTANTE Certifique-se de que Length não faça com que a instrução exceda o operando Dimension to vary especificado. Se isso ocorrer, Destination ficará incorreto. X start i+( ) AVE–〈 〉 2[ ] i 1= N ∑ N 1–( ) -------------------------------------------------------------------- Desvio Padrão = x start i+( ) i 1= N ∑ N ----------------------------------------- Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-47 Condições de Falha: Execução: Uma falha grave ocorrerá se: Tipo de falha: Código de falha: .POS < 0 ou .LEN < 0 4 21 o operando Dimension to vary não existe para o array especificado 4 20 Condição: Ação da Lógica Ladder: prescan O bit .EN é desenergizado. O bit .DN é desenergizado. O bit .ER é desenergizado. A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira A instrução STD calcula o desvio padrão dos elementos especificados. Internamente, a instrução usa uma instrução FAL para calcular a média. Expressão = cálculo do desvio padrão Modo = ALL Para obter detalhes sobre como a instrução FAL executa, consulte a página 7-8. postscan A saída da condição da linha é definida como falsa. examinar bit .DN bit .DN = 0 bit .DN = 1 entrada da condição da linha for falsa saída da condição da linha é definida como falsa fim bit .EN é desenergizado. bit .ER é desenergizado. bit .DN é desenergizado. valor .POS é desenergizado Publicação 1756-RM003F-PT-P - Maio 2002 7-48 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- Exemplo 1: Calcular o desvio padrão de dint_array, que é DINT[4,5]. Lógica Ladder Texto Estruturado SIZE(dint_array,0,length); sum := 0; FOR position = 0 TO (length-1) DO sum := sum + dint_array[position]; END_FOR; average := sum / length; sum := 0; FOR position = 0 TO (length-1) DO sum := sum + ((dint_array[position] - average)**2); END_FOR; real_std := SQRT(sum /(length-1)); dimensão 1 dimensão 0 0 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 0 1 2 3 4 STD 16 8.5–〈 〉 2 11 8.5–〈 〉2 6 8.5–〈 〉2 1 8.5–〈 〉2+ + + 4 1–〈 〉 --------------------------------------------------------------------------------------------------------------------------- 6.454972= = AVE 16 11 6 1+ + + 4 ------------------------------------- 34 4 ------ 8.5= = = subscritos real_std = 6.454972 Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-49 Exemplo 2: Calcular o desvio padrão de dint_array, que é DINT[4,5]. Lógica Ladder Texto Estruturado SIZE(dint_array,1,length); sum := 0; FOR position = 0 TO (length-1) DO sum := sum + array_dint[position]; END_FOR; average := sum / length; sum := 0; FOR position = 0 TO (length-1) DO sum := sum + ((array[position] - average)**2); END_FOR; real_std = SQRT(sum /(length-1)); dimensão 1 dimensão 0 0 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 0 1 2 3 4 STD 20 18–〈 〉 2 19 18–〈 〉2 18 18–〈 〉2 17 18–〈 〉2 16 18–〈 〉2+ + + + 5 1–〈 〉 ------------------------------------------------------------------------------------------------------------------------------------------------------------ 1.581139= = AVE 20 19 18 17 16+ + + + 5 ------------------------------------------------------- 90 5 ------ 18= = = subscritos real_std = 1.581139 Publicação 1756-RM003F-PT-P - Maio 2002 7-50 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- Tamanho em Elementos (SIZE) A instrução SIZE encontra o tamanho de uma dimensão de um array. Operandos: Lógica Ladder Texto Estruturado Os operandos são os mesmos que aqueles para a instrução da lógica ladder SIZE. Descrição: A instrução SIZE encontra o número de elementos (tamanho) na dimensão determinada do array Source e coloca o resultado no operando Size. • A instrução encontra o tamanho de uma dimensão de um array. • A instrução opera em: – array – array em uma estrutura – array que é parte de um array maior Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Operando: Tipo: Formato: Descrição: Source SINT INT DINT REAL structure string tag do array array no qual a instrução é operar Dimension to Vary DINT imediato (0, 1, 2) dimensão a ser usada Size SINT INT DINT REAL tag tag para armazenar o número de elementos na dimensão especificada do array Para o tamanho da: Insira: primeira dimensão 0 segunda dimensão 1 terceira dimensão 2 SIZE(Source,Dimtovary,Size); Publicação 1756-RM003F-PT-P - Maio 2002 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- 7-51 Execução: Exemplo 1: Encontrar o número de elementos na dimensão 0 (primeira dimensão) de array_a. Armazene o tamanho em array_a_size. Neste exemplo, a dimensão 0 de array_a tem 10 elementos. Lógica Ladder Texto Estruturado SIZE(array_a,0,array_a_size); Exemplo 2: Encontrar o número de elementos no membro DATA de string_1 que é uma string. Armazene o tamanho em string_1_size. Neste exemplo, o membro DATA da string_1 tem 82 elementos. (A string usa o tipo de dados STRING padrão.) Como cada elemento mantém um caracter, string_1 pode conter até 82 caracteres. Lógica Ladder Texto Estruturado SIZE(string_1.DATA[0],0,string_1_size); Condição: Ação da Lógica Ladder: Ação do Texto Estruturado prescan A saída da condiçãoda linha é definida como falsa. Nenhuma ação tomada. entrada da condição da linha é falsa A saída da condição da linha é definida como falsa. na entrada da condição da linha é verdadeira A instrução executa. A saída da condição da linha é definida como verdadeira. na EnableIn está energizado na EnableIn está sempre energizado A instrução executa. execução da instrução A instrução encontra o tamanho de uma dimensão. A instrução encontra o tamanho de uma dimensão. postscan A saída da condição da linha é definida como falsa. Nenhuma ação tomada. Size in Elements Source array_a[0] 255 Dim. To Vary 0 Size array_a_size 10 SIZE Size in Elements Source string_1.DATA[0] '$00' Dim. To Vary 0 Size string_1_size 82 SIZE Publicação 1756-RM003F-PT-P - Maio 2002 7-52 InstruçõesInstruções de Array (Arquivo)/Miscelânea (FAL, FSC, COP, CPS, FLL, AVE, SRT, STD, SIZE)- Exemplo 3: Strings_a é um array de estruturas da string. A instrução SIZE encontra o número de elementos no membro DATA da estrutura da string e armazena o tamanho em data_size_a. Neste exemplo, o membro DATA tem 24 elementos. (A estrutura de string tem um comprimento especificado pelo usuário de 24). Lógica Ladder Texto Estruturado SIZE(strings_a[0].DATA[0],0,data_size_a); Size in Elements Source strings_a[0].DATA[0] '$00' Dim. To Vary 0 Size data_size_a 24 SIZE Publicação 1756-RM003F-PT-P - Maio 2002 Capítulo 8 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) Introdução Use as instruções de array (arquivo)/deslocamento para modificar a localização dos dados dentro dos arrays. É possível misturar os tipos de dados, mas podem ocorrer perda de precisão e erro de arredondamento. Para instruções de lógica ladder, os tipos de dados em negrito indicam tipos de dados otimizados. Uma instrução executa mais rapidamente e requer menos memória se todos os operandos da instrução usam o mesmo tipo de dados otimizados, geralmente, DINT ou REAL. Se você quiser: Use esta instrução: Disponível nessas linguagens: Consulte página: carregar bits, deslocar bits e descarregar bits de um array de bits, um bit de cada vez. BSL lógica ladder 8-2 BSR lógica ladder 8-5 carregar e descarregar os valores na mesma seqüência. FFL lógica ladder 8-8 FFU lógica ladder 8-14 carregar e descarregar os valores em ordem reversa. LFL lógica ladder 8-20 LFU lógica ladder 8-26 1 Publicação 1756-RM003F-PT-P - Maio 2002 8-2 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) Deslocamento de Bit para a Esquerda (BSL) A instrução BSL desloca os bits especificados dentro do Array uma posição para a esquerda. Operandos: Lógica Ladder Estrutura CONTROL Descrição: Quando habilitada, a instrução descarrega o bit mais significativo dos bits especificados para o bit .UL, desloca os bits restantes uma posição para a esquerda e carrega o bit Source no bit 0 do Array. A instrução BSL opera na memória de dados contínua. Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Operando: Tipo: Formato: Descrição: Array DINT tag do array array a ser modificado especifique o primeiro elemento do grupo de elementos não use CONTROL.POS no subscrito Control CONTROL tag estrutura de controle para a operação Source bit BOOL tag bit a ser deslocado Length DINT imediato número de bits do array a ser deslocado Mnemônico: Tipo de Dados: Descrição: .EN BOOL O bit habilitado indica que a instrução BSL está habilitada. .DN BOOL O bit executado é energizado para indicar que os bits foram deslocados uma posição para a esquerda. .UL BOOL O bit de descarga é a saída da instrução. O bit .UL armazena o status do bit que foi deslocado fora da faixa dos bits. .ER BOOL O bit de erro é energizado quando .LEN < 0. .LEN DINT O comprimento especifica o número de bits no array a ser deslocado. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-3 Execução Condição: Ação da Lógica Ladder: prescan O bit .EN é desenergizado. O bit .DN é desenergizado. O bit .ER é desenergizado. O valor .POS é desenergizado. A saída da condição da linha é definida como falsa. entrada da condição da linha é falsa O bit .EN é desenergizado. O bit .DN é desenergizado. O bit .ER é desenergizado. O valor .POS é desenergizado. A saída da condição da linha é definida como falsa. postscan A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira examinar bit .EN bit .EN = 1 bit .EN = 0 fim bit .DN é energizado. deslocar array da esquerda uma posição para a esquerda bit .EN é energizado saída da condição da linha é definida como verdadeira bit .DN é energizado. .POS = .LEN .LEN = 0 sim não .LEN < 0 sim não bit sourcebit .UL array examinar bit source .source bit = 1 .source bit = 0 bit .UL permanece energizado bit .UL é energizado bit .ER é energizado Publicação 1756-RM003F-PT-P - Maio 2002 8-4 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) Exemplo 1: Quando habilitada, a instrução BSL começa no bit 0 em array_dint[0]. A instrução descarrega array_dint[0].9 no bit .UL, desloca os bits remanescentes e carrega input_1 em array_dint[0].0. Os valores nos bits remanescentes (10-31) são inválidos. Exemplo 2: Quando habilitada, a instrução BSL começa no bit 0 em array_dint[0]. A instrução descarrega array_dint[1].25 no bit .UL, desloca os bits remanescentes e carrega input_1 em array_dint[0].0. Os valores nos bits remanescentes (31-26 em array_dint[1]) são inválidos. Observe como array_dint[0].31 desloca-se através das palavras para array_dint[1].0. 9 8 7 6 5 4 3 2 1 0 array_dint[0] antes do deslocamento 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 9 8 7 6 5 4 3 2 1 0 array_dint[0]dep ois do deslocamento 0 1 1 1 1 0 0 0 0 1 1 input_10 bit .UL esses bits foram deslocados à esquerda 31 0 array_dint[0] 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 31 0 array_dint[1] 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 input_1 esses bits foram deslocados para a esquerda 0 bit .UL esses bits foram deslocados para a esquerda Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-5 Deslocamento de Bit para a Direita (BSR) A instrução BSR desloca os bits especificados dentro do Array uma posição para a direita. Operandos: Lógica Ladder Estrutura CONTROL Descrição: Quando habilitada, a instrução descarrega o valor do bit do Array para o bit .UL, desloca os bits restantes uma posição para a direita e carrega o bit Source no bit mais significativo dos bits especificados. A instrução BSR opera na memória de dados contínua. Flags de Status Aritmético: não afetados Condições de Falha: nenhuma Operando: Tipo: Formato: Descrição: Array DINT tag do array array a ser modificado especifica o elemento em que o deslocamento deve começar não use CONTROL.POS no subscrito Control CONTROL tag estrutura de controle para a operação Bit Source BOOL tag bit a ser deslocado Length DINT imediato número de bits do array a ser deslocado Mnemônico: Tipo de Dados: Descrição: .EN BOOL O bit habilitado indica que a instrução BSR está habilitada. .DN BOOL O bit executado é energizado para indicar que os bits foram deslocados uma posição para a direita. .UL BOOL O bit de descarga é a saída da instrução. O bit .UL armazena o status do bit que foi deslocado fora da faixa dos bits. .ER BOOL O bit de erro é energizado quando .LEN < 0. .LEN DINT O comprimento especifica o número de bits no array a ser deslocado. Publicação 1756-RM003F-PT-P - Maio 2002 8-6 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) Execução Condição: Ação da Lógica Ladder: prescan O bit .EN é desenergizado. O bit .DN é desenergizado. O bit .ER é desenergizado. O valor .POS é desenergizado. A saída dacondição da linha é definida como falsa. entrada da condição da linha for falsa O bit .EN é desenergizado. O bit .DN é desenergizado. O bit .ER é desenergizado. O valor .POS é desenergizado. A saída da condição da linha é definida como falsa. postscan A saída da condição da linha é definida como falsa. entrada da condição da linha é verdadeira examinar bit .EN bit .EN = 1 bit .EN = 0 fim bit .DN é energizado. deslocar array da esquerda uma posição para a esquerda bit .EN é energizado saída da condição da linha é definida como verdadeira bit .DN é energizado. .POS = .LEN .LEN = 0 sim não .LEN < 0 sim não Bit Source bit .ULarray examinar bit source .source bit = 1 .source bit = 0 bit .UL permanece energizado bit .UL é energizado bit .ER é Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-7 Exemplo 1: Quando habilitada, a instrução BSR começa no bit 9 em array_dint[0]. A instrução descarrega array_dint[0].0 no bit .UL, desloca os bits remanescentes à direita e carrega input_1 em array_dint[0].9. Os valores nos bits remanescentes (10-31) são inválidos. Exemplo 2: Quando habilitada, a instrução BSR começa no bit 25 em array_dint[1]. A instrução descarrega array_dint[0].0 no bit .UL, desloca os bits remanescentes à direita e carrega input_1 em array_dint[1].25. Os valores nos bits remanescentes (31-26 em dint_array[1]) são inválidos. Observe como array_dint[1].0 desloca-se através das palavras para array_dint[1].31. 9 8 7 6 5 4 3 2 1 0 array_dint[0] antes do deslocamento 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 9 8 7 6 5 4 3 2 1 0 array_dint[0]dep ois do deslocamento 1 0 0 1 1 1 1 0 0 0 esses bits foram deslocados para a direita 0 bit .UL 1 input_1 31 0 array_dint[0] 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 31 0 array_dint[1] 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 esses bits foram deslocados para a direita 0 bit .UL esses bits foram deslocados para a direita1 input_1 Publicação 1756-RM003F-PT-P - Maio 2002 8-8 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) Carga FIFO (FFL) A instrução FFL copia o valor Source para FIFO. Operandos: Lógica Ladder Se você usar uma estrutura definida pelo usuário como tipo de dados para o operando Source ou FIFO, use a mesma estrutura para os dois operandos. estrutura CONTROL Descrição: Use a instrução FFL com a instrução FFU para armazenar e recuperar dados na seqüência primeiro a entrar, primeiro a sair. Quando usada em pares, as instruções FFL e FFU estabelecem um registro de deslocamento assíncrono. Operando: Tipo: Formato: Descrição: Source SINT INT DINT REAL string structure imediato tag dados a serem armazenados em FIFO Source converte ao tipo de dados do tag do array. Um inteiro menor converte a um inteiro maior pela extensão do sinal. FIFO SINT INT DINT REAL string estrutura tag do array FIFO a ser modificado especifique o primeiro elemento de FIFO não use CONTROL.POS no subscrito Control CONTROL tag estrutura de controle para a operação geralmente, usa o mesmo CONTROL, conforme associado a FFU Length DINT imediato número máximo de elementos que FIFO pode controlar de uma vez. Position DINT imediato próxima localização em FIFO em que a instrução carrega os dados. normalmente, valor inicial é 0 Mnemônico: Tipo de Dados: Descrição: .EN BOOL O bit habilitado indica que a instrução FFL está habilitada. .DN BOOL O bit executado é energizado para indicar que FIFO está cheio (.POS=LEN). O bit .DN inibe a carga FIFO até .POS < .LEN. .EM BOOL O bit vazio indica que FIFO está vazio. Se .LEN ≤ 0 ou .POS < 0, o bit .EM e o bit .DN são energizados. .LEN DINT O comprimento especifica o número máximo de elementos que FIFO pode controlar de uma vez. .POS DINT A posição identifica a localização em FIFO em que a instrução carregará o próximo valor. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-9 Geralmente, Source e FIFO são do mesmo tipo de dados. Quando habilitada, a instrução FFL carrega o valor Source na posição FIFO identificada pelo valor .POS. A instrução carrega um valor cada vez que a instrução é habilitada até que FIFO fique cheio. A instrução FFL opera na memória de dados contínua. Flags de Status Aritmético: não afetados Condições de Falha: Uma falha grave ocorrerá se: Tipo de falha: Código de falha: (elemento de início + .POS) > tamanho do array de FIFO 4 20 Publicação 1756-RM003F-PT-P - Maio 2002 8-10 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) Execução Condição: Ação da Lógica Ladder: prescan fim o bit .EN é energizado para evitar uma carga falsa quando o scan começar saída da condição da linha é definida como falsa .LEN < 0 sim não .POS < 0 sim .EM é desenergizado. bit .DN é desenergizado. não .POS = 0 sim não .EM é energizado .POS ≥ .LEN sim não .DN é energizado .EM é energizado .DN é energizado Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-11 Condição: Ação da Lógica Ladder: entrada da condição da linha é falsa fim bit .EN é desenergizado. saída da condição da linha é definida como falsa .LEN < 0 sim não .POS < 0 sim .EM é desenergizado. bit .DN é desenergizado. não .POS = 0 sim não .EM é energizado .POS ≥ .LEN sim não .DN é energizado .EM é energizado .DN é energizado Publicação 1756-RM003F-PT-P - Maio 2002 8-12 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) postscan A saída da condição da linha é definida como falsa. Condição: Ação da Lógica Ladder: entrada da condição da linha for verdadeira fim saída da condição da linha é definida como verdadeira examinar bit .EN .EN = 0 .EN = 1 bit .EN é energizado .LEN < 0 sim não .POS < 0 sim não bit .EM é energizado .DN é energizadobit .EM é desenergizado. bit .DN é desenergizado. .POS = .POS + 1 .POS ≥ .LEN sim não bit .DN é energizado. .POS ou .LEN > tamanho do array sim não falha grave .POS > .LEN sim não .POS = .POS -1 FIFO[.POS - 1] = source .LEN < 0 sim não .POS < 0 sim não bit .EM é desenergizado. bit .DN é desenergizado. .POS = 0 sim não bit .EM é energizado .POS ≥ .LEN sim não bit .DN é energizado. bit .EM é energizado .DN é energizado Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-13 Exemplo: Quando habilitada, a instrução FFL carrega value_1 para a próxima posição em FIFO, que é array_dint[5] nesse exemplo. antes da carga FIFO depois da carga FIFO array_dint[0] 00000 00000 11111 11111 22222 22222 33333 control_1.pos = 5 33333 44444 value_1 = 55555 44444 array_dint[5] 00000 55555 00000 00000 control_1.pos = 6 00000 00000 00000 00000 00000 00000 Publicação 1756-RM003F-PT-P - Maio 2002 8-14 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) Descarga FIFO (FFU) A instrução FFU descarrega o valor da posição 0 (primeira posição) de FIFO e armazena esse valor em Destination. Os dados restantes em FIFO se deslocam uma posição para baixo. Operandos: Lógica Ladder Se você usar uma estrutura definida pelo usuário como tipo de dados para o operando FIFO ou Destination, use a mesma estrutura para os dois operandos. estrutura CONTROL Operando: Tipo: Formato: Descrição: FIFO SINT INT DINT REAL string structure tag do array FIFO a ser modificado especifique o primeiro elemento de FIFO não use CONTROL.POS no subscrito Destination SINT INT DINT REAL string structure tag valor que saiu de FIFO O valor de Destination converte no tipo de dados do tag Destination. Um inteiro menor converte em um inteiro maior pela extensão do sinal. Control CONTROL tag estrutura de controle para a operação geralmente, usao mesmo CONTROL como a FFL associada Length DINT imediato número máximo de elementos que FIFO pode controlar de uma vez. Position DINT imediato próxima localização em FIFO onde a instrução descarrega os dados. normalmente, valor inicial é 0 Mnemônico: Tipo de Dados: Descrição: . EU BOOL O bit de descarga habilitado indica que a instrução FFU está habilitada. O bit .EU é energizado para pré-programar uma descarga falsa quando o scan do programa inicia. .DN BOOL O bit executado é energizado para indicar que FIFO está cheio (.POS=LEN). .EM BOOL O bit vazio indica que FIFO está vazio. Se .LEN ≤ 0 ou .POS < 0, o bit .EM e o bit .DN são definidos. .LEN DINT O comprimento especifica o número máximo de elementos em FIFO. .POS DINT A posição identifica o fim dos dados que foram carregados em FIFO. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-15 Descrição: Use a instrução FFU com a instrução FFL para armazenar e recuperar dados na seqüência primeiro a entrar, primeiro a sair (FIFO). Quando habilitada, a instrução FFU descarrega os dados do primeiro elemento de FIFO e coloca esse valor em Destination. A instrução descarrega um valor cada vez que a instrução é habilitada, até que FIFO fique vazio. Se FIFO estiver vazio, FFU retorna 0 para Destination. A instrução FFU opera na memória de dados contínua. Flags de Status Aritmético: não afetados Condições de Falha: Uma falha grave ocorrerá se: Tipo de falha: Código de falha: Length > FIFO tamanho do array 4 20 Publicação 1756-RM003F-PT-P - Maio 2002 8-16 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) Execução Condição: Ação da Lógica Ladder: prescan fim o bit .EU é energizado para evitar uma descarga falsa quando o scan começar saída da condição da linha é definida como falsa .LEN < 0 sim não .POS < 0 sim .EM é desenergizado. bit .DN é desenergizado. não .POS = 0 sim não .EM é energizado .POS ≥ .LEN sim não .DN é energizado .EM é energizado .DN é energizado Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-17 Condição: Ação da Lógica Ladder: entrada da condição da linha é falsa fim bit .EU é desenergizado. saída da condição da linha é definida como falsa .LEN < 0 sim não .POS < 0 sim .EM é desenergizado. bit .DN é desenergizado. não .POS = 0 sim não .EM é energizado .POS ≥ .LEN sim não .DN é energizado .EM é energizado .DN é energizado Publicação 1756-RM003F-PT-P - Maio 2002 8-18 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) postscan A saída da condição da linha é definida como falsa. Condição: Ação da Lógica Ladder: entrada da condição da linha for verdadeira fim examinar bit .EU .EU = 0 .EU = 1 bit .EU é energizado .LEN < 0 sim não .POS < 0 sim não bit .EM é energizado .DN é energizado bit .EM é desenergizado. bit .DN é desenergizado. .LEN > tamanho do array sim não falha grave .POS ≤ 1 sim não bit .EM é energizado .LEN < 0 sim não .POS < 0 sim não bit .EM é desenergizado. bit .DN é desenergizado. .POS = 0 sim não bit .EM é energizado .POS ≥ .LEN sim não bit .DN é energizado. bit .EM é energizado .DN é energizado .POS < 1 sim não Destination = 0 .POS = .POS -1 Destination = FIFO[0] i = 1 FIFO[i - 1] = FIFO[i] i = i +1 i < .LEN sim não saída da condição da linha é definida como verdadeira Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-19 Exemplo: Quando habilitada, a instrução FFU descarrega array_dint[0] em value_2 e desloca os elementos restantes para array_dint. antes da descarga FIFO depois da descarga FIFO array_dint[0] 00000 11111 11111 22222 22222 33333 33333 44444 44444 55555 array_dint[5] 55555 00000 control_1.pos = 5 00000 control_1.pos = 6 00000 value_2 = 00000 00000 00000 00000 00000 00000 00000 Publicação 1756-RM003F-PT-P - Maio 2002 8-20 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) Carga LIFO (LFL) A instrução LFL copia o valor Source para LIFO. Operandos: Lógica Ladder Se você usar uma estrutura definida pelo usuário como tipo de dados para o operando Source ou LIFO, use a mesma estrutura para os dois operandos. estrutura CONTROL Operando: Tipo: Formato: Descrição: Source SINT INT DINT REAL string structure imediato tag dados a serem armazenados em LIFO Source converte para o tipo de dados do tag do array. Um inteiro menor converte para um inteiro maior pela extensão do sinal. LIFO SINT INT DINT REAL string structure tag do array LIFO a ser modificado especifique o primeiro elemento de LIFO não use CONTROL.POS no subscrito Control CONTROL tag estrutura de controle para a operação geralmente usa o mesmo CONTROL conforme a LFU associada Length DINT imediato número máximo de elementos que LIFO pode controlar de uma vez. Position DINT imediato próxima localização em LIFO em que a instrução carrega os dados. normalmente, valor inicial é 0 Mnemônico: Tipo de Dados: Descrição: .EN BOOL O bit habilitado indica que a instrução LFL está habilitada. .DN BOOL O bit executado é energizado para indicar que LIFO está cheio (.POS=LEN). O bit .DN inibe a carga de LIFO até .POS < .LEN. .EM BOOL O bit vazio indica que LIFO está vazio. Se .LEN ≤ 0 ou .POS < 0, o bit .EM e o bit .DN são energizados. .LEN DINT O comprimento especifica o número máximo de elementos que LIFO pode controlar de uma vez. .POS DINT A posição identifica a localização em LIFO em que a instrução carregará o próximo valor. Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-21 Descrição: Use a instrução LFL com a instrução LFU para armazenar e recuperar dados na seqüência último a entrar, primeiro a sair. Quando usada em pares, as instruções LFL e LFU estabelecem um registro de deslocamento assíncrono. Geralmente, Source e LIFO são do mesmo tipo de dados. Quando habilitada, a instrução LFL carrega o valor Source na posição LIFO identificada pelo valor .POS. A instrução carrega um valor cada vez que a instrução é habilitada, até que LIFO fique cheia. A instrução LFL opera na memória de dados contínua. Flags de Status Aritmético: não afetados Condições de Falha: Uma falha grave ocorrerá se: Tipo de falha: Código de falha: (elemento de início + .POS) > tamanho do array de LIFO 4 20 Publicação 1756-RM003F-PT-P - Maio 2002 8-22 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) Execução Condição: Ação da Lógica Ladder: prescan fim o bit .EN é energizado para evitar uma carga falsa saída da condição da linha é definida como falsa .LEN < 0 sim não .POS < 0 sim .EM é desenergizado. bit .DN é desenergizado. não .POS = 0 sim não .EM é energizado .POS ≥ .LEN sim não .DN é energizado .EM é energizado .DN é energizado Publicação 1756-RM003F-PT-P - Maio 2002 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) 8-23 Condição: Ação da Lógica Ladder: entrada da condição da linha é falsa fim bit .EN é desenergizado. saída da condição da linha é definida como falsa .LEN < 0 sim não .POS < 0 sim .EM é desenergizado. bit .DN é desenergizado. não .POS = 0 sim não .EM é energizado .POS ≥ .LEN sim não .DN é energizado .EM é energizado .DN é energizado Publicação 1756-RM003F-PT-P - Maio 2002 8-24 Instruções de Array (Arquivo)/Deslocamento (BSL, BSR, FFL, FFU, LFL, LFU) postscan A saída da condição da linha é definida como falsa. Condição: Ação da Lógica Ladder: entrada da condição da linha é verdadeira fim saída da condição da linha é definida como verdadeira examinar bit .EN .EN = 0 .EN = 1 bit .EN é energizado .LEN < 0 sim não .POS < 0 sim não bit .EM é energizado .DN é energizadobit .EM é desenergizado. bit .DN