Вы находитесь на странице: 1из 8

Universidade Federal de Minas Gerais

Escola de Engenharia
Departamento de Engenharia Eletrônica
Laboratório de Informática Industrial

11a Aula - Programação IEC 61131-3 no ambiente CODESYS


Objetivos: Desenvolver programas em SFC sob o ambiente CODESYS.

Atividades Prévias
Leia atentamente, em casa, o texto desta prática, de forma a agilizar os procedimentos a serem executados
no laboratório.

Projeto utilizando o CODESYS


CODESYS Development System é um aplicativo para a programação de projetos de controle e automação
no ambiente da norma IEC 61131-3. As etapas para o desenvolvimento de um projeto neste aplicativo
são as seguintes:

1 Criação de um novo projeto

1.1. Abra o aplicativo CODESYS através do menu iniciar (3S CODESYS →CODESYS → CO-
DESYS V3.5 SP3 Patch5 ) ou do ı́cone na área 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ção Standard project, defina o nome do projeto (Name), o
diretório para armazená-lo (Location) e selecione OK.

Figura 1: Janela para criar um novo projeto

1.3. Uma nova janela será 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ção real de hardware de CLP), e a linguagem do programa
PLC PRG. No nosso caso, será SFC. Por default, o aplicativo cria uma árvore hierárquica (fig.
3) com uma tarefa principal, denominada PLC PRG, que é uma POU do tipo Program, cujo
nome poderá ser alterado posteriormente.
1.4. Altere o nome do programa principal de PLC PRG para o nome do programa principal de

Laboratório de Informática Industrial - Profs. Maria Auxiliadora M. Persechini e Luiz T. S. Mendes 1


DELT/UFMG - 2015 Última revisão: 02/10/2018
Figura 2: Janela para seleção do dispositivo

Figura 3: Árvore hierárquica inicial da configuração 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 árvore hierárquica onde o nome PLC PRG aparece.
1.5. Salve seu projeto, e não se esqueça de salvá-lo ao final de cada uma das próximas etapas.

2 Criação de POUs
Você pode criar quantas POUs forem necessárias para o seu projeto. Para isso, pressione o botão
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ção. Lembre-se que
se a POU for do tipo Function é preciso definir também o tipo de valor de retorno da função.

3 Edição de POUs
Para editar um POU basta clicar em seu nome que o editor da linguagem selecionada na criação da
POU será aberta. Independente da linguagem selecionada, a janela do editor é dividida em duas
partes. A parte superior é destinada à declaração das variáveis locais, e a parte inferior ao algoritmo
da POU, como mostrado na figura 4.

Figura 4: Janela para edição de POUs

Laboratório de Informática Industrial - Profs. Maria Auxiliadora M. Persechini e Luiz T. S. Mendes 2


DELT/UFMG - 2015 Última revisão: 02/10/2018
3a Declaração de variáveis locais

A declaração das variáveis locais de uma POU pode ser feita editando-se as variáveis direta-
mente na parte superior do editor ou usando o recurso de auto-declaração. Neste segundo caso,
quando o nome de uma variável ainda não declarada for editada na parte inferior destinada
ao algoritmo, uma janela surgirá, como mostrado na figura 5, para auxiliar na declaração.

Figura 5: Janela para criar uma nova variável

3b Declaração de variáveis globais

No caso de variáveis globais a serem manipuladas por duas ou mais POUs de um dado projeto,
a declaração das mesmas é feita clicando-se com o botão direito do mouse em Application e
selecionando-se Add Object → Global Variable List; será então aberta uma nova janela na qual
define-se o nome da Lista de variáveis globais. Este nome será adicionado à árvore do projeto
e, clicando-se no mesmo, seráberta uma aba para a declaração das variáveis globais desta lista
(figura 6)

Figura 6: Janela para seleção do dispositivo

3c Edição das POUs

A edição de uma POU nas linguagens textuais (ST e IL) é de formato livre, bastando escrever
o algoritmo. Para facilitar, o editor oferece recursos interativos que auxiliam na edição.

A edição de uma POU nas linguagens gráficas (LD, FDB e SFC) é realizada por meio do
recurso “arrasta e cola” dos elementos de programação que são exibidos na janela ToolBox que
se abre juntamente com o editor.

Ao utilizar as linguagens LD e FDB, os elementos de programação virão associados ao sı́mbolo


“???” que deve ser substituı́do por uma variável ou por valores constantes.

Ao utilizar a linguagem SFC, é preciso definir o algoritmo das ações e das transições. Para
isso pressione o botão direito do mouse sobre o nome da POU e siga o caminho AddObject →

Laboratório de Informática Industrial - Profs. Maria Auxiliadora M. Persechini e Luiz T. S. Mendes 3


DELT/UFMG - 2015 Última revisão: 02/10/2018
Action ou AddObject → Transition. Na janela que se abrir, defina um nome e a linguagem de
implementação. Depois basta editar o algoritmo na linguagem selecionada.

Além disso, as transições em SFC também podem ser editadas diretamente substituindo-se
o termo TRUE por uma variável booleana ou por uma expressão simples que resulte em um
valor booleano.

