You are on page 1of 15

BLOCOS DE FUNO

Desde que as primeiras linguagens de programao foram desenvolvidas, houve um


considervel avano em termos de facilitao para que o usurio pudesse escrever mais
rapidamente o programa que atendesse s suas necessidades.
As primeiras linguagens disponveis, tambm chamadas de linguagem de primeira
gerao, dispunham apenas de um pequeno conjunto de instrues bsicas disponveis.
Assim, qualquer outra funo que o usurio desejasse deveria ser programada a partir deste
pequeno conjunto.
Com o passar dos anos, e medida que as novas geraes de linguagens de
programao para CLP foram sendo desenvolvidas, os fabricantes de CLP passaram a
incluir no conjunto de instrues uma srie de funes de alto nvel capazes de realizar
facilmente um sem nmero de tarefas. Algumas destas funes, inclusive j so
padronizadas pela norma IEC 61132-3.
Assim, neste captulo sero abordadas algumas destas funes mais usuais para a
programao de CLP.

Figura 1 - Tela de programao com ambiente selecionado para Bloco de Funes

Um Diagrama de Blocos de Funo, (Function Block Diagram) FBD uma


linguagem grfica para programao de CLP baseado na interpretao do comportamento
do sistema. Este comportamento pode ser descrito em termos do fluxo de sinais entre os
elementos do diagrama, caracterizando-se por uma grande semelhana com circuitos
eletrnicos digitais.
Os elementos da linguagem FBD devem ser interconectados por linhas de fluxo,
seguindo a conveno utilizada em geral para linguagens grficas. Nesta conveno o lado
esquerdo destinado para os sinais de entradas do bloco, enquanto o lado direito
reservado para os sinais de sada do bloco. A ilustrao a seguir exemplifica o uso de um
bloco para representar a operao lgica E entre duas variveis (BOTAO_1 e BOTAO_2)
cujo resultado dever acionar a varivel MOTOR.

Figura 2 - Exemplo de bloco de funo

Cada bloco tem um nmero fixo de pontos de conexo de entrada e de sada, e


representado por um simples retngulo A sada de um bloco pode ser conectada a entrada
de outro bloco. Os sinais se propagam da sada dos blocos para as entradas de outros blocos
e as sadas so atualizadas como um resultado do processamento dos blocos. A ilustrao a
seguir mostra duas redes de blocos usados para montar as lgicas de SET e de RESET da
varivel MOTOR. Observe que um sinal denominado TRUE (em ingls significa
verdadeiro) utilizado para indicar a presena permanente de um nvel lgico alto.

Figura 3 - Exemplo de conexes entre blocos

Num bloco de funo deve-se estar atento simbologia que se emprega para cada
sinal de entrada quanto ao tipo de sensibilidade. Conforme o caso pode ser sensvel a nvel

(alto ou baixo) ou por borda (de subida ou de descida). Veja a ilustrao a seguir, onde o
bloco OR sensvel: ao nvel lgico alto da varivel SINAL_1, ao nvel lgico baixo da
varivel SINAL_2, borda de subida da varivel SINAL_3, e borda de descida da
varivel SINAL_4.

Figura 4 - Tipos de sensibilidade dos sinais de entrada

Devido sua complexidade, algumas funes exigem um bloco para poderem ser
representadas, o caso de temporizadores, contadores e outras, conforme ser apresentado
nas sees seguintes.
BLOCOS BIESTVEIS
Este bloco de funo realiza a memorizao do estado da sada Q em nvel lgico 0 ou
1 dependendo da entrada que for ligada (SET ou RESET). Seu comportamento segue o
mesmo princpio do programa exemplo mostrado na Figura 29 no capitulo anterior, sendo
na verdade uma forma alternativa de se escrever o mesmo programa. Assim, A primeira vez
que a funo executada o valor da sada Q posto em 0. Ao se ligar a entrada SET o valor
da sada Q colocado em nvel 1, o sucessivo desligamento de SET no ocasiona o
desligamento da sada Q, ou seja, permanece memorizado. Para comutar a sada Q
novamente para nvel 0 ser preciso acionar a entrada RESET. Caso ambas as entradas
forem atuadas esta funo dar prioridade ao desligamento da sada. A figura abaixo mostra
a representao grfica de um bloco RS.

Figura 5 - Bloco biestvel RS

Um bloco de funo biestvel SR um bloco similar ao bloco RS, com a diferena


de que caso ambas as entradas forem atuadas esta funo dar prioridade ao desligamento
da sada. A figura abaixo mostra a representao grfica de um bloco SR.

Figura 6 - Bloco biestvel SR

