You are on page 1of 24

Dicas e tcnicas avanadas para programao de CLPs

Documento nmero: 3.0018.01.00 Outubro de 2010

Dicas e tcnicas avanadas para programao de CLPs

ndice
Introduo............................................................................................3 Dicas de boas prticas.............................................................................4 Utilizando nomes ao invs de cdigos secretos........................................4 Semntica dos nomes de sinais.............................................................6 Versionamento de cdigo......................................................................7 Exemplo de identificao de um sistema de automao.........................7 Regra para alterao do valor da verso e da reviso............................7 Histrico das alteraes.......................................................................8 Tcnicas avanadas de estrutura.............................................................10 Proteo do ncleo............................................................................10 Mquina de tampar potes................................................................12 Configurao de I/O da mquina de tampar potes...............................12 Sadas Digitais da mquina de tampar potes...................................12 Entradas digitais da mquina de tampar potes.................................12 Exemplo de cdigo sem proteo do ncleo........................................13 Exemplo de cdigo com proteo do ncleo........................................13 Intertravamento por alarme ...............................................................15 Nveis de alarmes..............................................................................17 Nvel 4 - Interrompe todos os movimentos da mquina........................17 Nvel 3 - Desliga equipamentos........................................................17 Nvel 2 - Interrompe o incio do prximo ciclo automtico.....................18 Nvel 1 - Somente informativo..........................................................18 Classificao dos alarmes em nveis..................................................18 Sequenciador automtico....................................................................19 Estrutura bsica de cada passo do sequenciador.................................20 Ciclo automtico da mquina de tampar potes....................................21 Utilizao dos sinais do sequenciador................................................22 Controle de Revises.............................................................................23

www.branqs.com.br

Pgina 2 de 24

Dicas e tcnicas avanadas para programao de CLPs

Introduo

com grande satisfao que entregamos a voc este conjunto de dicas e tcnicas para a escrita de software para Controladores Lgicos Programveis (CLP). Procuramos reunir neste documento um resumo de algumas tcnicas aperfeioadas em mais de vinte anos de experincia na construo de software para a rea de automao industrial. Sabendo que este documento certamente chegar s mos de excelentes profissionais da rea de automao industrial, e que certamente muitos deles tero inmeras recomendaes a fazer, bem como dicas a acrescentar, resolvemos disponibilizar um frum em nosso site para discutir esse assunto de tamanha relevncia. Agradecemos seu interesse e esperamos que este contedo possa ajudar vrias pessoas a criar sistemas cada vez mais confiveis e fceis de realizar manuteno.

Equipe de desenvolvimento da Branqs Automao

Nota: Este documento foi especialmente desenvolvido para distribuio na Brazil Automation ISA2010. Trata-se de um documento totalmente original e de propriedade intelectual do autor. Nenhuma parte pode ser copiada ou reproduzida de alguma forma sem a autorizao por escrito da Branqs Automao LTDA.

www.branqs.com.br

Pgina 3 de 24

Dicas e tcnicas avanadas para programao de CLPs

Dicas de boas prticas

Utilizando nomes ao invs de cdigos secretos


Utilize sempre nomes elucidativos para os sinais existentes na lgica de seu programa. Infelizmente muitos desenvolvedores no respeitam esta regra simples e acabam gerando cdigo de difcil interpretao. Como resultado, obtemos um programa mais suscetvel a erros de lgica que implicaro em um incorreto funcionamento do equipamento. Para exemplificar, segue abaixo um trecho de cdigo obtido a partir de um site que ensina programao de CLP na Internet:

I3.1

I3.2

Q4.2

Q4.11

Mesmo representando uma lgica simples, fica difcil saber o efeito final da execuo deste cdigo em um equipamento , pois no fcil interpretar os sinais I3.1, I3.2, Q4.2 e Q4.11. Na mesma pgina o autor apresenta uma tabela que descreve o significado de cada sinal: Address I3.1 I3.2 Q4.2 Q4.11 Description Forward pushbutton Front limit OK Reverse solenoid Forward solenoid

www.branqs.com.br

Pgina 4 de 24

Dicas e tcnicas avanadas para programao de CLPs

Sem dvida nenhuma a tabela ajuda bastante, mas seria muito mais interessante utilizarmos nomes melhores diretamente no diagrama. Por exemplo: botaoAvano limite Avano solenoide Recuo solenoide Avano

