Universidade Federal de Minas Gerais
Escola de Engenharia
Departamento de Engenharia Eletrˆonica Laborat´orio de Inform´atica Industrial
11
aAula - Programa¸
c˜
ao IEC 61131-3 no ambiente CODESYS
Objetivos: Desenvolver programas em SFC sob o ambiente CODESYS.
Atividades Pr´
evias
Leia atentamente, em casa, o texto desta pr´atica, de forma a agilizar os procedimentos a serem executados no laborat´orio.
Projeto utilizando o CODESYS
CODESYS Development System ´e um aplicativo para a programa¸c˜ao de projetos de controle e automa¸c˜ao no ambiente da norma IEC 61131-3. As etapas para o desenvolvimento de um projeto neste aplicativo s˜ao as seguintes:
1 Cria¸c˜ao de um novo projeto
1.1. Abra o aplicativo CODESYS atrav´es do menu iniciar (3S CODESYS →CODESYS → CO-DESYS V3.5 SP3 Patch5 ) ou do ´ıcone na ´area de trabalho do computador.
1.2. Crie um novo projeto em comp → New Project... CtrlN. Na janela que se abrir, conforme mostra a figura 1, selecione a op¸c˜ao Standard project, defina o nome do projeto (Name), o diret´orio para armazen´a-lo (Location) e selecione OK.
Figura 1: Janela para criar um novo projeto
1.3. Uma nova janela ser´a aberta (fig 2): selecione o dispositivo CODESYS Control Win V3 (este dispositivo permite que o aplicativo execute o projeto em um ambiente virtual, sem a neces-sidade de definir uma configura¸c˜ao real de hardware de CLP), e a linguagem do programa PLC PRG. No nosso caso, ser´a SFC. Por default, o aplicativo cria uma ´arvore hier´arquica (fig. 3) com uma tarefa principal, denominada PLC PRG, que ´e uma POU do tipo Program, cujo nome poder´a ser alterado posteriormente.
Figura 2: Janela para sele¸c˜ao do dispositivo
Figura 3: ´Arvore hier´arquica inicial da configura¸c˜ao do projeto
seu projeto (no nosso caso seqfull). Para isso basta clicar no nome que se deseja alterar. Lembre-se de mudar nos dois pontos da ´arvore hier´arquica onde o nome PLC PRG aparece. 1.5. Salve seu projeto, e n˜ao se esque¸ca de salv´a-lo ao final de cada uma das pr´oximas etapas.
2 Cria¸c˜ao de POUs
Vocˆe pode criar quantas POUs forem necess´arias para o seu projeto. Para isso, pressione o bot˜ao direito do mouse em Application e utilize o caminho Add Object → POU. Defina o nome da POU, o seu tipo (Program, Function Block ou Function) e a linguagem de implementa¸c˜ao. Lembre-se que se a POU for do tipo Function ´e preciso definir tamb´em o tipo de valor de retorno da fun¸c˜ao.
3 Edi¸c˜ao de POUs
Para editar um POU basta clicar em seu nome que o editor da linguagem selecionada na cria¸c˜ao da POU ser´a aberta. Independente da linguagem selecionada, a janela do editor ´e dividida em duas partes. A parte superior ´e destinada `a declara¸c˜ao das vari´aveis locais, e a parte inferior ao algoritmo da POU, como mostrado na figura 4.
3a Declara¸c˜ao de vari´aveis locais
A declara¸c˜ao das vari´aveis locais de uma POU pode ser feita editando-se as vari´aveis direta-mente na parte superior do editor ou usando o recurso de auto-declara¸c˜ao. Neste segundo caso, quando o nome de uma vari´avel ainda n˜ao declarada for editada na parte inferior destinada ao algoritmo, uma janela surgir´a, como mostrado na figura 5, para auxiliar na declara¸c˜ao.
Figura 5: Janela para criar uma nova vari´avel
3b Declara¸c˜ao de vari´aveis globais
No caso de vari´aveis globais a serem manipuladas por duas ou mais POUs de um dado projeto, a declara¸c˜ao das mesmas ´e feita clicando-se com o bot˜ao direito do mouse em Application e selecionando-se Add Object → Global Variable List ; ser´a ent˜ao aberta uma nova janela na qual define-se o nome da Lista de vari´aveis globais. Este nome ser´a adicionado `a ´arvore do projeto e, clicando-se no mesmo, ser´aberta uma aba para a declara¸c˜ao das vari´aveis globais desta lista (figura 6)
Figura 6: Janela para sele¸c˜ao do dispositivo
3c Edi¸c˜ao das POUs
A edi¸c˜ao de uma POU nas linguagens textuais (ST e IL) ´e de formato livre, bastando escrever o algoritmo. Para facilitar, o editor oferece recursos interativos que auxiliam na edi¸c˜ao.
A edi¸c˜ao de uma POU nas linguagens gr´aficas (LD, FDB e SFC) ´e realizada por meio do recurso “arrasta e cola” dos elementos de programa¸c˜ao que s˜ao exibidos na janela ToolBox que se abre juntamente com o editor.
Ao utilizar as linguagens LD e FDB, os elementos de programa¸c˜ao vir˜ao associados ao s´ımbolo “???” que deve ser substitu´ıdo por uma vari´avel ou por valores constantes.
Action ou AddObject → Transition. Na janela que se abrir, defina um nome e a linguagem de implementa¸c˜ao. Depois basta editar o algoritmo na linguagem selecionada.
Al´em disso, as transi¸c˜oes em SFC tamb´em podem ser editadas diretamente substituindo-se o termo TRUE por uma vari´avel booleana ou por uma express˜ao simples que resulte em um valor booleano.
Por fim, para associar um objeto criado como a¸c˜ao ou transi¸c˜ao ao elemento gr´afico do editor, clique no s´ımbolo . Selecione o objeto desejado na janela que se abrir.
4 Configura¸c˜ao das tarefas
As diversas POUs que foram criadas e editadas, podem ser organizadas em diferentes tarefas (tasks) que, por sua vez, podem ser executadas das seguintes formas:
• Cyclic: A tarefa ser´a processada ciclicamente de acordo com a defini¸c˜ao de um tempo de ciclo determinado no campo Interval.
• Event : A tarefa ser´a iniciada assim que a vari´avel do tipo BOOL definida no campo Event perceber uma borda de subida.
• Freewheeling: A tarefa ser´a processada livremente assim que o programa for iniciado e, no final de sua execu¸c˜ao, ser´a reiniciada automaticamente em um loop cont´ınuo.
• Status: A tarefa ser´a iniciada assim que a vari´avel do tipo BOOL definida no campo Event tiver o valor TRUE.
Para organizar as diversas POUs em suas respectivas tarefas, como mostrado na figura 7, fa¸ca:
Figura 7: Tela t´ıpica para configura¸c˜ao de tarefas
4.1. Configure inicialmente a tarefa principal. Para isso dˆe um duplo clique em MainTask. Na janela que se abrir do lado direito do editor, selecione o campo Type de acordo com a forma de execu¸c˜ao definida no seu projeto (no nosso caso, Freewheeling).
4.2. Use o campo Add Call para incluir outras POUs que tiverem o mesmo tipo de execu¸c˜ao. 4.3. Caso necess´ario, crie outras tarefas. Para isso pressione o bot˜ao direito do mouse em Task
Configuraton e utilize o caminho Add Object → Task. Na janela que se abrir, defina o nome para a tarefa. Ap´os criada a nova tarefa, n˜ao se esque¸ca de definir o campo type e incluir as POUs no campo Add Call.
5 Compila¸c˜ao do projeto
Compile seu projeto antes de test´a-lo. Para isso siga o caminho Build → Build F11. Analise os erros e as mensagens que forem exibidas, e corrija o projeto caso seja necess´ario.
6 Cria¸c˜ao do aplicativo
Mesmo em ambiente de simula¸c˜ao, ´e preciso criar o aplicativo do projeto e fazer download no dispositivo que foi definido na p´agina 1, item 1.3. Para isso siga os seguintes passos:
6.1. Marque a op¸c˜ao de simula¸c˜ao: Online → Simulation
6.2. Crie a aplica¸c˜ao: Online → Create boot application. Na janela que se abrir salve a aplica¸c˜ao no mesmo diret´orio onde o projeto est´a sendo salvo.
6.3. Fa¸ca o download : Online → Multiple Download ... e confirme OK na janela que se abrir.
7 Simula¸c˜ao e teste do Projeto
Para testar o projeto utilize os recursos de simula¸c˜ao dispon´ıveis, da seguinte forma:
7.1. Abra a janela de declara¸c˜ao das vari´aveis globais e das POUs que se deseja verificar o funcio-namento.
7.2. Fa¸ca o login seguindo o caminho Online → Login
7.3. Ajuste as janelas abertas para visualiza¸c˜ao seguindo o seguinte caminho: Window → New Horizontal Tab Group ou Window → New Vertical Tab Group
7.4. Inicialize a aplica¸c˜ao em Debug → Start.
A partir deste ponto sua aplica¸c˜ao j´a estar´a sendo executada.
Para alterar online o valor de uma var´avel, utilize o campo Prepared value na janela de vari´aveis para editar um novo valor. Ap´os a edi¸c˜ao deste novo valor, fa¸ca a carga utilizando o seguinte caminho: Debug → Write Values.
Se quiser alterar ou corrigir a aplica¸c˜ao, utilize antes o comando Stop seguido de Logout.
Observa¸c˜oes Importantes
O aplicativo CODESYS oferece uma s´erie de recursos de edi¸c˜ao, como, por exemplo, ´ıcones, teclas de shortcuts e janelas popup, para agilizar a edi¸c˜ao e a manipula¸c˜ao de informa¸c˜oes. Neste roteiro, esses recursos praticamente n˜ao foram utilizados, mas vocˆe pode us´a-los `a medida que for conhecendo melhor o aplicativo.
Neste roteiro trabalhamos apenas com simula¸c˜ao. Utilize a referˆencia [1] para que o CODESYS opere como SoftPLC e comunica¸c˜ao via cliente/servidor OPC.
Atividades
Ap´s inicializar o aplicativo do CODESYS e criar o novo projeto, dever˜ao ser implementadas as tarefas e programas que executem a opera¸c˜ao autom´atica de um reservat´orio industrial, dotado de um agitador interno [2].
Para implementar os programas referentes a este projeto no ambiente CODESYS, inicialmente crie uma lista de vari´aveis globais (Application → Add Object → Global Variable list...) e defina a Base de Dados como indicado na Tabela 1.
Tabela 1: Base de dados do Projeto Nome Tipo Descri¸c˜ao
executa seq Boolean Parte a seq¨uˆencia autom´atica liga agitador Boolean Liga o agitador
valv entrada Boolean Abre/fecha v´alvula de entrada valv saida Boolean Abre/fecha v´alvula de sa´ıda reserv vazio Boolean Status de “reservat´orio vazio” reserv cheio Boolean Status de “reservat´orio cheio”
nivel Integer N´ıvel do reservat´orio (faixa de 0 a 100) seqstatus String Tamanho: 40 - Status da seq¨uˆencia
O projeto deve conter as seguintes POUs:
• seqfull - Program em SFC que implementa uma sequˆencia autom´atica de chamada de um algoritmo que executa o enchimento/esvaziamento de um reservat´orio. Essa POU ser´a a Main Task e deve ser configurada para ser executada livremente.
• nivelR - Program em FBD que deve ser configurado para ser executado livremente e gera os status do reservat´orio (reserv vazio para nivel ≤ 0 e reserv cheio para nivel ≥ 100).
• encheR - A¸c˜ao de seqfull em SFC que deve ter o qualificador N e implementa uma sequˆencia au-tom´atica de enchimento/esvaziamento de um reservat´orio.
• simul - Program em ST que deve ser configurado para ser executado ciclicamente com tempo de 200ms e implementa uma simula¸c˜ao l´ogica de n´ıvel do reservat´orio (se valv entrada aberta, ent˜ao nivel:=nivel+1; se valv saida aberta ent˜ao nivel:=nivel-1; obs: sature os limites m´aximo e m´ınimo).
O programa seqfull dever´a implementar a seguinte sequˆencia:
1. Inicialmente o sistema permanece no estado desligado.
2. Verifica se o operador deu a partida no sistema (ou seja, se executa seq ´e verdadeiro).
3. Caso a condi¸c˜ao 2 seja verdadeira, ativar a a¸c˜ao encheR que ir´a controlar o enchimento ou esvazi-amento do reservat´orio, e escrever o status da sequˆencia na vari´avel seqstatus (‘Partindo’ ).
4. Verifica se a sequˆencia foi desabilitada (desligada) pelo operador (ou seja, se executa seq ´e falso).
5. Caso a condi¸c˜ao 4 seja verdadeira, parar tudo, ou seja, fechar as v´alvulas, desligar o agitador e escrever o status da sequˆencia na vari´avel seqstatus (‘Desabilitada’ ).
6. Retornar ao passo 1.
O programa encheR dever´a implementar a seguinte sequˆencia:
1. Verifica se o reservat´orio est´a vazio (ou seja, se reserv vazio ´e verdadeiro).
2. Caso esteja, abrir a v´alvula de entrada para encher o reservat´orio e escrever o status da sequˆencia na vari´avel seqstatus (‘Enchendo’ ).
3. Quando o estado de reserv cheio for verdadeiro, fechar a v´alvula de entrada e ligar o agitador por 10s, al´em de escrever o status da sequˆencia na vari´avel seqstatus (‘Agitando’ ).
4. Decorridos os 10s, desligar o agitador, abrir a v´alvula de sa´ıda para esvaziar o reservat´orio e escrever o status da sequˆencia na vari´avel seqstatus (‘Esvaziando’ ).
5. Verificar se o reservat´orio est´a vazio (ou seja, se reserv vazio ´e verdadeiro). Caso esteja, retornar ao passo 1.
Teste seu programa minuciosamente. ´E comum, em automa¸c˜ao industrial, ignorarmos (por descuido ou desconhecimento) algumas situa¸c˜oes operacionais importantes durante o projeto, as quais por´em podem ser reveladas mediante um teste cuidadoso.
Roteiro de a¸
c˜
oes
O prop´osito desta se¸c˜ao ´e auxiliar a cria¸c˜ao e desenvolvimento da atividade proposta, atrav´es de re-ferˆencias apropriadas aos t´opicos 1 2 3 3a . . . contidos na se¸c˜ao inicial “Projeto utilizando o CODESYS”.
1. Cria¸c˜ao da estrutura do projeto
1.1. Crie o projeto. 1
1.2. Adicione as POUs seqfull, nivelR e simul `a ´arvore do projeto. 2
1.3. Adicione as vari´aveis globais descritas na tabela 1. 3b
1.4. Configure as tarefas em conformidade com as POUs presentes no projeto. 4
Ao final desta etapa, a ´arvore de seu projeto deve ficar parecida com a figura 8.
Figura 8: ´Arvore do projeto
2. Edi¸c˜ao dos programas 3a 3c
2.1. Na ´arvore do projeto, clique no programa nivelR para abrir o editor de FBD. Selecione os objetos desejados na regi˜ao direita designada como Toolbox e arraste-os para a linha (network ) de edi¸c˜ao, inserindo os mesmos nas regi˜oes permitidas (aquelas real¸cadas com a cor verde).
2.2. Edite em seguida o programa simul empregando a linguagem ST.
2.3. Adicione a a¸c˜ao de nome encheR ao programa seqfull, cuidando para que a linguagem da mesma seja SFC.
2.4. Para editar o programa seqfull e, posteriormente, a a¸c˜ao encheR, observe as seguintes dicas: • N˜ao ´e poss´ıvel editar diretamente os elementos gr´aficos correspondentes `as a¸c˜oes inseridas em
um programa SFC. Vocˆe deve inicialmente criar e editar as a¸c˜oes em separado, e depois inserir o nome das mesmas nos respectivos elementos gr´aficos do programa SFC.
• Transi¸c˜oes, ao contr´ario, devem ter suas express˜oes booleanas digitadas diretamente no campo edit´avel `a direita das mesmas.
• N˜ao ´e poss´ıvel desenhar diretamente linhas de conex˜ao entre passos e transi¸c˜oes. Estas co-nex˜oes devem ser realizadas inserindo-se elementos gr´aficos de “salto” (jump), especificando, nos mesmos, o identificador do passo de destino.
3. Compila¸c˜ao, gera¸c˜ao do aplicativo e simula¸c˜ao Siga atentamente as instru¸c˜oes contidas em 5 6 7 .
Durante a simula¸c˜ao de seu projeto, vocˆe verificar´a que, no CODESYS, uma a¸c˜ao escrita em SFC (no nosso caso, encheR) sempre se inicia no mesmo passo em que foi abandonada, na execu¸c˜ao anterior. Para contornar esta dificuldade, lembre-se que cada passo em SFC possui uma vari´avel associada <nome_do_passo>.X que indica se o passo est´a ativo (= 1) ou n˜ao (= 0). Esta vari´avel pode ser escrita. Use este recurso para permitir que a a¸c˜ao em SFC sempre recomece em seu passo inicial.
Referˆencias
[1] Abreu, L. F. e Michel, H. C. C.; Procedimento de configura¸c˜ao do OPC-Server usando CodeSys; Universidade Federal de Minas Gerais; Departamento de Engenharia Eletrˆonica, 2014.
[2] Braga, Carmela M. P. e Mendes, Luiz T. S.; 11a Aula - Programa¸c˜ao IEC 61131-3 no ambiente