Computing">
Programando No Software Codesys
Programando No Software Codesys
Programando No Software Codesys
CAMPUS JATAÍ
CONTROLADORES LÓGICOS
PROGRAMÁVEIS (CLP´s)
Programando no Software Codesys
A automação surgiu como um meio para simplificar a participação do trabalho humano sobre
os processos industriais. Entende-se por automação um conceito e um conjunto de técnicas por
meio das quais se constroem sistemas ativos capazes de atuar com uma eficiência ótima pelo uso de
informações recebidas do meio sobre o qual atuam.
Durante a década de 60, foi desenvolvido a partir de uma demanda existente na indústria
automobilística norte-americana, o Programmable Logic Controller (PLC) ou Controlador Lógico
Programável (CLP). O CLP é a principal ferramenta de um processo industrial automatizado.
Segundo a NEMA (National Electrical Manufacturers Association), o CLP é um aparelho eletrônico
digital que utiliza uma memória programável para armazenar internamente instruções para
implementar funções específicas, tais como lógica, sequenciamento, temporização, contagem e
aritmética, controlando, por meio de módulos de entradas e saídas, vários tipos de máquinas ou
processos.
Os Controladores Programáveis proporcionam para as fábricas modernas uma estrutura de
processo automatizado, que se apoiam em dispositivos de hardware e software, combinados de
forma organizada, que permite um controle total acerca das informações envolvidas. O Controlador
Programável monitora o estado das entradas e saídas de acordo com às instruções programadas na
memória, e energiza ou desenergiza as saídas, conforme o resultado lógico obtido através das
instruções do programa. O programa pode ser entendido como uma sequência de instruções a serem
executadas pelo CLP para realizar um determinado processo.
Existem no mercado de automação, nacional e mundial, vários fabricantes de CLP’s, cada um
com sua arquitetura, rede de comunicação, linguagem e software de programações diferentes. Uma
Linguagem de programação pode ser entendida como um conjunto padronizado de instruções que o
sistema computacional é capaz de reconhecer (FRANCHI e CAMARGO, 2008). O problema dos
CLP’s é que cada fabricante possui software próprio, sem manter um determinado padrão ou
modelo, utilizando-se de linguagens de programação diferentes que impossibilitam a portabilidade
de código, ou seja, atualmente o programa desenvolvido para determinado equipamento não pode
ser utilizado diretamente em outro. Isto pode acarretar perca de tempo e elevação dos custos de
produção.
Para uniformizar as várias metodologias de programação dos CLP’s, a International
Electrotechnical Commission (IEC) publicou a norma IEC 61131-3 (1993), a qual define regras de
semântica e sintaxe para as linguagens de programação mais comuns, que podem ser empregadas
em dispositivos comerciais, facilitando serviços de manutenção e desenvolvimento de projetos para
que os fabricantes possam expandir e adaptar estas regras para suas próprias implementações em
CLP’s. A norma define cinco linguagens de programação, sendo elas: Ladder, Diagrama de Blocos
de Funções, Sequenciamento Gráfico de Funções, Lista de Instruções e Texto Estruturado.
Atualmente o software de programação Codesys, é um dos poucos softwares existentes
padronizados de acordo com a IEC 61131-3, que oferece uma ferramenta de automação avançada,
contendo inúmeras funções pré-definidas e métodos para desenvolvedores de aplicação. Nesse o
intuito, a apostila em questão o trabalho teve como objetivo realizar um estudo do software
Codesys. Para isso, teve-se o propósito de dominar as cinco linguagens de programação
estabelecidas pela IEC 61131-3, simulando uma aplicação de um processo industrial para cada
linguagem de programação. Visando a disseminação do conhecimento na área de automação
industrial para o ensino técnico profissionalizante, alunos de graduação e profissionais de indústria.
2. CONCEITOS DA IEC 61131-3.
Finalmente, para trabalharmos com variáveis básicas, cada variável possui seu tipo, as
variáveis podem ser numéricas (usadas para operações aritméticas), Booleanas (operações de
lógica), Texto (Trabalhar com caracteres) e Data/Tempo (operações com data, hora e tempo).
2.1.1. Variáveis booleanas.
As variáveis BOOLEANAS são utilizadas quando se deseja realizar operações lógicas.
Por exemplo uma entrada ou uma saída digital seria do tipo BOOL. Um cartão com 16
entradas ou saídas digitais poderia ser endereçado em sua totalidade como uma WORD.
2.1.2. Declaração de variáveis Locais e Globais
Definimos uma variável como local ou global dependendo da utilização do Tag no programa
2.1.2.1. Variável Local
Quando declaramos uma variável como Local, definimos que a utilização da Tag será
somente na sub-rotina de programação.
OBS.: É possível declarar o mesmo nome de Tag em diferentes sub-rotinas quando a
declaração é local.
2.1.2.2.Variável Global
Quando declaramos uma variável como Global, definimos que a utilização do Tag será para
todo o programa e sub-rotinas, inclusive para comunicações com IHM’s, Supervisórios ou redes de
comunicação tipo OPC.
3. LINGUAGENS DE PROGRAMAÇÃO
Programação desenvolvida em IL
Programação desenvolvida em ST
4. INICIANDO O SOFTWARE
Tela Codesys
Sendo definido:
ORGANIZADOR - é usado para gerenciar os novos itens de cada pasta. Através dele
inserimos novos elementos nas pastas localizadas abaixo e solicitamos a visualização /edição
de alguns itens.
ORGANIZADOR/PROGRAMAS – Nesta pasta alocamos os programas do CLP, bem
como suas funções e seus blocos de função.
ORGANIZADOR/ TIPOS DE DADOS – Aqui nós colocamos nossos tipos de dados,
Structures, Enumeration, etc...São tipos de dados criados pelo usuário conforme a IEC 61131-3
ORGANIZADOR / VISUALIZADOR – Dentre os recursos oferecidos pelo CoDeSys, está
a criação de telas para visualização do programa criado, tanto on-line como off-line (modo
simulação), estas telas são criadas e gerenciadas nesta pasta.
ORGANIZADOR / RECURSOS – Pasta responsável por vários itens no CoDeSys. Entre
eles: Configuração de hardware, configuração do sistema da CPU, criação de variáveis de rede,
geração de gráficos de tendência, criação de tabelas de monitoração etc...
ÁREA DE TRABALHO – Quando selecionamos ou criamos algo em qualquer pasta do
organizador, este item aparece na área de trabalho para edição ou visualização.
BARRA DE FERRAMENTAS – Aqui ficam algumas ferramentas para acesso mais rápido a
algumas funções do programa, esta barra muda conforme o item selecionado na Área de Trabalho.
MENU PRINCIPAL – Aqui ficam todas as opções de acessibilidade e funcionamento do
CODESYS.
Os passos necessários para a criação de um programa são:
• Criar um novo projeto
• Configurar o Hardware
• Criar os arquivos fontes necessários (POU)
• Criar as Variáveis
• Realizar a lógica do programa
• Criar blocos de função e /ou funções.
• Compilar o programa
• Realizar os testes
• Configurar as telas / ferramentas de visualização.
• Executar os testes do programa em modo OFF-line.
• Realizar o comissionamento da máquina.
• Transferir o programa para o CLP
• Executar os testes do programa em modo ON-line
• Armazenar os programas fontes no CLP. (Quando desejado)
Saídas:
• M1: bobina virtual que segura o processo;
• M2: bobina virtual que “reseta” o contador;
• C1: Contador;
• T1: Temporizador;
No Organizador, selecionar a opção RECURSOS.
Clique no item Variáveis globais e selecione Variáveis globais como mostra a figura abaixo.
Barra de ferramentas
• Para implementação (digitação da lógica de programação) siga os seguintes passos:
• Na área do programa clique sobre a linha de comando que aparece e clique no menu
em Inserir->Contato (negado) ou pressione o ícone na barra de ferramentas:
• Na linha de comandos irá aparecer um contato NF:
Clique nas interrogações acima do contador e coloque o nome Contador. Assim que damos
um nome para o contador, a seguinte janela irá abrir:
Isso ocorre porque o assistente de declaração verifica que não há nenhuma variável declarada
como Contador, sendo assim, ele solicita que entremos com mais dados sobre esta variável.
Preencha esta caixa de diálogos com os seguintes dados (se estiver preenchido não é
necessário alterar):
• Nome: Contador.
• Tipo: CTU.
O bloco de função irá aparecer na declaração local de variáveis.
No contador, nas interrogações ao lado de RESET, definimos qual contato ou bobina irá
“resetar” o contador, selecione M2. Nas interrogações ao lado de PV (Preset Value), definimos com
quantos pulsos o contador irá atuar, digite 4.
Após o contador, insira uma bobina com o nome da variável C1. A segunda linha de comando
deverá ficar da seguinte forma:
Agora iremos definir a terceira linha de comando. Insira mais uma linha lógica abaixo.
Coloque um contato NA da bobina C1. Clique na linha lógica com o botão direito do mouse e
selecione Bloco Funcional. A tela Assistente de entrada abrirá novamente. Selecione na biblioteca
Blocos Funcionais Padrão o bloco de função TON (FB) na pasta Timer.
O mesmo poderia ser feito selecionando na barra de ferramentas a opção:
Um temporizador irá aparecer no meio da linha lógica.
Para a quarta linha de comando insira mais uma linha lógica abaixo e coloque a seguinte
lógica:
Para a quinta e última linha de comado insira mais uma linha lógica e implemente:
Para simular o programa, faremos uma interface IHM, em que poderemos visualizar os botões
de cada contato e uma sinalização que nos indique que uma bonina (saída) está energizada.
No organizador selecione a opção Visualizações:
Clique com o botão direito na pasta Visualizações e selecione a opção Acrescentar objeto. A
janela Nova visualização irá aparecer em “Nome da nova visualização” dê um nome para a tela de
visualização, como por exemplo: Interface.
Clique em OK. A tela nomeada Interface irá aparecer:
Primeiramente vamos criar o botão I1. Clique no ícone para criar um botão na janela de
visualização. Assim que selecionar esta opção, clique e arraste com o mouse na tela de
visualização para criar o botão.
Dê um duplo clique neste botão para editá-lo.
Escreva na lacuna Conteúdo: I1. Mantenha o alinhamento central e escolha um fonte de texto
qualquer.
Selecione agora a opção Entrada.
Selecione a opção Pulsar variável. Clique com o mouse dentro do quadro branco e pressione
F2, selecione a variável I1 (BOOL) e pressione OK. O botão I1 estará pronto. Da mesma forma,
crie os botões I2 e I3.
Vamos criar agora a sinalização das bobinas (saídas), lembrando que a única saída física é a
bobina Q1. Selecione na barra de ferramentas a opção elipse e crie um círculo conforme abaixo:
Para utilizar as ferramentas de simulação deve-se ter o programa compilado como se fosse
transferi-lo para o CLP.
Habilite no menu principal a opção Comunicação -> Modo simulação. Isso irá colocar o
programa em modo de simulação.
Agora selecione a opção -> Login: . Isso fará com que o software faça um login com um
CLP virtual.
Este CLP virtual inicializa em Run, selecione a opção Run: .Estaremos com este CLP
virtual em modo Run. A tela que aparecerá é a seguinte:
4.4.2. Iniciando a Progamação em Diagrama de Blocos de Funções (FBD –
Function Block Diagram)
4.4.2.2.Funções Lógicas
Porta lógica é um circuito que contém um ou mais terminais de entrada de sinais (onde são
colocadas as variáveis booleanas) que executa uma operação booleana entre as variáveis presentes
nas suas entradas e transfere o resultado para a saída. Tais dispositivos obedecem às leis da álgebra
de Boole.
4.4.2.3.Posições do Cursor em FBD
Todo texto é uma posição possível do cursor. O texto selecionado está em um plano de
fundo azul e agora pode ser alterado.
Também pode-se reconhecer a posição presente do cursor por um retângulo pontilhado. A
seguir está uma lista de todas as posições possíveis de cursor com um exemplo.
4.4.2.4. Símbolos da barra de ferramentas
“Entrada (IN)”
Este comando insere um operador de entrada. Com vários operadores, o número de entradas
pode variar.
A entrada inserida é alocada com o texto “???”. Este texto deve ser clicado e transformado na
constante ou variável desejada.
“Saída (OUT)”
Este comando insere uma atribuição adicional em uma atribuição existente. Esse recurso
permite o posicionamento das assim chamadas atribuições “combs”, isto é, a atribuição de valor
atualmente localizado na linha de diversas variáveis.
A saída inserida é alocada com o texto “???”. Este texto deve ser clicado e alterado para a
variável desejada.
“Instrução (Caixa)”
Com este comando, operadores, funções, blocos funcionais e programas podem ser inseridos.
Em primeiro lugar, é inserido um operador “AND”. Isso pode ser convertido por seleção ou
sobrescrição do texto “AND” por outro operador, função, bloco funcional e programa.
Em funções e blocos funcionais, os nomes formais de entradas e saídas são exibidas.
“Atribuição”
Este comando insere uma atribuição
Dependendo da posição selecionada, a inserção ocorre diretamente na frente da entrada
selecionada, diretamente após a saída selecionada ou no final da rede.
Para uma atribuição inserida, uma seleção pode ser feita no texto “???” e a atribuição pode ser
substituída pela variável a ser atribuída.
“Salto”
Este comando insere um salto.
Dependendo da posição selecionada, a inserção ocorre diretamente na frente da entrada
selecionada, diretamente após a saída selecionada ou no final da rede.
Para um salto inserido, uma seleção pode ser feita no texto “???” e o salto pode ser substituído
pelo rótulo a ser atribuído.
“Retorno”
Este comando insere uma instrução de Retorno.
Dependendo da posição selecionada, a inserção ocorre diretamente na frente da entrada
selecionada, diretamente após a saída selecionada, diretamente antes da linha cruzada selecionada,
ou no final da rede.
“Negar”
Com este comando pode-se negar as entradas, saídas, saltos ou instruções de Retorno. O
símbolo para negação é um pequeno círculo em uma conexão.
Se uma entrada estiver marcada, então essa será negada.
Se uma saída for selecionada, essa saída será negada.
Se um salto ou um retorno estiver marcado, a entrada desse salto ou retorno irá ser negada.
“Set/Reset”
Com esse comando pode-se definir saídas Set ou Reset.
Tomando como base o item 4.4 deste capítulo, insira os blocos correspondentes a primeira
linha lógica:
Na segunda linha lógica insira uma “Instrução (Caixa)”, no local em que está escrito “AND”,
digite CTU, que é o bloco funcional referente ao contador que estamos utilizando na edição deste
programa.
No texto “???” em cima do contador, digite por ex.: Contador.
Ao digitar “Contador”, o programa automaticamente abrirá a tela Declarar variável.
Clique em “OK” e configure o contador como a imagem abaixo referente a segunda linha
lógica do programa.
Na terceira linha lógica insira uma “Instrução (Caixa)”, no local em que está escrito “AND”,
digite TON, que é o bloco funcional referente ao temporizador que estamos utilizando na edição
deste programa.
No texto “???” em cima do contador, digite por ex.: Temporizador.
Ao digitar “Temporizador”, o programa automaticamente abrirá a tela declarar variável.
Clique em “OK” e configure o temporizador como a imagem abaixo referente a terceira linha
lógica do programa.
Com o software configurado para programação em Lista de Instruções (opção IL), conforme
explicado no primeiro capítulo, daremos início a programação.
4.4.3.1.Instruções
Uma Lista de Instruções (IL) consiste de uma série de instruções. Cada instrução começa em
uma nova linha e contém um operador e, dependendo do tipo de operação, um ou mais
operandos separados por vírgulas.
Na frente de uma instrução pode haver uma marca de identificação (rótulo) seguida de
dois pontos (:).
Um comentário dever ser o último elemento em uma linha. Linhas em branco podem
ser inseridas entre instruções.
f) Com as variáveis globais declaradas, mude o nome das variáveis “Trans0”, “Step”, etc.,
conforme a figura abaixo:
g) Clique com o botão direito do mouse no bloco “Q1” e selecione a opção “Zoom
ação/transição”. A tela “Nova ação” aparecerá:
h) Selecione a opção “FBD”, pois iremos implementar uma lógica em FBD na ação a ser
definida. Clique em “OK” e a seguinte tela irá aparecer:
i) As ferramentas de implementação da lógica em blocos aparecerão na barra de
ferramentas. Implemente a seguinte lógica:
j) Repita o item “g”, clicando com o botão direito do mouse em “T1”, inserindo a seguinte
lógica:
4.4.5. Iniciando a Programação em Texto Estruturado (ST – Structured
Text)
Com o software configurado para programação em Texto Estruturado (opção ST), conforme
explicado anteriormente, daremos início a programação.
No Organizador, selecione a opção Recursos.
4.4.5.1..Definições da linguagem ST
Em ST podemos invocar um bloco de função através de seu nome, tendo como parâmetros
valores válidos para os parâmetros de entrada.
Forma Geral:
InstânciaBlocoFunc(ParamEntrada1:=Expressão1, ParamEntrada2:=Expressão2, …);
• Comando condicional
IF<expressão booleana>THEN
<comandos>
END_IF;
IF<expressão booleana>THEN
<comandos>
ELSE
<comandos>
END_IF;
IF< expressão booleana>THEN
<comandos>
ELSEIF< expressão booleana>
<comandos>
ELSE
<comandos>
END_IF;
• Comando condicional
CASE<expressão inteira>OF
<valor de seletor inteiro>:<comandos>
<valor de seletor inteiro>:<comandos>
<valor de seletor inteiro>:<comandos>
ELSE
<coamando>
END_CASE;
• Comandos de repetição (FOR/DO)
FOR < valor final da expressão>
TO < valor final da expressão>
BY < expressão incremental> DO
<comandos>
END_FOR;
A expressão precedida por BY é opcional. Se BY for omitido, a variável de iteração será
incrementada de 1.
A variável de iteração NÃO deve ser utilizada fora do loop, pois seu valor é dependente da
implementação.
As instruções dentro do comando não devem modificar as variáveis que afetam os valores de
incremento e final
• Comandos de repetição (WHILE/DO)
WHILE<Expressão booleana>DO
<comandos...>
END_WHILE
• Comando REPEAT..UNTIL
REPEAT
<comandos>
UNTIL <expressão booleana>
END_REPEAT
• Comando EXIT
Só pode ser usado dentro de iterações. Aborta loop.
• Comando Return
Só pode ser usado dentro de funções e blocos de função. Aborta a execução da função ou
bloco de execução.
Para implementar o programa proposto siga todos os passos já mencionados anteriormente
(declaração de variáveis locais e globais). O programa que atende o que foi proposto segue na
figura abaixo: