Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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.
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
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
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:
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
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
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.
idVxxRyy
Onde: id = representa o cdigo de identificao do equipamento Vxx = Nmero da verso do software Ryy = Nmero da reviso do software
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
1015v01r00
1015v02r00
www.branqs.com.br
Pgina 7 de 24
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
10030201.0 tag
10030201.1 tag
www.branqs.com.br
Pgina 8 de 24
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
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
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
Se possvel, visualize esta mquina em funcionamento entrando na rea de Treinamentos do site www.branqs.com.br
www.branqs.com.br
Pgina 12 de 24
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.
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
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)
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
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
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
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.
www.branqs.com.br
Pgina 17 de 24
www.branqs.com.br
Pgina 18 de 24
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
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
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
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
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
Controle de Revises
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.