Buscar

fundamentos-linguagem-programacao

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

41 
 
Fundamentos da Linguagem de 
Programação 
 
4.1 Tipos de Dados 
 
4.1.1 O Bit 
 
 O bit é a menor unidade de informação que um sistema pode identificar. 
Quando tratamos de sistemas elétricos ou eletrônicos, a informação de um bit é 
muito utilizada. A palavra bit é uma derivação do termo binário, ou seja, o que 
possui duas unidades, dois elementos, o bit em seu estado natural somente 
pode assumir duas possibilidades, “0” e “1”, ou seja, ligado ou desligado, com 
tensão ou sem tensão, e assim tudo que se assemelha com somente duas 
condições possíveis, por exemplo: podemos dizer que a lâmpada 
incandescente de nosso quarto se assemelha a um bit? Sim, se assumirmos 
que quando ela esteja desligada está em estado “0” e quando está ligada está 
no estado “1” estamos de certa forma representando somente duas 
informações, conseqüentemente podemos assimilar a um bit. 
 Em comandos elétricos, quando ligamos um botão a uma entrada de um 
CLP e ele quando é pressionado envia um sinal elétrico em forma de tensão 
colocamos o bit correspondente da entrada em nível “1”, e quando soltamos o 
botão e o sinal elétrico é interrompido, assim colocamos o bit correspondente 
da entrada em nível “0”. 
 
 
Figura 4.1 
 
42 
 
 
 Dentro da estrutura de software do CLP, o bit associado a uma entrada 
pode ser lido e seu status utilizado para as operações lógicas do programa. 
Quando o bit está associado a uma saída ele também pode ser lido, ativado 
(ligado) ou desativado (desligado) de acordo com os resultados da lógica 
descrita no programa do usuário. 
 
 Uma enorme vantagem na utilização de um CLP é que o usuário pode 
criar os bits de forma virtual, ou seja, não é necessário trabalhar somente com 
os bits associados às entradas e saídas. O usuário poderá criar milhares de 
bits virtuais no sistema como se estivesse utilizando milhares de relés 
auxiliares em seu projeto, assim o projetista pode desenvolver lógicas de 
controle complexas e com isso incrementar o seu processo de automação. 
 
 Mais adiante, quando abordarmos a linguagem de programação, 
voltaremos a comentar e exemplificar as funções de um bit. 
 
4.1.2 O Byte 
 
 O termo byte é definido como um conjunto de oito bits. Assim ao invés 
de obtermos somente duas informações discretas se utilizarmos um conjunto 
de bits agrupados, podemos multiplicar as possibilidades da informação, assim 
os sistemas podem identificar situações diferentes por meio de sinais elétricos 
distintos. Acompanhe o exemplo abaixo para identificar como é possível 
ampliar a quantidade de informações em um sistema elétrico ou eletrônico com 
a quantidade de bits que utilizamos no circuito. 
 
 Se imaginarmos que a lâmpada incandescente de nosso quarto está 
desligada ou ligada podemos assimilar com somente duas possibilidades , ou 
seja , um Bit , agora imagine a situação , lâmpada desligada , lâmpada com 
luminosidade de 25% , lâmpada com luminosidade de 75% e lâmpada 
totalmente acessa , como um sistema elétrico pode identificar estas quatro 
combinações ? É simples, basta acrescentar mais um Bit ao sistema . 
 
 
43 
 
 
 
Figura 4.2 
 
 Agora, como representar isso em diagrama elétrico? Muito simples, 
vamos considerar que cada bit represente uma chave, e adotaremos que a 
chave estando aberta a condição é “0” e a chave estando fechada a condição é 
“1”, assim com as combinações das duas chaves podemos selecionar em qual 
condição a lâmpada deverá permanecer. Acompanhe os diagramas abaixo: 
 
 
44 
 
 
 
Figura 4.3 
 
 Podemos notar que, ao passo que aumentamos o número de bits no 
sistema, podemos aumentar significativamente a quantidade de informações 
“embutidas” nos sinais elétricos. Esta progressão pode ser representada de 
forma matemática de acordo com a expressão abaixo: 
 
 
 
 
45 
 
 Nº de Combinações possíveis = 2 
Nº de Bits 
 
Equação 1 
 
 Assim chegamos à conclusão de que: 
 
 1 Bit = 21 = 2 combinações 
 2 Bits = 22 = 4 combinações 
 3 Bits = 23 = 8 combinações 
 4 Bits = 24 = 16 combinações 
 5 Bits = 25 = 32 combinações 
 6 Bits = 26 = 64 combinações 
 7 Bits = 27 = 128 combinações 
 8 Bits = 28 = 256 combinações – 1 byte 
 
 Portanto na definição de byte (8 Bits) podemos ter 256 combinações 
diferentes entre os bits, essas combinações estão entre 00000000 até 
11111111, ou seja, de 0 a 256. 
 
 
 
Figura 4.4 
 
 
 
 
 
 
 
46 
 
4.1.3 A Word 
 
 Como o byte é um conjunto de oito bits que juntos podem identificar até 
256 combinações diferentes, a Word também se caracteriza por uma 
combinação de bits que juntos podem identificar cerca de 65 milhões de 
combinações diferentes. Para ser mais preciso, uma Word corresponde ao 
conjunto de 16 Bits agrupados, que, segundo a equação 1 vista anteriormente, 
uma Word corresponde a: 
 
Nº de combinações possíveis = 2 Nº de Bits
 
 
 Nº de combinações possíveis = 216 
Nº de combinações = 65536 
 
 Assim uma Word nos dá um universo gigantesco de possibilidades de 
códigos diferentes, inclusive para cálculos matemáticos. Esse tipo de variável é 
muito utilizado em computadores e microprocessadores para processamento 
numérico e processamento digital, e também é utilizado diretamente nos 
processamentos de CLPs, que utilizam esses códigos para identificação dos 
estados dos módulos de entradas e saídas, CLPs de pequeno porte como os 
micros CLPs utilizam variáveis do tipo byte para controlar os módulos de 
entradas e saídas. Por essa razão é muito comum encontrarmos micro CLPs 
que possuem somente oito entradas e oito saídas, e CLPs maiores utilizam 
variáveis do tipo Word para controlar os módulos de entradas e saídas, 
portanto possuem módulos de dezesseis entradas e dezesseis saídas. 
 
 
 
Figura 4.5 
 
Nota: a variável word também pode ser definida como “palavra”. 
 
 
 
 
47 
 
4.2 Endereçamento 
 
 No sistema de processamento de um CLP, cada variável seja do tipo bit, 
byte ou word, possui um local físico na memória do sistema. Essa posição 
física da memória é chamada de “endereço”, assim quando o programa de 
usuário que utiliza os valores descritos em uma variável procura o valor pelo 
endereço correspondente, o endereço também pode ser chamado de “registro” 
por alguns fabricantes. 
 
 Quando elaboramos um programa de usuário também devemos 
endereçar as variáveis que estamos manipulando, por exemplo, quando 
ligamos uma saída ou fazemos a leitura de uma entrada, devemos atribuir um 
bit físico a um endereço, para que o programa do sistema possa localizar o 
dado correspondente na memória do sistema. 
 
 
 
 
 
 
 
 
48 
 
 
Figura 4.6 
 
4.3 Linguagem de Programação 
 
 Um programa é definido como um conjunto de regras lógicas que juntas 
executam uma determinada função em um CLP. A linguagem de programação 
mais utilizada é a linguagem LADDER. Como vista anteriormente, outras 
linguagens também são utilizadas com a linguagem “C”, “Basic” ou a 
linguagem “Assembly”, porém se analisarmos mais profundamente, cerca de 
90% dos usuários utilizam a linguagem LADDER. 
 
 Essa linguagem é a mais utilizada em função de ser uma adaptação da 