importante lembrar que infelizmente esse problema muitas vezes motivado por limitaes do prprio ambiente de desenvolvimento. Alguns ambientes no permitem utilizar nomes longos, e por isso comprometem significativamente a qualidade do cdigo. Ainda analisando o exemplo da Internet, percebemos que as descries oferecidas na tabela tambm no esto suficientemente completas. Considere a seguinte definio:

Forward pushbutton
Em portugus significaria :

Boto de avano
Se considerarmos a existncia de vrios atuadores que poderiam provocar o avano de alguma parte do equipamento, chegamos concluso de que esse nome ainda pode ser melhorado se inserirmos o nome especfico do movimento. Exemplo:

botaoAvano Cilindro Fechamento

Quanto mais aplicado este tipo de prtica, mais claro e prova de erros seu software ir se tornar.

www.branqs.com.br

Pgina 5 de 24

Dicas e tcnicas avanadas para programao de CLPs

Semntica dos nomes de sinais


Alm da utilizao de nomes mais completos e elucidativos, muito importante tambm incluir o significado do estado representado pelo sinal. No exemplo anterior obtido da Internet, a descrio do sinal I3.2 era Front Limit OK. Afinal, o que o autor quis dizer com OK ? muito recomendado utilizar nomes que esclaream o estado lgico que o sinal vai assumir em determinada condio fsica do equipamento. Supondo que o sinal I3.2 representasse um sensor que informa que o cilindro est avanado, poderamos melhorar sua descrio utilizando o seguinte nome: entradaSensor CilindroAvanado

Perceba que o nome utilizado acrescenta vrias informaes: 1. 2. 3. 4. O O O O sinal sinal sinal sinal representa uma entrada digital referente a um sensor referente ao movimento do cilindro ser verdadeiro quando o cilindro estiver avanado

A falta de preocupao com nomes provoca situaes que induzem ao erro, pois podem existir diferentes interpretaes da funo de cada sinal. Por exemplo, considere os seguintes nomes de sinais: motor protetor seguranaHidrulica Perceba que difcil saber se os sinais acima representam atuadores ou sensores. difcil tambm determinar em que situao estes sinais sero acionados ou desacionados. Por exemplo, mesmo considerando que o sinal do motor representasse uma entrada, ainda assim seria difcil saber se o sinal representa que o motor est ligado, desligado ou com problema. Seguem abaixo alguns exemplos de nomes de sinais que esclarecem melhor o seu significado: entradaSensorMotorLigado entradaSensorMotorDesligado entradaSensorProtetorCompletamenteAberto entradaSensorProtetorFechado entradaSensorProtetorNoFechado sadaFechaProtetor sadaAbreProtetor entradaSensorSeguranaHidrulicaAtivada sadaAtivaSeguranaHidrulica sadaDesativaSeguranaHidrulica

Analisando as possibilidades acima, fcil perceber a confuso que os nomes dos sinais originais poderiam ocasionar.

www.branqs.com.br

Pgina 6 de 24

Dicas e tcnicas avanadas para programao de CLPs

Versionamento de cdigo
O versionamento de cdigo representa outra prtica extremamente importante para a criao de sistemas de software de automao. Ao desenvolvermos softwares embarcados de prateleira, que so utilizados em vrios equipamentos ao longo do tempo, a adoo dessa prtica impede grandes dores de cabea ao se realizar atualizaes. Com o passar do tempo, muito comum haver a necessidade de implementar pequenas melhorias e realizar a incluso de novos recursos no software. Neste segundo caso, quando a implementao do novo recurso implica em alteraes fsicas no equipamento, muito cuidado deve ser tomado, pois o novo software possivelmente no poder ser mais aplicado aos equipamentos antigos, j que estes no possuem as alteraes fsicas necessrias para aceitar o novo programa. Dessa forma consideramos uma boa prtica adotar um mecanismo de registro e gesto de todas as diferentes verses e revises de cdigo gerado. Segue abaixo um modo muito simples e interessante de realizar esse tipo de controle.

Exemplo de identificao de um sistema de automao

idVxxRyy
Onde: id = representa o cdigo de identificao do equipamento Vxx = Nmero da verso do software Ryy = Nmero da reviso do software

Regra para alterao do valor da verso e da reviso


Se a alterao a ser realizada permitir que o software seja utilizado em equipamentos com revises anteriores, ento aumentamos somente o nmero da reviso. Se a alterao a ser realizada impede que o software seja utilizado no lugar de revises anteriores, ento aumentamos a verso, zerando o nmero da reviso. Exemplos:

