Loading AI tools
linguagem de programação Da Wikipédia, a enciclopédia livre
A linguagem Ladder foi originalmente desenvolvida para construir circuitos de relés, utilizados em processos industriais [1]. Desta forma, era possível acionar máquinas industriais no chão de fábrica, como cilindros hidráulicos e motores elétricos. Todos os dispositivos de circuitos elétricos, como botões, válvulas e solenoides podem ser representados em símbolos nos Diagramas Ladder, incluindo suas conexões. Na atualidade, os quadros de relés foram substituídos por Controladores Programáveis (CLP).
A linguagem Ladder, diagrama Ladder ou diagrama de Escada é um auxílio gráfico para programação de Controladores Lógicos Programáveis (CLPs), no qual as funções lógicas são representadas através de contatos e bobinas, de modo análogo a um esquema elétrico com os contatos dos transdutores e atuadores. A linguagem ladder está entre as cinco linguagens de programação de CLPs definidas pela IEC 61131-3 : FBD (Function Block Diagram, Diagrama de Blocos), LD (Ladder diagram, Diagrama Ladder), ST (Structured text, Texto Estruturado), IL (Instruction list, Lista de Instruções) e SFC (Sequential function chart, Diagrama de Funções Sequenciais) [2] [3].
O nome (ladder, escada em inglês) provém do fato que a disposição dos contatos e bobinas é realizada, de maneira geral, na vertical, que lembra o formato de uma escada. A cada lógica de controle se dá o nome de rung (degrau), composta por linhas e colunas [4].
A verificação do código pode variar entre os fabricantes de CLPs, mas é comum que a atualização seja feita da esquerda para a direita e de cima para baixo.
A linguagem Ladder é uma linguagem de alto nível utilizada para programar CLPs, capaz de realizar o controle de sistemas industriais complexos, substituindo os antigos circuitos controladores a relés que eram caros e de difícil manutenção, além de menos seguros. A principal vantagem de representar as lógicas de controle por meio de diagramas Ladder é que permite à engenheiros e técnicos de campo desenvolver "códigos" sem conhecimento prévio de outras lógicas de programação como o FORTRAN ou o C, devido à familiaridade com a lógica a relés. Além disso, pode-se facilmente montar um circuito elétrico físico a partir do software, e vice-versa [5]
Um dos principais problemas apresentados pela linguagem é a incompatibilidade entre CLPs, mesmo entre modelos diferentes da mesma família. Embora a IEC 61131-3 tenha diminuído as diferenças mais marcantes entre os diferente CLPs, transferir um código de um controlador para o outro ainda pode ser um trabalho custoso.
Devido ao fato de todos os processos do diagrama serem realizados pelo processador (CPU) do CLP de forma sequencial, é preciso de um uma estrutura de loop que executa um certa quantidade de vezes por segundo, fazendo com que os resultados na saída sejam quase imediatos. Para isso, o CLP utiliza um Ciclo de Varredura que consiste nos seguintes passos:[6]
Existem 3 tipos de elementos na linguagem Ladder:
Os elementos estão associados à variáveis internas que podem tanto ser virtuais como entradas e saídas físicas de um CLP.
Existem dois tipos de contatos:
X
--| |-- a instrução de LÓGICA DIRETA tem na programação o mesmo nível lógico vinculado ao endereçamento.
Tal contato está fechado quando a variável booleana associada (no nosso caso X) é verdadeira, caso contrário, ele está aberto.
X --|/|-- a instrução de LÓGICA INVERSA tem na programação o nível lógico inverso vinculado ao endereçamento.
Tal contato está aberto quando a variável booleana associada é verdadeira, caso contrário, ele está fechado.
As saídas sempre são bobinas, relés contatores ou "de estado sólido" (óptico, PWM, DC, etc...). Tal saída está ativa quando a variável booleana associada é verdadeira, caso contrário, ela está inativa.
Assim como as entradas, há dois tipos de saídas (bobinas) principais:
X
--( )-- a instrução de SAÍDA LÓGICA tem na programação o resultado em nível lógico que à antecede.
Tal contato está fechado quando a variável booleana associada (no nosso caso X) é verdadeira, caso contrário, ele está aberto.
X --(/)-- a instrução de SAÍDA LÓGICA INVERTIDA tem na programação o resultado em nível lógico inverso que à antecede.
Alguns tipos de bobinas especiais são chamadas Blocos Funcionais, por possuírem implementações mais complexas, como as bobinas de SET e RESET, que funcionam de forma semelhante a Latches;
Os blocos funcionais permitem realizar operações mais complexas que a leitura ou escrita de variáveis. São exemplos de blocos funcionais os contadores, temporizadores, bobinas de set ou reset, etc. Utilizando Diagramas de Blocos, pode-se inclusive criar blocos personalizados (funções encapsuladas) definidas pelo usuário para facilitar a organização. Algumas IDEs fornecem outras opções de blocos funcionais como comparadores (maior que, menor que e igual a), operadores matemáticos (adição, subtração, multiplicação e divisão) e portas lógicas. Ainda há a opção de obter bibliotecas com blocos já prontos para uso. [7]
Temporizadores são dispositivos utilizados para medir o tempo e atuar ao final do ciclo. Comumente os temporizadores são representados por dois símbolos, um indica um retardo na ativação e outro um retardo na desativação.
Na linguagem Ladder os temporizadores levam alguns argumentos para seu funcionamento, são eles:
Para os temporizadores com delay na subida (TON), no momento que houver uma entrada verdadeira, o tempo programado começará a correr. Após o tempo determinado ser atingido, a saída do temporizador será verdadeira e permanecerá nesse estado enquanto a entrada for verdadeira. Quando o valor da entrada for falso o temporizador volta para o estado falso, sendo que caso outra entrada verdadeira seja aplica o processo ocorrerá novamente. Caso o sinal se torne falso antes de o temporizador atingir o valor máximo, sua contagem é resetada e a saída permanece falsa.
Para os temporizadores com delay na descida (TOF), no momento que aplicar-se uma entrada verdadeira, a saída do temporizador também será verdadeira. Quando o valor da entrada for de verdadeiro para falso, o temporizador contará o tempo programado e então sua saída se tornará falso quando o tempo pré-definido for atingido.
Os temporizadores tem uma grande importância na automatização de processos, devido ao fato de dar ao utilizador o controle do tempo de processos. Os temporizadores podem ser tanto digitais, sendo executados pelo processador, ou físicos, possuindo ligação com o CLP.
Os contadores são usados para incrementar ou decrementar um valor até alcançar o número pré-determinado de um processo. As mudanças de estado de um sinal externo são acumuladas, não importando o tempo, apenas a transição. São normalmente conectados a sensores digitais e deste modo é possível controlar o número de pulsos no contador, e quando o valor desejado é alcançado a bobina ligada à saída é acionada. Contadores são retentivos e no caso de queda de energia o valor acumulado não será perdido.
Existem três tipos de contadores, os de contagem crescente (CTU), decrescente (CTD) e o crescente e decrescente (CTUD). Para usar um contador inicialmente é necessário definir uma tag do tipo COUNTER.
Os contadores crescentes (CTU, do inglês Count Up ou CTN,C,CTR) são representados pelo seguinte esquemático:
CTU
╭┈┈┈┈┈┈┈┈┈┈┈╮
┈┃CU Q ┃┈┈
┈┃RESET ┃
┈┃PV CV┃┈┈
╰┈┈┈┈┈┈┈┈┈┈┈╯
Para o seu funcionamento, o sinal da entrada (associada com a variável CU, do tipo BOOL) deve variar de 0 a 1 fazendo com que o contador adicione um ao seu acumulador (CV, do tipo INT) até alcançar o seu valor limite (PV, do tipo INT) para tornar o valor da sua saída (Q, do tipo BOOL) verdadeira. Caso ocorrer o acionamento da variável do tipo BOOL- RESET, o valor do CV será resetado.
Exemplo de aplicação: contar o número de cerâmicas produzidas em uma olaria, ao atingir o valor limite a linha de produção é interrompida para a retirada do lote. Após é reiniciada a contagem.
Os contadores decrescentes (CTD, do inglês Count Down) são representados pelo seguinte esquemático:
CTD
╭┈┈┈┈┈┈┈┈┈┈┈╮
┈┃CD Q ┃┈┈
┈┃LOAD ┃
┈┃PV CV┃┈┈
╰┈┈┈┈┈┈┈┈┈┈┈╯
O funcionamento do CTD é o contrário do CTU, o sinal da entrada (associada com a variável CD, do tipo BOOL) deve variar de 1 a 0 fazendo com que o contador decremente um ao seu acumulador (CV, do tipo INT) até alcançar o seu valor mínimo (PV, do tipo INT) para tornar o valor da sua saída (Q) verdadeira. Caso ocorrer o acionamento da variável –do tipo BOOL- LOAD, o valor do CV será resetado.
Exemplo de aplicação: um dispositivo de uma fábrica de doces capaz de trocar as embalagens de pacotes de balas é acionado quando o pacote que está sendo enchido, o qual comporta trinta unidades, estiver cheio.
Os contadores crescentes e decrescentes (CTUD, do inglês Count Up Down) são representados pelo esquemático:
CTUD
╭┈┈┈┈┈┈┈┈┈┈┈╮
┈┃CU QU ┃┈┈
┈┃CD QD ┃┈┈
┈┃RESET ┃
┈┃LOAD ┃
┈┃PV CV┃┈┈
╰┈┈┈┈┈┈┈┈┈┈┈╯
O funcionamento do CTUD é a junção de ambos os contadores (CTU E CTD), no qual as variáveis do tipo BOOL QU e QD representam as saídas do contador crescente e do decrescente.
Exemplo de aplicação: cortar pedaços de madeira com determinados comprimentos.
Contadores em cascata: dependendo a aplicação se faz necessário contar eventos que excedem o máximo permitido pelo contador, sendo assim, é possível interconectar dois ou mais contadores usando em forma de cascata. A técnica consiste em acionar uma instrução de um contador a partir da saída de outro com instrução semelhante.
Exemplo de aplicação: monitoramento de hora usando três contadores, para representar horas, minutos e segundos. [8]
Representadas pela bobina padrão com uma letra S (Set) ou R (Reset), esse tipo de bobina armazena um estado (verdadeiro, se a bobina for SET e falso se a bobina for RESET) em uma variável booleana toda vez que uma borda de subida é identificada. O estado então será mantido mesmo com a desenergização da bobina, até que uma outra chamada futura altere seu valor. Esse tipo de bobina facilita a implementação de sistemas com memória.
A linguagem Ladder pode ser entendida como uma série de conexões de contatos e bobinas. O lado esquerdo do diagrama é energizado. Se um caminho puder ser traçado da esquerda para a direita e que conecte alguma bobina, então o valor dessa bobina será verdadeiro. Os contatos representam algum valor de entrada, enquanto o valor da "bobina" poderá ser revertido em uma saída física no CLP ou um bit que será usado em alguma outra parte do programa, utilizando-se o nome da bobina como contato.
------| |--------------------( ) Chave Bobina |
No diagrama acima, ao acionar a Chave, uma conexão é estabelecida entre o lado energizado e a Bobina, que portanto apresentará estado lógico verdadeiro. A maioria dos aparelhos apresentam algum tipo de lógica como esse para ligar e desligar. Note que é necessário que o botão/chave se mantenha pressionado para a bobina manter o estado lógico verdadeiro.
Os contatos e relés simples podem ser utilizados para construir portas lógicas, que servem para facilitar a resolução problemas devido ao fato de ser possível o uso de ferramentas para Álgebra Booleana como o Mapa de Karnaugh e Máquinas de Estados.
A porta lógica AND pode ser representada por dois contatos em série, já que os dois precisam estar ativos para a bobina ser ativada.
------| |--------------| |----------------( ) Chave 1 Chave 2 Bobina |
A porta lógica OR pode ser representada por dois contatos em paralelo, já que, apenas um estando ativo permite a energização de toda a linha.
--+-------| |-------+--------------------( ) | Chave 1 | Bobina | | +-------| |-------+ Chave 2 |
A porta inversora NOT pode ser representada por um contato ou uma bobina invertida (não ambos).
------|/|--------------------( ) Chave Bobina |
Com o auxílio de outras portas lógicas, pode-se criar modelos mais complexos, como a porta XOR (OU exclusivo).
------|/|--------------| |--------+-------( ) Chave 1 Chave 2 | Bobina | | ------| |--------------|/|--------+ Chave 1 Chave 2 |
O contato de selo (ou trinco), também conhecido como Latch, está geralmente associado à botões de INICIAR e PARAR e possui a característica de se manter ativo mesmo quando a chave de início não está mais pressionada, sendo parado somente quando o botão PARAR (ou alguma outra interrupção) for pressionado.
Ao ativar a chave INICIAR, a Bobina é energizada, que por sua vez fecha a chave Bobina, que representa o estado da Bobina. Desse ponto em diante, o circuito só pode ser parado fechando a chave PARAR, que abre o circuito desenergizando a Bobina e voltando o estado lógico da chave Bobina para falso.
------| |---------+----|/|-------------( ) INICIAR | PARAR Bobina | | ------| |---------+ Bobina |
Por medidas de segurança, é comum adicionar um contato de Parada de Emergência (P/E) que poderá ser ativada em alguma outra parte do programa.
------| |---------+----|/|------|/|-----( ) INICIAR | PARAR P/E Bobina | | ------| |---------+ Bobina |
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.