linguagem de diagrama elétrico, usualmente utilizada por profissionais como 
eletricistas ou técnicos no chão de fabrica. Assim sua aceitação foi quase que 
instantânea no meio profissional, há quem diga que foi o principal fator que fez 
que essa tecnologia de automação via CLP fosse consolidada tão 
rapidamente. A linguagem LADDER tem grande ligação com a lógica Booleana 
e o uso de mnemônicos de programação auxilia em muito a programação do 
código do programa do usuário. Uma expressão mnemônica é um termo 
simples e fácil de assimilar, ela representa um símbolo gráfico em forma de 
texto, assim o programador pode optar entre desenvolver seu programa de 
forma gráfica ou em forma de texto. Por exemplo,“OUT” representa saída , 
“T” ou “TON” representa um temporizador, “B” ou “M” representa um bit ou relé 
auxiliar, “MI” ou “N” representa um endereço de memória de 16 bits, e assim 
por diante. A grande maioria dos programas compiladores de CLP possuem 
recursos para transladar a linguagem LADDER para a linguagem de instruções 
e vice-versa, fica a cargo do programador escolher qual forma de trabalho é 
mais simples ou fácil de se utilizar. 
 
 Pois bem, com fazer a ligação da lógica booleana com os diagramas 
elétricos convencionais? Muito simples, a lógica booleana consiste em 
expressões lógicas e simples que, se seguidas fielmente, nos dão três 
situações distintas, condição de entrada, objetivo e condição de saída, 
exemplo: 
 
 
49 
 
“Lucas vai ao cinema se João ou Maria forem com ele, e se seu pai 
emprestar o carro” 
 
 
 
 
 
Figura 4.7 
 
Nessa frase podemos identificar todas as situações implícitas em um 
sistema lógico, temos objetivo “Lucas ir ao cinema”, temos três condições de 
entrada “se João for com ele” ou “se Maria for com ele” e ainda “se seu pai 
emprestar o carro”, condição de saída “ir ao cinema”. 
 
Note que a expressão utilizada como exemplo é puramente lógica, 
podemos identificar um estado de entrada, uma lógica “OR” e uma lógica 
“AND”, se todas essas condições forem satisfeitas, o objetivo é atingido, ir ao 
cinema. 
 
 Imagine esse exemplo transladado para circuito elétrico, será possível? 
Observe a figura 4.7. 
 
 Veja que se o projetista pensar de forma lógica, tudo pode ser 
elaborado, e o entendimento dos operadores lógicos booleanos pode nos dar 
o auxílio necessário para elaboração de qualquer circuito lógico, seja elétrico, 
eletrônico ou puramente lógico, como vimos no exemplo acima. 
 
 Existem muitos operadores lógicos booleanos, porém todos derivam de 
operadores básicos, AND, OR, NOT, a partir do entendimento desses três 
 
50 
 
operadores básicos, podemos desenvolver outros mais complexos. Nos 
tópicos 4.3.1 até 4.3.3 abordamos os operadores básicos. 
 
4.3.1 Operador Lógico “AND ” ou “E“ 
 
 O operador booleano AND define uma situação em que temos no 
mínimo duas situações de entrada para uma situação de saída. Para que a 
situação de saída seja verdadeira, é necessário que as duas situações de 
entrada sejam verdadeiras, acompanhe o exemplo. Para que a lâmpada 
acenda (situação de saída) é necessário que as duas chaves de entrada S1 e 
S2 (situações de entrada) estejam ligadas. 
 
 
 
Figura 4.8 
 No exemplo acima, podemos visualizar como se define a expressão 
booleana AND, juntamente com seu símbolo gráfico e sua representação em 
linguagem elétrica de contatos. A configuração AND ou E pode suportar 
inúmeros dispositivos de entrada, ou seja, pode suportar quantos contatos em 
série forem necessários para o desenvolvimento da aplicação. 
 
4.3.2 Operador Lógico “OR” ou “OU” 
 
 O operador booleano OR é definido como a combinação de no mínimo 
duas situações de entrada para uma situação de saída. Para que a situação 
de saída seja verdadeira, é necessário que apenas uma situação das duas de 
entrada seja verdadeira, acompanhe o exemplo. Para que a lâmpada acenda 
(situação de saída) é necessário que a chave S1 ou a chave S2 (situações de 
entrada) estejam ligadas. 
 
51 
 
 
 
 
 
Figura 4.9 
 
 A expressão OR é definida eletricamente como contatos em paralelo. 
Podem existir vários contatos ou dispositivos de entradas em uma única porta 
OU. 
 
4.3.3 Operador Lógico “NOT” ou “NÃO“ 
 
 O operador NOT se comporta como um dispositivo inversor de sinal, ou 
seja, se aplicamos um sinal com nível lógico “1” em sua entrada, obtemos na 
saída em nível lógico “0”, se aplicarmos nível lógico “0” em sua entrada 
obtemos em sua saída, nível lógico “1”, acompanhe o diagrama abaixo: 
 
 
 
52 
 
 
 
Figura 4.10 
 
 Esse operador é bastante utilizado em sistemas elétricos, pois permite 
inverter eletricamente o sinal proveniente de uma chave ou dispositivo. O único 
inconveniente é a utilização de dispositivos auxiliares como um relé, porém 
isso não é problema quando falamos de programação de um CLP. Existem 
milhares de relés auxiliares virtuais dentro da memória do sistema disponíveis 
para esse tipo de aplicação. 
 
4.4 Programas LADDER 
 
 Os diagramas elétricos convencionais representam como a corrente 
elétrica deve fluir no sistema. Esses diagramas representam de forma gráfica 
todos os elementos e conexões dos circuitos, os circuitos convencionais 
consistem em duas linhas horizontais que simbolizam o barramento de 
alimentação, esse barramento é responsável pelo fornecimento de tensão 
elétrica aos dispositivos. O nível de tensão elétrica que circula nesses 
barramentos está na ordem de 24Vcc/Vca a 220Vca, que são os padrões 
utilizados para os dispositivos e acionamentos. Logo abaixo entre essas linhas 
horizontais estão locados os dispositivos de controle e os dispositivos 
controlados, também estão interconectados por meio de linhas, porém essas 
linhas estão dispostas na vertical, cada linha vertical deve possuir no mínimo 
um dispositivo de controle e um dispositivo controlado, a combinação de um ou 
mais dispositivos de controle gera as condições de funcionamento do 
dispositivo controlado. São exemplos de dispositivos de controle: botões, 
 
53 
 
chaves, contatos etc. E dispositivos controlados, bobinas, lâmpadas, alarmes 
etc. 
 
 
 
Figura 4.11 
 
 O circuito é funcional quando a corrente elétrica proveniente do 
barramento de alimentação L1 chega até o pólo da bobina do contactor K1, 
isso acontece quando: 
 
a) Alimentamos o barramento L1 e L2 com a tensão de comando do 
sistema. 
b) Após energizado, a tensão elétrica flui por meio do contato 
fechado (NF) do botão S1, deixando energizado um dos pólos do 
botão S2 e do contato auxiliar de K1. 
c) Quando pressionamos o botão de controle S2, a tensão elétrica 
flui pelo contato energizando um dos pólos da bobina do contactor 
K1. 
d) A bobina do contactor K1, quando energizada, faz que o 
dispositivo funcione, proporcionando assim a ligação elétrica entre 
os contatos de potência do dispositivo, e simultaneamente 
 
54 
 
acionando os contatos auxiliares, os contatos NF se abrem e os 
contatos NA se fecham. 
e) O contato NA do contactor se fecha, criando assim um novo 
caminho para a corrente elétrica chegar à bobina do contactor. 
f) Agora, se soltarmos o botão de controle S2, a bobina continua 
sendo energizada, pois a corrente elétrica flui pelo contato auxiliar 
de K1, assim o contactor continua ligado até ser cessado o 
fornecimento de energia elétrica para o dispositivo. 
g) Para cessar o fornecimento elétrico ao dispositivo, basta 
pressionar o botão de controle S1, assim o contato NF se abre e a 
corrente elétrica é interrompida, fazendo que a bobina do 
dispositivo deixe de funcionar, nesta ocasião os contatos elétricos 
voltam à posição original. 
h) Para iniciar o sistema novamente, basta pressionar o botão S2 e o 
sistema volta a ser acionado. 
 
 O circuito exemplificado acima é um dos circuitos mais básicos 