Nmero original 2017v01r00 1013v02r05

Alterao realizada Corrigido um erro que existia no cdigo Implementado um novo recurso no software, que poder ser usado nas mquinas com as revises de software antigas Implementado um novo recurso que necessitou incluir um novo sensor na mquina

Novo nmero 2017v01r01 1013v02r06

1015v01r00

1015v02r00

www.branqs.com.br

Pgina 7 de 24

Dicas e tcnicas avanadas para programao de CLPs

Histrico das alteraes


O controle sobre as alteraes realizadas em um software de automao tambm outra prtica muito importante. O registro adequado das alteraes permite evoluir nosso conhecimento sobre os equipamentos e sobre o resultado de modificaes feitas ao longo do tempo. Porm dependendo da ferramenta utilizada, este tipo de registro pode se tornar bastante trabalhoso. Nos exemplos abaixo iremos demonstrar uma forma muito interessante de manter o registro do histrico das alteraes realizadas em um cdigo, gerando assim uma base de conhecimento a ser consultada em situaes futuras. Considere o seguinte cdigo: botaoAvanco Cilindro Fechamento entradaSensor Cilindro Fechamento Avancado saidaSolenoide AvancoCilindro Fechamento

A primeira coisa a fazer inserir um cabealho no arquivo do programa, descrevendo informaes a respeito das alteraes realizadas. Perceba que para cada alterao criamos uma TAG de identificao de motivo. ///////////////////////////////////////////////////////////////// //Programa: 1003 //Versao: 02 //Revisao: 01 //Data: 16/02/2010 //Autor: Fernando Branquinho //Descricao: Alteracoes no comportamento do avano do cilindro // //10030201.0 O cilindro deve continuar avanando ao final do curso //10030201.1 Bloqueado o avano e recuo simultneo

tag tag

Em seguida, as alteraes so realizadas no cdigo, citando os indicadores dos motivos descritos no cabealho. Exemplo: entradaSensor Cilindro Fechamento Avancado

botaoAvanco Cilindro Fechamento

saidaSolenoide RecuoCilindro Fechamento

saidaSolenoide AvancoCilindro Fechamento

10030201.0 tag

10030201.1 tag

www.branqs.com.br

Pgina 8 de 24

Dicas e tcnicas avanadas para programao de CLPs

importante dizer que este tipo de registro mais facilmente realizado em ambientes que fazem uso de lista de instrues. Considere abaixo o mesmo cdigo do exemplo apresentado em LADDER: SEL EN MEMO Onde: SEL EN MEMO = = = Se ligado e no Memoriza (botaoAvancoCilindroFechamento) (entradaSensorCilindroFechamentoAvancado) (saidaSolenoideAvancoCilindroFechamento)

Aps as alteraes, o cdigo ficaria com o seguinte aspecto: SEL (botaoAvancoCilindroFechamento) //10030201.0 EN (entradaSensorCilindroFechamentoAvancado) EN (saidaSolenoideRecuoCilindroFechamento) //10030201.1 tag MEMO (saidaSolenoideAvancoCilindroFechamento)

tag

Quando uma TAG inserida antes da linha, indica que a linha foi retirada, porm quando inserida ao final, indica que a linha foi inserida.

www.branqs.com.br

Pgina 9 de 24

Dicas e tcnicas avanadas para programao de CLPs

Tcnicas avanadas de estrutura

Proteo do ncleo
Quando desenvolvemos software para automao de um novo equipamento, muito comum e saudvel aproveitarmos um cdigo previamente elaborado para algum equipamento semelhante. Existem inmeras vantagens em se trabalhar assim. Porm a falta de adoo de algumas tcnicas pode transformar tais vantagens em grandes problemas. Resumindo, podemos transformar aquilo que era uma vantagem, em uma desvantagem. Muita gente j passou por isso. Se conversarmos com alguns amigos profissionais da rea, muito comum revelarem que j tiveram o seguinte sentimento: Caramba, esse software t ficando muito complicado. D at vontade de jogar tudo fora e comear novamente do zero. Percebeu ? Aproveitar um cdigo previamente elaborado e testado, que sem dvida nenhuma seria uma vantagem, pode virar um pesadelo. Isso acontece porque ao longo de vrias alteraes necessrias, o software pode se tornar muito confuso e cada vez mais propenso a apresentar erros que podem comprometer o correto funcionamento do equipamento e conseqentemente a segurana de pessoas. Considerando que estamos falando de equipamentos semelhantes, significa que as caractersticas relacionadas ao domnio do problema so praticamente as mesmas. S para exemplificar, considere os vrios modelos de automveis que existem no mercado. Praticamente todos possuem motor (que liga, acelera, desacelera e desliga), cmbio (com relaes para andar para frente e para trs), portas (que abrem e fecham), volante (que vira o carro para esquerda ou para a direita), vidros (que abrem e fecham) e etc. Todos os carros realizam estas funes, e portanto possuem propsitos semelhantes. Porm importante lembrar que cada modelo utiliza diferentes tipos e quantidades de atuadores (vlvulas, solenides, lmpadas, etc) e sensores (contatos, pressostatos, ampermetros, voltmetros, etc).

