You are on page 1of 109

CONTROLADOR LÓGICO PROGRAMÁVEL

ESCOLA SENAI SAMA Mina de Cana Brava, Caixa Postal 04 - CEP 76450-000 Fone: (62) 3379-1039 - Minaçu - GO e-mail: sama.senai@sistemafieg.org.br

SUMÁRIO

ESTRUTURA DE UM CONTROLADOR PROGRAMÁVEL ............................... 03

PROGRAMAÇÃO EM LINGUAGEM LADDER .................................................................................................................. 14 LISTA DE INSTRUÇÃO ......................................................................................... 44 DIAGRAMA DE BLOCOS ..................................................................................... 82

2

Controlador programável

Estrutura de um controlador programável

É importante o entendimento da forma como um controlador programável colhe, processa e envia sinais num sistema automatizado. Neste capítulo isto é feito em forma de blocos pois não há necessidade de descer em nível de detalhes no hardware, além do fato dos fabricantes não abrirem aos usuários estes detalhes. Dizemos que um CP é um computador “dedicado” pois possui a CPU de um computador convencional com fonte de alimentação interna e memórias, conectada a um terminal de programação e aos módulos de entrada/saída.

3

Controlador programável Principio de operação de um CP Um CP opera lendo e processando os sinais de entrada provenientes de elementos localizados no processo e fornecendo os sinais de saída para os atuadores e dispositivos de saída. como operação do circuito “Cão de Guarda” (Watch Dog Timer). varredura das entradas/saídas e execução das instruções. 4 . O tempo de varredura varia de acordo com o número de instruções de um programa e pode ser calculado ou monitorado. Tempo de varredura É o tempo total requerido por um CP para executar todas as operações internas do microprocessador. Quando são detectadas mudanças na entrada. o CP reage de acordo com a lógica de programação para a atualização dos sinais de saída. Este ciclo contínuo denomina-se “Ciclo de Varredura”. teste da memória do sistema.

Em caso de falta de energia elétrica. a bateria de Níquel Cádmio mantém o programa do usuário (memória RAM da CPU) e é recarregada automaticamente pelo sistema quando se encontra em operação.Controlador programável Componentes do controlador programável Fonte de alimentação Converte a voltagem da rede elétrica (CA) para voltagem em corrente contínua (CC) e é especificada de acordo com a configuração e consumo do sistema. 5 .

6 . Sua arquitetura pode diferenciar de um fabricante para outro mas em geral seguem a mesma organização.Controlador programável Unidade central de processamento (CPU) A Unidade Central de Processamento contém os elementos que compõem a inteligência do sistema.

controla os procedimentos padrões do CP como varredura de entradas/saídas. As instruções e comandos programados e armazenados na memória do usuário são interpretadas pelo decodificador de instruções do microprocessador e uma seqüência de impulsos elétricos será enviada para ULA para que se inicie a ação correta de processamento de acordo com a presente instrução. O sistema de alimentação estabilizado interno provê os níveis de tensão necessários à operação adequada das memórias e microprocessador. além de controlar a comunicação da CPU com o terminal de programação. quando o cartucho da memória EPROM é inserido no módulo da CPU. gravada no próprio terminal de programação. ou seja. O cérebro do microprocessador é a Unidade Lógica e Aritmética (ULA) que efetua as operações lógicas (decisões) e aritméticas. Este software tem a capacidade de seqüenciar o Programa do Usuário.Controlador programável O microprocessador interage continuamente com o sistema de memórias. através de uma EPROM. 7 . Memória do usuário O Programa do Usuário pode ser armazenado por uma memória RAM. Em CLP’s que selecionam utilização de memória RAM ou EPROM. O programa Executivo é gravado na fábrica (EPROM) e não pode ser alterado pelo usuário. a seleção se dá de forma automática. além de manipular dados armazenados no registrador interno com altíssima velocidade. Interpreta e executa o programa do usuário que vai controlar uma máquina ou um processo. executando as instruções específicas. Memórias Memória do sistema ou executiva Traz a versão atualizada do software responsável pela operação do Controlador Programável. a memória RAM é ativada sem perder o conteúdo. ou por meio de uma FLASHEPROM.

