Linguagens de Programação

O funcionamento do CLP baseia-se em um conjunto de instruções conhecido como programa, desenvolvido para atender as rotinas do usuário. Os sinais dos sensores ou transdutores acoplados à máquina ou equipamento são aplicados as entradas do controlador. Em cada ciclo, denominado scan ou varredura, ha três etapas:

Etapa de entrada – Todos os sinais vindos do meio externo e aplicados às entradas são lidos e transferidos para uma área da unidade de memória internado CLP, chamada tabela imagem da entrada.

Etapa de programa - O programa é executado, usando os sinais adquiridos durante a etapa de entrada e decidindo quais serão os valores dos sinais de saída digitais e analógicos. Esses valores são guardados em uma região de memória denominada imagem de saída. Durante a execução do programa, os sinais de saída não são alterados, a menos que sejam ativadas entradas de elevada prioridade. Tais entradas são utilizadas para emergências, que não podem esperar o término do scan. Nesse caso, interrompemos o trabalho do CLP, rodando um programa que atende a interrupção. Terminado o atendimento à interrupção, retornamos ao programa principal.

Etapa de saída – Todos os valores de saída estabelecidos pelo programa e armazenados na imagem de saída são aplicados aos módulos de saída.

Terminadas as três etapas, reinicia-se o ciclo de scan, com a etapa de entrada (operação cíclica). Em algumas situações, por exemplo, ao utilizar controladores PID, torna-se necessário fazer as aquisições de sinais (etapa de entrada) em intervalos fixos. Nesse caso, ao terminar a etapa de saída, o CLP fica esperando o instante predefinido para reiniciar o scan (operação periódica).

Para realizar a tarefa de controle, o processador do CLP simplesmente executa passo a passo o roteiro de instruções contido na tabela de programação que o usuário elaborou. O processo de execução segue aproximadamente a rotina mostrada no fluxograma abaixo.



O Step 7 suporta as seguintes linguagens de programação para criar programas do usuário:

Function Block Diagram (FBD)

Ladder Diagram (LAD)

Statement List (STL)

Linguagem de Programação Ladder (LAD)

LAD é uma linguagem de programação gráfica. Sua representação é baseada em diagramas de circuitos. O programa é desenvolvido em uma ou mais networks. Uma network contém um trilho de força do lado esquerdo. Os sinais binários são arranjados em forma de contato nas networks. Um arranjo serial dos elementos em uma network cria uma conexão em série; arranjos em ramos simultâneos criam uma conexão em paralelo. Funções complexas são representadas em caixas (boxes).



Exemplo de network em LAD

A imagem abaixo mostra uma LAD network com dois contatos normalmente abertos, um contato normalmente fechado e uma bobina (coil).



Elementos LAD

Um programa LAD consiste de elementos separados que são arranjados em série ou paralelo no trilho de força da network. A maioria dos elementos do programa devem receber tags.

A estrutura de um ladder diagram corresponde a uma série de chaveamentos de relay.

O trilho de força à esquerda (left power rail) é localizado do lado esquerdo no editor LD. Ele corresponde à fase (L ladder) de uma ligação. Na programação LD, assim como em ligações elétricas, somente os objetos LD que são ligados ao fornecimento de energia são processados. O trilho de força à direita (right power rail) corresponde ao fio neutro. Todas as bobinas (coils) são ligadas diretamente ou indiretamente a esse trilho, criando um fluxo de corrente.

Elementos de uma network LAD



1 – Power rail (trilho de força)

Cada LAD network consiste de uma power rail que contém ao menos uma rung. Uma network pode ser estendida com a adição de novas rungs. Branchs são usados para a programação em paralelo nas rungs.

2 – Rung (linhas de interligação de elementos)

3 – Branch (ramo)

4 – Contact (contato)

Contatos são usados para criar ou interromper uma conexão para fluxo de corrente entre dois elementos. A corrente segue da esquerda para a direita. Contatos podem ser usados para extrair o status do sinal ou o valor de um operando e controlá-lo dependendo do resultado do fluxo de corrente.

Os seguintes tipos de contatos são permitidos em um programa LAD:

Tipos de contatos

Normalmente aberto



No caso de contatos normalmente abertos, o status do link à esquerda é transferido para o link à direita se o parâmetro booleano (indicado com xxx) é ON. Se não for o caso, o status do link à direita será OFF.

A imagem abaixo mostra a instrução contato NA em ladder, bem como o circuito elétrico e a lógica digital correspondente.



Observe que, na instrução Contato NA, o estado da saída digital é idêntico ao da entrada digital. Assim, quando I1 estiver em alto nível, a saída Q1 estará ativada; e,quando I1 estiver em baixo nível, a saída Q1 estará desativada.