TEMPORIZADORES
Os temporizadores constituem uma importantssima funo possvel de ser
implementada nos sistemas automatizados com CLP. Pode-se dizer que praticamente quase
todas as aplicaes empregam pelo menos uma das trs principais formas de
temporizadores. Estes tipos de temporizadores so denominados: Temporizador de atraso
na subida, Temporizador de atraso na descida e Temporizador de pulso, os quais so mais
bem detalhados a seguir. Observe que em todos os casos eles funcionam ligando uma sada
dependente de uma temporizao que tem incio definido pelo nvel lgico do sinal na
entrada.
a) Temporizador de Atraso de Subida (TON)

Figura 7 - Temporizador TON

Aps o incio do pulso, a sada fica em nvel baixo durante o tempo especificado na
entrada PT; depois ir para nvel alto enquanto a entrada IN no volte ao nvel baixo. A
sada ET apresenta o valor do tempo decorrido desde o incio da temporizao. Caso a
entrada IN seja colocada em nvel alto por um perodo de tempo inferior ao tempo
programado, a sada Q no atua. O diagrama temporal a seguir demonstra o comportamento
desta funo.

Figura 8 - Diagrama temporal do temporizador TON

b) Temporizador de atraso na descida TOF

Figura 9 - Temporizador TOF

Neste caso a sada vai para nvel alto durante todo o tempo em que a entrada IN fica
ligada, permanecendo ainda ligado por um tempo aps o desligamento da entrada IN. O
tempo de retardo para desligar definido pelo valor especificado na entrada PT. A sada ET
apresenta o valor do tempo decorrido desde o incio da temporizao. Caso a entrada IN
seja recolocada em nvel alto antes de ter decorrido a temporizao, a sada Q no chega a
desligar. O diagrama temporal a seguir demonstra o comportamento desta funo.

Figura 10 - Diagrama temporal para o temporizador TOF

c) Temporizador de pulso definido TP

Figura 11 - Temporizador TP

Neste caso, quando a entrada IN vai para nvel alto, a sada Q vai para nvel alto e
permanece neste nvel durante o tempo especificado na entrada PT, independente do estado
da entrada IN. A sada ET ser incrementada enquanto Q estiver em nvel alto. Ao final do
pulso, o tempo decorrido ser mantido at o incio do prximo pulso.

Figura 12 - Diagrama temporal para o temporizador TP

CONTADORES
Similarmente aos temporizadores, os contadores tambm so estruturas muito teis em
sistemas automatizados via CLP. Tipicamente eles podem ter estrutura de contagem
crescente, decrescente ou ainda bidirecional. H, de certa forma uma semelhana conceitual
entre contadores e temporizadores, fato que leva muitos estudantes iniciantes a confundir
seu uso em aplicaes diversas. A diferena fundamental entre contadores e temporizadores
que enquanto estes ltimos contabilizam tempo para atuarem suas sadas, os contadores
por sua vez contabilizam eventos que, geralmente independem do instante de tempo em
que ocorrem.
a) Contador crescente

Figura 13 - Contador crescente

Conta os pulsos (borda de subida) na entrada CU (Counter Up) at que um valor


mximo PV (Programmed Value) seja atingido. Neste instante o valor de contagem
congelado e a sada Q ativada. A entrada R (Reset) leva o valor do contador para zero. A
sada CV (Current Value) apresenta o valor atualizado do contador. Matematicamente a
funo de temporizao pode ser escrita como:
1, seCV PV
Q=

0, seCV < PV
CV (CV + 1) CU
R = 1 CV = 0
O diagrama temporal a seguir na Figura exemplifica o comportamento do contador
crescente no programa exemplo.

Nome da varivel
Conta
Pulso
Zera
Saida

Tipo
CTU
BOOL
BOOL
BOOL

Endereo
I0.0.0.0.1
I0.0.0.0.2
Q0.0.0.0.0

Figura 14 - Programa exemplo com contador crescente

Figura 15 - Comportamento do programa exemplo para contador crescente

Para o exemplo anterior deve-se observar que o valor de contagem zerado todas as
vezes que a entrada R do contador colocada em nvel alto. Por outro lado a sada Q do
cantador vai a nvel alto toda vez que o valor de contagem for maior ou igual a cinco, cujo
valor foi programado na entrada PT.
b) Contador decrescente

Figura 16 - Contador decrescente

Decrementa o valor de contagem a cada pulso (borda de subida) na entrada CD


(Counter Down) at atingir o valor zero. Neste instante a contagem interrompida e a sada
Q vai a nvel alto. A entrada LD (Load) usada para carregar o valor inicial descrito em PV
(Programmed Value). Observe que o valor inicial do contador zero e, por isto a sada Q
inicialmente posta em nvel alto at que a entrada LD seja acionada. A sada CV (Current
Value) apresenta o valor atualizado do contador. Matematicamente a funo de
temporizao pode ser escrita como:
1, seCV 0
Q=

0, seCV > 0
CV (CV 1) CD
LD = 1 CV = PV

