Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Page 1
Introduo
PLCs (Circuitos Lgicos Programveis) so geralmente programados em lgica ladder. Isso porqu os PLCs originalmente substituram sistemas de controle baseados em lgica de rels, e quarenta anos depois, ainda permanecemos utilizando esta linguagem. Um PLC, assim como um microprocessador, executa uma lista de instrues em seqncia. Ferramentas ladder deixam isso transparente; voc pode programar o PLC ligando os contatos de rels e bobinas na tela, e o interpretador PLC ir simular o circuito que voc desenhou. Alguns contatos de rels podem ser ligados a sinais de entrada reais; Algumas das bobinas podem ser ligadas a sadas. Desta forma, voc pode fazer a simulao de seu circuito e interagir com outros dispositivos, e at controlar coisas. Este o objetivo. Na verdade ele mais amplo do que isso, porque voc pode incorporar temporizadores e contadores e operaes aritmticas que no poderiam ser (facilmente) executados somente com rels convencionais. O projeto do circuito ainda til no s porque ele intuitivo, mas tambm porque abstrai facilmente a concorrncia. Isso funciona assim:
|| Xa Xb Yout || 1 ||-------] [------+-------] [------+-------( )-------|| || | | || || | Xc | || || +-------]/[------+ ||
Isto um simples trecho de uma lgica de combinaes. Existem os termos de entrada , Xa, Xb e Xc. Existem termos de sada: Yout. A expresso Yout := Xa e (Xb ou (no Xc)). Isso faz mais sentido se voc pensar em Xa e Xb como rels de contato NA (normalmente aberto), Xc como um rel de contato NF (normalmente fechado) e Yout como uma bobina de um rel ou contactora. Claro que podemos encontrar circuitos mais complexos, como o que segue:
|| || || Asetpoint || ||-------------------------------------{READ ADC}----|| || || || Atemperature || ||-------------------------------------{READ ADC}----|| || || || || || || || || || {SUB min_temp :=} || ||------------------------{ Asetpoint - 20 }--------|| || || || {ADD max_temp :=} || ||------------------------{ Asetpoint + 20 }--------|| || || || || || || || || ||[Atemperature >] Yheater || ||[ max_temp ]+------------------------(R)-------|| || | || || Xenable | || ||-------]/[------+ || || || ||[Atemperature <] Xenable Yheater || ||[ min_temp ]--------] [--------------(S)-------|| || || || || || || || || || {SUB check_temp :=} || ||-----------------------{ Asetpoint - 30 }-------||
http://cq.cx/ladder-pt.html
08/09/2012 08:41:11
Page 2
Trata-se de um simples termostato. H duas entradas analgicas; uma delas para o set point, para que seja possvel, por exemplo, ligar um potencimetro para o usurio definir a temperatura desejada. A outra usada para medies de temperatura, conectado a um sensor de temperatura baseado em semicondutores, ou um termopar com interface apropriada. Existe uma sada digital, Yheater. Isso pode ser usado para controlar um elemento de aquecimento, atravs de um comutador apropriado (um TRIAC, ou um rel, ou um rel de estado slido, ou seja o que for). O ciclo foi fechado com uma simples histerese. Nos definimos mais ou menos 20 unidades do ADC para histerese. Isso significa que quando a temperatura cai abaixo (setpoint - 20), ser ligado o aquecimento. e quando isso ultrapassar (setpoint + 20), o aquecimento ser desligado. Eu ainda acresci algumas coisinhas. Primeiramente, h uma entrada de ativao: o aquecedor forado a desligar quando Xenable est em nvel baixo. Eu tambm adicionei uma lmpada indicadora, Yis_hot, para indicar que a temperatura est na faixa pretendida. Isso feito de modo a comparar continuamente com o limite imposto (setpoint-20) de forma que a luz no fique piscando nos ciclos normais do termostato. Este um exemplo trivial, mas deve ficar claro que a linguagem bastante expressiva. Logica ladder no uma linguagem de propsito geral, mas uma linguagem "Turing-completa", aceita na industria, e, para uma classe limitada de problemas (orientados a controle), surpreendentemente conveniente.
http://cq.cx/ladder-pt.html
08/09/2012 08:41:11
Page 3
Ento voc pode testar o programa simulando-o em tempo real. O programa aparecera na tela com os elementos ativados (ligados) representados por colchetes em uma cor mais intensa, o que torna fcil a depurao. O estado das variveis mostrado na parte de baixo da tela, na lista de entradas e sadas (I/O list).
http://cq.cx/ladder-pt.html
08/09/2012 08:41:11
Page 4
Depois do programa ter funcionado na simulao, voc pode associar pinos para as entradas e sadas, gerar o cdigo PIC ou AVR. A gerao do cdigo no difcil. Para o AVR, um bom alocador de registradores prover uma maior velocidade. Se voc quer ter uma otimizao de cdigo ainda mais apurada, poder aplicar algumas regras de reduo de algoritmos, e talvez reduo de estados tambm. Isso seria muito mais difcil. Mesmo ignorando isso, meu cdigo gerador para os AVRs muito pobre. O "back end" AVR ainda gera cdigo PIC... por exemplo, ele no tira vantagem do fato do AVR ter mais de um registrador. Muitos dos cdigos gerados ficam pouco otimizados. O "back end" para PIC melhor, e no muito grande. Mas nada disso importa muito se voc estiver tentando rodar algumas dezenas de degraus de uma lgica ladder com tempo de ciclo rpido. H suporte para conversor A/D, unidade PWM e UART nos microcontroladores utilizados. Isso significa que voc pode escrever lgica ladder que leia uma entrada analgica, e que possa enviar e receber caracteres pela serial (por exemplo, para um PC, se voc adicionar um MAX232, ou um display LCD de caracteres). Isso possvel mandando seqncia de caracteres atravs da serial, assim como o valor de variveis inteiras, como texto ASCII. E por ltimo, fora adicionado suporte a variveis em EEPROM; Voc pode indicar que uma varivel especfica ir ser salva automaticamente em uma rea de memria no voltil, que ser mantida ao se desconectar a energia.
http://cq.cx/ladder-pt.html
08/09/2012 08:41:11
Page 5
At agora, tenho recebido muito poucos relatos de erros, em comparao com o nmero de pessoas com perguntas e dvidas. Existe ainda uma grande possibilidade de defeitos, especialmente nos microcontroladores que no tenho fisicamente (e portanto, no podemos testar). Certamente, no use o LDmicro para alguma aplicao segura ou crtica, ou em algo que possa se torar caro se isso falhar. Com citado anteriormente, o cdigo gerado est longe do "otimo". Tambm, nem toda a memria RAM nos dispositivos PIC16 est disponvel para o programa na lgica ladder. Isso porque no implementei muito cdigo para suporte a paginao. Eu fiz, no entanto, suporte para a memria de paginao do programa, para permitir acesso a memria ROM nos PIC16 acima de 2k.
Download (instalao)
O programa testado sobre Windows XP. Relatos informais sugerem que ele pode trabalhar sobre windows 98, a sobre o Wine. O arquivo de download um arquivo .exe; no h outro arquivo requerido, e no h arquivo de instalao. Salve-o em algum lugar no seu computer, e executeo. O manual est includo no arquivo .exe, mas voc pode realizar download separadamente se voc desejar. O compilador ir gerar arquivos no formato Intel IHEX. Muitos dos softwares programadores que eu tenho usam este formato. Naturalmente voc ir precisar de um programador para transferir o programa para a memria do microcontrolador. Para os AVRs, eu recomendo o tipo STK300, paralelo, como o Olimex. Para os PICs, eu recomendo o Microchip PICkit 2, como o disponvel nesta loja virtual. Agradecemos relatrios de erros. Os seguintes microcontroladores foram testados e so suportados: PIC16F877 PIC16F876 PIC16F628 ATmega64 ATmega128 Os microcontroladores abaixo so suportados, mas no foram testados; eles devem funcionar, mas no h garantia. Se voc testar, e isso funcionar adequadamente, entre em contato comunicando. Ns agradecemos. PIC16F88 PIC16F819 ATmega162 ATmega32 ATmega16 ATmega8 O arquivo ladder tambm possvel se gerar cdigo C. Isso menos conveniente, mas voc pode usar isso em algum processador se voc possuir um compilador C. LDmicro pode gerar um cdigo interpretvel. Se estiver escrevendo um interpretador voc pode usa-lo para gerar o cdigo ladder para outro tipo de dispositivo. No h mita documentao sobre isso, mas eu constru um interpretador simples em linguagem C bastante portvel. As compilaes so disponveis em diversas lnguas: ldmicro.exe (English) ldmicro-de.exe (Deutsch; thanks to Heinz Ullrich Noell) ldmicro-fr.exe (Franais; thanks to Marcel Vaufleury) ldmicro-es.exe (Espaol; thanks to Jose Pascual) E o cdigo fonte, e vrios outros arquivos, tambm esto disponveis para download. Este programa pode ser distribudo sob os termos da GPL Version 3. ldmicro-rel1.7.zip (fonte, release 1.7) ldmicro.txt (manual) caractersticas / histrico de erros Exemplo: um semforo simples Exemplo: display de 7 segmentos Exemplo: hello, world;' enviado pela porta serial Verses antigas esto disponveis: ldmicro-rel1.6.zip (fonte, release 1.6) (boto direito para salvar qualquer um destes arquivos.) Por favor, relate qualquer defeito. Este um software livre, sem nenhum departamento responsvel pelo controle de qualidade. Eu mesmo no tenho o hardware para testar a maioria dos dispositivos. Um erro no informado no poder ser corrigido. Tenho um tutorial, no qual eu descrevo como gerar um simples diagrama ladder, simul-lo e ento gerar o arquivo IHEX e program-lo no PIC. Esta provavelmente a maneira mais fcil de comear a usar este software.
http://cq.cx/ladder-pt.html
08/09/2012 08:41:11
Lgica Ladder para microcontroladores PIC and AVR Dezembro de 2007, Seattle.
Page 6
http://cq.cx/ladder-pt.html
08/09/2012 08:41:11