Normalmente fechado



No caso de contatos normalmente fechados, o status do link à esquerda é transferido para o link à direita se o parâmetro booleano (indicado com xxx) é OFF. Se não for o caso, o status do link à direita será OFF.

A imagem abaixo mostra a instrução contato NA em Ladder, bem como o circuito elétrico e a lógica digital correspondente.



Observe que, na instrução Contato NF, o estado da saída digital é inverso ao da entrada digital. Assim, quando I1 estiver em alto nível, a saída Q1 estará desativada; e, quando I1 estiver em baixo nível, a saída Q1 estará ativada.

5 – Coil (bobina)

Um coil ou bobina é um elemento LD que transfere o status do horizontal link do lado esquerdo, sem modificá-lo, para o horizontal link do lado direito. O status é guardado no respectivo parâmetro booleano.

Tipos de Coils

Coil



Com coils, o status do link do lado esquerdo é transferido para o parâmetro booleano (indicado por xxx) e para o link do lado direito.

Negated Coil



Com negated coil ou bobina negada, o status do link do lado esquerdo é copiado para o link do lado direito. O status invertido do link do lado esquerdo é copiado para o parâmetro booleano (indicado por xxx). Se o link esquerdo está OFF, então o link direito também será OFF e o parâmetro booleano será ON.

Coil para detecção de transição positiva



Com coils para detecção de transição positiva, o status do link do lado esquerdo é copiado para o link do lado direito. O parâmetro do tipo EBOOL (indicado por xxx) é 1 por um ciclo de programa, se a transição do link esquerdo de 0 para 1 for feita.

O diagrama de estado da entrada contato normalmente aberto (I0.0) e da saída coil para detecção de transição positiva(Q0.0) demonstra a aplicação dessa instrução. Observe que, quando a entrada (I0.0) e acionada, ou seja, na passagem do nível lógico “0” para o “1”, na saída associada a essa entrada aparece um pulso com duração de 1 scan. Na descida, na passagem do nível lógico “1” para o “0”, nada acontece à saída.



Coil para detecção de transição negativa



Com coils para detecção de transição positiva, o status do link do lado esquerdo é copiado para o link do lado direito. O parâmetro do tipo EBOOL (indicado por xxx) é 1 por um ciclo de programa, se a transição do link esquerdo de 1 para 0 for feita.

O diagrama de estado da entrada contato normalmente aberto (I0.0) e da saída coil para detecção de transição negativa(Q0.0) demonstra a aplicação dessa instrução. Observe que, quando a entrada (I0.0) e acionada, nada acontece; porém, ao ser desligada, na passagem do nível logico “1” para o “0”, na saída associada a essa entrada aparece um pulso com duração de 1 scan.





Set Coil



Com set coils, o status do link do lado esquerdo é copiado para o link do lado direito. O parâmetro booleano (indicado por xxx) recebe ON se o link esquerdo tem um status de ON, senão ele não é alterado. O parâmetro booleano pode ir para OFF (reset) através do reset coil.

Reset Coil



Com reset coils, o status do link do lado esquerdo é copiado para o link do lado direito. O parâmetro booleano (indicado por xxx) recebe OFF se o link esquerdo tem um status de ON, senão ele não é alterado. O parâmetro booleano pode ir para ON (set) através do set coil.

E (AND): A imagem mostra a função E em Ladder, bem como o circuito elétrico e a lógica digital correspondente.



Observe que, na função E, o estado da saída digital depende da combinação das entradas digitais. Assim, quando I1 e I2 estiverem simultaneamente em alto nível, a saída Q1 estará ativada; e, quando qualquer uma das entradas,ou ambas, estiverem em baixo nível, a saída Q1 estará desativada. A imagem abaixo mostra o circuito de instalação do CLP para o programa.



OU (OR): A imagem mostra a função OU em Ladder, bem como o circuito elétrico e a lógica digital correspondente.



Observe que, na função OU, o estado da saída digital depende da combinação das entradas digitais. Assim, quando I1 ou I2, ou ambos, estiverem em alto nível, a saída Q1 estará ativada; e, somente quando I1 e I2 estiverem simultaneamente em baixo nível, teremos a saída Q1 desativada.

Instruções NA-NF Série

A imagem abaixo mostra a função NA-NF série em Ladder, bem como o circuito elétrico e a lógica digital correspondente.



Observe que, na função NA-NF série, o estado da saída digital depende da combinação das entradas digitais. Assim, somente quando I1 estiver em altonível e I2 em baixo nível, teremos a saída Q1 ativada. Para qualquer outra situação, teremos a saída Q1 desativada.

Instruções NA-NF Paralelo

A imagem abaixo mostra a função NA-NF paralelo em Ladder, bem como o circuito elétrico e a lógica digital correspondente.