www.branqs.com.br

Pgina 10 de 24

Dicas e tcnicas avanadas para programao de CLPs

Resumindo, o domnio do problema o mesmo, porm existem diferenas significativas na implementao, j que cada um possui sua prpria configurao de sensores e atuadores. Da mesma forma que o exemplo dos automveis, na rea industrial encontramos vrios fabricantes para tipos semelhantes de equipamentos (ex:Tornos, Prensas, Caldeiras, Empacotadeiras, Injetoras,Sopradoras, Extrusoras, etc). Cada tipo de mquina funciona com o mesmo propsito, porm com caractersticas diferentes. E onde estas diferenas interferem no desenvolvimento do sistema de automao? Resposta: No tratamento dos sinais de entrada e sada (I/O) do CLP. Por exemplo, para um determinado modelo de prensa, necessrio utilizar um nico atuador digital para comandar seu fechamento (ex:uma vlvula direcional). J em outros modelos, podem ser necessrios dois atuadores digitais e um atuador analgico. Perceba porm que os diferentes acionamentos realizam a mesma funo, ou seja, o fechamento da prensa. A mesma coisa ocorre em relao aos sensores. Por exemplo: Um determinado modelo de prensa pode utilizar um nico sensor para detectar que a porta de proteo do operador est fechada. Outros modelos podem utilizar dois, trs ou mais sensores. Da mesma forma, o propsito continua sendo o mesmo, ou seja: Verificar se o protetor est fechado. Toda discusso relacionada ao fato de somente realizar o fechamento da prensa caso a porta de proteo do operador tambm esteja fechada, representa uma discusso de domnio do problema, e neste caso no muda dependendo da quantidade e tipo de sensores e atuadores utilizados. Dessa forma, dependendo de como o software de automao foi elaborado, a adaptao do programa para inserir ou retirar sensores e atuadores pode causar grande impacto no funcionamento do mesmo, fazendo com que funes triviais que funcionavam bem no primeiro equipamento, apresentem falhas inesperadas no segundo. Sendo assim, a proposta da idia da proteo do ncleo do software consiste em: No utilizar sinais de entradas e sadas fsicas na lgica de domnio do problema, mas sim, sinais cujo estado resultado de uma lgica elaborada para tratar tanto o interfaceamento de entrada como o de sada. Considerando que a definio acima ficou um pouco complicada, vamos simplificar atravs de exemplos relacionados automao de uma Mquina de tampar potes fictcia.

www.branqs.com.br

Pgina 11 de 24

Dicas e tcnicas avanadas para programao de CLPs

Mquina de tampar potes

Se possvel, visualize esta mquina em funcionamento entrando na rea de Treinamentos do site www.branqs.com.br

Configurao de I/O da mquina de tampar potes


Segue a relao de atuadores, sensores e botes da mquina de tampar potes

Sadas Digitais da mquina de tampar potes


Solenide de Avana cilindro Solenide de Recua cilindro Contator Liga motor da esteira

Entradas digitais da mquina de tampar potes


Sensor Cilindro recuado Sensor Pote embaixo do cilindro Boto de acionamento manual para Boto de acionamento manual para Boto de acionamento manual para Boto de acionamento manual para recuar cilindro avanar cilindro ligar esteira desligar esteira

www.branqs.com.br

Pgina 12 de 24

Dicas e tcnicas avanadas para programao de CLPs

Exemplo de cdigo sem proteo do ncleo


Analise o cdigo abaixo. Perceba que a lgica que decide se o cilindro ir recuar ou no feita utilizando diretamente os sinais de entrada e de sada: SEL EN MEMO (entradaBotaoRecuoCilindro) (entradaSensorCilindroRecuado) (saidaSolenoideRecuoCilindro)

