2- CLP – Lendo o RPM de um cooler

Lendo a rotação de um cooler no CLP

1- Proposta

Este post mostra dois programas Ladder comentados que eu fiz para ler a rotação de um cooler e apresentar na IHM do CLP, Unitronics Vision 350-J-T2, nesse caso.

Se você curtir esse artigo, e ele der um adianto no seu trampo, não esqueça de dar uns cliques nos anúncios para ver o que os anunciantes tem para te oferecer. Vou ficar muito contente.

O primeiro exemplo de programa utiliza as funções incorporadas do CLP, é menor e tem poucas configurações. Já na segunda opção eu procurei utilizar blocos Ladder simples pensando na portabilidade da solução para outros CLPs, bem como facilitar que um desenvolvedor adeque a solução de acordo com suas necessidades.

Longe de querer colocar uma pedra sobre o assunto, comentários, sugestões e correções são bem-vindas.

2- Cooler de 3 fios e Driver:

Para quem acompanhou o artigo “Debugando um cooler de 3 fios” viu vários tópicos como: princípio de funcionamento do cooler, como faz para polarizar o tacômetro do cooler, bem como foi apresentada uma interface para que o sinal seja injetado no CLP, cujo diagrama esquemático (rev1) segue abaixo na figura 1 e a figura 2 mostra como seria a placa de circuito impresso do driver, extremamente simples e capaz de suportar ventiladores de 12 e 24 volts.

Figura 1 – Driver do fan cooler
Figura 2 – Driver do cooler – rev 1

3- Sinal PLC input:

Conforme já dito no artigo  “Debugando um cooler de 3 fios“, o driver do sinal PLC_Input foi concebido considerando que o CLP está com suas entradas configuradas para operar no modo PNP, ou seja, 24Volts significa nível lógico ‘1’.

Embora o sinal PLC_Input consiga excitar a entrada do CLP, temos que lembrar que ele opera em frequências que podem variar de 0Hz até a ordem de 250Hz, portanto a entrada do CLP também deve ser configurada para operar no modo HSC – “High Speed Counter”, que é o modo de alta velocidade.

Detalhando um pouco mais, considerando que o cooler gera 2 pulsos a cada rotação ->veja esse vídeo aqui<-, se ele estiver à 7500 RPM teríamos 15000 pulsos por minuto ou 250 pulsos por segundo que é 250 Hertz.

7500 RPM X 2 pulsos = 15000 pulsos por minuto

15000 pulsos por minuto/60 segundos = 250 pulsos por segundo

250 pulsos por segundo = 250Hz

Para configurar a entrada de alta velocidade no CLP Vision V35o que tenho, essa configuração é feita na tela do projeto conforme print screen abaixo, figura 3:

Figura 3 – Configuração do HSC

Neste exemplo eu estou configurando a entrada I0 e I1 no modo de alta velocidade e associando o registro ‘MI18’ com o contador HSC e o registro ‘MI19’ com o indicador de frequência.

Os passos básicos de operação do software de configuração do hardware foram omitidos, mesmo porque eles estão bem descritos nos manuais da Unitronics.

Procedendo com a configuração acima, da figura 3, a entrada I0 do CLP está pronta para receber e processar o sinal PLC_Input.

4- Ladder:

Conforme dito inicialmente, são dois programas Ladder. A primeira opção utiliza as funções incorporadas do CLP que facilita muito a leitura do RPM enquanto que a segunda opção utiliza blocos Ladder básicos e mostra passo a passo como se faz a conversão do sinal PLC_Input em RPM, podendo ser utilizada em outras aplicações.

4.1- Primeira opção:

Nessa opção, basta ler o valor da variável ‘MI19’ que é a frequência do sinal PLC_Input e multiplicar por 30. Simples assim. O Ladder da figura 4 abaixo faz isso. O resultado é o valor do RPM da ventoinha, que é armazenado na variável ‘MI20’.