Observe que, na função NA-NF paralelo, o estado da saída digital dependeda combinação das entradas digitais. Assim, somente quando I1 estiver em baixo nível e I2 em alto nível, teremos a saída Q1 desativada. Para qualquer outra situação, teremos a saída Q1 ativada.

Contadores

Um contador tem por finalidade ativar uma memória ou uma saída após uma determinada contagem de eventos. A imagem abaixo mostra a instrução e simbologia do contador, segundo a norma IEC 1131-3.



Observe que, na instrução contador, a entrada I1 recebe pulsos provindos de chaves externas ou sensores, enviando para o contador C1. No programa, C1 foi parametrizado para 4 contagens. Após C1 receber 4 pulsos (quatro energizações/desenergizações), o contato NA do contador C1 fecha-se, acionando a saída Q1.

O contador pode ser crescente, decrescente ou até mesmo crescente/decrescente(up/down). Para a última finalidade, o bloco contador é composto demais uma entrada que fará a contagem regressiva, conforme a imagem abaixo.



Observa-se que I1 faz a contagem crescente, I2 a contagem decrescente, e I3 aciona o reset. A imagem abaixo apresenta o diagrama de tempos do contador up/down.



Após concluir o ciclo de contagem (4 contagens), Q1 fica acionado,independentemente do estado de I1. A saída Q1 pode ser desativada resetando o contador C1.

Temporizadores

Esta função tem por finalidade acionar ou desligar uma memória ou uma saída de acordo com um tempo programado.

É importante salientar que os temporizadores possuem vários modos de operação, tais como retardo na energização, retardo na desenergização, retardos memorizáveis etc.

A imagem abaixo mostra a instrução temporizador com sua respectiva simbologia, segundo a norma IEC 1131-3.



A seguir, serão apresentados os modos mais básicos de temporização.

a) Retardo na energização

Quando o temporizador é configurado para retardo na energização (Timer On), a saída Q1será acionada um certo tempo após a entrada I1 ficar em alto nível, neste caso 5 segundos. Quando a entrada I1 ficar em alto nível, esta ativa o elemento temporizador T1 (parametrizado no programa para 5 s). Após 5 segundos, o contato do temporizador fecha-se acionando a saída Q1.

Na imagem abaixo temos o diagrama de tempo do temporizador com retardo na energização.



Observe que se o tempo em alto nível da entrada I1 for menor que o parametrizado no temporizador, a saída Q1 não será acionada. Desta forma, para que a saída Q1 seja acionada, é necessário que a entrada I1 permaneça em alto nível por um tempo superior ao parametrizado T.

Observe ainda que, no modo retardo na energização, quando a entrada I1 for para baixo nível, a saída Q1 será desacionada imediatamente.

b) Retardo na desenergização

Quando o temporizador é configurado para retardo na desenergização (Timer Off), a saída Q1 será acionada imediatamente quando a entrada I1 ficar em alto nível, entretanto, quando a entrada I1 for para baixo nível, a saída Q1 permanecerá acionada pelo tempo parametrizado T. Na imagem abaixo temos o diagrama de tempo do temporizador com retardo na desenergização, onde T é o tempo de atraso no desligamento da saída Q1.



Os demais modos de temporização partem basicamente destes dois tipos de retardo, cujas configurações variam dependendo do CLP. Veja exemplos destes modos no vídeo a seguir.



Timer ON



Comparação

Em programação, muitas vezes e necessário comparar dois valores. Para isso, pode-se usar as instruções de comparação. Os comparadores utilizam dois operandos,que podem ser byte, word ou constante. O programa é realizado com os operandos 1 e 2 (imagem abaixo). Caso os valores satisfaçam a condição de comparação e a entrada do comparador esteja habilitada, a saída do comparador será acionada, habilitando, assim, a saída do sistema.



As comparações que podem ser feitas são: igual, maior que, menor que, maior ou igual a, menor ou igual a e diferente.

Igual a (=)

A imagem abaixo apresenta a instrução de comparação igual a (=) em diagrama Ladder.



Nesse exemplo, quando a entrada I0.0 estiver habilitada, teremos a comparação entre o operando 1 e o operando 2. Se eles forem iguais, o resultado será nível lógico “1” e a saída será acionada. Se forem diferentes, o resultado será nível lógico“0” e a saída será desligada.

Maior que (>)

A imagem abaixo apresenta o programa da instrução maior que (>) em diagrama Ladder.



Nesse exemplo, quando a entrada I0.0 estiver habilitada, terá a comparação entre o operando 1 e o operando 2. Se o operando 1 for maior que o operando 2, o resultado terá nível lógico “1” e a saída será acionada. Se o operando 1 for menor que o operando 2, o resultado terá nível logico “0” e a saída será desligada.