encontrados em ambiente industrial, é utilizado para acionamento de motores 
de forma direta, ou seja, o circuito de potência para acionamento do motor 
elétrico é comandado pelos contatos de potência do contactor K1. Esse circuito 
é chamado de “Partida Direta” ou “Circuito Selo”. 
 
 A programação em LADDER é muito semelhante ao diagrama elétrico 
visto acima, com pequenas diferenças que não influenciam no entendimento, o 
profissional que interpreta os diagramas convencionais não terá dificuldade de 
assimilar os conceitos da linguagem em LADDER. Na linguagem tradicional a 
simbologia elétrica representa de forma real como os componentes estão 
interligados, já na linguagem em LADDER os símbolos representam conceitos 
lógicos e o programa existe apenas nas memóriasdo CLP. 
 
 Em um diagrama LADDER representamos os barramentos de 
alimentação na forma vertical, diferente da forma convencional, na horizontal, 
assim conseqüentemente as linhas de instrução estarão representadas 
horizontalmente entre as linhas do barramento de alimentação, na prática não 
existe corrente elétrica circulando nesses barramentos, é somente uma forma 
lógica e virtual para representarmos como o sistema deverá funcionar. Cada 
linha de instrução deverá ter no mínimo um elemento de saída, caso contrário o 
sistema interpretará como um curto-circuito e o programa compilador exibirá 
uma mensagem de erro ao usuário, na prática as linhas de controle contêm 
uma ou mais condições de entradas e uma ou várias condições de saída. As 
condições de saída estão posicionadas ao lado direito do barramento de 
alimentação e são acionadas de acordo com o resultado lógico das instruções 
de controle da linha, que estão posicionadas no lado esquerdo da linha. 
Acompanhe o exemplo abaixo de um diagrama em LADDER, vamos utilizar o 
 
55 
 
exemplo anterior da figura 4.11 para visualizarmos o diagrama em linguagem 
LADDER. 
 
 
 
Figura 4.12 
 O programa principal do CLP, quando em operação, realiza o SCAN 
para verificação das linhas de controle, o ciclo de SCAN verifica os dados da 
tabela de imagem das entradas e compara com as instruções de controle da 
linha, se forem verdadeiras o dispositivo controlado é acionado, no exemplo 
uma saída, o ciclo de SCAN atualiza o dado na tabela de imagem das saídas, o 
ciclo de SCAN verifica linha a linha em frações de segundo e de controle e de 
acordo com os resultados lógicos obtidos atualiza os dados da tabela de 
imagem de saídas constantemente. 
 
 Vale lembrar que o ciclo de SCAN realiza essa varredura de forma 
contínua e cadenciada, seguindo os barramentos de controle de cima para 
baixo e da direita para a esquerda, por exemplo, se o ciclo de SCAN verifica 
que um estado de um dispositivo de controle é falso, o programa de varredura 
não continua a verificação na linha e passa a analisar a linha logo abaixo, se o 
dispositivo de controle estiver com o estado verdadeiro, continua a varredura 
da linha até verificar o estado do dispositivo controlado, e assim 
sucessivamente. 
 
 Para todos os dispositivos utilizados nos diagramas elétricos 
convencionais, como contatos, temporizadores, bobinas, contadores etc. 
Existem símbolos semelhantes na linguagem LADDER, esses símbolos são 
normalizados internacionalmente, porém os fabricantes podem criar blocos de 
controles avançados e utilizar símbolos próprios. Embora esses blocos podem 
ter funções semelhantes em CLPs de fabricantes diferentes, não 
necessariamente possuem a mesma simbologia, porém os dispositivos mais 
comuns como contatos abertos, contatos fechados, bobinas seguem um 
mesmo padrão. 
 
56 
 
 
4.4.1 Operador Normalmente Aberto 
 
 Esse operador é um operador genérico, pode representar um estado de 
uma entrada, ou estados de vários dispositivos, como botões, temporizadores, 
contadores, comparadores e relés auxiliares, possui uma condição de bit, ou 
seja, possui somente dois estados: verdadeiro (ligado), ou falso (desligado). 
Essa instrução requisita um local na memória do CLP, e sempre que estiver no 
estado verdadeiro (ligado) possui continuidade lógica, se for falsa a 
continuidade lógica é interrompida. 
 
 
 
Figura 4.13 
 
 Por exemplo: se conectarmos em uma das entradas do CLP um botão 
normalmente aberto, no programa do usuário teremos que atribuir um bit 
correspondente à entrada, e sempre que utilizarmos o sinal desse botão 
devemos selecionar uma instrução de bit normalmente aberto e atribuir junto 
com a instrução o endereço correspondente. Vamos imaginar que um botão 
(S1) do tipo normalmente aberto esteja conectado à entrada 1 de um CLP (I / 
1) e este botão quando pressionado acione uma lâmpada conectada à saída 2 
do mesmo CLP (O / 2). 
 
 
Figura 4.14 
 
57 
 
 
 
 Seguindo os princípios de programação LADDER, quando 
pressionarmos o botão S1, o estado verdadeiro correspondente à entrada 1 é 
gravado na tabela de imagem de entradas, assim quando o SCAN do CLP 
checar a instrução de bit correspondente à entrada 1, atribuída ao endereço I / 
1, a linha se torna verdadeira, assim o programa de varredura do CLP atribui 
um sinal verdadeiro à saída correspondente atribuída ao endereço O / 2 na 
tabela de imagem de saídas, portanto a lâmpada é acesa. 
 
 
Figura 4.15 
 
4.4.2 Instrução Normalmente Fechado 
 
 Essa instrução também é considerada um operador genérico, pode 
representar um estado de uma entrada de um ou vários dispositivos. Como a 
instrução normalmente aberto possui característica de bit, essa instrução 
requisita um local na memória do CLP, e sempre que estiver no estado 
verdadeiro (ligado) não possui continuidade lógica, se possuir estado falso 
(desligado) a continuidade lógica é estabelecida. Na prática possui a função 
lógica inversa à instrução de bit normalmente aberto. 
 
 
 
Figura 4.16 
 
 Utilizando o mesmo exemplo da figura 4.14, se ao invés de atribuirmos a 
instrução normalmente aberta ao sinal do botão S1 atribuirmos a instrução 
normalmente fechado, a lâmpada permanecerá acesa enquanto o botão S1 
não for pressionado, quando ele for pressionado a lâmpada é apagada, 
seguindo a definição do operador. Quando o estado da entrada for falso, o 
operador mantém a continuidade lógica, assim a linha é verdadeira e a 
 
58 
 
lâmpada é acesa, quando pressionamos o botão, a instrução se torna 
verdadeira e a condutividade lógica na linha é interrompida, apagando a 
lâmpada. 
 
 
Figura 4.17 
 
4.4.3 Instrução Energizar Bit 
 
 A instrução de energizar bit é aplicada para ligar ou desligar saídas 
digitais, relés auxiliares virtuais, energizar contadores e temporizadores etc. 
Essa instrução é referenciada como atribuição aos dispositivos controlados 
ditos anteriormente, e equivale a bobinas de contactores e relés auxiliares nos 
diagramas elétricos convencionais. 
 
 Quando as condições lógicas dos dispositivos que comandam essa 
instrução são verdadeiras, o bit correspondente é energizado, se essa 
instrução estiver associada a uma saída externa, ela é acionada, por outro lado 
se estiver associada a um registrador de bit (relé auxiliar virtual) ele é setado 
internamente nas memórias do CLP. 
 
 
 
 
 