Por fim, para associar um objeto criado como ação ou transição ao elemento gráfico do editor,
clique no sı́mbolo . Selecione o objeto desejado na janela que se abrir.

4 Configuração 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á processada ciclicamente de acordo com a definição de um tempo de ciclo
determinado no campo Interval.
• Event: A tarefa será iniciada assim que a variável do tipo BOOL definida no campo Event perceber
uma borda de subida.
• Freewheeling: A tarefa será processada livremente assim que o programa for iniciado e, no final
de sua execução, será reiniciada automaticamente em um loop contı́nuo.
• Status: A tarefa será iniciada assim que a variável 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ça:

Figura 7: Tela tı́pica para configuração de tarefas

4.1. Configure inicialmente a tarefa principal. Para isso dê 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ção 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ção.
4.3. Caso necessário, crie outras tarefas. Para isso pressione o botão 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ós criada a nova tarefa, não se esqueça de definir o campo type e incluir as
POUs no campo Add Call.

Laboratório de Informática Industrial - Profs. Maria Auxiliadora M. Persechini e Luiz T. S. Mendes 4


DELT/UFMG - 2015 Última revisão: 02/10/2018
5 Compilação do projeto
Compile seu projeto antes de testá-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ário.

6 Criação do aplicativo
Mesmo em ambiente de simulação, é preciso criar o aplicativo do projeto e fazer download no
dispositivo que foi definido na página 1, item 1.3. Para isso siga os seguintes passos:

6.1. Marque a opção de simulação: Online → Simulation


6.2. Crie a aplicação: Online → Create boot application. Na janela que se abrir salve a aplicação
no mesmo diretório onde o projeto está sendo salvo.
6.3. Faça o download : Online → Multiple Download ... e confirme OK na janela que se abrir.

7 Simulação e teste do Projeto


Para testar o projeto utilize os recursos de simulação disponı́veis, da seguinte forma:

7.1. Abra a janela de declaração das variáveis globais e das POUs que se deseja verificar o funcio-
namento.
7.2. Faça o login seguindo o caminho Online → Login
7.3. Ajuste as janelas abertas para visualização seguindo o seguinte caminho: Window → New
Horizontal Tab Group ou Window → New Vertical Tab Group
7.4. Inicialize a aplicação em Debug → Start.

A partir deste ponto sua aplicação já estará sendo executada.

Para alterar online o valor de uma varável, utilize o campo Prepared value na janela de variáveis para
editar um novo valor. Após a edição deste novo valor, faça a carga utilizando o seguinte caminho:
Debug → Write Values.

Se quiser alterar ou corrigir a aplicação, utilize antes o comando Stop seguido de Logout.

Observações Importantes
O aplicativo CODESYS oferece uma série de recursos de edição, como, por exemplo, ı́cones, teclas de
shortcuts e janelas popup, para agilizar a edição e a manipulação de informações. Neste roteiro, esses
recursos praticamente não foram utilizados, mas você pode usá-los à medida que for conhecendo melhor
o aplicativo.

Neste roteiro trabalhamos apenas com simulação. Utilize a referência [1] para que o CODESYS opere
como SoftPLC e comunicação via cliente/servidor OPC.

Atividades
Apś inicializar o aplicativo do CODESYS e criar o novo projeto, deverão ser implementadas as tarefas
e programas que executem a operação automática de um reservatório industrial, dotado de um agitador
interno [2].

Para implementar os programas referentes a este projeto no ambiente CODESYS, inicialmente crie uma
lista de variáveis globais (Application → Add Object → Global Variable list...) e defina a Base de Dados
como indicado na Tabela 1.

Laboratório de Informática Industrial - Profs. Maria Auxiliadora M. Persechini e Luiz T. S. Mendes 5


DELT/UFMG - 2015 Última revisão: 02/10/2018
Tabela 1: Base de dados do Projeto
Nome Tipo Descrição
executa seq Boolean Parte a seqüência automática
liga agitador Boolean Liga o agitador
valv entrada Boolean Abre/fecha válvula de entrada
valv saida Boolean Abre/fecha válvula de saı́da
reserv vazio Boolean Status de “reservatório vazio”
reserv cheio Boolean Status de “reservatório cheio”
nivel Integer Nı́vel do reservatório (faixa de 0 a 100)
seqstatus String Tamanho: 40 - Status da seqüência

O projeto deve conter as seguintes POUs:

• seqfull - Program em SFC que implementa uma sequência automática de chamada de um algoritmo
que executa o enchimento/esvaziamento de um reservatório. Essa POU será 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ório (reserv vazio para nivel ≤ 0 e reserv cheio para nivel ≥ 100).

• encheR - Ação de seqfull em SFC que deve ter o qualificador N e implementa uma sequência au-
tomática de enchimento/esvaziamento de um reservatório.

• simul - Program em ST que deve ser configurado para ser executado ciclicamente com tempo de
200ms e implementa uma simulação lógica de nı́vel do reservatório (se valv entrada aberta, então
nivel:=nivel+1; se valv saida aberta então nivel:=nivel-1; obs: sature os limites máximo e mı́nimo).