Menor que (<)

A imagem abaixo apresenta o programa da instrução menor que (<) em diagrama Ladder.



Nesse exemplo, quando a entrada I0.0 estiver habilitada, terá a comparação entre o operando 1 e o operando 2. Se o operando 1 for menor que o operando 2, o resultado terá nível lógico “1” e a saída será acionada. Se o operando 1 for maior ou igual ao operando 2, o resultado terá nível logico “0” e a saída será desligada.

Maior ou igual a (≥)

A imagem abaixo apresenta o programa da instrução maior ou igual a (≥) em diagrama Ladder.



Nesse exemplo, quando a entrada I0.0 estiver habilitada, terá a comparação entre o operando 1 e o operando 2. Se o operando 1 for maior ou igual ao operando 2, o resultado terá nível lógico “1” e a saída será acionada. Se o operando 1 for menor que o operando 2, o resultado terá nível lógico “0” e a saída será desligada.

Menor ou igual a (≤)

A imagem abaixo apresenta o programa da instrução menor ou igual a (≤) em diagrama Ladder.



Nesse exemplo, quando a entrada I0.0 estiver habilitada, terá a comparação entre o operando 1 e o operando 2. Se o operando 1 for menor ou igual ao operando 2, o resultado será nível lógico “1” e a saída será acionada. Se o operando 1 for maior que o operando 2, o resultado será nível lógico “0” e a saída será desligada.

Diferente de (≠)

A imagem abaixo apresenta o programa da instrução de comparação diferente de (≠) em diagrama Ladder.



Nesse exemplo, quando a entrada I0.0 estiver habilitada, terá a comparação entre o operando 1 e o operando 2. Se os operandos forem diferentes, o resultado terá nível lógico “1” e a saída será acionada. Se o operando 1 for igual ao operando 2, o resultado terá nível lógico “0” e a saída será desligada.

Operações Matemáticas

Essas instruções têm como função executar operações aritméticas entre dois operandos,colocando o resultado em um operando de resposta denominado RES.

Somador (+)

Quando essa instrução e habilitada por meio da entrada (E), executa-se a somados operandos (OPR1 + OPR2), colocando o resultado em RES, conforme demonstra a imagem abaixo.



Quando a entrada esta habilitada, tem-se a execução da soma dos dois operandos ou constantes e, consequentemente, o valor passa para um terceiro operando. Operando 1 e operando 2 são os valores que serão somados. Os endereços permitidos são: bytes, words e constantes. Resultado é o operando que receberá o resultado da soma.

Subtrator (–)

Quando essa instrução e habilitada por meio da entrada (E), executa-se a subtração dos operandos (OPR1 – OPR2), colocando o resultado em RES, conforme demonstra a imagem abaixo.



Operando 1 é o valor do qual será subtraído o valor do segundo operando e,consequentemente, o resultado passa para um terceiro operando. Operando 2 é o valor que será subtraído do primeiro operando. Os endereços permitidos são: bytes, words e constantes.

Resultado é o operando que receberá o resultado da subtração. Os endereços permitidos são: bytes e words.

Multiplicador (×)

Quando essa instrução e habilitada por meio da entrada (E), executa-se a multiplicação dos operandos (OPR1 × OPR2), colocando o resultado em RES, conforme demonstra a imagem abaixo.



Quando a entrada esta habilitada, tem-se a execução da multiplicação dos dois operandos e, consequentemente, o valor passa para um terceiro operando. Operando 1 e operando 2 são os valores que serão multiplicados. Os endereços permitidos são: bytes, words e constantes.

Resultado é o operando que receberá o resultado da multiplicação. Os endereços permitidos são: bytes e words.

Divisor (÷)

Quando essa instrução e habilitada por meio da entrada (E), executa-se a divisão dos operandos (OPR1 ÷ OPR2), colocando o resultado em RES, conforme demonstra a imagem abaixo.



Quando a entrada esta habilitada, tem-se a execução da divisão dos dois operandos e, consequentemente, o valor passa para um terceiro operando. Operando 1 e operando 2 são os valores que serão divididos. Os endereços permitidos são: bytes, words e constantes.

O resultado é o operando que receberá o resultado da divisão. Os endereços permitidos são: bytes e words.

MOVE

A imagem abaixo mostra a função MOVE.



Essa instrução possui duas variáveis: MOV0 (origem) e MOV1 (destino). Quando a entrada I0.0 passa do nível logico “0” para o “1”, a instrução MOVE é habilitada, transferindo o valor contido na variável MOV0 (origem) para a variável MOV1 (destino).


Usuário não registrado. Compre o treinmanto em jats.com.br.