Figura 4.18 
 
 
4.4.4 Instrução Energizar Bit com Retenção 
 
 A instrução energizar bit com retenção é uma derivação da instrução 
convencional vista no item anterior 4.4.3. Enquanto a instrução anterior é 
mantida em estado verdadeiro somente quando as condições da linha são 
verdadeiras, a instrução com retenção funciona da seguinte maneira: após 
 
59 
 
ocorrida a condição de energização, o bit se mantém ligado até que receba um 
comando para se desligar, esse comando deve ser dado em uma outra linha de 
controle e pode ser utilizado quantas vezes forem necessárias. E 
obrigatoriamente deve possuir uma condição de set e uma condição de reset 
do bit selecionado. 
 
 Esse tipo de instrução pode ser utilizado para circuitos que exijam 
contatos de selo, como os vistos nas figuras 4.14 e 4.15, substituindo a 
utilização de contatos auxiliares na lógica de controle. Vejamos os exemplos da 
figura 4.14 e 4.155 utilizando a função de energizar bit com retenção. 
 
 
Figura 4.19 
 
 Nesse caso, para se ligar a saída O/1 devemos tornar verdadeira a 
condição de controle por meio de I/1, assim o bit correspondente à saída O/1 é 
energizado (setado), após essa ocorrência o bit de controle I/1 pode se tornar 
falso que as condições referentes ao bit de saída O/1 continuam inalteradas. 
Para se desligar o bit correspondente à saída O/1 devemos tornar verdadeira a 
condição referente ao bit I/2, com esta condição verdadeira por pelo menos um 
ciclo de scan o bit O/1e desenergizado (resetado). 
 
 Essa função é descrita como sendo resultado de operadores do tipo Flip-
Flop comumente encontrados em circuitos eletrônicos. 
 
Sistema Unitronics Sistema Rockwell 
 
 
Figura 4.20 
 
60 
 
Na figura 4.20, visualizamos os operadores em programas comerciais, 
note que não existem diferenças significativas na simbologia utilizada. 
 
4.4.5 Combinações entre Operadores 
 
 Após definirmos os operadores básicos para linguagem de programação 
LADDER, podemos combinar os operadores de várias formas e com isso 
conseguir a função desejada para operação lógica. Os princípios da lógica 
booleana podem ser representados nestas combinações. 
 
 
 
Figura 4.21 
 
 As instruções de programação em série utilizam a lógica AND para 
conceber um estado lógico para saída. Imagine uma aplicação em que é 
necessário que o operador de uma prensa feche a porta de proteção do 
equipamento e pressione dois botões simultaneamente para que um motor 
possa ser acionado, o circuito demonstra que para que a condição do bit de 
saída seja verdadeira, é necessário que todos os operadores de controle da 
linha, Porta de Acesso, Botão 1 e Botão 2, sejam verdadeiros, assim existe 
condutividade lógica na linha e o bit de saída é acionado, liberando assim a 
ligação do motor de controle da prensa. 
 
 
 
61 
 
 
Figura 4.22 
 
 As instruções de programação em paralelo utilizam a lógica OR para 
conceber um estado lógico para saída. Imagine a aplicação em que é 
necessário acionar uma bomba d’água em dois locais diferentes, com o auxílio 
dessa lógica o operador pode realizar a tarefa de forma simples e prática 
acionando os botões 1 e 2 instalados em locais distintos. 
 
 Com essas combinações básicas, podemos conceber quase todos os 
tipos de circuitos de comandos elétricos utilizados nas indústrias, desde os 
mais simples como partir um motor de forma direta, até os mais complexos 
como controlar sistemas de nível, temperatura, e a partida de motores de 
grande potência com sistemas de partida especial. 
 
4.5 Blocos de Funções 
 
 Em função da dificuldade de representar os blocos de função mais 
avançada de forma precisa devido à grande quantidade de fabricantes, 
adotaremos daqui por diante um sistema simples e de fácil acesso chamado de 
“Vision”, fabricado pela empresa Unitronics®. Essa linha de produtos é 
bastante útil didaticamente, pois possui CLPs de baixo custo com integração a 
uma IHM, ou seja, temos dois produtos em um, um CLP e uma IHM, seu 
programa editor de código fonte é bastante intuitivo e pode ser encontrado de 
forma gratuita na Internet, ou em outra possibilidade; na aquisição do produto 
está incluída toda a documentação de software, além dos cabos de 
comunicação entre o computador e o dispositivo, o que normalmente não é 
disponibilizado por outros fabricantes de grande porte para sistemas de 
automação. 
 
 O software de edição do programa de usuário criado pela Unitronics® é 
o “Visilogic™”, que está disponível no site www.unitronics.com, esse software 
é parte integrante dos controladores linha Vision V120 , V 230 , V260 , V280 e 
V290. 
 
 Um outro software utilizado para exemplificar a linguagem utilizada é o 
produzido pela empresa Rockwell Automation®, o software chamado de 
RSLogix 500® é utilizado para edição e criação dos programas de usurário dos 
Controladores da família SLC500 e Micrologix®, produzidos pela empresa 
americana Allen Bradley®, esta linha de dispositivos abrange desde os micros 
CLPs até os CLPs modulares de grande porte. 
 
http://www.unitronics.com/
 
62 
 
 Vale lembrar que a sigla CLP é marca registrada do fabricante Allen 
Bradley, que foi uma das empresas pioneiras na fabricação desses 
dispositivos. 
 
 Para maiores informações acesse www.software.rockwell.com 
 
4.5.1 Instruções de Temporização 
 
 Em sistemas industriais os eletricistas contam com um dispositivo que 
auxilia nos circuitos que necessitam de intervalos de tempo pré-programados, 
esses dispositivos são utilizados para retardar a entrada de algum componente 
elétrico ou lógica de controle , são definidos como relés de tempo ou relés 
temporizadores. Esse dispositivo têm seu funcionamento bastante simplificado, 
ou seja, após o dispositivo ser energizado, passa a contar um intervalo de 
tempo e, após transcorrido esse tempo, aciona um relé auxiliar, o intervalo de 
tempo pode ser ajustado em um botão frontal no dispositivo. Os mais comuns 
variam de 1 a 30 segundos, mas também podem ser encontrados com 
intervalos de tempo que variam de alguns minutos até algumas horas. 
 Existem dois tipos de lógica de funcionamento para estes dispositivos, a 
primeira e mais comum é chamada de “Lógica com Retardo na Energização”, 
que significa que os contatos do relé auxiliar do dispositivo serão acionados 
quando o dispositivo é energizado e transcorrido o tempo pré-selecionado. 
Para voltar à condição original com o relé desligado, basta interromper o 
fornecimento de energia para o dispositivo. A segunda opção é chamada de 
“Lógica com Retardo na Desenergização”, que tem seu funcionamento inverso 
ao primeiro. Quando o dispositivo é energizado, o relé auxiliar é imediatamente 
acionado, e a contagem do tempo pré-selecionado é iniciada a partir da 
interrupção no fornecimento de energia para o dispositivo, e só após o término 
do tempo pré-programado o relé auxiliar do dispositivo é desligado. 
 
 Acompanhe o gráfico de tempos da figura 4.23 para identificar o 
funcionamento dos dois modelos. 
 
63 
 
 
Figura 4.23 
 
 A função de temporização também está presente nos programas dos 
CLPs e podem ser utilizados centenas de temporizadores diferentes no 
programa do usuário. Esses temporizadores utilizam bases de tempo mais 
precisas do que os relés temporizadores convencionais, em micros e pequenos 
CLPs está na ordem de décimos (0,01) de segundo, já nos CLPs de médio e 
grande porte apresentam temporizadores com resolução de centésimos (0,001) 
de segundo. 
 
 O símbolo utilizado para representar o bloco de temporizador em um 