Caso alguma mudana ocorra em tal equipamento, e seja necessrio adicionar algum sensor ou atuador envolvido com o movimento de recuo do cilindro, ser necessrio alterar a lgica principal dessa funo. A idia evitar este tipo de interveno, preservando assim todos os testes que j foram realizados e que garantem o correto funcionamento do sistema.

Exemplo de cdigo com proteo do ncleo


Abaixo apresentamos a mesma funo agora escrita utilizando o conceito de proteo do ncleo. Perceba que os sinais de entrada e de sada foram substitudos por sinais auxiliares compatveis com o domnio do problema, ou seja, a lgica principal agora utiliza sinais independentes de detalhes de implementao existentes neste equipamento. Exemplo: ///////////////////////////////////////////////////////// //Interface Entrada ///////////////////////////////////////////////////////// SEL MEMO SEL MEMO (entradaBotaoRecuoCilindro) (pressionouBotaoRecuoCilindro) (entradaSensorCilindroRecuado) (cilindroRecuado)

///////////////////////////////////////////////////////// //Ncleo ///////////////////////////////////////////////////////// SEL EN MEMO (pressionouBotaoRecuoCilindro) (cilindroRecuado) (comandoRecuoCilindro)

///////////////////////////////////////////////////////// //Interface Sada ///////////////////////////////////////////////////////// SEL MEMO (comandoRecuoCilindro) (saidaSolenoideRecuoCilindro)

Analisando o programa acima, percebemos que a qualidade do cdigo melhorou, pois uma vez testado o ncleo que contm a lgica de domnio do problema, podemos implementar as adaptaes relativas s diferenas existentes nos equipamentos simplesmente alterando as interfaces, sem precisar alterar o ncleo.

www.branqs.com.br

Pgina 13 de 24

Dicas e tcnicas avanadas para programao de CLPs

Para exemplificar melhor, considere que ao aproveitarmos este programa para automatizarmos uma mquina similar, foi necessrio modificar o tratamento de cilindro recuado, j que a nova mquina no possua este sensor. Dessa forma, para considerar que o cilindro est recuado, devemos comandar o recuo por mais de cinco segundos. Segue abaixo um exemplo de como isso poderia ser implementado com segurana: ///////////////////////////////////////////////////////// //Interface Entrada ///////////////////////////////////////////////////////// SEL MEMO SEL MEMO SEL MEMO (entradaBotaoRecuoCilindro) (pressionouBotaoRecuoCilindro) (comandoRecuoCilindro) (dsp_duracaoRecuoCilindro) (fim_duracaoRecuoCilindro) (cilindroRecuado)

///////////////////////////////////////////////////////// //Ncleo ///////////////////////////////////////////////////////// SEL EN MEMO (pressionouBotaoRecuoCilindro) (cilindroRecuado) (comandoRecuoCilindro)

///////////////////////////////////////////////////////// //Interface Sada ///////////////////////////////////////////////////////// SEL MEMO (comandoRecuoCilindro) (saidaSolenoideRecuoCilindro)

Obs: O sinal fim_duracaoRecuoCilindro ser acionado quando o sinal dsp_duracaoRecuoCilindro for mantido acionado por cinco segundos. Perceba que a alterao foi feita somente na interface de entrada, mantendo assim o ncleo do sistema intacto. muito importante tomar cuidado ao observar este exemplo de modo isolado. Aparentemente fcil pensar que a proteo de ncleo no gerou um resultado to impressionante, e que acabou aumentando um cdigo originalmente bem simples. Porm, quanto maior e mais complexo for o sistema, mais a tcnica revelar o auxlio que realiza em relao manuteno de cdigo. O exemplo aqui mostrado serviu somente para demonstrar como aplic-la.

www.branqs.com.br

Pgina 14 de 24

Dicas e tcnicas avanadas para programao de CLPs

Intertravamento por alarme


comum encontrar no mercado vrias empresas que fornecem uma listagem do programa LADDER juntamente com a documentao de seu equipamento. curioso refletir porque isso acontece, e o motivo mais plausvel que tal informao ajuda muito a equipe de manuteno a identificar os motivos da no realizao de uma determinada funo pelo equipamento. Por incrvel que parea, esse tipo de iniciativa acaba sendo necessria porque muitos programas possuem deficincias no percebidas por seus desenvolvedores. Para exemplificar melhor, vamos analisar o cdigo da lgica de recuo do cilindro existente no ncleo do programa da mquina de tampar potes: ///////////////////////////////////////////////////////// //Ncleo ///////////////////////////////////////////////////////// SEL EN MEMO (pressionouBotaoRecuoCilindro) (cilindroRecuado) (comandoRecuoCilindro)

