Abstract— The PLC Programmable Logic Controller programming is a time consuming task and it needs specific knowledge about the programming language and especially of the PLC, which makes it an expensive work by the need of a high qualified professional. This paper proposes a technique to create programs to PLCs by means of Genetic Programming (GP). As objective function, a group of scenarios were used, which represents the behavior of the automated ambient and that can be defined in an intuitive way without previous knowledge of the PLC or a programming language. The technique showed to be generic for many problems and efficient in finding fast different solutions. With an after-processing analysis, the results indicated parameters configuration that optimizes the genetic search. Keywords— Genetic programming, automation, PLC, instruction list, ladder. I. INTRODUÇÃO ISTEMAS automáticos são usados em todas as indústrias e em sistemas de produção em larga escala. Além disso, existe grande quantidade de pequenos sistemas automáticos dedicados, como por exemplo, na automação de residências. Entretanto, esses sistemas ainda exigem conhecimentos específicos e trabalho manual para serem programados. Devido à complexidade e a não linearidade dos problemas de automação, por diversas vezes, torna-se impraticável uma formulação matemática precisa, favorecendo o uso de uma heurística [6]. A abordagem dos problemas de automação através de métodos heurísticos é vasta. Contudo, existem poucas publicações a respeito ta utilização da programação genética aplicada à programação de CLPs. A abordagem mais próxima ao projeto atual foi o trabalho [9] pelo fato de utilizar um algoritmo genético para otimização de uma planta química através de um CLP. O trabalho se diferencia por utilizar representação binária nos indivíduos e cálculo de aptidão baseado em quantidades contínuas da saída de produção do processo industrial. Essa pesquisa é inovadora por não haver na literatura, especificamente, a abordagem de evolução de programas de CLP através da programação genética. Esse tipo de algoritmo Os autores agradecem ao CNPq/MCT pelo auxílio financeiro. M. L. Carneiro, Universidade de Brasília (UnB), Brasília, DF, mlajovic@eeec.ufg.br L. da C. Brito, Universidade Federal de Goiás (UFG), Goiânia, GO, brito@eec.ufg.br S. G. Araújo, Universidade Federal de Goiás (UFG), Goiânia, GO, granato@eeec.ufg.br P. C. M. Machado, Universidade Federal de Goiás (UFG), Goiânia, GO, pcesar@eeec.ufg.br P. H. P. Carvalho, Universidade de Brasília (UnB), Brasília, DF, paulo@ene.unb.br evolutivo possui como codificação comandos de programação propriamente ditos; por essa razão exige operadores de mutação e cruzamento mais complexos pela necessidade de terem que obedecer as regras de sintaxe da linguagem. A possibilidade de programar automaticamente um CLP através da geração automática de programas em diagrama de escada e lista de instruções usando abordagem de aprendizado de máquina é bastante atrativa visto que essa tarefa exige a ocupação de um profissional especializado, o que consequentemente encarece a atividade. Na metodologia proposta, não é necessário saber os detalhes da lógica da programação, mas apenas a sequência de funcionamento do sistema. Essa sequência é inserida através de uma interface gráfica, chamada de linha do tempo, onde o momento de ligamento e desligamento de cada dispositivo é inserido. Essa abordagem visa também à popularização do uso do CLP e da automação residencial, pela criação de uma interface que aproxima o leigo desse equipamento. Outra vantagem do uso da técnica é a difícil depuração de programas de automação em diagrama escada. A programação autônoma reduz ao máximo a intervenção do programador e aproveita a inteligência artificial para simular o processo criativo do ser humano para a solução de problemas de lógica. Esse artigo propõe, então, o uso da Programação Genética (PG) [1], [2], [3], [8], [10], [19], [20], [26], [28], [37], [39] para gerar programas a serem inseridos em CLPs e é uma continuação dos trabalhos [42]-[44] do mesmo autor. Utilizou- se nas pesquisas iniciais [42] diretamente a linguagem de diagrama de escada, através de uma estrutura matricial de registros onde a lógica dependia do posicionamento dos componentes na matriz. Este trabalho consistiu na apresentação de dois estudos de caso, sendo que o segundo não alcançou 100% de eficiência. O presente trabalho, já com a utilização da lista de instruções na codificação do problema, iniciado em [43], [44], descreve mais detalhadamente os resultados e supera em desempenho a pesquisa inicial. Os melhores resultados foram decorrentes da melhor representação do problema e a utilização da codificação linear nos indivíduos da população. Isso reduziu o tempo de simulação e aumentou a gama de programas possíveis de serem criados. A codificação linear apresentada nesse trabalho tem sido alvo de pesquisas recentes como [12]-[15]. Outro aperfeiçoamento em relação às pesquisas iniciais é a aplicação da técnica em quatro situações diferentes de automação. Nestes quatro estudos de caso, foi atingido 100% de sucesso durante a busca por soluções. Apresenta-se nesse artigo, na seção II, a contextualização do tema do artigo dentre as demais pesquisas a respeito das Genetic Programming Applied to Programmable Logic Controllers Programming M. L. Carneiro, L. da C. Brito, S. G. Araújo, P. C. M. Machado and P. H. P. Carvalho S 266 IEEE LATIN AMERICA TRANSACTIONS, VOL. 9, NO. 3, JUNE 2011