programa de CLP pode variar de fabricante para fabricante, porém todos têm 
as mesmas características de acionamento, são elas: 
 
 Apresentam um bit para acionamento do bloco de função. 
 Apresentam um bit que é acionado no término de contagem de 
tempo. 
 Apresentam uma variável de oito ou dezesseis bits para escrita 
e/ou leitura do valor de temporização. 
 Apresentam uma variável de oito ou dezesseis bits para escrita 
e/ou leitura de valor de pré-set de temporização. 
 
 Como definimos, os símbolos gráficos para representar os blocos de 
função podem variar de acordo com fabricante. Assim por meio de um exemplo 
 
64 
 
prático, podemos representar essas diferenças e concluir que não é muito 
complicado compreender que os símbolos podem ser diferentes, mas os 
princípios básicos são os mesmos. 
 
 Exemplo: imagine um sistema no qual exista um botão ligado a uma 
entrada digital de um CLP e que quando é acionado após 5 segundos uma 
saída é energizada fazendo que uma lâmpada acenda, acompanhe: 
 
Sistema Unitronics™ 
 
 
Figura 4.24 
 
 Nesse exemplo o botão 1 está associado a um marcador de bit “MB 0”, 
que quando em estado verdadeiro aciona o Bit de controle do temporizador “TD 
0”, que, por sua vez, está com um tempo de pré-set ajustado para 5 segundos. 
Assim, quando o temporizador chegar ao final da contagem (5 seg) irá acionar 
o bit correspondente a seu estado, estando setado o bit de saída do 
temporizador “TD 0” a condição da linha se torna verdadeira e o marcador de 
bit MB 1 que está associado à saída da lâmpada se torna verdadeiro, 
acendendo a lâmpada. 
 
 Note que a resolução do temporizador TD 0 pode chegar a intervalos de 
0,01 seg, esta é a característica do sistema Unitronics™. 
 
 
 
 
 
 
 
 
 
65 
 
Sistema Allen Bradley / RockwellFigura 4.25 
 
 Nesse exemplo 2 o Botão_1 está associado a um bit “B3/0”, que, 
quando em estado verdadeiro, aciona o bloco de função “TON” (Temporizador 
com Retardo na Energização). Esse bloco de função está configurado com o 
endereço “T4:0”, que, por sua vez, está com um tempo de pré-set ajustado 
para 5 segundos. Assim quando o temporizador chegar ao final da contagem (5 
seg) irá acionar o bit “DN” correspondente ao seu estado de contagem, estando 
setado o bit “DN” do temporizador “T4:0” (endereçado como T4:0/DN) a 
condição da linha 0001 se torna verdadeira e a saída endereçada como “O:2/0” 
é acionada, acendendo a lâmpada. 
 
 A resolução do temporizador identificado como “T4:0” pode chegar até a 
casa dos 0,001 seg, dependendo do modelo de CPU utilizada, essa é a 
característica dos sistemas Allen Bradley™. 
 
 Nos dois exemplos a lógica de controle é a mesma, porém podemos 
notar as diferenças entre os símbolos utilizados, isso significa que o 
entendimento das funções e blocos básicos é fator primordial para que o 
usuário possa desenvolver programas, para qualquer fabricante de 
equipamento, bastando compreender somente a ferramenta de programação 
oferecida pelos fabricantes. 
 
4.5.2 Instruções de Contagem 
 
 A utilização de instrumentos de contagem mecânica ou eletrônica em 
máquinas e equipamentos também pode ser substituída por controles à base 
 
66 
 
de CLPs, como os temporizadores, os CLPs possuem inúmeras funções para 
substituir esses dispositivos, e com várias vantagens, como, por exemplo, 
velocidade de contagem elevada, possibilidade de se incrementar ou 
decrementar o mesmo contador, gravação de valores acumulados em memória 
não volátil, possibilidade de utilização dos valores acumulados em operações 
aritméticas e operações com comparadores etc. Essas funcionalidades são 
muito difíceis de se conseguir em um contador eletromecânico convencional. 
Como visto anteriormente, os símbolos que representam esse bloco de função 
pode variar de fabricante para fabricante, mas, de modo geral, todos possuem 
as seguintes interfaces de controle: 
 
 Apresentam um bit para acionamento do bloco de função. 
 Apresentam um bit que é acionado no término de contagem. 
 Apresentam uma variável de oito ou dezesseis bits para escrita 
e/ou leitura do valor de contagem. 
 Apresentam uma variável de oito ou dezesseis bits para escrita 
e/ou leitura de valor de pré-set de contagem. 
 
 O funcionamento desse bloco de função é bastante simples, basta que o 
bit de acionamento do bloco seja verdadeiro durante um intervalo de tempo (no 
mínimo 1 ciclo de Scan) para que seja incrementado ou decrementado o valor 
do acumulador. 
 
 Abaixo podemos visualizar dois exemplos de sistemas utilizando o bloco 
de função de contagem. 
 
 Exemplo: imagine a automação de um processo que esteja integrado a 
uma esteira transportadora de caixas, que faz a ligação de um setor de 
produção ao setor de expedição e estoque de uma certa empresa. Quando as 
caixas transportadas pela esteira passarem para área de expedição e estoque, 
um sensor de proximidade, que está posicionado de forma estratégica, envia 
um pulso a uma entrada de um CLP a cada caixa movimentada em sua face 
sensora. O valor da quantidade de caixas que passaram pela esteira é 
totalizado em um contador virtual dentro de um programa de um CLP, e o seu 
valor disponibilizado em uma tela de IHM, para que o supervisor do 
equipamento possa contabilizar o total de caixas produzidas no dia e enviadas 
ao setor de expedição e estoque da empresa. 
 
Sistema Unitronics™ 
 
 
67 
 
 
Figura 4.26 
 
 No exemplo 3 o sinal proveniente do sensor de proximidade está 
associado a um marcador de bit “MB 2”, que, quando em estado verdadeiro, 
durante no mínimo um ciclo de Scan, incrementa o valor no contador “C 0”, 
assim quando as caixas forem passando pela esteira e o sensor de 
proximidade enviar pulsos a cada caixa, teremos o valor da totalização 
registrado no contador “C 0”, e seu valor pode ser lido a partir de uma IHM. 
 
Sistema Allen Bradley / Rockwell 
 
 
Figura 4.27 
 
 No exemplo 4 o sinal proveniente do sensor de proximidade está 
associado a um bit “B3/2”, que, quando em estado verdadeiro, durante no 
mínimo um ciclo de scan, aciona o bloco de função “CTU” (Contador 
Crescente) que totaliza a quantidade de pulsos recebidos no registro “Accum” 
(Acumulador), e seu valor pode ser lido a partir de uma IHM. 
 
 Note que o valor de pré-set está zerado, isso significa que não utilizamos 
a função de contagem pré-programada. Se for necessário que a um certo valor 
 
68 
 
do acumulador um bit para alarme ou sinalização seja ligado, basta 
adicionarmos no pré-set o valor de contagem desejado. Assim, quando o valor 
for atingido, o bit de estado (DN) irá se tornar verdadeiro, assim poderíamos 
utilizar em outra posições do programa para acionamento de sinalização ou 
alarme. 
 
 Os blocos de contadores vistos acima são do tipo que apresentam 
contagem na forma crescente, ou seja, enquanto as condições da linha de 
controle permanecerem verdadeiras, o valor é incrementado no registro ACC 
(acumulador) do bloco de função, porém de forma idêntica temos os blocos de 
contagem de forma decrescente, ou seja, com as mesmas características dos 
blocos vistos acima, mas com a lógica de contagem decrescente. As ligações e 
os métodos de controle são os mesmos, apresentando diferenças somente na 
simbologia, acompanhe: 
 
 Sistema Unitronics™ Sistema Allen Bradley / Rockwell 
 
 
Figura 4.28 
4.5.3 Instruções de Comparação 
 
 Nos programas gerados com instruções de temporização e contagem, é 