O diagrama temporal a seguir exemplifica o comportamento do contador


decrescente.
c) Contador bidirecional

Figura 17 - Contador bidirecional

Incrementa o valor de contagem a cada pulso (borda de subida) em CU (Counter


Up) e decrementa este mesmo valor de contagem a cada pulso (borda de subida) em CD
(Counter Down). A entrada R (Reset) zera o valor do contador, enquanto a entrada LD
(Load) carrega o mesmo com um valor inicial descrito em PV (Programmed Value). Toda
vez que o valor de contagem atingir o valor PV a sada QU colocada em nvel alto. E,
toda vez que o valor de contagem cair a zero a sada QD colocado em nvel alto. A sada
CV (Current Value) apresenta o valor atualizado do contador. Matematicamente a funo
de temporizao pode ser escrita como:
1, seCV PV
QU =

0, seCV < PV
1, seCV 0
QD =

0, seCV > 0
CV (CV + 1) CU
CV (CV 1) CD
R = 1 CV = 0
LD = 1 CV = PV
DETECTORES DE BORDA
Um bloco de deteco de borda realiza a constante monitorao do estado da entrada
afim de dedetctar o exato instante em que a mesma transiciona de 0 para 1, caso se trate de
uma funo R_TRIG (Rising Edge Trigger), ou ento, detectar o exato instante em que a

mesma transiciona de 1 para 0, caso se trate de uma funo F_TRIG (Falling Edge
Trigger). Em ambos os casos esta funo ir ligar a sada por apenas um intervalo do ciclo
de varredura a fim de sinalizar a ocorrncia da borda. Abaixo tem-se o diagrama de blocos
desta funo e, a seguir v-se um exemplo de seu comportamento atravs do diagrama
temporal.

Figura 18 - Blocos detectores de borda

Nome da varivel
Subiu
Desceu
Entrada
Memoria

Tipo
R_TRIG
F_TRIG
BOOL
BOOL

Endereo

I0.0.0.0.1
M0.0.0.0.0

Figura 19 - Programa utilizando detectores de borda

Figura 20 - Diagrama temporal do exemplo com detectores de borda

REGISTRADORES
Os registros so conjuntos de bits agrupados de forma a configurar uma das cadeias
descritas no Quadro 5 do captulo 1. Independente do tipo de dado que representam, estas

cadeias podem ser operadas por funes de grande utilidade na programao de mquinas.
Entre estas funes destacam-se as rotaes e deslocamentos de registros.
Uma rotao de registro consiste em deslocar direita ou esquerda todos os bits do
registro de forma como se fosse um anel fechado, onde o primeiro bit recebe o contedo do
ltimo bit. No exemplo a seguir mostrado a rotao direita (e logo aps) esquerda de
uma cadeia de 8 bits.
Cadeia Inicial

Rotao esquerda

Rotao direita

Por outro lado o deslocamento de um registro consiste em deslocar direita ou


esquerda todos os bits do registro de forma como se fosse um anel aberto, o bit da
extremidade perdido. No exemplo a seguir mostrado a rotao direita (e logo aps)
esquerda de uma cadeia de 8 bits.
Cadeia Inicial

Deslocamento esquerda

Deslocamento direita

Uma caracterstica peculiar das operaes de deslocamento refere-se ao fato que, caso a
cadeia represente um nmero inteiro sem sinal, deslocar esquerda equivale a uma
multiplicao por 2 e, deslocar direita equivale a uma diviso por dois. Para o caso do
exemplo anterior a cadeia inicial representa o nmero 114, ento facilmente se verifica que
a nova cadeia deslocada esquerda representa o nmero 228, enquanto nova cadeia
deslocada direita representa o nmero 57. As representaes para todos os blocos de
deslocamento e de rotao esto apresentadas nas quatro ilustraes a seguir.
a) Rotao esquerda

Figura 21 - Bloco de funo para rotacionar esquerda

b) Rotao direita

Figura 22 - Bloco de funo para rotacionar direita

c) Deslocamento esquerda

Figura 23 - Bloco de funo para deslocar esquerda

d) Deslocamento direita

Figura 24 - Bloco de funo para deslocar direita

COMPARADORES
Os blocos de funes para comparaes so capazes de identificar o resultado de um
teste booleano a fim de verificar uma das seguintes relaes entre dois operandos:
Relao de comparao
Igual
Diferente
Menor
Menor ou igual
Maior
Maior ou igual

Smbolo
=

<

>

Quadro 1 - Comparadores relacionais

Mnemnico
EQ
NE
LT
LE
GT
GE

Caso a funo relacional avaliada resulte verdadeira ento a varivel de sada


colocada em nvel alto. Os seis blocos de comparao esto apresentados na figura abaixo.

Figura 25 - Blocos de funo: comparadores relacionais

You might also like