Figura 4 – Modo fácil de ler o RPM

Como o cooler gera dois pulsos a cada rotação, a frequência gerada que aparece em ‘MI19’  corresponde ao dobro de rotações por segundo. Multiplicando por 30 dá a rotação por minuto. Só isso 🙂

 4.2- Segunda opção:

Nessa opção o valor da rotação da ventoinha será extraído a partir da leitura do contador de alta velocidade (HSC) que é o valor armazenado na variável ‘MI18’.

4.2.1- Entendendo a variável MI18:

‘MI18’ é um registrador de 16 bits que de acordo com o manual do fabricante pode assumir valores entre -32768 e 32767. À medida que o ventilador funciona, os pulsos do tacômetro (fio amarelo) são contados pela variável ‘MI18’.

O contador ‘MI18’ começa a contar a partir de ‘0’, vai incrementando até atingir o valor 32767. Ao ser incrementado novamente, ‘MI18’ assume o valor -32768 e continua incrementando até chegar no valor 32767, repetindo o ciclo indefinidamente. Mais adiante será abordado com mais detalhes essa transição de 32767 para -32768 pois trata-se de um evento que precisa ser tratado no programa Ladder para não dar erro na leitura do RPM.

Figura 5 – Registro MI de 16 bits

Como sabemos que o ventilador dá dois pulsos a cada volta, logicamente ‘MI18’ será incrementado duas vezes a cada rotação do ventilador.

4.2.2- Decodificando o sinal da ventoinha:

Para capturar o RPM da ventoinha, basta contar quantos pulsos ocorrem em um determinado intervalo de tempo e fazer uma conta simples. Nesse caso a base de tempo adotada será de um segundo. Se contarmos 130 pulsos sendo gerados pela ventoinha em um segundo, temos a frequência de 130Hz que corresponde a 3900 RPM que nada mais é que 130 pulsos multiplicado por 30 (lembre que a ventoinha dá dois pulsos por rotação).

A figura 6 mostra o diagrama em blocos da lógica Ladder que será descrita à seguir.

Figura 6 – Diagrama em blocos Ladder
4.2.3- Temporizador:

Este bloco de código mostra a construção do circuito de sincronismo para comandar o ‘shutter’. Trata-se de um par de temporizadores configurados para operar em modo astável.

Conforme figura 7, as nets 1 e 2 servem para evitar o estado de ‘race condition’.

Caso as bobinas de ‘MB13’ e ‘MB14’ assumam o mesmo estado, ligada ou desligada, essas nets setam as bobinas de ‘MB13’ e ‘MB14’ para valores opostos.

Figura 7 – Evitando race condition

Conforme figura 8, temos as nets 3 e 4 com ‘MB13’ e ‘MB14’ trabalhando em modo espelhado. Se ‘MB14’ está ligado, ‘MB13’ está desligado e vice-versa. ‘TD5’ e ‘TD6’ são dois temporizadores de atraso, ou seja, quando suas bobinas são energizadas elas demoram um tempo para acionar seus contatos. Os contatos de ‘TD5’ e ‘TD6’ acionam as bobinas de ‘MB13’ e ‘MB14’ como veremos nas nets 5 e 6. O sinal de saída pode ser retirado dos contatos ‘MB13’ e ou ‘MB14’.

Figura 8 – Temporizador trabalhando em modo espelhado.

Conforme a figura 9, as nets 5 e 6 mostram os contatos dos temporizadores de retardo ‘TD5’ e ‘TD6’ que são responsáveis por comutar as bobinas ‘MB13’ e ‘MB14’.

Quando o temporizador ‘TD5’ ou ‘TD6’ atinge o tempo limite de 0,5 segundos, a respectiva chave se fecha.

A chave de ‘TD5’ provoca a energização da bobina ‘MB14’ (set) e o desligamento da bobina ‘MB13’ (reset) e a chave de ‘TD6’ provoca a energização da bobina de ‘MB13’ (set) e o desligamento da bobina de ‘MB14’ (reset).