Considere que o sensor de cilindro recuado esteja em curto, mantendo-se acionado mesmo quando o cilindro est avanado. Visualmente o operador identifica que o cilindro no est recuado e ento pressiona o boto para poder recu-lo. O sistema no responde e tambm no informa o motivo. Como j dito anteriormente, este tipo de situao extremamente comum. Em situaes como essa, a listagem LADDER necessria para permitir ao tcnico descobrir o que est impedindo o movimento. Eles analisam o cdigo e percebem que o comando no realizado porque o programa considera que o cilindro j est recuado. Infelizmente at ser reconhecida a causa, predomina aquela sensao de problema no painel de controle da mquina. Para contornar essa situao, alguns desenvolvedores precisam escrever uma lgica de modo invertido, somente para poder assinalar em uma tela de alarmes o motivo pelo qual a solicitao que est sendo realizada no pode ser atendida. Uma forma mais eficiente de resolver esse tipo de problema utilizar a tcnica de intertravamento por alarme. Nesta tcnica, o ncleo do cdigo dividido em trs blocos: Solicitaes Lgicas de Alarme Comandos O bloco da Solicitao ir tratar os sinais que solicitam a realizao de uma funo (tanto em manual como em automtico). O bloco da Lgica de alarme ir identificar que situao deve impedir a realizao da funo (intertravamento).

www.branqs.com.br

Pgina 15 de 24

Dicas e tcnicas avanadas para programao de CLPs

O bloco de comando ir identificar se uma solicitao foi realizada e no existe impedimento por alarme. Somente nessa condio o comando realizado. Analise abaixo a alterao realizada no cdigo do ncleo da mquina de tampar potes para contemplar o padro de intertravamento por alarme. ///////////////////////////////////////////////////////// //Solicitaes ///////////////////////////////////////////////////////// SEL MEMO (pressionouBotaoRecuoCilindro) (solicitaRecuoCilindro)

. . Solicitaes de outras funes . ///////////////////////////////////////////////////////// //Alarmes ///////////////////////////////////////////////////////// SEL E MEMO (solicitaRecuoCilindro) (cilindroRecuado) (alarmeCilindroRecuado)

. . Alarmes de outras funes . ///////////////////////////////////////////////////////// //Comandos ///////////////////////////////////////////////////////// SEL EN MEMO (solicitaRecuoCilindro) (alarmeCilindroRecuado) (comandoRecuoCilindro)

. . Comando de outras funes . Dessa forma, o impedimento da funo realizado atravs de um alarme que poder ser automaticamente apresentado na IHM do equipamento. importante lembrar que esta estrutura determina que as solicitaes de todas as funes sejam feitas inicialmente, seguidas do bloco de alarmes e por ltimo o bloco de comandos.

www.branqs.com.br

Pgina 16 de 24

Dicas e tcnicas avanadas para programao de CLPs

Nveis de alarmes
Em um sistema de automao, muito comum percebermos que certas condies interferem no comportamento de vrias funes ao mesmo tempo. Considere por exemplo a situao onde um operador pressiona o boto de emergncia de uma mquina. Dependendo do equipamento, situaes como esta devem impedir o acionamento de qualquer funo, j que est sendo sinalizada uma situao de perigo ou de preveno. De modo informal podemos dizer que o pressionamento do boto deve possuir um efeito em Broadcast, ou seja, todas as funes do sistema devem ser influenciadas por esta ocorrncia. De modo anlogo ao boto de emergncia, outras situaes podem tambm demandar um comportamento comum em vrias partes do sistema. Sendo assim, uma tcnica muito interessante que adotamos na construo de software de automao de equipamentos, classificar os diversos alarmes existentes em diferentes nveis que provocam uma reao comum em vrias funes. Este tipo de estrutura simplifica o cdigo e facilita futuras manutenes onde desejado a mudana do comportamento da mquina em determinadas situaes de alarme. Cada projetista pode definir seus prprios nveis de alarme, que podem variar de acordo com sua prpria experincia e de acordo com as caractersticas dos equipamentos automatizados. Apresentamos abaixo quatro nveis que temos adotado ao longo dos anos em vrios tipos de equipamentos diferentes.

Nvel 4 - Interrompe todos os movimentos da mquina