comum a manipulação numérica das variáveis de tempo e contagem, assim os 
CLPs possuem recursos para que o usuário possa trabalhar e obter 
informações dessas variáveis de forma fácil e lógica. A utilização de 
comparadores numéricos facilita e auxilia na obtenção de circuitos de controles 
mais avançados. Esses comparadores, na maioria das aplicações, são 
capazes de manipular variáveis de 16 bits (65536 possibilidades), então 
podemos manipular grandes valores numéricos sem nos preocupar com o 
estouro numérico das variáveis no programa. 
 
 
 
 
 
 
 
 
 
69 
 
Os blocos de comparadores podem ser classificados em sete blocos distintos, 
são eles: 
 
 Comparador de Igualdade A = B 
 Comparador de Não Igual A < > B 
 Comparador de Menor A < B 
 Comparador de Maior A > B 
 Comparador de Menor Igual A < = B 
 Comparador de Maior Igual A > = B 
 Comparador de Range B < A > C 
 Os blocos comparadores possuem entradas para no mínimo duas 
variáveis que serão analisadas. Se o valor numérico das variáveis satisfizer as 
condições do bloco, a condutividade lógica da linha é garantida. Se a condição 
não for satisfeita, a condutividade lógica é interrompida, acompanhe: 
 
 
Figura 4.29 
 
 Quando a condição estabelecida pelo bit I/1 for verdadeira, o bloco 
comparador de igualdade passa a avaliar as condições numéricas dos registros 
A e B. Se os números contidos em A e B forem iguais, o bloco é verdadeiro e a 
condutividade lógica é estabelecida, fazendo que o bit associado à saída O/1 
seja energizado. Se os números contitos nos registros A e B não forem iguais, 
a condutividade lógica é interrompida e assim o bit associado à saída O/1 é 
desenergizado. 
 
 As variáveis utilizadas para preencher as entradas de A e B podem ser 
quaisquer valores inteiros que estejam disponíveis nos endereços de memória 
do sistema, isto é, podem ser valores de temporizadores, contadores, e 
resultados de operações aritméticas ou valores disponíveis dos módulos das 
entradas ou saídas analógicas (se o sistema possuir), dentre esses valores 
podemos destacar os registros do acumulador, valores de pré-set, valores 
correntes do contador e temporizador etc. 
 
 Alguns fabricantes permitemvalores negativos e positivos de 16 ou 32 
bits, outros permitem só valores positivos de 16 bits, CLPs de médio e grande 
 
70 
 
porte podem manipular além de números inteiros, números com ponto flutuante 
de 16 ou 32 bits de resolução. Antes de utilizar esses blocos de função, 
verifique junto à descrição da função quais os limites de valores estabelecidos 
pelo fabricante. 
 
 Acompanhe nas figuras 4.30 e 4.31 exemplos dos blocos de funções. 
 
Sistema Unitronics™ 
 
 
Figura 4.30 
 
 Na figura acima podemos identificar os sete blocos utilizados para 
instruções de comparação, igualdade (equal), diferente (not equal), menor (less 
than), menor igual (less equal), maior (greater than), maior igual (greater 
equal), range (in range), respectivamente. 
 
Sistema Allen Bradley / Rockwell 
 
 
71 
 
 
Figura 4.31 
 
 Os comparadores podem ser utilizados para inúmeras aplicações de 
controle, como o controle de temperatura de aquecimento de um forno, por 
exemplo. Imagine uma automação em que devemos controlar a temperatura de 
aquecimento de um conjunto de resistências elétricas de um forno que deve 
permanecer a uma temperatura de 150 ºC, para isso o projetista dimensionou 
a utilização de um Micro CLP e uma IHM, no programa criado pelo projetista, 
ele utilizou uma chave seletora ligada a uma das entradas digitais, para que o 
operador possa ligar ou desligar o sistema de aquecimento, utilizou duas 
lâmpadas ligadas às saídas digitais, uma para indicação de que o sistema está 
ligado e outra para informar que as resistências estão energizadas. O sensor 
de temperatura foi instalado em uma das entradas analógicas disponíveis no 
dispositivo, na IHM o projetista colocou a informação do valor de temperatura 
real instantânea do sistema e também colocou a informação de temperatura de 
Set Point do forno (150 ºC). 
 
 Nos diagramas abaixo, podemos acompanhar a evolução do programa 
de usuário desenvolvido para aplicação. O programa-fonte foi desenvolvido em 
dois programas diferentes, para que o leitor possa ter uma noção das 
 
72 
 
pequenas diferenças envolvidas com os programas de edição fornecidos por 
diferentes fabricantes. 
 
Sistema Unitronics™ 
 
 
 
 
 
Figura 4.32 
 
 
 
 
73 
 
O funcionamento do sistema é bastante simples, a chave seletora para ligar ou 
desligar o sistema de aquecimento foi atribuída ao bit “MB 0” , as saídas do 
sistema (a) resistência, foi atribuída ao bit “MB 1”, (b) Lâmpada 1 - Resistências 
Energizadas - foi atribuída ao bit “MB 2”, (c) Lâmpada 2 - Sistema de 
Aquecimento Ligado, foi atribuída ao bit “MB 3”, o sinal analógico proveniente 
do sensor de temperatura no interior do forno foi atribuído à Memória de Inteiro 
“MI 0” e o valor do Set Point foi atribuído ao endereço de memória de inteiro 
“MI 1”. 
 Para que o sistema funcione, o bit de controle “MB 1” deve ser 
verdadeiro. Nessa condição o operador ligou a chave seletora, assim a linha 
possui condutividade lógica até o ponto onde está posicionado o bloco 
comparador “menor igual”, esse bloco compara os valores de temperatura real 
instantânea do sistema e o valor de Set Point inserido pelo usuário. Se o valor 
de “MI 0” (Temp Real) for menor que o valor de “MI 1” (Set Point) isso indica 
que a temperatura do forno está menor que o valor estabelecido pelo usuário, 
assim o bloco permite a condutividade lógica, se essa condição prevalecer, o 
bit associado“MB 1” torna-se verdadeiro, acionando assim o conjunto de 
resistências, provocando o aquecimento do forno. As resistências estando 
ligadas, a temperatura se eleva, então o valor de “MI 0” torna-se igual ou maior 
que o valor de “MI 1” indicando que a temperatura atingiu o valor desejado, se 
essa condição ocorrer, o bloco interrompe a condutividade lógica e o bit “MB 1” 
é desligado, desenergizando assim o conjunto de resistências. Assim esse 
ciclo se repete infinitamente enquanto o bit de controle “MB 1” estiver ligado. 
 
 Note que lâmpada de indicação de sistema ligado está inserida em uma 
linha única, controlada pelo bit “MB 0”. Quando esse bit de controle for 
verdadeiro, a linha toda se torna verdadeira acionando assim o bit “MB 3”, 
acendendo a lâmpada e indicando que o sistema está ligado. Agora a 
indicação de resistência energizada está inserida juntamente com a linha de 
controle das resistências, essa ligação está representada por meio de uma 
ligação em paralelo (Lógica OR) com o bit “MB 1” que controla as resistências, 
portanto, quando as resistências estiverem ligadas, a lâmpada associada ao bit 
“MB 2” também estará ligada. A IHM (interface) está representando em forma 
gráfica os valores descritos nas memórias de inteiros (“MI 0” e “MI 1”), assim o 
operador pode visualizar os valores reais e valores de controle associados ao 
sistema. 
 
Sistema Allen Bradley / Rockwell 
 
 
74 
 
 
 
Figura 4.33 
 
 Verifique que na linguajem do fabricante Rockwell existem diferenças 
mínimas entre os gráficos, as diferenças se referem ao endereçamento dos bits 
de entradas e saídas. Embora possuam codificações diferentes, na prática 
executam as mesmas funções. 
 
4.5.4 Instruções Aritméticas 
 
 Como o princípio de operação dos CLPs baseia-se em grande parte em 