As imagens de saída. De acordo com o diagrama de blocos podemos observar como os sinais provenientes do processo são “tratados” pelos módulos de entrada e enviados para CPU. endereços. Digital. Nesta área estão os dados relativos ao processamento do programa do usuário como resultado de operações aritméticas. Memória imagem Armazena o estado dos operandos do CP. correspondem aos resultados obtidos considerando o estado das entradas e o programa do usuário. controle e alimentação. São interfaces ou cartões eletrônicos com capacidade para receber um certo número de variáveis. esses módulos estão localizados junto à fonte de alimentação e a CPU e são interconectados através de um barramento de dados. Memória de dados É uma área reservada para controle do Programa do Usuário. Módulos de entrada O subsistema de entrada é responsável pela compatibilização dos sinais provenientes dos elementos situados no processo para que sejam interpretados adequadamente pela CPU. Representação esquemática de um módulo de entrada Os dispositivos de entrada são conectados fisicamente ao módulo através do “barramento de entrada”. Analógico. 8 . CA. 5 ou 24 Vcc) são tratados adequadamente através de circuitos de entrada para garantir níveis baixos de tensão e ativar os sinalizadores. Estas áreas de memória estão se alterando constantemente . os sinais (CC.Controlador programável A utilização da FLASH-EPROM torna o sistema de programação mais prático e flexível. Geralmente. De acordo com a natureza. uma vez que não existe a necessidade de aparatos de gravação como na programação e apagamento da EPROM. As imagens de entradas correspondem aos valores binários obtidos pela varredura de todos os pontos de entrada do CP. constantes temporização e contagem.

Esquema simplificado de um módulo de saída 9 . O sinal produzido pelo acoplador ótico será filtrado e multiplexado em alta freqüência. Em caso de erro na instalação ou na especificação dos sinais de trabalho.Controlador programável Para manter a isolação elétrica entre a CPU e os elementos de entrada. informando ao processador a “imagem” das entradas. São também instalados de forma modular junto à CPU e à fonte de alimentação. as entradas podem danificar-se sem comprometer o funcionamento da CPU. Podemos observar no diagrama de blocos como os sinais de controle chegam até os elementos de saída. os módulos de saída são interfaces que permitem a comunicação adequada do processador aos elementos de saída. localizados no processo. De acordo com a configuração do sistema e tipo de elementos de entrada encontramos diversos tipos de módulos de entrada: analógico: 110/127 VCA 1 a 5 Vcc -10 a +10 Vcc 0 à 20 mA 4 à 20 mA digital: 0 a 5 Vcc 5 Vcc 12 Vcc 24 Vcc 48 Vcc especiais: Contador Rápido Termopar Termoresistência Chave Thumbweel Teclado Módulos de saída Assim como os módulos de entrada. cada sinal ativará um circuito optoacoplado.

Controlador programável

Os sinais de comando, provenientes do processador, chegam ao módulo na forma serial e são direcionados às respectivas saídas. O circuito de retenção (latch) memoriza e retém as “imagens” já recebidas do bloco anterior. Também possuem circuito fotoacoplado para isolar os sinais de controle do circuito de saída. O estágio de potência converte os níveis lógicos em sinais de potência, capazes de acionar os dispositivos de saída localizados no processo. Pode ser transistorizado por triac ou por contato de relê. As conexões dos sinais do módulo com processo é feita através do barramento de saída onde estão conectadas as válvulas solenóides, contatores, lâmpadas, sirenes, etc. Dependendo do tipo de sinal de controle e da natureza do dispositivo atuador, encontramos os seguintes módulos de saída: analógica: 110/127VCA 1 a 5 Vcc - 10 a + 10 Vcc 0 a 20 mA 4 a 20 mA digital: 0 a 5 VCC 5 Vcc 12 Vcc 24 Vcc 48 Vcc especiais: Contato Seco NA ou NF Motor de Passo Display

Configuração ou parametrização de CLP’s Fazer configuração ou parametrização em sistemas de controle, assim como em informática, é definir para a “máquina” o tipo de estrutura básica que ela comportará, com quais dispositivos poderá se comunicar e quais serão as especificações da via e formato dos dados na comunicação. Também informa ao aplicativo de edição e monitoração de programação o endereço em que poderá encontrar arquivos para operacionalizar seu trabalho; onde deverá guardar as informações de trabalho e arquivos, como deve ser sua interface com o usuário, etc. Para um CLP, essas informações podem serem divididas em três categorias principais: • • • Comunicação; Estrutura de I/O (entradas e saídas); Interface e modo de execução.

10

Controlador programável

Existem no mercado muitos C.L.P.s que possuem parametrização automática, do tipo plug and play. Entretanto, não sendo automática, é necessário acessar um arquivo de configuração ou o próprio menu do aplicativo no submenu de parametrização, e colocar os parâmetros de trabalho em conformidade com o hardware do equipamento. Este é o caso do CLP AL1000 da altus, por exemplo.

Comunicação Normalmente, neste ponto é necessário determinar para o equipamento o padrão de estrutura de comunicação de dados com que trabalhará ( RS-232C, RS-485, RS-422, Profibus, Fieldbus, Alnet, Fipway, Modbus, Modbus+, Uni-Telway, etc.). A partir daí, especificam-se os parâmetros. A velocidade de comunicação pode ser definida como a velocidade com que os dados fluirão entre os equipamentos: o CLP e o sistema programador, ou os C.L.P.s. A velocidade dependerá do tipo de estrutura de comunicação adotado. Por exemplo No RS-232C, temos as velocidades: 300, 600, 900, 1200, 2400, 4800, 9600, 1920, 28800, 33600 bps (bits por segundo) ou bauds ( baud-rate), que é a unidade de taxa de transmissão. O “enlace físico”, ou seja, a parte física da comunicação pode se dar por cabos de 2 fios, 4 fios, fibra óptica, cabos proprietários, cabos para Fieldbus, etc. Neste tópico também pode ser definido o tipo de comunicação entre os elementos conectados. É necessário o endereço do equipamento na rede, quando se trabalha com vários equipamentos interligados em rede, para que as informações trocadas entre os equipamentos e dispositivos não sejam enviadas ou recebidas pelo componente errado, nem perdidas na rede. Com relação ao formato da palavra de dados, em que a comunicação dos dispositivos se dá de modo serial, é importante determinar o formato dos bytes - palavras de comunicação entre C.L.P.s e Sistema programador, entre C.L.P. e C.L.P’s e entre C.L.P. e dispositivos.

11

Controlador programável

Nos formatos dos padrões seriais temos normalmente: • • • • O(s) bit(s) de início - o start bit; A seqüência de bits de dados; Os bits que conferem a integridade dos dados - bits de paridade; O(s) bit(s) de parada – o(s) stop bit(s).

Numa estrutura comum temos os seguintes valores para cada um deles: • • • • stop bit: 1, 1,5 ou 2 bits; start bit: 1 ou 2 bits; tamanho da palavra de dados entre 5 e 8 bits; bit de checagem de integridade de dados ou bit de paridade: 1 ou 2 bits.

A estrutura da rede de CLP’s e demais equipamentos de Controle pode ser do tipo proprietária (de um único fabricante) ou estabelecida em norma, portanto, normalizada, como Modbus+, Fieldbus, Profibus, Fipway, etc.

Estrutura de I/O Essa estrutura refere-se aos tipos de Entradas e Saídas do C.L.P. Um CLP pode trabalhar com variáveis que mudam de valor continuamente no tempo (variáveis analógicas) e variáveis que mudam de valor de forma discreta (como as variáveis digitais, por exemplo). Para isto acontecer, as entradas do C.L.P. devem ser digitais para trabalhos com valores digitais e analógicas para trabalhos com valores analógicos. Mas apenas isto não basta: em C.L.P.s que precisam ser configurados, é necessário definir se suas entradas ou saídas são digitais ou analógicas e o endereço em que elas se encontram. Este endereço se dá, normalmente de duas formas: • Modo físico: é necessário identificar o local físico no painel ou barramento do C.L.P. que corresponde ao endereço da placa. Isto pode ser feito através de bloco de microchaves ou estrapes. Estes endereços normalmente são decodificados de modo binário, e devem ser únicos para a placa. • Modo lógico: no aplicativo de parametrização ou configuração deve ser assinalado em qual endereço físico se encontra determinada placa, seu tipo (se trabalha com sinais digitais ou analógicos), função; especificar se é uma entrada ou saída, etc.

12

Controlador programável Deve-se ter o cuidado de nunca colocar duas placas ou módulos com o mesmo número lógico ou físico. É importante salientar que quando se programa ON-LINE. Modos de execução Os CLP’s podem executar um programa que está em sua memória e não aceitar outro programa ou alterações do programa em execução enquanto não se alterar o seu estado para o modo de programação. evitando-se. assim. o conflito de endereços. Esta forma de programação chama-se OFF. sendo necessário ter absoluta certeza dos resultados das alterações que estão sendo implementadas. com o processo de varredura em andamento damos o nome de programação ON-LINE. Quando o CLP aceita um novo programa ou alterações no programa em execução. qualquer alteração ocorrerá de forma imediata. 13 .LINE.

assume os estados energizado ou 14 . Nesse caso.PROGRAMAÇÃO EM LINGUAGEM LADDER – LINGUAGEM DE RELÉS INTRODUÇÃO O processamento interno do CLP é digital e pode-se. assim. trabalha-se com dois estados ou níveis lógicos. um circuito em que uma lâmpada é acionada por um interruptor. por exemplo. Antes do estudo da linguagem Ladder e para compreender como funciona um CLP. aplicar os conceitos de lógica digital para compreen8 der as técnicas e as linguagens de programação. pois a eletrônica digital apoia-se no princípio da lógica que considera uma proposição ou verdadeira ou falsa. um ponto qualquer do circuito digital pode assumir apenas um de dois estados: • • • Ligado ou desligado alto ou baixo fechado ou aberto • • • saturado ou cortado com pulso ou sem pulso acionado ou desacionado Imagine. dentro de um circuito. é importante conhecer alguns conceitos: • • • Estados ou níveis lógicos Funções lógicas Operações lógicas • Estados ou níveis lógicos Em sistemas digitais. Um relê. Assim. a lâmpada pode assumir os dois estados: ligado ou desligado.

.desenergizado. As funções lógicas operam com variáveis independentes (elementos de entrada em um circuito) e com variáveis dependentes (elementos de saída). um transistor ligado como chave num circuito pode assumir os estados saturado ou em corte. N. Isso significa que se associarmos o valor binário 1 a um estado ou nível lógico. • Função lógica A função lógica (f) é uma variável dependente e binária. as variáveis lógicas independentes (de entrada) são representadas por letras maiúsculas A. Os sistemas digitais processam apenas os números binários 1 (um) e 0 (zero). 15 . Convenção: A e B = Variáveis independentes (de entrada) Y ou S = Variável dependente (de saída) Normalmente. associaremos o valor binário 0 ao outro estado. as variáveis dependentes (de saída). por S ou Y. Seu valor é o resultado de uma operação lógica em que se inter-relacionam duas ou mais variáveis binárias. As funções lógicas têm apenas dois estados: o estado 0 e o estado 1.. Veja os circuitos a seguir. Do mesmo modo. C. B.

são efetuadas por blocos denominados portas lógicas. nos circuitos ou sistemas lógicos. são chamadas também de funções lógicas. Diagrama de Contatos – “Ladder Diagram” A linguagem LADDER é baseada no princípio de contatos elétricos. As operações lógicas são: • Produto ou multiplicação lógica. • Soma lógica. e que nos CLPs. Ladder é uma palavra inglesa que quer dizer escada e este nome está associado à representação gráfica dos contatos: ela é feita horizontalmente. • Inversão.• Operações lógicas A relação entre duas ou mais variáveis que representam estados é estabelecida através de operações lógicas. Essas operações. Cada um dos componentes pode possuir um número infinito de contatos que são limitados pela capacidade de memória do controlador programável. em linhas paralelas. que lembram os degraus de uma escada. 16 .

Estrutura de um programa em Ladder As linhas que representam os contatos correspondem, na programação, a duas partes: a condição (se...) e a solução (então...).

Linha de programa em Ladder Na parte que se refere à condição, temos os contatos, ou seja, as condições para o funcionamento das saídas. As condições podem mudar de CLP para CLP, mas a maioria deles oferece possibilidades para ligações em série e em paralelo, funções básicas e avançadas, definidas pelos limites de cada CLP. Na parte que se refere à solução, temos as saídas, que podem ser, por exemplo, bobinas, saltos, rótulos, FF’s (biestáveis).

17

Um CLP ideal seria um grande painel elétrico com infinitos componentes de comando (relês, temporizadores, contadores, chaves, botões, etc.) e cada elemento de comando teria infinitos contatos.

CONSIDERAÇÕES INICIAIS
Ao considerarmos um contato levamos em conta que: ƒ está em nível lógico 1, se permitir a passagem de corrente elétrica, não importando se o mesmo é NF (Normalmente Fechado) ou NA (Normalmente Aberto). Se um NF estiver em nível 1 não estará acionado e se um NA estiver em nível 1estará acionado; ƒ ƒ uma saída em nível 1 é considerada acionada; respectivamente, serão considerados NA, NF e SAÍDA:

NA

NF

saída

Símbolos da Linguagem Ladder

Comandos Básicos Formato dos comandos Básicos Os comandos básicos são chamados de funções e são todas baseadas na álgebra de Boole (Boole, G. – 1858) A álgebra booleana opera com variáveis que só podem assumir dois valores lógicos, usando para isso números binários. Assim, por exemplo, tanto a variável A como a B e a Y só podem assumir os valores 0 ou 1.

18

A álgebra booleana é aplicada aos sistemas digitais que também trabalham com dois estados ou níveis lógicos. Assim, para operar matematicamente dentro dos princípios da álgebra booleana, basta associar o valor binário 1 a um dos estados lógicos e o valor binário 0 ao outro estado.

Função ou Porta E (And) A função lógica E (And) é uma lógica de contatos em série. A saída só é ativada (nível 1) se, e somente se, todas as entradas estiverem ativadas (nível 1). Observe que a Lógica E tem como produto lógico, as entradas.

Função ou Porta E
Veja Animação Função ou Porta E

Unidade 2: Linguagem Ladder > Animações > E Diagrama Elétrico

Assim, em formato de lógica de contatos, tem-se:

Função E em Ladder
Veja Animação Função E em Ladder

Unidade 2: Linguagem Ladder > Animações > E Ladder

19

que pode ser física (comanda diretamente um elemento externo ao CLP) ou não (estado interno do CLP. tem-se: Função OU em Ladder Memória A função lógica “OU” é freqüentemente utilizada em linguagem Ladder para memorizar o acionamento de uma determinada saída. a saída só estará ativada (nível 1) se. Assim. que não comanda diretamente nenhum elemento externo ao CLP). qualquer das entradas estiver ativada (nível 1). Observe que a Lógica OU tem como resultado a adição lógica das entradas. Função OU Veja Animação Função OU Unidade 2: Linguagem Ladder > Animações > OU Diagrama Elétrico Assim. e somente se. 20 .Função ou Porta OU (Or) A função lógica OU é uma lógica de contatos em paralelo. em formato de lógica de contatos.

1.2.1 continue acionada até o acionamento da entrada E1. Função NÃO Veja Animação Função NÃO Unidade 2: Linguagem Ladder > Animações > NÃO Diagrama Elétrico 21 .Exemplo Funcionamento Ao ser acionada a entrada E1. na saída. a saída S1. que abrirá a linha de comando desligando a referida saída. temos um relê com contato NF acionando a saída. Veja Animação Função OU em Ladder Unidade 2: Linguagem Ladder > Animações > OU Ladder Função ou Porta NÃO (Not) A função lógica NÃO (Not) ou Inversora.1. inverte.2 desacionada.1 em paralelo com a entrada E1. o valor lógico de entrada. a saída E1.1 ao acionamento.1 será acionada e levará o estado (contato) S1. Se na entrada temos um 0 lógico. Na lógica de contatos. Com isto se garante que ao desacionar a entrada E1. estando a entrada E1. na saída teremos um nível 1 lógico.

é possível gerar as portas derivadas que são associações das portas estudadas (básicas) com um funcionamento particular. Função NÃO E Função NÃO OU 22 .No formato de lógica de Contatos. tem-se: Função NÃO em Diagrama de Ladder Veja Animação Função NÃO em Diagrama de Ladder Unidade 2: Linguagem Ladder > Animações > NÃO Ladder A partir das portas básicas.

Função OU EXCLUSIVO (Xor) FUNÇÕES ESPECIAIS Biestáveis Um dos circuitos mais importantes num CLP é o circuito Biestável. ou FF. também conhecido como FLIP-FLOP. o circuito Biestável: Circuito Biestável a partir de um comando elétrico Pulsando-se S1. O circuito Biestável. ao soltar-se o botão S1. ativa-se K1 e K3 e a saída Y1 é ativada. na representação de lógica de relés. Observe. K1 é desativado e K3 impede que novamente K1 entre. que tem como característica principal a função de memória. o que caracteriza a função memória. mesmo após um novo pulso de 23 . ao ter sua saída ativada assume e permanece num determinado estado indefinidamente ou até surgir nova ativação na entrada.

desaciona Y1. ou seja. 1.Ao pulsar S1 novamente: 24 . num segundo pulso de S1. Ao soltar S1: 3. K2 é ativado e ativa K4. As ilustrações a seguir mostram o funcionamento detalhado do circuito do biestável. .S1. K4 que desativa K3. Ao pulsar S1: 2. Ao pulsar S1 novamente. Y1 é desativado.

Biestável a partir do programa Ladder 25 .Ao soltar S1: Observe que o circuito volta à situação inicial. Veja Animação Circuito do Biestável Unidade 2: Linguagem Ladder > Animações > Biestável Diagrama Elétrico O circuito para LADDER faz uma apresentação de forma mais simplificada.4 .

agora. Ao terminar o programa. ele só atuará a partir do próximo scan. o que ocorre na segunda varredura: 26 . Note que em série está seu próprio contato que só será considerado na tabela imagem na próxima varredura. Observe. para cada varredura (scan) todas as entradas e saídas estão em zero. M2 em 1. o CLP volta a ler a primeira linha e os valores da tabela imagem são alterados com M2 em 1.Funcionamento O CLP faz a varredura e atua lendo as entradas e atualiza as saídas conforme os resultados. mas. M3 está em 1 por meio de M1. como o contato NF de M2 que abre M1 está na linha anterior. Observe o que ocorre ao pulsar L1 na primeira varredura: Na terceira linha. Pulsando-se L1. na primeira varredura temos M1 em 1. só atuará – abrirá – no próximo scan. isto é. Na tabela imagem.

27 . tem-se que M2 é também desenergizado. Observe o que ocorre com a liberação de L1. tem-se a desenergização de M3 que desliga Q1. M1 é desligado e M3 é mantido selado por si mesmo e energiza Q1. Soltandose L1. Como o selo de M3 está em série com um contato de M1 abridor. M2 na segunda. processa-se novamente a energização de M1 na primeira linha.Assim. Com o novo pulso em L1.

agora. Observe. o que ocorre quando L1 é pulsado na segunda varredura: Observe que foram usados contatos internos auxiliares. ou seja. comanda um dispositivo externo ao CLP. chamados de flag’s ou memórias e somente a saída Q1 tem acesso ao mundo externo ao CLP.Novo pulso em L1 na primeira varredura: Na próxima varredura. 28 . Soltando-se L1. tem-se a automática desenergização de M2 e o fim do processo. M2 desenergizará M1 e M3 continuará desligado.

através de saídas biestáveis padronizadas por FF’s “Set” e “Reset”.Ao soltar L1. uma outra forma de representar um biestável (FLIP-FLOP) . Biestável em Diagrama Ladder utilizando o bloco RS 29 . agora. o circuito retorna a situação inicial: Veja Animação Diagrama Funcionamento do Biestável Unidade 2: Linguagem Ladder > Animações > Funcionamento Biestável Ladder Observe.

Funcionamento Ao pulsar a entrada L1. A programação dos FLIP FLOP apresentada é muito utilizada para pequenos CLPs. a memória auxiliar M1 é “setada” (ligada) energizando. Diagrama em bloco funcional do biestável tipo SR e RS Funcionamento Observe que a ilustração procura deixar claro que ao tornar a linha da entrada S ou S1 verdadeira. a saída Q1 será desligada e permanecerá nesta condição. A indicação S1 e R1 significa que as mesmas possuem prioridade sobre as entradas S e R respectivamente. permanecendo assim com a ausência do pulso de L1. na linha 3. O desligamento de Q1 ocorre ao pulsar a entrada L2. a saída Q1 será ligada e permanecerá nesta condição mesmo depois desta linha deixar de ser verdadeira. a saída Q1. Veja Animação Diagrama em bloco funcional do biestável tipo SR e RS Unidade 2: Linguagem Ladder > Animações > Biestável SR RS 30 . mesmo depois da linha deixar de ser verdadeira. pois “reseta” a memória auxiliar M1. a norma IEC 61131-3 especifica a sua utilização em forma de bloco de função de biestável e pode ser do tipo SR ou RS como na ilustração a seguir. Ao tornar a linha da entrada R ou R1 verdadeira.

que estão em série com a linha original. Representação em Linguagem Ladder Onde o contato AXX substituiria os contatos repetidos. Para facilitar a criação via circuito LADDER. assim como a limitação do número de contatos na linha do programa.Adequação de Contatos para linhas repetitivas Observe a representação de um circuito eletromecânico: Circuito Eletromecânico Embora não seja regra. que devam ser repetidos. pode-se utilizar um artifício em que todos os contatos. Observe no exemplo a seguir. 31 .X que acionará os contatos e saídas. alguns CLPs não permitem a conexão de várias saídas em um mesmo ponto (conexão em paralelo). podem acionar um flag auxiliar AX.

os contatos só mudam de tempo com a saída desenergizada. Podem funcionar de várias maneiras. Funcionamento do Temporizador (Ton) ƒ Acionamento após a desenergização (TOFF): Nesse caso. 32 . sendo que as mais comuns são: ƒ Acionamento após a energização (TON): Dessa maneira. os contatos só mudam após a contagem de tempo com a saída energizada.Temporizadores Os temporizadores são elementos que funcionam com atrasos de tempo (delays).

uma entrada de reposição a zero RT. observe como é sua representação: Bloco de Temporizador em Linguagem Ladder O bloco função Temporizador permite temporizar algumas ações. Se temos as seguintes funções: . . .Funcionamento do Temporizador (Toff) Em termos de linguagem de contatos.uma saída fim de temporização T ou t. 33 .uma entrada de comando TT. .um valor de pré-seleção.

o bloco está pronto para um novo ciclo de temporização.0 s (máximo : 999.Tendo como base essas funções. O seu funcionamento vai depender do tipo que é utilizado. “Reset". “resetar” o valor corrente da Temporização.desativar o contato T.repor a zero. A base de tempo para este valor difere de acordo com o tipo utilizado. os parâmetros podem ser assim definidos: TT: comando É utilizado como bobina e este elemento representa a entrada de comando do Bloco função Temporização. S: unidade de tempo do valor de pré-seleção 1/100 de segundos: 00. .99) 1/10 de segundos: 000.9) minutos: segundos : 00 :00 M : S (máximo : 99 :59) horas: minutos : 00 : 00 H : M (máximo : 99 :59) T (normalmente aberto) ou t (normalmente fechado) É utilizado como contato e este elemento do bloco representa a saída do Temporizador e o seu funcionamento vai depender do tipo selecionado.00 s (máximo : 99.00: Valor a ser atingido Este valor é também chamado valor de pré-seleção. RT: reposição a 0 É utilizado como bobina e este elemento representa a entrada de reposição a zero. TIPOS DE TEMPORIZAÇÃO 34 . A excitação da bobina tem como efeito: . t=00.

O bloco função Temporizador permite temporizar certas ações em um sistema automático.Os CLPs possuem diversas maneiras de temporização. A norma IEC 1131-3 especifica a utilização do bloco de função de temporizador. Esta forma ilustrada de programação do temporizador é muito utilizada em pequenos CLPs. Exemplo Exemplo de ON DELAY Temporização no desligamento. 35 . sendo as mais comuns: Temporização no acionamento. denominado “OFF DELAY” Exemplo Exemplo de OFF DELAY Nas duas situações (ON DELAY e OFF DELAY). o que faz com que seja necessário que uma saída típica seja conectada em um dos respectivos contatos. denominado “ON DELAY”. os temporizadores não possuem saídas externas associadas diretamente. conforme a ilustração a seguir.

36 . que quando é acionado dispara a temporização PT: Valor a atingir Este valor é também chamado valor de pré-seleção. A base de tempo deste valor difere de acordo com o tipo utilizado.Bloco função temporizador Ton e Toff Funções uma entrada de comando IN uma entrada de valor de temporização desejada PT uma saída fim de temporização Q uma saída para visualização do valor de tempo corrente ET Descrição dos parâmetros IN: comando Este elemento representa a entrada de comando do Bloco função Temporização.

O seu funcionamento depende do tipo de temporizador selecionado.0S (para dez segundos). a saída Q torna-se nível lógico “1”. sendo que a definição do tempo é sempre o de maior valor. Por essa figura. o tempo interno é zerado. da seguinte maneira: T#10. 37 . (2) quando o tempo interno alcança o valor especificado em PT por exemplo 10 segundos (T#10. observa-se que: (1) quando IN está em nível lógico “1”. a saída Q se torna nível lógico “0” e zera o tempo interno. Q: Saída digital Este elemento do bloco representa a saída do Temporizador. Temporizador Ton Funcionamento Observe a figura a seguir. o bloco função temporizador pode ser dos tipos Ton ou Tof. por exemplo. este tempo deve ser especificado. (3) quando IN se torna nível lógico “0”. ET: saída que mostra o valor corrente do tempo (tempo real) Como no caso anterior. é iniciada a temporização interna (ET).A unidade de tempo do valor de pré-seleção pode ser __D__H__M__S. Para o simulador de CLP que será utilizado. (4) quando IN se torna nível lógico “0” antes do momento em que o tempo interno tenha sido alcançado.0S). é uma representação do retardo da conexão Ton ON DELAY Retardo de conexão “Ton-ON DELAY”.

OFF DELAY” (1) quando a entrada IN se torna nível lógico “1”. “Toff . (2) quando a entrada IN se torna nível lógico “0”.Veja Animação Retardo de conexão Unidade 2: Linguagem Ladder > Animações > Ton – On Delay Temporizador Toff Observe a figura a seguir. (3) quando o tempo interno (ET) alcança o valor especificado em PT. Veja Animação Temporização no desligamento Unidade 2: Linguagem Ladder > Animações > Toff – Off-Delay Contador Um contador é formado basicamente por linhas em que a entrada de contagem é providenciada por um sistema de pulso. a saída Q se torna nível lógico “0”. É importante destacar que a velocidade de leitura do sensor de contagem deve ser pelo menos. é a representação da temporização no desligamento: Temporização no desligamento. (4) quando a entrada IN se torna nível lógico “1” antes que o tempo interno tenha alcançado o valor estipulado em PT. a saída Q torna-se nível lógico “1”. em termos de resposta. se interrompe o tempo interno que retorna para zero. inicia-se o tempo interno (ET). a metade da velocidade 38 .

de leitura de todo o programa. um pulso de contagem e outra linha para especificar que a contagem já foi realizada. com uma borda de subida e uma de descida. O funcionamento do contador depende da estrutura de um contador. Os contadores podem realizar a contagem de maneira crescente (up) ou decrescente (down). uma entrada que se assemelha a uma onda quadrada. Assim. A borda de subida corresponde ao acionamento do sensor de contagem. dependendo do tipo que foi selecionado. O patamar corresponde à sua retenção e permanece neste modo até que a leitura da entrada seja feita. A borda de descida corresponde ao desligamento do sensor e à sua leitura. cada passagem pelo contador possuirá uma linha para acionar (“setar”). Esta velocidade cresce linearmente com o número de contagens admitido pelo contador. Exemplo: Bloco Contador em Linguagem Ladder 39 . A velocidade dos elementos a serem contados por unidade de tempo não deve ser maior que a velocidade do SCAN do CLP.

tem-se a entrada de pulso “CC1” (a serem contados) e na linha 2.PV • • saída liga quando o valor de contagem atinge o valor especificado em PV . para que o contador mude a situação da saída Q . tem-se a saída Q1 que será acionada ao término da contagem. por exemplo 10.CTU: Função das entradas e saídas do bloco de função contador crescente: • • • entrada de pulsos a serem contados . Na linha três. a norma IEC 6 1131-3 recomenda a utilização do bloco função contador apresentado a seguir. Contador crescente Bloco função Contador Crescente .CU entrada de estado que quando for verdadeiro zera o valor contado .CV Veja Animação Bloco Função Contador Crescente .R valor do número de pulsos que serão contados. a entrada de “reset” “RC1” do valor efetivo de contagem.Funcionamento do Bloco Contador Funcionamento Na linha 1. ou seja o número de pulsos contados até então .Q valor corrente da contagem. em linguagem ladder. Como no caso do temporizador.CTU 40 Unidade 2: Linguagem Ladder > Animações > Contador CTU .

Contador decrescente Bloco função Contador Crescente – CTD Função das entradas e saídas do bloco de função contador decrescente Entrada de pulsos a serem contados . este controle é feito por uma linha de comando composta por uma entrada e uma saída. ambas “booleanas”.CD entrada de estado que quando for verdadeiro zera o valor contado .LD valor do número de pulsos que serão contados de forma decrescente que quando atinge zero mude a situação da saída Q .Q Valor corrente da contagem em forma decrescente . denominadas EN/ENO do inglês “Enable”.PV Saída a qual é liga quando o valor de contagem especificado em PV atinge ZERO . 41 .CV - Veja Animação Bloco Função Contador Decrescente – CTD Unidade 2: Linguagem Ladder > Animações > Contador CTD Entrada de Controle de Temporizadores e contadores EN/ENO: A norma IEC 61131-3 determina que as funções de Temporização e Contagem devem ter um terminal de controle de seu funcionamento.

que seja verdadeira na ocorrência de uma determinada situação como um erro na execução de algum algoritmo utilizado no programa. se a variável TEMP1_EN estiver em nível lógico 0 (falso). nesta situação. o mesmo não será executado. pois se a mesma estiver em nível lógico 1 (verdadeira). Caso contrário. permitindo o funcionamento normal do mesmo.Quando este recurso não está selecionado. no nosso exemplo da variável TEMP1_EN. o funcionamento do temporizador depende das condições da entrada EM. como visto anteriormente. a saída ENO também será colocada em 1. A variável conectada na entrada EN também pode ser uma variável de sistema. Exemplo: Quando este recurso está selecionado. Exemplo VISÃO GERAL DE PAINEL ELÉTRICO COMANDADO POR CLP 42 . mesmo que as condições de funcionamento do temporizador estejam satisfeitas. a saída ENO será colocada em nível lógico 0. por exemplo. o temporizador tem seu funcionamento normal. indicando a habilitação do temporizador.

proteção tais como fusíveis. Observe a seguir alguns modelos de painéis. seccionadores. O painel comandado pelo CLP conta com toda a parte relativa à potência (contatores tripolares). sinaleiros e chaves de comando.O CLP comanda os painéis elétricos e é responsável pela parte lógica. disjuntores relés de sobrecarga. chamada de “comando elétrico” nos quadros de comando a relés. CLP CLP FUSIVEL DISJUNTOR BOTÕES DE COMANDO E SINALEIROS 43 .

de comparação (GT. No entanto. mas sua estrutura básica é muito simples e fácil de ser aprendida. 44 . R). o programa resultante é difícil de ser entendido. apresenta como operador “LDN” e como operando “START”. CAL CN). o microcontrolador pode ser mais simples como o 8051 ou mais complexo de acordo com o conjunto de instruções. S.ex. p.). A linguagem por Lista de Instrução (IL) inclui um conjunto de instruções seqüenciadas e tem relação com a programação dos microcontroladores. Dependendo do CLP. É mais complexa que as linguagens Ladder e FBD. Com a IL pode-se executar operações lógicas (AND. O exemplo anterior. bem como dar acesso a funções e blocos de funções (CAL / CAL C. além de incluir um fluxo difícil de ser acompanhado. é classificada como linguagem descritiva. p. aritméticas (ADD. p.ex. Sua maior dificuldade está em ser uma linguagem difícil de ser escrita. é formada por instruções de controle compostas por um operador e um ou mais operandos. ou seja. Além disso. Por exemplo: 45 LDN START (*switch input read Leitura do Interruptor de entrada *) Essa linguagem é bem semelhante à utilizada por programadores “assembler” e inclui os operadores mais comuns encontrados nos CLPs industriais. JMP CN ). pode-se também executar saltos dentro de uma seção (JMP / JMP C. é comum usar a linguagem IL para a construção de equipamentos controladores do CLP.Programação em Linguagem de Lista de Instrução ASPECTOS GERAIS A Lista de Instrução. trata-se de uma linguagem ideal para resolver problemas de lógica que envolvem pequeno número de decisões e um número limitado de mudanças no fluxo de execução do programa.ex. lida e entendida.) e outras (ST.). pois apresenta-se na forma de um texto. usada em 60% dos CLPs existentes no mundo.

Cada instrução dá início a uma seqüência de processamento e é composta de: ƒ ƒ ƒ um operador.Programação em Linguagem de Lista de Instrução INSTRUÇÕES A IL tem como característica principal a estruturação das instruções. em algumas situações. um ou mais operandos. em alguns casos especiais. um modificador. Nos casos em que são utilizados mais de um operando. isto a diferencia das demais linguagens de programação de CLPs. pode-se colocar uma marca também denominada “labbel” que é seguida de dois pontos ( : ). Depois da instrução pode-se colocar um comentário. Exemplo Marca Operadores Operandos START: LD ANDN ST A B C (*Sensor 1*) (*Y Sensor 2 *) (* Ventilador ligado *) Comentários 45 . Antes da instrução. eles são separados por vírgulas.

Em casos em que não se inicie com LD. ST A O resultado é colocado na variável “A”. A IEC 6 1131-3 denomina este acumulador de “Resultado”.IL A IL é uma linguagem orientada para o acumulador (um registrador que nada mais é do que um tipo de memória intermediaria interna do CLP). que significa “carregar” e que é o comando de carga em acumulador). O resultado “Booleano” da comparação é armazenado no acumulador. 46 . Exemplo de uma soma em IL Comando LD 10 Significado O valor “10” é carregado no acumulador. passando a ser o conteúdo atual do acumulador. Assim. ADD 25 O conteúdo do acumulador é somado com “25”. um programa em IL deve começar sempre com o operando LD (abreviatura do termo inglês LOAD. uma possível instrução colocada a seguir opera com o conteúdo do acumulador a “35”. em que cada instrução utiliza e modifica o conteúdo atual do acumulador. O conteúdo da variável “A” e do acumulador agora é “35”.Programação em Linguagem de Lista de Instrução ESTRUTURA DA LINGUAGEM LISTA DE INSTRUÇÃO . As operações de comparação referem-se ao acumulador.

o valor da variável “A” e o conteúdo do acumulador é “1” (VERDADEIRO) . direção direta de tipos de dados BOOL Variável. Se B é igual ou menor que “10”. Tabelas de operadores Operadores de linguagem de programação IL: Operador LD Significado do operador Carrega o valor do operando no acumulador Guarda o valor do acumulador no operando Coloca o operando em 1. O resultado da comparação é colocado na variável “A”. executar uma operação lógica. (valor Numérico) variável. OPERADORES Introdução Um operador é um símbolo usado para executar uma operação aritmética. direção direta de ST S N 47 R .quando o conteúdo do acumulador é 1 Coloca o operando em Modificador possível N Operando possível Literal. o valor da variável “A” e o conteúdo do acumulador é “0” (FALSO). direção direta de tipos de dados ANY variável. direção direta de tipos de dados ANY Variável. O conteúdo do acumulador é comparado com “10”.Programação em Linguagem de Lista de Instrução Exemplo de uma comparação Comando LD B GT 10 ST A Significado O valor de B é carregado no acumulador. Se B é maior que “10”. para dar o acesso a uma função.

direção direta de tipos de dados ANY_NUM o TIME Literal (valor Numérico). CN . variável. direção direta de tipos de dados ANY_ELEM Literal (valor Numérico) variável.N(. variável.quando o conteúdo do acumulador é 1 AND Lógica E N.( ADD Adição ( SUB Subtração ( MUL Multiplicação ( DIV Divisão ( GT Comparação : > (maior que) ( GE Comparação : > = (maior ou igual) Comparação: = (igual a) ( EQ ( NE Comparação :< > (diferente de) ( LE Comparação: < = (menor ou igual) Comparação : < (menor que) ( LT ( 48 JMP Salta para a marca (Labbel) C. direção direta de tipos de dados ANY_BIT Literal(valor Numérico) variável. direção direta de tipos de dados ANY_ELEM Marca OR Lógica OU N. direção direta de tipos de dados ANY_ELEM Literal (valor Numérico).( tipos de dados BOOL Literal (valor Numérico) variável.( XOR Lógica OU exclusivo N. direção direta de tipos de dados ANY_ELEM Literal (valor Numérico) variável. variável.Programação em Linguagem de Lista de Instrução 0. direção direta de tipos de dados ANY_NUM o TIME Literal (valor Numérico) de tipos de dados ANY_NUM o TIME Literal(valor Numérico).N(. direção direta de tipos de dados ANY_BIT Literal (valor Numérico). direção direta de tipos de dados ANY_ELEM Literal (valor Numérico). variável. direção direta de tipos de dados ANY_ELEM Literal (valor Numérico) variável. variável. direção direta de tipos de dados ANY_BIT Literal (valor Numérico) variável. direção direta de tipos de dados ANY_NUM o TIME Literal (valor Numérico) variável.N(.

Exemplo Modificador N LD A ANDN B ST C Nesse exemplo. B é “0”.Programação em Linguagem de Lista de Instrução CAL FUNCNA ME Acesso a um modulo de função o DFB Execução de uma função Processa as operações estabelecidas C. como isso acontece. O modificador é utilizado somente quando o operando é do tipo que possui dados BOOL. direção direta (o tipo de dado depende da função) MODIFICADOR Introdução O modificador influencia na execução dos operadores. Modificador N O modificador N é utilizado para inverter o valor de um operando por cada “bit”. 49 Exemplo Modificador C . 00 variável. quando A é “1”. C é “1”. quando o valor do acumulador seja “1” (VERDADEIRO).CN FBNAME(Nome de exemplo) Literal (valor Numérico). Veja. Modificador C (Condicional ou Acumulador) O Modificador C é utilizado para executar a instrução correspondente. a seguir.

quando A for “1” (VERDADEIRO) B for “1” (VERDADEIRO).Programação em Linguagem de Lista de Instrução LD A AND B JMPC START No exemplo. Exemplo: Modificador CN LD A AND B JMPCN START No exemplo. somente se efetua um salto para START. O número de parênteses direito deve ser igual ao número do modificador de parênteses esquerdo. somente acontece o salto para START. Os parênteses podem ser inter-relacionados. Exemplo: Parênteses esquerdo “(“ LD A AND B AND ( C 50 . quando: A for “0” (FALSO) e B for “0” (FALSO) Modificador de parênteses esquerdo “(“ O Modificador de parênteses esquerdo “(“ é utilizado para estabelecer a avaliação dos operandos. se o valor do acumulador é um “0” booleano (FALSO). até que apareça o operador de parênteses direito”)”. Modificador CN (Condicional a Negação do Acumulador) Se o modificador C estiver combinado com o modificador N. somente será executada a instrução correspondente.

Nesse exemplo. Os parênteses podem se inter-relacionar. é possível também a seguinte programação: LD A AND B AND ( LD C OR D ) ST E Modificador de Parênteses direito “)” Com o parênteses direito ”)” é iniciado o processo dos operadores "zeladores".quando C e/ou D é “1” assim como A e B são “1”. . E é “1” quando C e/ou D é “1”.Programação em Linguagem de Lista de Instrução OR D ) ST E No exemplo. Exemplo LD A AND B AND (C OR D ) ST E 51 No exemplo. A quantidade de operações de parênteses direito deve ser igual à quantidade de operações de modificador de parênteses esquerdo. assim como A é B também são “1”. E é “1”.

As marcas devem ser declaradas em todo o projeto/DFB. As marcas podem ter uma extensão máxima de 32 caracteres. As marcas devem corresponder às convenções determinadas pela norma IEC 61131-3.Programação em Linguagem de Lista de Instrução OPERANDOS Introdução Um operando pode ser um(a): • • • • • • literal (valor numérico). não se diferencia maiúscula de minúsculas. direção direta. Nas marcas. saída FB/DFB. Marca ou Registro (Labbel) Introdução As marcas servem como destino de salto. pois assim pode-se colocar um valor indefinido no acumulador. elemento de uma variável de elementos múltiplos. variável. As marcas são separadas da próxima instrução por dois pontos ( : ) . As marcas aparecem somente no principio de uma “instrução”. Propriedades • • • • • • • As marcas devem ser sempre o primeiro elemento de uma seqüência de processamento. variável de elementos múltiplos. 52 .

Uma instrução CAL que não opera como nome de parâmetro de entrada (veja no exemplo. start5. Uma instrução JMP . Exemplo: Start2: LD A ST counter. apresentado a seguir). start3. No final de uma lista de instrução (veja no exemplo.PV CAL counter JMPCN start4 Start1: LD A AND B OR C ST D JMPC start3 LD A JMPC start5 53 Start3: CAL counter ( CU:= A . start1. apresentado a seguir).“salto” (veja no exemplo. apresentado a seguir). apresentado a seguir).R LD C ST counter. apresentado a seguir). start2.Programação em Linguagem de Lista de Instrução Destino de salto Os destinos de salto possíveis são: • • • • • A primeira instrução LD de um acesso FB/DFB como nome de parâmetro de entrada (veja no exemplo. start4. Uma instrução “normal LD (veja no exemplo.CU LD B ST counter.

AND( ).Programação em Linguagem de Lista de Instrução R:=B PV:=C) JMP start1 Start4: JMPC start1 Start5: “continuação do programa” COMENTÁRIO Descrição No editor IL.ANDN( ) 54 .ANDN. Os comentários são representados em cores. Exemplo: >>>>>>>>>>>>>>>>>>Inicio da lista de instrução<<<<<<<<<<<<<<<<<<<<<<<<< LD liga2 (O nível lógico do operando liga2 é carregado no acumulador) NOT_BOOL ST saída2 (O estado lógico do sinal é invertido) (O operando saída2 será o nível lógico invertido do operando liga2) >>>>>>>>>>>>>>>>>>Final da lista de instruções<<<<<<<<<<<<<<<<<<<<<<<<< INSTRUÇÕES AND BOOLEANO: A instrução AND BOOLEANO pode ser: AND. os comentários começam e terminam com um asterisco (*). Entre os dois asteriscos pode-se introduzir qualquer comentário. INSTRUÇÃO INVERSORA Esta função é utilizada quando se quer inverter um nível lógico.

55 . B e C forem “1”. AND B O conteúdo deste registro acumulador se vincula ao conteúdo de “B” com um conector lógico AND AND C O conteúdo deste registro acumulador (o resultado da vinculação AND de “A” e “B”) se vincula ao conteúdo de “C” com um conector lógico AND. Nesse exemplo. Exemplo de AND Comando Descrição LD A O conteúdo de “A” se carrega no registro acumulador. Nos casos de tipos de dados BYTE e WORD a conexão se faz em forma de bits.Programação em Linguagem de Lista de Instrução Descrição de AND AND tem uma conexão lógica de sentido “E” entre o conteúdo do registro acumulador e operador. A figura seguinte mostra o mesmo exemplo feito no Concept em IL e em LD. ST D O resultado dessas vinculações são guardadas em “D”. D será “1” quando o valor de A.

Programação em Linguagem de Lista de Instrução Descrição AND ( ) AND pode utilizar o modificador de parênteses de abertura (o esquerdo) “(“ . 56 ) Executa a vinculação AND restabelecida. iniciando assim uma seqüência lógica. AND ( A vinculação AND se restabelece até que alcance o parênteses direito LD B O conteúdo de “B” é carregado no registro do acumulador. Exemplo AND () Comando Descrição LD A O conteúdo de “A” é carregado no registro do acumulador. OR C O conteúdo de “C” se vincula ao conteúdo do registro do acumulador mediante um conector lógico OR. O conteúdo do registro .

A seguir. Nesse exemplo. Exemplo ANDN Comando LD A Descrição O conteúdo de “A” se carrega no registro acumulador. temos o mesmo exemplo anterior feito em IL e em LD no simulador Concept. D será “1” quando o valor de A for “1” e B ou C também forem “1”.Programação em Linguagem de Lista de Instrução acumulador (o resultado da vinculação OR de “B” e “C”) se vincula ao conteúdo de “A” com conector lógico AND. ST D O resultado desses vinculadores são guardados em "D". Descrição ANDN AND pode ser utilizado com o modificador N que tem a mesma função da função inversora vista anteriormente. 57 .

ST D O resultado desses vinculadores são guardados em "D" Nesse exemplo. iniciando assim uma seqüência lógica. Exemplo ANDN () 58 Descrição Comando . A figura seguinte mostra o mesmo exemplo feito no Concept em IL e em LD. Descrição de ANDN “( )” AND pode ser utilizada com o modificador N e com o modificador de parênteses de abertura (o esquerdo) “( “. ANDN C O conteúdo de ”C” é invertido e se vincula ao conteúdo do registro acumulador (o resultado da vinculação AND de “A” e “B”).Programação em Linguagem de Lista de Instrução ANDN B O conteúdo de ”B” é invertido e se vincula ao conteúdo do registro acumulador mediante um conector lógico AND. D será “1” quando o valor de A for “1” e o valor de B e o de C forem “0”.

D será “1” quando o valor de A = ”1”. O conteúdo de “A” se inverte e se vincula ao conteúdo do registro acumulador (o resultado da vinculação OR de “B” e “C”) ST D O resultado desses vinculadores são guardados em “D”. Nesse exemplo. ORN C O conteúdo de “C” é invertido e se vincula ao conteúdo do registro acumulador mediante um conector lógico OR. 59 . ANDN ( A vinculação AND se restabelece até alcançar o parênteses direito.Programação em Linguagem de Lista de Instrução LD A O conteúdo de “A” é carregado no registro acumulador. temos o mesmo exemplo anterior feito em IL e em LD no simulador Concept. LD B O conteúdo de “B” é carregado no registro acumulador. B = ”0” e C = “1”. A seguir. ) Executa-se a vinculação e AND é restabelecida.

OR( ).Programação em Linguagem de Lista de Instrução OR BOOLEANO A instrução OR BOOLEANO pode ser: OR. 60 . OR B O conteúdo do registro acumulador se vincula ao conteúdo de “B” com um conector lógico OR. Nos dados tipo BYTE e WORD. Exemplo de OR Comando LD A Descrição O conteúdo de “A” é carregado no registro acumulador. a conexão se faz em forma de bits. ORN. ORN() Descrição de OR OR tem uma conexão lógica de sentido ou entre o conteúdo do registro acumulador e o operador.

Programação em Linguagem de Lista de Instrução AND C O conteúdo do registro acumulador (o resultado da vinculação OR de “A” e “B”) é vinculado mediante um conector lógico AND. A seguir. Nesse exemplo. quando o valor de A ou B for “1” e o de C = “1”. D será “1”. temos o mesmo exemplo anterior feito em IL e em LD no simulador Concept. ST D O resultado dessas vinculações são guardadas em “D”. Exemplo em IL >>>>>>>>>>>>>>>>>>Inicio da lista de instrução<<<<<<<<<<<<<<<<<<<<<<<<<< LD liga1 OR_BOOL IN2 := liga2 (Carrega o operando liga1) (Estabelece um OR com a variável IN2 “liga2”) ST saída (A saída será ligada quando a condição OR for satisfeita) >>>>>>>>>>>>>>>>>>Final da lista de instruções<<<<<<<<<<<<<<<<<<<<<<<<< Descrição OR ( ) 61 .

D será “1” quando o valor de A for “1” ou o valor de B e de C for “1”.Programação em Linguagem de Lista de Instrução A função OR pode ser utilizada com o modificador de parênteses de abertura (ou esquerdo). OR ( A vinculação OR é restabelecida até alcançar o parênteses direito LD B O conteúdo de “B” é carregado no registro acumulador. AND C O conteúdo de “C” se vincula ao conteúdo do registro acumulador mediante um conector lógico AND. iniciando assim uma seqüência de processamento “(“. ) É executada a vinculação e OR é restabelecida. O conteúdo do registro acumulador (o resultado da vinculação AND de “B” e “C”) é vinculado ao conteúdo de “A” com conector lógico OR. A seguir. ST D O resultado desses vinculadores é guardado em “D”. temos o mesmo exemplo anterior feito em IL e em LD no simulador Concept. Nesse exemplo. 62 . Exemplo OR ( ) Comando Descrição LD A O conteúdo de “A” é carregado no registro acumulador.

63 . ORN B O conteúdo de ”B” se inverte e se vincula ao conteúdo do registro acumulador mediante um conector lógico OR. Exemplo ORN Comando Descrição LD A O conteúdo de “A” é carregado no registro acumulador.Programação em Linguagem de Lista de Instrução Descrição ORN OR é utilizado com o modificador N.

A seguir. ST D O resultado desses vinculadores são guardados em “D”.Programação em Linguagem de Lista de Instrução AND C O conteúdo de ”C” é vinculado ao conteúdo do registro acumulador (o resultado da vinculação OR de “A” e “B”). . B=”0” e ou C for “1”. temos o mesmo exemplo anterior feito em IL e em LD no simulador Concept. iniciando assim uma seqüência de processamento “(“. Descrição de ORN( ) ORN é utilizado com o modificador N e com o modificador de parênteses de abertura (ou esquerdo). Nesse exemplo. D será “1” quando o valor de A for “1” e . Exemplo ORN( ) Comando LD A Descrição O conteúdo de “A” é carregado no registro acumulador. 64 ORN ( A vinculação OR se restabelece até alcançar o parênteses direito.

AND C O conteúdo de “C” se vincula ao conteúdo do registro acumulador mediante um conector lógico AND.Programação em Linguagem de Lista de Instrução LD B O conteúdo de “B” é carregado no registro acumulador. A seguir. D Será “1” quando o valor de A for ”1” ou quando B ou C for “0”. 65 . O conteúdo do registro acumulador (o resultado da vinculação AND de “B” e “C”) é vinculado ao conteúdo de “A” com um conector lógico OR. temos o mesmo exemplo anterior feito em IL e em LD no simulador Concept. ST D O resultado desses vinculadores são guardados em “D”. ) Executa a vinculação OR e é restabelecida. Nesse exemplo.

que é utilizado no curso.Programação em Linguagem de Lista de Instrução MÓDULOS DE FUNÇÃO Módulos de função são blocos com função definida. contadores e temporizadores. estas devem ser feitas no editor de variáveis. podem ser vistos na Unidade 1. essa declaração inicia com a instrução “VAR” e termina com a instrução “END_VAR”. temporizadores. como visto até o momento. No software Concept. A Instrução “VAR” serve para declaração dos Módulos de Função tais como contadores. serão abordados os módulos de função mais comuns na linguagem IL. A instrução “END_VAR” indica o fim da declaração dos módulos ou DFBs utilizados. Em “VAR” não se pode utilizar a declaração de variáveis. Para programar os módulos de função é necessário fazer a declaração dos módulos que serão utilizados no projeto. esta declaração é feita da seguinte maneira: 66 . bi-estáveis e DFBs (Módulo de Função Derivado. Neste texto. que são: os biestáveis. Programação FBD).

dependendo apenas da maneira de atuação do mesmo.R (”RESET”) Descrição Com a função R. REINICIAR .Programação em Linguagem de Lista de Instrução BI-ESTÁVEIS . 67 . RS (“Reset/Set”).“FLIP-FLOP” Os bi-estáveis “Flip-Flop” podem ser do tipo S (“Set”). SR (“Set/Reset”). coloca-se o operando em nível lógico “0”. ou ainda. quando o conteúdo atual do acumulador é um booleano “1”. R (“Reset”).

Exemplo S: Comando LD A Descrição O valor de A é carregado no acumulador. quando o conteúdo atual do acumulador for de um booleano “1”.S (“SET”) Descrição Com a função S se coloca o operando “1”. ESCREVER .Programação em Linguagem de Lista de Instrução Exemplo R Ordem Descrição LD A O valor de A é carregado no acumulador. R OUT Quando o conteúdo do acumulador (valor de “A”) for “1”. S OUT Quando o conteúdo do acumulador (valor de “A”) for SR (“SET/RESET”) 68 . em ”OUT” coloca-se “0”.

em ”OUT” coloca-se “0”. em ”OUT” coloca-se “1”.Programação em Linguagem de Lista de Instrução Neste tipo de bi-estável. quando o mesmo estiver em nível lógico “1”. o “Set” é dominante. LD C O valor de C é carregado no acumulador. ou seja. ou seja. R OUT Quando o conteúdo do acumulador (valor de “A”) for “1”. Exemplo SR Flip-Flop Ordem LD A Descrição O valor de A é carregado no acumulador. a saída não será “setada”. mesmo que a entrada “reset” esteja em nível lógico “1”. S OUT Quando o conteúdo do acumulador (valor de “C”) for “1”. 69 . mesmo que a entrada “Set” esteja em nível lógico “1”. a saída não será “resetada”. quando o mesmo estiver em nível lógico “1”. Exemplo de Bi_estável SR no Concept RS (“RESET/SET”) Neste tipo de bi-estável. o “reset” é dominante.

S OUT Quando o conteúdo do acumulador (valor de “A”) for “1”. BLOCO DE FUNÇÃO CONTADOR O bloco de função CONTADOR pode ser do tipo CTU. Como a linguagem Lista de Instrução IL é uma linguagem descritiva (texto). Comando LD A Descrição O valor de A é carregado no acumulador. R OUT Quando o conteúdo do acumulador (valor de “C”) for “1”. ela necessita da configuração de diversas variáveis que são: 70 .Programação em Linguagem de Lista de Instrução Exemplo RS Flip-Flop O exemplo mostra um RS.Flip-Flop (“Reset” dominante) . CTD ou CTUD. Exemplo de Bi_estável RS no Concept. em ”OUT” coloca-se “0”. LD C O valor de C é carregado no acumulador. em ”OUT” coloca-se “1”.

Programação em Linguagem de Lista de Instrução Ö Entrada de Pulso gerado pela ocorrência de um evento.“Reset” Ö Registro (posição de memória). Ö Registro (posição de memória) onde será escrito. em que se aloca o valor de contagem e que ao ser atingido irá Ligar ou Desligar uma variável de saída. no menu “proyetos” . Declaração das variáveis que serão utilizadas. Para isso é preciso acessar “declaracion de variables” e declarar as variáveis. pelo sistema. um exemplo de bloco contador do software Concept Schneider usado neste curso: A Programação do Bloco de Função CONTADOR. Observe. é feita em três etapas: a) Declaração de variáveis b) Chamada da função c) Nomeação das saídas No software simulador Concept esta programação é feita da seguinte maneira: 1. Ö Registro (posição de memória) que indica qual é a variável de saída que será comandada (Ligada ou Desligada). 71 . a seguir. o número da contagem realizada. Ö Entrada de Comando para zerar o valor contado .

Programação em Linguagem de Lista de Instrução 2. ele é do tipo inteiro e serve para indicar os valores em sistema decimal. Nesta declaração. Cria-se. (* Declaración *) VAR Inicio da lista de variáveis ou funções Nombre de instancia : CTU. (* BOOL *) R := . Declaração “Declaración” da função Contador que se encontra na biblioteca IEC. Será a partir deste rótulo que a função será chamada em qualquer ponto do programa. e a função é transformada em uma sub-rotina (pequeno programa dentro de um outro maior). A indicação (*BOOL*) informa que o operando é o responsável em fornecer os pulsos a serem contatados e é o responsável em zerar o contador que é do tipo “booleano”. (* Llamado *) CAL Nombre de instancia (CU := . então um rótulo. a função é nomeada de forma particular e definida pelo programador. Os valores podem ser precedidos por (+/-) 72 . a lista de variáveis ou funções que irão ser utilizadas na aplicação. END_VAR Fim da lista de variáveis ou funções 3. então. Nome particular da função CTU da biblioteca IEC. (* BOOL *) PV := (* INT *)) Chamada da função com um determinado nome particular. Coloca-se. Faz-se a Chamada (“Llamado” ) da função Contador na biblioteca IEC. A indicação (*INT*) informa que a variável é responsável em fornecer o valor a ser contado “PV” (Valor Prévio).

123_456. será carregada no acumulador. Nomeação das saídas “Asignar salidas” . 0. (* Asignar salidas *) LD Nombre de instancia. +986 4. será armazenado em uma variável tipo inteira descrita anteriormente.Q A saída “Q” de uma função particular será carregada no acumulador ST (* BOOL *) A saída “Q” será armazenada em uma variável do tipo “booleana” LD Nombre de instancia.Programação em Linguagem de Lista de Instrução Exemplo: -12. Exemplo: 73 . Nesta etapa são selecionadas as variáveis ou operandos que serão lidos e onde serão armazenados para utilização na lógica ou visualização.CV A saída “CV” (valor corrente). ST (* INT *) O valor da saída “CV” (valor corrente).

“Toff” e “TP” . assim como nas linguagens Ladder e FDB. A entrada “liga1” é responsável por fornecer os pulsos a serem contados pelo contador “conta1”. Como a linguagem Lista de Instrução é uma linguagem descritiva (texto). BLOCO DE FUNÇÃO TEMPORIZADOR O bloco de função TEMPORIZADOR na linguagem IL. pode ser do tipo “Ton”. que são: Ö Entrada de comando para iniciar a contagem do tempo. A saída do contador “conta1” liga o estado de saída “saída” quando o valor contado for igual ao valor de PV no caso 10. 74 . O valor corrente “CV” da contagem é carregado na variável “CV1”. ela necessita da configuração de diversas variáveis. O valor prévio “PV” (valor a ser contado) é 10.Programação em Linguagem de Lista de Instrução Funcionamento: • • • • • • A função CONTADOR UP foi nomeada de “conta1”. A entrada “reseta” é responsável por zerar o contador.

a função é nomeada. a seguir. Declaração “Declaración” da função Contador que está na biblioteca IEC. irá Ligar ou Desligar uma variável de saída. Ö Registro (posição de memória) onde será escrito. ao ser atingido. esta programação é feita da seguinte maneira: 1. um exemplo de bloco temporizador do software Concept Schneider usado neste curso: A Programação do Bloco de Função CONTADOR é feita em três etapas que são: a) Declaração de variáveis b) Chamada da função c) Nomeação das saídas No software simulador Concept. Declaração das variáveis que serão utilizadas. Nesta etapa é criada a lista de variáveis ou funções utilizadas na aplicação. Ö Registro (posição de memória) que indica qual é a variável de saída que será comandada (Ligada ou Desligada). Na declaração. 2 . definida de forma particular pelo programador. Observe. o tempo decorrido. Em seguida acessar “Declaracion de Variables” e declarar as variáveis que serão utilizadas. acessando “Proyetos” no menu.Programação em Linguagem de Lista de Instrução Ö Registro (posição de memória) onde se aloca o valor do tempo que. 75 . pelo sistema.

A partir do rótulo a função é chamada em qualquer ponto de um programa.5MS 76 4.9H. Observe o exemplo a seguir. Nombre de instancia : TON.4D. T#.Programação em Linguagem de Lista de Instrução (* Declaración *) VAR => Inicio da lista de variáveis ou funções. Chamada “Llamado” da função TEMPORIZADOR presente na biblioteca IEC. minutos (M). (* BOOL *) PT := . segundos (S) e milisegundos (MS) ou a combinação destas. A duração deve ser identificada com o prefixo t#. (* Llamado *) CAL Nombre de instancia (IN := . .7S. (*TIME*)) Chamada da função com um determinado nome particular. O comentário (*BOOL*) informa que o operando responsável pelo pulso de inicialização de temporização na entrada IN é do tipo “booleano”. => Nome particular da função TON da biblioteca IEC. t#14MS. Nomeação das saídas “Asignar salidas” . serão lidos e armazenados para utilização na lógica ou visualização. t#20. horas (H). Aqui é colocado um rótulo e a função transforma-se em uma sub-rotina ( que é um pequeno programa dentro de um outro maior). T#25H15M. TIME#19. time#5D14H12M18S3. time#18M. time# ou TIME# . T#14. O comentário (*TIME*) informa que a variável responsável em fornecer o valor da temporização “PT” (Tempo Prévio) é do tipo TIME e as unidades permitidas são dias (D). As variáveis ou operandos são selecionados. END_VAR => Fim da lista de variáveis ou funções 3.

77 . no ST (* BOOL *) A saída “Q” será armazenada em uma variável do tipo “booleana” LD Nombre de instancia. será carregada no acumulador.ET A saída “ET” (tempo decorrido). será armazenado em uma variável tipo TIME. A entrada “liga” é responsável em fornecer o sinal para inicialização da temporização do temporizador “tempo1”.Q A saída “Q” de uma função particular carregada acumulador. descrita anteriormente. Exemplo: Funcionamento: • • A função TEMPORIZADOR “TON” foi nomeada de “tempo1”.Programação em Linguagem de Lista de Instrução (* Asignar salidas *) LD Nombre de instancia. ST (* TIME*) O valor da saída “ET” .

Programação em Linguagem de Lista de Instrução • • • O valor prévio “PT” (valor a ser temporizado) é 10. A saída do temporizador “tempo1” liga o estado de saída “saída1”.0 segundos. O valor do tempo decorrido “ET” será carregado na variável “efetivo”. 78 .

em relação a estas. como ela. é uma linguagem textual.PROGRAMAÇÃO EM LINGUAGEM DE LISTA DE INSTRUÇÃO Texto complementar Introdução A linguagem de programação Lista de Instrução (IL) se assemelha à Assembler e. O:001/00 = I:000/00 AND (I:000/01 OR I:000/02 AND NOT I:000/03) Em IL Marca Operador Operando Comentário START: LD AND( OR( ANDN ) ) ST I:000/00 I:000/01 I:000/02 I:000/03 (* Carrega entrada 00*) (* Inicia um ramo e carrega entrada 01*) (* Carrega entrada 02*) (* Carrega entrada 03 e inverte*) 79 %Q:001/00 (* “Seta” a saída 00*) . ela é mais difícil de ser compreendida. Por exemplo: Q:001/01 I:000/00 I:000/01 I:000/02 Em Ladder I:000/03 Lê-se. O fato de ser textual a torna mais fácil de ser implementada do que as linguagens gráficas (Ladder e FBD). no entanto. Essa dificuldade pode ser superada elaborando-se o programa IL a partir da linguagem Ladder. Isto é: programa-se em Ladder e depois converte-se para IL.

Opcionalmente. Para programar em IL. num grupo de instruções. Esses elementos estão na tabela apresentada a seguir. as instruções seguintes usam essa variável ou a modificam. termina sempre com dois pontos. a parte entre os parênteses deve ser avaliada. as marcas e nomes de variáveis podem ser escritos em maiúsculas ou minúsculas. integrais ou nominais. pode também ser precedido por uma marca (rótulo de identificação) seguida de dois ponto “:”. Operador LD ST S Modificador N N Operando qualquer um qualquer um BOOL Semântica Carrega o operador no registro atual Armazena o registro atual no operando “Seta” o operando em Verdadeiro se o registro atual for 1 80 R BOOL “Reseta” o operando para Falso se o registro . a linguagem IL consiste de uma sequência de instruções (linhas escritas) em que (no mínimo) um operador é acompanhado de um operando. O operador. os comentários podem aparecer no início da instrução com um (* e terminar com um *) e não conter linhas. os operadores devem ser sempre escritos com maiúsculas. Escrever um programa em linguagem IL significa considerar os elementos que a compõem. que pode ser complementado por um modificador e com isso ter seu significado alterado. os modificadores são N (indica negação).Como pode-se observar na tabela anterior. ou seja. A ordem de execução do programa é de cima para baixo e pode ser alterada por meio de saltos. deve-se considerar alguns detalhes: • • • • • • uma marca sempre começa com uma letra e é escrita com letras e dígitos. os operandos podem ser valores booleanos. cada operando pode ser seguido por um comentário. No início da sequência. uma variável é carregada na memória. C (indica condição) e “(“ indicando operação suspensa.

( N.( N.C BOOL BOOL BOOL BOOL qualquer um qualquer um qualquer um qualquer um qualquer um qualquer um qualquer um qualquer um qualquer um qualquer um LABEL NAME AND lógico AND lógico (equivale ao operador AND) OR lógico OR lógico exclusivo Adição Subtração Multiplicação Divisão Comparação “maior do que” Comparação “maior ou igual” Comparação “igual” Comparação “diferente” Comparação “menor ou igual” Comparação “menor do que” Salta para a Marca Chama bloco de função Retorna do bloco de função Executa o último operador 81 .( ( ( ( ( ( ( ( ( ( ( N.( N.atual for 1 AND & OR XOR ADD SUB MUL DIV GT GE EQ NE LE LT JMP CAL RET ) N.C N.C N.

A linguagem de programação FBD permite a análise do encadeamento das funções através de blocos. É uma linguagem constituida por uma simbologia gráfica semelhante aos esquemas eletrônicos. é classificada como uma linguagem gráfica. usada em 80% dos CLPs. formando fluxos de sinais e. Exemplo da linguagem FBD. por isso. Essa notação dentro do bloco indica a função lógica OR (que em português significa a função alternativa = ou) manual_fechar >=1 porta_fechar temp 60 > Figura 1. Como pode ser observado a seguir. pois utiliza a representação de funções por meio de figuras geométricas. essas figuras são conectadas entre si. A FBD. definida pela Norma Internacional (“Internacional Eletrotechnical Commission . foi elaborada para atender a competência já existente de profissionais que 82 . não exigindo uma análise da lógica interna dos mesmos.IEC 1131-3”). essa linguagem é chamada Diagrama de Blocos Funcionais (Figura 1).Programação em Linguagem de Diagrama de Blocos Funcionais INTRODUÇÃO A Linguagem em FBD “Function Block Diagram”.

83 . de cima para baixo. Uma característica importante desta linguagem é o fato de um determinado bloco possuir internamente uma lógica particular. Esses blocos são elementos que processam uma determinada lógica interna que define sua funcionalidade. SISTEMA DE NOTAÇÃO O sistema de representação ou designação da linguagem FBD é a que se apresenta a seguir. essas serão processadas em sequência. Assim. um programa for composto por várias redes de ligação. os blocos utilizados nesta linguagem de programação são conectados entre si e formando uma rede. cujo sentido é da esquerda para a direita. em português. Se. derivada ou especial. por isso sua representação gráfica é semelhante às utilizadas em lógica digital.Programação em Linguagem de Diagrama de Blocos Funcionais trabalhavam com projetos e análise de circuitos lógicos digitais e que passaram a trabalhar com CLPs. A complexidade da lógica interna depende da função realizada através da utilização de algoritmos: básica. Bloco de Função Derivada) e que não precisa ser escrita necessariamente em FBD. que é denominada DFB (“Derivactive Function Block”.

Sistema de notação da linguagem de programação FBD Pela Figura 2. As variáveis entradas são indicadas do lado esquerdo do bloco e as de saída ficam do lado direito do bloco de função. 84 . Em resumo. a saída %000017 somente será verdadeira.Programação em Linguagem de Diagrama de Blocos Funcionais Figura 2. nível lógico “1” quando ambas entradas . pode se observar que um bloco funcional descreve uma função entre variáveis de entrada (Parâmetros de entrada) e uma ou mais variáveis de saída (Parâmetro de saída). em nível lógico “1” ao mesmo tempo. tem o seguinte funcionamento: por se tratar de uma porta lógica “E” .Lamp Test1 e Lamp Test2 .estiverem verdadeiras. isto é. ou seja. em que a função desempenhada pelo bloco está indicada dentro do retângulo. A porta lógica mostrada na figura 2. As variáveis de entrada e de saída são conectadas aos blocos funcionais por linhas de conexão. a FDB é graficamente representada por um conjunto de blocos funcionais que realizam diferentes funções. esses blocos são retângulos com pontos de conexão de entrada e um ou mais pontos de conexão de saída.

1 e 0. ou de dígitos bin ou. (OR_BOOL) ou ainda ( / ). AND e NOT. FUNÇÕES LÓGICAS BÁSICAS A álgebra booleana lida apenas com dados ou sinais na forma binária. OPERAÇÃO LÓGICA OR O bloco pode trazer internamente as indicações: ( > = 1). Estes dois estados são a base do sistema lógico.1.2(1) Entrada A OR_BOOL Saída 85 Entrada B . As combinações produzem um resultado de 1 ou 0 chamado de resultado lógico de operação (RLO). sendo as básicas: OR. simplesmente. bits. por meio das funções lógicas.Programação em Linguagem de Diagrama de Blocos Funcionais INSTRUÇÃO LÓGICA DE BIT O bit de instrução tem dois estados lógicos. Os dígitos 1 e 0 são chamados de dígitos binários. Simbolicamente podem ser representados da seguinte maneira: endereço endereço >=1 . chamado de sistema binário. As instruções lógicas interpretam o sinal dos estados 1 e 0 e a combinação entre eles está de acordo com a lógica de “boole” (booleana).

Se a instrução OR for a primeira instrução dentro da string (grupo ou seqüência de caracteres) de operação lógica. a condição não é satisfeita e o resultado da instrução é 0. o valor 1 se pelo menos uma de suas variáveis de entrada possuir valor 1. permite verificar o estado do sinal de 2 ou mais endereços específicos de entrada na caixa OR. Em outras palavras. o resultado é salvo e é verificado o estado do sinal no bit RLO. Se o estado do sinal de todos os endereços é 0. nessa função tem-se uma saída verdadeira se pelo menos uma entrada for verdadeira. ou seja. A combinação destes valores é feita de acordo com a tabela verdade do bloco OR. Esses valores são combinados de acordo com a tabela da verdade do bloco OR. a condição é satisfeita e o resultado da instrução é 1. que não seja a 1° instrução na string de operação lógica é combinada com o resultado do estado de sinal que verifica o valor armazenado no RLO (Result of Logic Operation) bit.Programação em Linguagem de Diagrama de Blocos Funcionais Descrição A função OR assume. na saída do bloco. a instrução OR. Cada instrução OR. ou seja: Entrada A Entrada B Saída 0 0 0 86 . Se o endereço do estado de um dos sinais for 1.

a luz interna acenderá. isto é. Este bloco tem funcionamento semelhante ao sistema de comando da luz de segurança do automóvel. na verdade. ou seja. Caso a entrada 10.Programação em Linguagem de Diagrama de Blocos Funcionais 0 1 1 1 0 1 1 1 1 Observe o exemplo a seguir: Se as entradas 10. simboliza uma instrução de bit. considerado que as entradas 10. Note que a saída Q 4.1 seja 1 .se a porta esquerda estiver aberta a saída será 1 . caso a porta direita esteja fechada ou a entrada 10.0 e 10.1 estiverem em nível lógico 1. denominada “assign” e tem as seguintes características: Símbolo endereço = Descrição 87 .0 é representada sobre um retângulo que. será colocada em nível lógico 1.1 são os sensores instalados na porta do veículo e a saída Q 4.0 é a lâmpada interna do mesmo.0 será setada.0 OR 10. a saída Q 4.0 seja 0.

o estado de sinal da saída da caixa será 1. A operação lógica anterior à instrução “assign” marca o estado de sinal para a saída que é endereçada pela instrução. o bloco pode trazer internamente as indicações: (&) ou (AND_BOOL). Caso contrario.Programação em Linguagem de Diagrama de Blocos Funcionais A instrução “Assign” gera o resultado de operação lógica. Símbolo Descrição Com a instrução AND é possível verificar o estado do sinal de dois ou mais endereços especificados na caixa AND. como isso pode ser feito. A caixa de operação lógica final tem o sinal 1 ou 0 de acordo com os seguintes critérios: • • A saída tem o sinal 1 quando as condições de operações lógicas antes da caixa de saída forem satisfeitas. OPERAÇÃO LÓGICA AND Na operação lógica AND. Se as condições de operação lógica anterior à instrução forem satisfeitas. A saída tem o sinal 0 quando as condições das operações lógicas antes da caixa de saída não forem satisfeitas. Acompanhe. a seguir. o estado de sinal é 0. 88 .

Programação em Linguagem de Diagrama de Blocos Funcionais Se todos os estados dos sinais das entradas forem 1. a saída assume o valor 0 para qualquer outra combinação de valores das variáveis de entrada. Se o endereço do estado de um dos sinais for 0. a saída será verdadeira (terá valor 1) se todas as variáveis de entrada também forem verdadeiras. A combinação destes valores é feita de acordo com a tabela verdade do bloco AND. o resultado é salvo e é verificado o estado do sinal no bit RLO. o resultado das mesmas são combinados de acordo com o resultado do estado de sinal verificado com o valor armazenado no RLO bit. Se as instruções AND não são as primeiras instruções dentro da string lógica de operação. Em resumo. a condição é satisfeita e a condição produz o resultado 1 na saída. ou seja: Entrada A Entrada B Saída 0 0 1 1 0 1 0 1 0 0 0 1 89 . Em outras palavras. a condição não é satisfeita e o resultado da instrução é 0 e o sinal de saída é 0. uma saída assume o valor 1 se todas as variáveis de entrada tiverem valor 1. Se a instrução AND for a primeira instrução dentro da string de operação lógica.

considerado que as entradas 10. INSTRUÇÃO AND ANTES DE OPERAÇÃO LÓGICA OR.1 são sensores instalados na porta do veículo e a saída Q 4. Caso qualquer uma destas estiver aberta ou seja. uma operação lógica AND for satisfeita. Quando a instrução AND se encontra antes da da operação lógica OR.0 é setada quando o estado de sinal é 1 nas entradas 10. caso o sensor esteja desativado .Programação em Linguagem de Diagrama de Blocos Funcionais Exemplo A saída Q 4.1.0 AND 10. consegue-se checar o resultado do estado de sinal de acordo com a tabela verdade do bloco OR.0 é a bobina de um relé que impede o movimento do ônibus com porta aberta. Descrição Com esta instrução. Este bloco tem funcionamento semelhante ao sistema de segurança de movimentação de ônibus.em nível lógico “0” . o estado de sinal é 1 se.0 e 10. 90 .o relé será ligado. falso . impedindo o movimento do ônibus. pelo menos.

Descrição Com essa instrução. O estado de sinal é 0 na saída Q3. o estado de sinal é 1 se pelo menos uma operação lógica OR for satisfeita. Com a operação lógica OR antes de Operação Lógica AND.Programação em Linguagem de Diagrama de Blocos Funcionais Exemplo O estado de sinal é 1 na saída Q3. é possível checar o resultado do estado de sinal de acordo com a tabela da verdade do bloco AND.1 se pelo menos uma operação lógica AND é satisfeita. INSTRUÇÃO OR ANTES DE OPERAÇÃO LÓGICA AND. Exemplo 91 .1 se qualquer uma das operações lógicas AND não for satisfeita.

1 quando ambas operações lógicas OR são satisfeitas. Símbolo Descrição A instrução OR Exclusivo permite verificar o resultado do estado de sinal de acordo com a tabela verdade do bloco OR Exclusivo. ou seja: 92 . uma porta lógica XOR. Analogamente.1 quando pelo menos uma das operações lógicas OR não são satisfeitas. OPERAÇÃO LÓGICA OR EXCLUSIVO . O bloco pode trazer internamente as indicações (XOR) ou (XOR_BOOL).XOR A função lógica XOR fornece uma saída verdadeira somente quando as duas entradas apresentam a condição lógica oposta.Programação em Linguagem de Diagrama de Blocos Funcionais O estado de sinal é 1 na saída Q3. O estado de sinal é 0 na saída Q3. fornece um nível lógico 1 quando uma entrada estiver em nível lógico “1” e a outra em nível Lógico”0” em qualquer ordem.

o sensor de altura máxima (S2) e a saída Q 43. 93 .0. Este bloco tem funcionamento semelhante ao sistema de controle de altura de uma embalagem. O resultado comum da operação lógica será “1” se somente uma das entradas for “1”.2.1 (Saída).0 ou 10.1 quando o estado de sinal for 1 somente em uma das entradas 10. indicam a altura da embalagem. em que dois sensores que são acionados dependendo de sua altura considerando a entrada 10.Programação em Linguagem de Diagrama de Blocos Funcionais Entrada A Entrada B Saída 0 0 1 1 0 1 0 1 0 1 1 0 Com uma Operação Lógica OR Exclusivo o estado do sinal da saída é 1 quando o estado de sinal somente de uma das entradas é 1. Exemplo O estado do sinal é 1 na saída Q3.Pode-se usar a função OR Exclusivo em diversas vezes.2. o sensor de altura mínima (S1). a entrada 10.

indicando que a embalagem possui altura abaixo do limite desejado. indicando que a altura da embalagem está acima do limite esperado. Situação 2 – Estando o sensor S1 acionado (nível lógico “1”) e o sensor S2 desacionado (nível lógico “0”).portanto em nível lógico “0” a saída será falsa ou “0”. Situação 3 – Estando os sensores S1 e S2 acionados (nível lógico 1).Estando os dois sensores S1 e S2 desacionados .Programação em Linguagem de Diagrama de Blocos Funcionais Situação 1. A figura seguinte ilustra o funcionamento do sistema: ENTRADAS / SAÍDA BINARIAS NEGADAS 94 . a saída será falsa (nível Lógico “0”). a saída será verdadeira (Nível lógico 1). indicando que a altura da embalagem está dentro dos limites esperados.

Programação em Linguagem de Diagrama de Blocos Funcionais Símbolo Descrição A entrada/saída binária negada inverte o resultado RLO (Result of Logic Operation). por isso é chamada de inversora. sendo que o bloco pode trazer internamente as indicações: (NOT_BOOL) ou (N) 95 .0 será “1”.2 estiver em “0” ou a entrada I1.4 e !1. Exemplo 3 A saída Q 4.2 será “1” somente quando as entradas I1. Exemplo 2 A saída Q 4. INSTRUÇÃO LÓGICA INVERSORA Inverte o valor da variável de entrada. quando a entrada I 1. resultado da operação lógica e a mesma pode ser utilizada tanto na entrada de uma função lógica como numa saída. Exemplo 1 A saída Q 4.3 estiver em “1”.0 estiver em “0” e a entrada I1.1 será “1” sempre que a entrada I1.1 estiver em “1” simultaneamente.5 estiverem em “0” simultaneamente.

em outras linguagens Biestáveis. funcionam como um elemento de memória por armazenar níveis lógicos temporariamente.a lâmpada de iluminação será ligada -. Representam a unidade elementar de memória. BIESTÁVEL SR E RS Os biestáveis são os circuitos seqüenciais mais elementares e possuem a capacidade de armazenar a informação neles contida. a seguir.nível lógico “0” . com o endereço dos estados pertencentes à lógica. FUNÇÕES ESPECIAIS As Instruções especiais . nível lógico “1”.Programação em Linguagem de Diagrama de Blocos Funcionais Símbolo Descrição Quando a variável “Entrada” for nível lógico “1”. São chamados de biestáveis porque possuem dois estados lógicos estáveis.nível lógico “1” (claridade). como pode ser observado. quando detectar presença .nível lógico “0”. sempre que o sensor de luz detectar a ausência de luz (escuro) . Temporizador e Contador apresentam o mesmo funcionamento. que deve ligar a lâmpada para iluminação do ambiente sempre estiver escuro. a variável “Saída” será nível lógico “0” e se ocorrer o contrário a saída será nível lógico ”1”. geralmente representados 96 . ou seja. ou seja. Este bloco tem funcionamento semelhante ao sistema de comando de luz noturna. a lâmpada de iluminação será desligada . porém.

Estando a saída %000004 verdadeira (nível lógico 1) e a entrada %100003 verdadeira (nível lógico 1). quando a entrada %100003 for falsa (nível lógico 0) e a entrada %100004 for verdadeira (nível lógico 1). a saída %000001. caracterizando. Estando a saída %000001 verdadeira (nível lógico 1) e a entrada %100001 verdadeira (nível lógico 1). pois está em nível lógico “0” (ou seja. quando a entrada %100001 for verdadeira (nível lógico 1). não a ligará. Nesse exemplo. ou seja. não a desligará. verdadeira (nível lógico 1) caracterizando assim a prioridade do comando “R” sobre o comando “S” 97 . Neste exemplo. a entrada %100003 não terá efeito na condição de funcionamento da saída. tem-se um bi-estável RS. Símbolo endereço RS endereço SR R S Q S R Q No exemplo a seguir tem-se um bi-estável SR. sendo a saída %000002 verdadeira (nível lógico 1) quando a entrada %100003 for verdadeira (nível lógico 1). ou seja. assim. será verdadeira (nível lógico 1). a prioridade do comando “S” sobre o comando “R” No exemplo a seguir.Programação em Linguagem de Diagrama de Blocos Funcionais por “0” e “1”. é falsa). a saída %000002 será falsa (nível lógico ”0”). a saída %000001 será falsa (nível lógico 0) quando a entrada %100001 for falsa (nível lógico 0) e a entrada %100002 for verdadeira (nível lógico 1). a entrada %100002 não terá efeito na condição de funcionamento da saída.

determina a duração dos eventos e realiza duas operações: contar o tempo a partir de uma entrada e ativar a saída associada a ela Exemplos Temporizador TON: Funcionamento: Estando a variável “Entrada A” em nível lógico “1”. verdadeira. cronômetro do CLP. Note que o funcionamento do temporizador é o mesmo do temporizador visto na programação em linguagem “Ladder” Temporizador TOF: 98 . O registro “Elapsed” presente em “CV” tem a função de mostrar o tempo sendo cronometrado. será cronometrado o tempo especificado em “PT” no caso 1m30s. após este tempo a variável “Saída” será levada a nível lógico “1”.Programação em Linguagem de Diagrama de Blocos Funcionais TEMPORIZADOR TON e TOF O temporizador.

O registro “Elapsed” presente em “CV” tem a função de mostrar o tempo sendo cronometrado. verdadeira. este é classificado como contador crescente “UP” ou decrescente “down”. esta contagem pode ser interrompida ou zerada através de uma lógica.Programação em Linguagem de Diagrama de Blocos Funcionais Funcionamento: Estando a variável “Entrada A” em nível lógico “1”.no caso 1m30s. a variável “saída” será levada ao nível lógico “1”(verdadeira). executando para isso incrementos ou decrementos de um valor previamente carregado no mesmo.CTU E CTD O contador é usado para controlar o número de vezes em que um determinado evento ocorre. Note que o funcionamento do temporizador é o mesmo do temporizador visto na programação em linguagem “Ladder” CONTADOR CRESCENTE E DECRESCENTE . Após este tempo. será cronometrado o tempo especificado em “PT” . Dependendo do tipo de contador. quando a variável “Entrada” estiver em nível lógico “0”. Exemplo de um contador Crescente 99 . Assim como escrita automática em uma determinada posição de memória do número de eventos contados. a variável “Saída” será levada a nível lógico “0”.

será diminuído de uma unidade e quando este valor for igual a zero.“Eventos_B_Contados” . Exemplo de um contador Decrescente Funcionamento Inicialmente o sistema carrega o valor definido na entrada “PV” do contador.”Eventos_B_Contados” . A seguir. o valor armazenado em “Eventos_B_Contados” será atualizado com o valor especificado em “PV”.“Saída_Evento_B” . a variável de saída . Ocorrendo o acionamento da variável de entrada .Programação em Linguagem de Diagrama de Blocos Funcionais Funcionamento A cada acionamento da variável de entrada “Evento_A”.“Evento_B” . quando este valor for igual ao valor definido na entrada “PV” do contador . a cada acionamento da variável de entrada .“Zera_Contagem_Evento_B”.no caso 15. A linguagem FBD.no caso 15. a variável de saída “Saída_Evento_A” será ligada. não permite alguns arranjos na mesma lógica entre as conexões de estados de saída com uma entrada de um bloco anterior. o valor armazenado em “Eventos_A_Ocorridos” será zerado. em “CV” do contador . o valor de variável ”Eventos_A_Ocorridos” será acrescido de uma unidade. por ser uma linguagem gráfica.o valor de variável . ENTRADA DE CONTROLE DE TEMPORIZADORES E CONTADORES EN/ENO: 100 . é apresentado um exemplo desta condição. Ocorrendo o acionamento da variável de entrada “Zera_Contagem_Evento_A”.será ligada.

este recurso está selecionado o funcionamento do temporizador. a saída ENO também será colocada em 1. como visto anteriormente. a saída ENO será colocada em nível lógico 0 e nesta situação. o Temporizador tem seu funcionamento normal. este controle é feito por uma linha de comando composta por uma entrada e uma saída. pois se a mesma estiver em nível lógico 1 (verdadeira). Isto de pende das condições da entrada EN (variável TEMP1_EN). ambas “booleanas” denominadas EN/ENO do inglês “Enable”.Programação em Linguagem de Diagrama de Blocos Funcionais A norma IEC 6 1131-3 determina que as funções de Temporização e Contagem devem ter um terminal de controle de seu funcionamento. Controle EN/ENO habilitada No exemplo acima. se a variável TEMP1_EN estiver em nível lógico 0 (falso). Caso contrário. Quando este recurso não está selecionado. 101 . indicando a habilitação do temporizador e permitindo o funcionamento normal do mesmo. Controle EN/ENO desabilitada. mesmo que as condições de funcionamento do temporizador estejam satisfeitas o mesmo não será executado.

pois este tipo de conexão pode causar um fluxo indeterminado. Assim. REALIMENTAÇÃO NÃO PERMITIDA A realimentação através de conexão não é permitida. se a variável for verdadeira na ocorrência de uma determinada situação. um exemplo disso pode ser um erro na execução de algum algoritmo utilizado no programa. Exemplo Resolução Através De Um Parâmetro Atual Uma lógica deste tipo é resolvida através de parâmetros atuais para que se determine. sem erros. o fluxo de dados. Alternativa1 102 . não saindo deste trecho do processamento. normalmente chamado de “loop” fechado.Programação em Linguagem de Diagrama de Blocos Funcionais A variável conectada na entrada EN também pode ser uma variável de sistema. entrando em um ciclo de processamento repetitivo.

O Rótulo deve ter no máximo 32 caracteres. O Rótulo (“Label”) deverá ser sempre o primeiro elemento de uma linha. 103 . A linguagem FBD permite executar uma lógica com início e fim. A instrução de destino se localiza acima ou abaixo da instrução de Salto. Permite. na mesma seqüência. redirecionar o processamento para uma outra parte do programa através de Saltos (“Jump” ) e Rótulos (“Lable” ) que marca a instrução de destino. estes devem ser separados das demais instruções com dois pontos ”:”. é importante considerar que esta instrução não faz distinção entre letras maiúsculas ou minúsculas. SALTOS NA EXECUÇÃO DE UM PROGRAMA.Programação em Linguagem de Diagrama de Blocos Funcionais Alternativa 2 Alternativa através de vários parâmetros atuais. ainda. em todo o projeto/DFB. O Rótulo deverá impedir a ocorrência de erro.

DFB (Módulo de Função Derivado). UDEFB (Função Elementar Definida pelo Usuário / Módulo de Função Elementar Definida pelo Usuário).Programação em Linguagem de Diagrama de Blocos Funcionais Exemplo Funcionamento: O bloco OR_BOOL 2.3(2) somente será processado quando a saída “ventilação” especificada como salto (JUMP) for verdadeira. EFB – FUNÇÃO ELEMENTAR / (MÓDULO DE FUNÇÃO ELEMENTAR) 104 . FUNÇÕES E MÓDULOS DE FUNÇÕES (FFBs) FFB é um termo genérico que inclui: • • • EFB (Função e Modulo de Função Básica).

pois os EFBs são escritos em linguagem “C”. Exemplo de uma função EFB 105 . São denominados de “EFB – Função /Módulo de Função” e todo o corpo das definições não podem ser modificadas em um editor de DFBs.Programação em Linguagem de Diagrama de Blocos Funcionais A programação em FBD permite criar um bloco específico quando ele não é formulado diretamente na biblioteca IEC.

lista de instrução “IL” e texto estruturado “ST”. Pode haver várias chamadas DFB do programa completo. Os DFBs são considerados sub-rotinas com a característica de transferência ou aceitação de valores definidos de uma para outra sub-rotina. que se constitui um arranjo de diversos EFBs em um único DFB.Programação em Linguagem de Diagrama de Blocos Funcionais DFB . As seções contêm a lógica verdadeira. Um DFB é identificado por linhas verticais duplas nas laterais do bloco. essas combinações são chamadas de DFB (Módulo de Função Derivado) e normalmente são utilizadas para hierarquizar um programa.MÓDULO DE FUNÇÃO DERIVADO A linguagem FBD permite combinações de blocos para realizar uma determinada lógica ou função. Construção de um DFB Um DFB representa um bloco vazio com entradas/saídas definidas e lógica programada. A construção hierárquica desta lógica corresponde a um determinado projeto que é composto por uma ou várias seções. 106 . Os DFBs podem ser construídos utilizando as linguagens de programação Ladder “LD”.

Programação em Linguagem de Diagrama de Blocos Funcionais Exemplo de um DFB composto por um arranjo de EFBs Estrutura interna do exemplo de DFB dado 107 .

UDEFB é um termo genérico que inclui: • • Função básica definida pelo usuário. Módulo de função básica definida pelo usuário.Programação em Linguagem de Diagrama de Blocos Funcionais UDEFB (Função Elementar Definida pelo usuário / Módulo de Função elementar definida pelo usuário). 108 .

Programação em Linguagem de Diagrama de Blocos Funcionais UDEFBs são funções e módulos de funções que são programadas em um programador de EFBs em linguagem C++. 109 . Não existe diferença funcional entre UDEFB e EFB. com possibilidade de alteração pelo usuário que domine esta linguagem.