Este nvel foi criado para impedir o acionamento de qualquer funo do equipamento. Para isso, deve ser inserido em srie na lgica de comando de todas as funes do sistema. Exemplo: ///////////////////////////////////////////////////////// //Comandos ///////////////////////////////////////////////////////// SEL EN EN MEMO (solicitaRecuoCilindro) (alarmeCilindroRecuado) (alarmeNivel4) (comandoRecuoCilindro)

Nvel 3 - Desliga equipamentos


Este nvel normalmente usado para desligar equipamentos que possuem energia potencial, evitando assim a gerao de trabalho em situaes onde isso no desejado. aplicado em situaes extremas de parada incondicional, onde os equipamentos bloqueados normalmente so representados por motores e circuitos de alimentao. Dessa forma, existindo algum alarme que necessite provocar o desligamento de equipamentos deste tipo, basta classific-lo como nvel 3.

www.branqs.com.br

Pgina 17 de 24

Dicas e tcnicas avanadas para programao de CLPs

Nvel 2 - Interrompe o incio do prximo ciclo automtico


Este nvel de alarme usado em situaes onde o alarme ocorrido no necessita interromper imediatamente o funcionamento da mquina, mas sim evitar que um novo ciclo automtico seja iniciado. Mais adiante iremos representar sua utilizao juntamente com o mtodo de sequenciamento automtico.

Nvel 1 - Somente informativo


Este nvel usado somente para classificar os alarmes que no foram includos nos nveis acima. Consideramos uma boa prtica utiliz-lo, pois assim fica explcito no cdigo a deciso tomada pelo projetista, evitando que a no classificao em nveis superiores seja interpretada como esquecimento.

Classificao dos alarmes em nveis


A classificao dos alarmes em nveis deve ser realizada imediatamente aps o bloco da lgica de alarmes e antes do bloco de comandos. Exemplo: ///////////////////////////////////////////////////////// //Alarmes ///////////////////////////////////////////////////////// . . Bloco de alarmes . ///////////////////////////////////////////////////////// //Nveis de alarmes ///////////////////////////////////////////////////////// SEL OU OU MEMO SEL MEMO SEL MEMO SEL OU MEMO (alarmeCilindroRecuado) (alarmeCilindroNaoRecuado) (alarmeEsteiraLigada) (alarmeNivel1) (alarmeProducaoConcluida) (alarmeNivel2) (alarmeBotaoEmergenciaPressionado) (alarmeNivel3) (alarmeProblemaSegurancaHidraulica) (alarmeNivel3) (alarmeNivel4)

///////////////////////////////////////////////////////// //Comandos ///////////////////////////////////////////////////////// . . Bloco de comandos .

www.branqs.com.br

Pgina 18 de 24

Dicas e tcnicas avanadas para programao de CLPs

Sequenciador automtico
Desde os primrdios da adoo de CLPs pela industria, muitas tcnicas foram elaboradas para ajudar a definir e implementar a lgica do funcionamento automtico de equipamentos. A seguir apresentamos algumas delas que, ligeiramente modificadas e combinadas com as tcnicas de Proteo do Ncleo, Intertravamento por Alarme e Nveis de Alarme, permitem criar uma estrutura totalmente limpa, eficiente e segura para escrita do cdigo de um equipamento automtico. Iniciamos a discusso apresentando um diagrama SFC simplificado, que demonstra o funcionamento desejado para a mquina de tampar potes em automtico

Esperando Start Pressionou START Recua cilindro Cilindro recuado


.

Liga motor da esteira Bordo de subida do pote embaixo do cilindro Desliga motor da esteira Avana cilindro Terminou tempo de avano
O diagrama acima representa os passos (retngulos) do ciclo automtico, e as condies de transio (linhas) entre um passo e outro. Perceba que existe um passo inicial chamado Esperando Start, e um retorno ao passo Recua cilindro aps satisfazer a condio Terminou tempo de avano. Nossa proposta apresentar uma estrutura que possa reproduzir exatamente o diagrama acima, oferecendo sinais que podero ser utilizados nos blocos de solicitaes apresentados anteriormente. Dessa forma, com o mnimo de alteraes no programa, implementamos o cdigo do ciclo automtico que aproveita todas as seguranas e intertravamentos previamente definidos no modo manual. Para entendermos esta construo, apresentamos em seguida uma estrutura bsica da lgica de definio de cada passo do ciclo automtico. Esta estrutura inspirada pelo mtodo de cadeias estacionrias, porm acrescenta detalhes referentes aos mtodos anteriormente comentados.