operações aritméticas, é claro que essas opções estão disponíveis para que o 
usuário possa utilizá-las em seus programas, ou seja, o programador possui à 
sua disposição as operações aritméticas básicas para execução de cálculos 
matemáticos em seu programa. Em micros e pequenos CLPs podemos 
encontrar as operações de adição, subtração, multiplicação e divisão, enquanto 
nos CLPs de médio e grande porte encontramos além das operações básicas, 
operações com operadores para extração de raiz quadrada, seno, co-seno , 
tangente, exponencial, dentre outras. 
 
 Com esses operadores o programador pode executar a maioria das 
operações necessárias a um projeto de automação, como por exemplo o 
cálculo de áreas e volumes, totalização de vazão, conversão entre unidades e 
demais coisas do gênero. 
 
 É interessante que o usuário verifique as limitações do CLP a ser 
utilizado, pois alguns são limitados em função da CPU, ou seja, o usuário 
 
75 
 
deverá verificar se a CPU pode realizar cálculos em oito, dezesseis ou trinta e 
dois bits, e ainda se a operações podem ser realizadas com ponto flutuante ou 
números negativos. Se isso for uma limitação, o programador deverá tomar 
certas precauções com as operações, porém nada de tão sério, somente 
alguns cuidados para que o resultado das operações não ultrapasse os limites 
numéricos da CPU. 
 
 Quando nos referimos a essas limitações, estamos, por exemplo, 
dizendo que se uma CPU trabalha com registradores de oito bits (256 
combinações), o usuário não poderá ter como resultado de uma adição valores 
maiores que 256. Se isso acontecer temos um estouro na contagem (overflow), 
em alguns CLPs esse estouro pode causar falha e parar o ciclo de scan do 
dispositivo, mas fique tranqüilo, a maioria dos CLPs do mercado trabalham na 
faixa de dezesseis bits ou mais de resolução, assim os limites passam a 
valores acima de sessenta e cinco milhões de combinações, que é o suficiente 
para 99% dos casos. 
 
Os símbolos gráficos desses blocos de funções também são bastante 
parecidos, com diferenças mínimas. Abaixo temos exemplos desses blocos de 
função. 
 
 
76 
 
Sistema 
Unitronics™
 
 
Figura 4.34 
 
 Podemos visualizar na figura 4.34 os símbolos gráficos que representam 
as operações aritméticas básicas disponíveis para que o programador possa 
criar funções ou lógicas de controle de acordo com a necessidade do projeto. 
Os blocos de função descritos acima representam: adição (ADD); subtração 
(SUB); multiplicação (MUL); divisão (DIV); raiz quadrada (SQRT); potenciação 
(Power); e por fim aos blocos de função trigonométricos: seno (SIN); co-seno 
(COS) e tangente(TAN). 
 
 Note que os operadores dos blocos básicos são do tipo “MI”, ou seja, 
são memórias de números inteiros, então os resultados obtidos são sempre 
inteiros. Se em alguma operação o valor de resposta apresentar ponto 
flutuante, ele é suprimido no resultado, porém os operadores trigonométricos 
apresentam operadores do tipo “MF”, ou seja, memória de Floats (números 
com ponto flutuante), assim o resultado dos cálculos obtidos é representado de 
 
77 
 
forma exata com todas os valores obtidos na operação. Se houver necessidade 
de obter os valores exatos nas operações básicas, o usuário tem à disposição 
outros blocos de função específicos para manipular os resultados completos 
das operações. 
 
* Atenção: essas particularidades se referem ao sistema Unitronics. Caso o 
usuário esteja utilizando um dispositivo de um fabricante diferente, deve 
verificar nas instruções do bloco de função. 
 
Sistema Allen Bradley / Rockwell 
 
 
Figura 4.35 
 
 Os blocos da figura 4.35 são representações do programa do fabricante 
Rockwell® Allen Bradley®, e se diferenciam em muito pouco do sistema visto 
anteriormente na figura 4.34, com as diferenças basicamente no 
endereçamento das variáveis, porém a metodologia de utilização é a mesma. 
 
 Agora, onde podemos, em uma aplicação industrial, aplicar a utilização 
de operações matemáticas? Muito simples, utilizando como base o exemplo 5 
onde criamos um controle de temperatura para um forno industrial, 
descrevemos um programa para ligar e desligar um conjunto de resistências 
baseadas na temperatura de Set Point informada pelo usuário. Agora, com 
base no conhecimento das instruções aritméticas, podemos criar facilmente 
 
78 
 
um circuito de controle que utilize a função de histerese, que é um recurso 
muito útil para esse tipo de controle: ela é que define quando o sistema deverá 
ser ligado novamente após um desligamento provocado pela situação de 
temperatura ideal no sistema. A histerese é expressa em valores percentuais, 
ou seja, quando definimos que um sistema de controle possui uma histerese de 
3 %, definimos que, após o circuito se desligar quando a temperatura real 
atingir o valor de Set Point (no exemplo 150 ºC), ele torna a ligar quando a 
temperatura real satisfaz a equação: 
 
Temperatura para religação < = Set Point – 3 % de histerese 
Sendo que: Set Point = 150 ºC 
 Histerese = Set Point x 3 % = 150 x 0.03 = 4,5 ºC histerese 
 Set Point – histerese: 150 – 4,5 = 145,5 ºC 
 
 O valor de histerese pode ser definido pelo usuário em qualquer faixa de 
percentagem, controladores universais apresentam esse valor em forma de 
percentagem ou já expressa na unidade da variável de processo (ºC), os 
valores mais usuais de histerese estão nas faixas de 1% a 5 %, contudo o valor 
pode ser ajustado de acordo com as necessidades do projeto. 
 
 Assim, com a utilização dos blocos matemáticos, podemos adicionar 
facilmente esse controle ao projeto proposto, acompanhe o desenvolvimento 
do programa: 
 
Sistema Unitronics™ 
 
 
 
Figura 4.36 
 
 Na primeira linha do programa, atribuímos a memória de bit MB 0 à 
chave seletora de operação do sistema. Quando o bit atribuído à chave 
seletora for verdadeiro, toda a linha se torna verdadeira, acionando assim os 
bits MB 4 e MB 3, o bit MB 4 tem a função de um relé auxiliar e determina se o 
sistema está ligado ou não. Esse bit será utilizado nas demais linhas do 
programa sempre que necessitarmos identificar se o sistema foi acionado ou 
não por parte do operador, o bit MB 3 está endereçado a uma saída digital. 
 
79 
 
Essa saída está ligada a uma lâmpada que traz a indicação visual ao operador 
do real estado do sistema. 
 
 
 
Figura 4.37 
 
 Na segunda linha de programação podemos visualizar o circuito 
responsável pela energização do conjunto de resistências. Se a condição de 
MB 4 for verdadeira, existe condutividade lógica na linha até o bloco de função 
do comparador Menor Igual, note que neste exemplo, diferente do anterior, o 
registro B não se refere mais ao valor do Set Point, mas sim ao valor agora 
determinado pelo cálculo da histerese, no caso 145,5 ºC. Então, para que o 
bloco se torne verdadeiro e permita a condutividade lógica, o valor real da 
temperatura deve ser menor que o valor 145,5 (resultado do cálculo de 
histerese), essa condição ocorre quando: (a) o sistema é ligado pela primeira 
vez, e o interior do forno está frio; ou (b) depois de o sistema ser desligado pelo 
controle de temperatura. 
 
 Note também que não é utilizada mais a função de bit simples para o 
acionamento da saída MB 1, agora está sendo utilizada a instrução de 
energizar bit com retenção, pois, quando a temperatura ultrapassar o valor do 
registro B (145,5 ºC) o bloco de instrução do comparador deixa de ser 
verdadeiro e bloqueia a condutividade lógica da linha, no entanto como o bit 
MB 1 já foi iniciado, ele permanece ligado até que receba o comando de Reset, 
que veremos nas linhas de programa a seguir. 
 
 
80 
 
 
Figura 4.38 
 
 Na linha de programa 3 identificamos o cálculo do valor de histerese, 