Essa interligação garante que ‘MB13’ e ‘MB14’ sempre estejam em estado opostos, garantindo que o sistema oscile.

Figura 9 – Alternando de estado as bobinas MB13 e MB14
4.2.4- Leitor de pulsos:

A rotina do leitor de pulsos ou ‘shutter’ é a responsável por coletar do registro ‘MI18’ as duas leituras necessárias para se calcular a frequência gerada pelo tacômetro do cooler.

‘MB13’ é o sinal do temporizador que vai para nível lógico ‘1’ a cada segundo, habilitando a leitura do contador de alta velocidade. Conforme mostra a figura 10, quando ‘MB13’ vai para nível lógico ‘1’, um pulso é gerado fazendo com que o valor ‘MI High’ de ‘MI21’ seja transferido para ‘MI Low’ no registro ‘MI22’, liberando ‘MI High’ para ser sobre escrita.

Na figura 10 – net 2, ao mesmo tempo ‘MB13’ está acionando o temporizador de atraso ‘TD7’ que está evitando que o sinal de ‘MB13’ chegue imediatamente na net 3.

Na net3 figura 10, quando expira o prazo de ‘TD7’, um pulso é gerado forçando o armazenamento de ‘MI18’ na variável ‘MI High’, ‘MI21’.

Uma vez terminado esse ciclo, temos o valor anterior em ‘MI22’, ‘MI Low’ e o valor atual em ‘MI21’, ‘MI High’ que serão processados a seguir na etapa do cálculo da frequência.

Figura 10 – Leitor de pulsos ‘shutter’
4.2.5- Cálculo da frequência:

Após a leitura dos pulsos do contador HSC, é feito o cálculo da frequência.

A net 1 da figura 11 calcula o valor quando ‘MI High’ é maior que ‘MI Low’, bastando uma simples subtração sendo que o resultado é a frequência e é armazenado na variável ‘MI23’. A net 3 trata a condição de zero RPM.

A net 2 da figura 11 trata a condição de leitura na qual ‘MI High’ é menor que ‘MI Low’. Isso acontece quando uma amostragem de ‘MI Low’ ocorre antes da transição para o número negativo e a amostragem de ‘MI High’ ocorre após a transição para o número negativo. Nessa condição ‘MI High’ fica menor que ‘MI Low’ por conta do comportamento da variável ‘MI18’ ao ser incrementada, conforme abordado na figura 5.

Como essa condição acontece somente na virada da variável ‘MI18’, uma opção mais simples seria simplesmente não fazer o cálculo da frequência quando ‘MI High’ é menor que ‘MI Low’, bastando excluir a net 3.

Figura 11 – Cálculo da frequência

A partir do momento que temos o valor da frequência na variável ‘MI23’, basta multiplicá-lo por 30 para se conseguir o valor do RPM da ventoinha. conforme figura 12 ao lado

Figura 12 – Calculando o RPM
4.2.6- Configurando a IHM:

O CLP possui IHM incorporada e abaixo segue o print screen de algumas telas de configuração. Não se trata de uma tarefa difícil, basta colocar os elementos gráficos na tela, associar as variáveis e definir os limites para troca de cor dos elementos gráficos em uma ou outra escala mais elaborada.

Figura 13 – Tela de configuração da IHM

5- Considerações finais.

Espero ter ajudado e que seja útil a quem esteja estudando o assunto. Como disse inicialmente, não estou colocando um ponto final no assunto, meu texto pode ter imperfeições etc e tal e claro, comentários correções e sugestões são bem vindas,

Caso você queira estudar o código fonte, ele está disponível para download neste link ->aqui<- e a plataforma de programação Unitronics Vision OPLC IDE está disponível para download gratuíto no site da Unitronics clicando ->aqui<-.

Grande abraço e até a próxima

By Renato de Pierri

26/Dezembro/2015

Last updated by at .

Deixe um comentário