www.branqs.com.br

Pgina 19 de 24

Dicas e tcnicas avanadas para programao de CLPs

Estrutura bsica de cada passo do sequenciador


SEL E EN OU E EN MEMO (passoAnterior) (condioTransio) (alarmeNivel4) (passoAtual) (automatico) (prximoPasso) (passoAtual)

Abaixo podemos ver a mesma estrutura representada em LADDER:

passo Anterior

condio Transio

alarme Nivel4

automatico

proximo Passo

passoAtual

passo Atual

Repare que neste bloco so usados sinais referentes a trs passos: O passo atual, o passo anterior e o prximo passo. Os dois primeiros sinais (passoAnterior e condioTransio) definem a lgica de acionamento do passo atual. Ao ser acionado, o passoAtual retm seu estado por ter sido utilizado em paralelo com toda a lgica inicial do bloco (normalmente chamamos isto de selo). O passoAtual s ser desacionado quando a mquina sair do modo automtico ou quando a condio do prximoPasso for satisfeita. Seguindo este mtodo, apresentamos o cdigo responsvel em habilitar as variveis (passos) que nos ajudaro a controlar o ciclo automtico da mquina de tampar potes conforme o diagrama SFC.

www.branqs.com.br

Pgina 20 de 24

Dicas e tcnicas avanadas para programao de CLPs

Ciclo automtico da mquina de tampar potes


SEL SUBIDA EN OU E EN MEMO SEL E OU EN EN OU E EN MEMO SEL E EN OU E EN MEMO SEL E EN OU E EN MEMO SEL E EN OU E EN MEMO (automatico) (alarmeNivel4) (autoEsperandoStart) (automatico) (autoRecuaCilindro) (autoEsperandoStart) (autoEsperandoStart) (teclaStart) (autoFimCiclo) (alarmeNivel4) (alarmeNivel2) (autoRecuaCilindro) (automatico) (autoLigaMotorEsteira) (autoRecuaCilindro) (autoRecuaCilindro) (cilindroRecuado) (alarmeNivel4) (autoLigaMotorEsteira) (automatico) (autoAvancaCilindro) (autoLigaMotorEsteira) (autoLigaMotorEsteira) (poteChegouEmbaixoCilindro) (alarmeNivel4) (autoAvancaCilindro) (automatico) (autoFimCiclo) (autoAvancaCilindro) (autoAvancaCilindro) (cilindroAvancado) (alarmeNivel4) (autoFimCiclo) (automatico) (autoRecuaCilindro) (autoFimCiclo)

Perceba que no segundo bloco foi usada tambm a varivel do alarme de nvel 2, impedindo assim o reincio do ciclo em caso de alarme deste tipo.

www.branqs.com.br

Pgina 21 de 24

Dicas e tcnicas avanadas para programao de CLPs

Utilizao dos sinais do sequenciador


Aps elaborado o sequenciador, basta utilizar os sinais referentes a cada passoAtual diretamente na lgica de solicitao de cada funo. Ex:

///////////////////////////////////////////////////////// //Solicitaes ///////////////////////////////////////////////////////// SEL E OU MEMO (pressionouBotaoRecuoCilindro) (manual) (autoRecuaCilindro) (solicitaRecuoCilindro)

Perceba que esta a nica interveno que precisar ser feita no cdigo de cada funo, pois toda a parte de intertravamento j foi construda em modo manual. Toda essa clareza e facilidade s foi possvel graas a adoo do conjunto de tcnicas e boas prticas demonstradas ao longo deste documento. Para visualizar o cdigo completo do exemplo da Mquina de Tampar Potes, e poder simular seu funcionamento em um computador PC, faa o download do Stack de simulao da mquina de tampar potes, disponvel no site www.branqs.com.br

www.branqs.com.br

Pgina 22 de 24

Dicas e tcnicas avanadas para programao de CLPs

Controle de Revises

Verso: Reviso: Data: Elaborado por: Verificado por:

01 00 16/10/2010 Fernando Branquinho Kau Leonardo (Tcnico Instrumentao - PETROBRAS) Thiago La Pastina (Tcnico Eletro-Eletrnico - BRANQS) Daniel Leite (Tcnico Automao - BRANQS) Verso inicial criada para distribuio na Brazil Automation 2010.

Descrio:

www.branqs.com.br

Pgina 23 de 24

www.branqs.com.br
Trabalhamos para facilitar a vida das pessoas.

You might also like