para o exemplo adotamos o valor de 3 %, entretanto outros valores podem ser 
atribuídos, inclusive com o acesso à inclusão desse valor via IHM. Assim o 
operador pode ajustar o valor de histerese de acordo com a sua necessidade. 
 
 Para encontrar o valor da histerese, utilizamos dois blocos matemáticos: 
o primeiro bloco de multiplicação (MUL F) com ponto flutuante, pois 
manipularemos valores com duas casas decimais, no exemplo 0,03 (3 %). O 
segundo, o bloco de subtração (SUB F) também com ponto flutuante, já que o 
valor que vamos subtrair também tem resolução de uma casa decimal. 
 
 Na instrução de multiplicação, o registro A está atribuído ao valor de Set 
Point e o registro B está atribuído ao valor em percentagem da histerese. Então 
o resultado desta operação é o valor em graus (ºC) da histerese, que aplicando 
a expressão: 
 
A x B = C 
MI 1 x F# = MF 2 
150 x 0,03 = 4,5 
 
 Com o resultado obtido de 4,5 armazenado no endereço “MF 2”, basta 
subtrair do valor do Set Point, que está armazenado no registro “MI 1” (150 ºC). 
Para esta operação, basta utilizar o bloco matemático de subtração (SUB F), 
representado pela expressão: 
A – B = C 
MI 1 – MF 2 = MF 3 
150 – 4,5 = 145,5 
 
 Assim obtemos o valor real da histerese do sistema no registro “MF 3”, 
valor obtido 145,5 ºC. 
 
81 
 
 
 Essa operação é necessária, pois se o operador optar por alterar o valor 
do Set Point, o valor da histerese é calculado automaticamente, mantendo a 
faixa sempre em 3% do valor programado de Set Point. 
 
 Verifique que o registro “MF 3” foi utilizado na linha 2 do programa, 
determinando em qual valor de temperatura o conjunto de resistências deve 
ser acionado. 
 
 Até esse ponto o programa já definiu três circuitos básicos: o circuito de 
habilitação do sistema, o circuito de energização do conjunto de resistências e 
o circuito de cálculo da histerese. Agora é necessário criar uma lógica para 
desligar o conjunto de resistências na condição de temperatura ideal, ou seja, 
quando a temperatura real for igual ou maior que a temperatura de Set Point, 
acompanhe: 
 
 
 
Figura 4.39 
 
 Na linha 4 do programa, definimos um comparador de Maior Igual, este 
bloco controla o reset do bit MB 1. Assim quando o valor do registro “A” 
(temperatura real) for maior que o valor do registro “B” (Set Point) o bloco se 
torna verdadeiro permitindo assim a condutividade lógica do circuito, essa 
condição indica que a temperatura atingiu o valor ideal do sistema. Se essa 
condição prevalecer, o bit “MB 1” é desligado e as resistências são 
desenergizadas. 
 
 Para que o bit “MB 1” volte a ser energizado religando as resistências, a 
temperatura deve ser menor ou igual ao valor de histerese, esse circuito foi 
definido na linha2 do programa , portanto o sistema funciona dessa forma 
infinitamente enquanto a chave seletora estiver ligada, ou seja, enquanto o bit 
“MB 4” for verdadeiro. 
 
 Por fim, acrescentaremos mais uma linha no programa, responsável pela 
indicação de resistência energizada, no exemplo 5 visto anteriormente, 
 
82 
 
atribuímos ao bit “MB 2” a saída digital correspondente a essa lâmpada, 
acompanhe: 
 
 
Exemplo 4.40 
 
A linha 5 do programa do usuário faz referência à saída correspondente 
à lâmpada de indicação de resistência ligada, o bit MB 2 atribuído a essa saída 
está sendo controlado pelo bit de acionamento da resistência. Assim, quando 
esse bit for verdadeiro, a saída correspondente à lâmpada também será 
verdadeira. 
 
 Os blocos de instruções vistos acima representam apenas um exemplo 
básico das funcionalidades de um sistema de automação baseado em CLP. 
Essas instruções são básicas e suficientes para que o programador possa 
desenvolver e solucionar a grande maioria das aplicações e problemas 
encontrados em ambiente industrial, essas instruções são encontradas em 
praticamente todos os tipos e modelos de CLPs fabricados atualmente, vale 
ressaltar que existem outras inúmeras funcionalidades e instruções específicas 
para controle avançado, com funcionalidades diferentes para cada dispositivo 
ou modelo encontrado atualmente no mercado. Cabe ao programador verificar 
junto ao equipamento as funcionalidades disponíveis e as limitações de cada 
equipamento. 
 
4.6. Programas em Linguagem de Instruções 
 
 A grande maioria dos projetistas preferem e elaboram programas para 
CLPs em linguagem do tipo LADDER, porém existe uma outra linguagem, 
chamada de linguagem de instruções, que faz a conversão dos símbolos 
gráficos utilizados na linguagem LADDER em mnemônicos de programação. 
Os mnemônicos são instruções em forma de texto que representam as 
instruções e blocos de função dos CLPs. Esses mnemônicos são utilizados em 
situações onde o projetista não dispõe de um terminal de computador para 
elaboração do programa de usuário, assim o projetista utiliza um HHP – Hand 
Held Programmer, que nada mais é do que um console de programação móvel 
e portátil que o projetista pode levar ao chão de fábrica para fazer alterações e 
atualizações na máquina sem ter que instalar um computador ao lado do 
equipamento. 
 
 A grande maioria dos programas fornecidos para elaboração dos 
diagramas em linguagem LADDER suportam também a linguagem em 
 
83 
 
instruções, e podem inclusive fazer a conversão de uma linguagem para outra 
de uma forma rápida e prática. Assim o programador pode optar por elaborar 
seu programa em qualquer uma das linguagens. Vale lembrar que essa 
conversão só é possível em um programa editor baseado PC, em um HHP só é 
possível a elaboração e a visualização dos programas na linguagem de 
instruções. 
 
 
 
Abaixo podemos visualizar alguns exemplos em uma tabela com os 
símbolos em linguagem LADDER e seu mnemônico correspondente em 
linguagem de instruções: 
 
 
 
 
Figura 4.41 
 
 Com a ajuda dessa tabela não é difícil fazer a conversão de um 
programa em linguagem LADDER para a linguagem de instruções. Um circuito 
simples como o de partida direta de um motor (figura 4.42) pode facilmente ser 
transladado para a linguagem de instruções, acompanhe: 
 
Circuito com selo, partida direta de um motor em linguagem LADDER 
 
 
84 
 
 
 
Figura 4.42 
 
 
 
 
Circuito com selo, partida direta de um motor em linguagem de instruções 
 
 
 
LDI 
 
I / 1 
 
 
AND 
 
I / 2 
 
 
OR 
 
O / 1 
 
 
OUT 
 
O / 1 
 
 Simples, não? Dessa forma são realizados programas utilizando a 
linguagem de instruções, essa linguagem é mais simples do parece e foi pelo 
seu uso que os primeiros CLPs forma programados. 
 
 Vale ressaltar que os mnemônicos apresentados acima são básicos. 
Todos os blocos de funções encontrados na linguagem tipo LADDER podem 
ser representados dessa forma, como, por exemplo, os temporizadores que 
são expressos pelas siglas “TON”, “TIMER” ou simplesmente com a sigla “T”, 
ou ainda os blocos aritméticos que poder ser representados por: Adição – ADD, 
Subtração - SUB, Multiplicação – MUL, Divisão – DIV. Os mnemônicos não são 
idênticos para todos os modelos de CLPs, os fabricantes diferentes podem não 
compartilhar dos mesmos códigos, assim o projetista deverá verificar a 
documentação do dispositivo antes de elaborar a aplicação.

Outros materiais