O programa seqfull deverá implementar a seguinte sequência:

1. Inicialmente o sistema permanece no estado desligado.

2. Verifica se o operador deu a partida no sistema (ou seja, se executa seq é verdadeiro).

3. Caso a condição 2 seja verdadeira, ativar a ação encheR que irá controlar o enchimento ou esvazi-
amento do reservatório, e escrever o status da sequência na variável seqstatus (‘Partindo’ ).

4. Verifica se a sequência foi desabilitada (desligada) pelo operador (ou seja, se executa seq é falso).

5. Caso a condição 4 seja verdadeira, parar tudo, ou seja, fechar as válvulas, desligar o agitador e
escrever o status da sequência na variável seqstatus (‘Desabilitada’ ).

6. Retornar ao passo 1.

O programa encheR deverá implementar a seguinte sequência:

1. Verifica se o reservatório está vazio (ou seja, se reserv vazio é verdadeiro).

2. Caso esteja, abrir a válvula de entrada para encher o reservatório e escrever o status da sequência
na variável seqstatus (‘Enchendo’ ).

3. Quando o estado de reserv cheio for verdadeiro, fechar a válvula de entrada e ligar o agitador por
10s, além de escrever o status da sequência na variável seqstatus (‘Agitando’ ).

4. Decorridos os 10s, desligar o agitador, abrir a válvula de saı́da para esvaziar o reservatório e escrever
o status da sequência na variável seqstatus (‘Esvaziando’ ).

5. Verificar se o reservatório está vazio (ou seja, se reserv vazio é verdadeiro). Caso esteja, retornar
ao passo 1.

Laboratório de Informática Industrial - Profs. Maria Auxiliadora M. Persechini e Luiz T. S. Mendes 6


DELT/UFMG - 2015 Última revisão: 02/10/2018
Teste seu programa minuciosamente. É comum, em automação industrial, ignorarmos (por descuido ou
desconhecimento) algumas situações operacionais importantes durante o projeto, as quais porém podem
ser reveladas mediante um teste cuidadoso.

Roteiro de ações
O propósito desta seção é auxiliar a criação e desenvolvimento da atividade proposta, através de re-
ferências apropriadas aos tópicos 1 2 3 3a . . . contidos na seção inicial “Projeto utilizando o
CODESYS”.

1. Criação da estrutura do projeto

1.1. Crie o projeto. 1

1.2. Adicione as POUs seqfull, nivelR e simul à árvore do projeto. 2

1.3. Adicione as variáveis 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 árvore de seu projeto deve ficar parecida com a figura 8.

Figura 8: Árvore do projeto

2. Edição dos programas 3a 3c

2.1. Na árvore do projeto, clique no programa nivelR para abrir o editor de FBD. Selecione os objetos
desejados na região direita designada como Toolbox e arraste-os para a linha (network ) de edição,
inserindo os mesmos nas regiões permitidas (aquelas realçadas com a cor verde).
2.2. Edite em seguida o programa simul empregando a linguagem ST.
2.3. Adicione a ação 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ção encheR, observe as seguintes dicas:
• Não é possı́vel editar diretamente os elementos gráficos correspondentes às ações inseridas em
um programa SFC. Você deve inicialmente criar e editar as ações em separado, e depois inserir
o nome das mesmas nos respectivos elementos gráficos do programa SFC.

Laboratório de Informática Industrial - Profs. Maria Auxiliadora M. Persechini e Luiz T. S. Mendes 7


DELT/UFMG - 2015 Última revisão: 02/10/2018
• Transições, ao contrário, devem ter suas expressões booleanas digitadas diretamente no campo
editável à direita das mesmas.
• Não é possı́vel desenhar diretamente linhas de conexão entre passos e transições. Estas co-
nexões devem ser realizadas inserindo-se elementos gráficos de “salto” (jump), especificando,
nos mesmos, o identificador do passo de destino.

3. Compilação, geração do aplicativo e simulação


Siga atentamente as instruções contidas em 5 6 7 .

Durante a simulação de seu projeto, você verificará que, no CODESYS, uma ação escrita em SFC (no
nosso caso, encheR) sempre se inicia no mesmo passo em que foi abandonada, na execução anterior.
Para contornar esta dificuldade, você deve alterar a lógica da ação em SFC de forma que esta, quando
for novamente executada, detecte sua interrupção na execução anterior e desvie assim para seu passo
inicial.

Referências
[1] Abreu, L. F. e Michel, H. C. C.; Procedimento de configuração do OPC-Server usando CodeSys;
Universidade Federal de Minas Gerais; Departamento de Engenharia Eletrônica, 2014.

[2] Braga, Carmela M. P. e Mendes, Luiz T. S.; 11a Aula - Programação IEC 61131-3 no ambiente
ISAGRAF; Universidade Federal de Minas Gerais; Departamento de Engenharia Eletrônica, 2008

Laboratório de Informática Industrial - Profs. Maria Auxiliadora M. Persechini e Luiz T. S. Mendes 8


DELT/UFMG - 2015 Última revisão: 02/10/2018