Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Introdução à Programação em CoDeSys: Matrizes, Variáveis e Controle de Encoder, Manuais, Projetos, Pesquisas de Automação

Saiba como utilizar matrizes, variáveis e controlar encoders em codesys. Aprenda a declarar e utilizar matrizes, como armazenar valores e acessá-los. Entenda o uso de variáveis inteiras e como utilizar elas para controlar pulsos em encoders. Encontre informações sobre loops, comparações e ajustes de parâmetros no i/o assistant.

Tipologia: Manuais, Projetos, Pesquisas

2020

Compartilhado em 18/08/2020

andre-pessoni
andre-pessoni 🇧🇷

4.3

(3)

2 documentos

1 / 24

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Programação avançada em ambienteProgramação avançada em ambiente
CoDeSys.CoDeSys.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18

Pré-visualização parcial do texto

Baixe Introdução à Programação em CoDeSys: Matrizes, Variáveis e Controle de Encoder e outras Manuais, Projetos, Pesquisas em PDF para Automação, somente na Docsity!

ProgramaçãoProgramação avançadaavançada emem ambienteambiente

CoDeSys.CoDeSys.

ProibidaProibida aa reproduçãoreprodução totaltotal ouou parcialparcial destedeste material,material, porpor

qualquer meio ou processo sem expressa autorização por escritoqualquer meio ou processo sem expressa autorização por escrito

da EATON Ltda. Electrical – Divisão Electrical PDO.da EATON Ltda. Electrical – Divisão Electrical PDO.

A violação dos direitos autorais é crime, podendo cominar emA violação dos direitos autorais é crime, podendo cominar em

penapena dede prisãoprisão e/oue/ou multa,multa, conjuntamenteconjuntamente comcom buscabusca ee

apreensão do material, sem prejuízo das indenizações civis (deapreensão do material, sem prejuízo das indenizações civis (de

acordo com o artigo 184 e parágrafos do Código Penal Brasileiroacordo com o artigo 184 e parágrafos do Código Penal Brasileiro

c/c a Lei nºc/c a Lei nº 9.610/98, Lei dos Direitos Autorais).9.610/98, Lei dos Direitos Autorais).

As informações contidas nesta apostila correspondem ao estadoAs informações contidas nesta apostila correspondem ao estado

atual da técnica e estão sujeitas a alterações sem aviso prévio.atual da técnica e estão sujeitas a alterações sem aviso prévio.

OsOs programasprogramas dede exemploexemplo contidoscontidos nestanesta apostilaapostila sãosão parapara

efeitos didáticos, a EATON não se responsabiliza por quaisquerefeitos didáticos, a EATON não se responsabiliza por quaisquer

danos e/ou acidentes que a utilização indevida destes softwaresdanos e/ou acidentes que a utilização indevida destes softwares

venha a causar.venha a causar.

A participação e/ou aquisição do treinamento não dá nenhumA participação e/ou aquisição do treinamento não dá nenhum

direito ao participante sobre os softwares utilizados durante odireito ao participante sobre os softwares utilizados durante o

treinamento,treinamento, incluindoincluindo cópias,cópias, versõesversões dede demonstraçãodemonstração e/oue/ou

versões originais.versões originais.

O treinamento tem como baseO treinamento tem como base a utilização de produtos EATON.a utilização de produtos EATON.

AA EATONEATON nãonão sese responsabilizaresponsabiliza porpor quaisquerquaisquer adaptações,adaptações,

conversões e/ou utilização dos conceitos contidos nesta apostilaconversões e/ou utilização dos conceitos contidos nesta apostila

com produtos de outra fabricação.com produtos de outra fabricação.

Introdução ao curso. Conforme explorado em treinamento anterior, alguns equipamentos EATON são programáveis através de uma ferramenta conhecida como CoDeSys que obedece a uma normal europeia, a IEC 61131 capítulo 3. Esta norma regulamenta 5 linguagens de programação diferentes, duas textuais, ou seja, sua programação é simplesmente feita através de texto e três gráficas. Structured Text Texto Estruturado (ST) Instruction List Lista de Instruções (IL) Function Block Diagram Diagrama de Blocos de Funções (FBD) Ladder Diagram Diagrama de Contatos (LD) Sequential Function Charts (SFC) Linguagens Textuais Linguagens Gráficas

Declaração de variáveis.

ARRAY. (Vetores e Matrizes.)

O CoDeSys permite que suas variáveis sejam declaradas em forma de vetores e matrizes, que são variáveis com a capacidade de armazenar vários valores, de mesmo tipo, em seu interior. São como caixas numeradas que são solicitadas conforme o número desejado. O Vetor armazena os valores em seu interior de forma Unidimensional, ou seja, a alocação é feita através de um indexador. Já a matriz pode armazenar valores em seu interior através de dois indexadores, tipo linha e coluna, ou três indexadores, tipo linha, coluna e profundidade. Exemplo de declaração de um vetor: AT <Endereço Fisico> : ARRAY[..] OF Onde: é o nome da variável que desjamos, o nome obedece as regras já estudadas para a declaração de variáveis. <Endereço Fisico> se necessário podemos especificar o endereço físico DO PRIMEIRO VALOR do vetor, automaticamente o CLP entende que os valores seguintes seguirão nos endereços subsequentes. Valor inicial do vetor, normalmente utilizamos 0 ou 1. Valor final do vetor, quantas posições o vetor terá. Tipo de valores a serem armazenados conforme IEC 61131-3. Tomemos este exemplo de declaração: Vetor1 AT %IB0 : ARRAY[0..3] OF BYTE; Nosso Vetor se chama “Vetor1”, seu endereço inicial é a entrada física IB0, ele possui 4 posições, começando em 0 e terminando em 3 e todos os valores armazenados dentro deste vetor são variáveis do tipo BYTE!

Comando condicional. (IF, ELSIF e ELSE)

O comando condicional executa uma ou mais linhas de comandos desde que uma condição inicial seja satisfeita. IF <EXPRESSÃO> THEN ; END_IF; Se a expressão retornar um valor verdadeiro, então o programa irá executar os comandos que estão após o operador THEN, caso contrário o programa irá pular os comandos até o indicador de fim de comando, neste caso END_IF; O comando condicional também pode ser montado desta forma: IF <EXPRESSÃO> THEN ; ; ELSE ; ; END_IF; Neste segundo exemplo, se a expressão retornar um valor verdadeiro, o programa irá executar o que se encontra após o operador THEN. Caso contrário, ELSE, o programa irá executar o que está após o operador ELSE. Outra forma de montar o comando condicional é através dos comandos ELSIF: IF THEN ; ; ELSIF ; ; ELSIF ; ; ELSIF ; ........... ELSE ; ; END_IF; Neste caso o programa irá executar os comandos que estiverem abaixo da Expressão que for verdadeira. Se por acaso, duas expressão forem verdadeiras ao mesmo tempo, a que estiver primeiro é a que será executada, se nenhuma expressão for verdadeira, então os comandos que aparecem abaixo do ELSE serão executados.

Comando seletor (CASE)

O comando seletor é ideal para seleção de várias possibilidades, veja: CASE OF : ; ; : ; : ; ... ..(ValorM> : ; ELSE ; END_CASE: Onde aparece colocamos uma variável do tipo INT, UINT, USINT, SINT, DINT ou UDINT. O programa irá comparar vários valores ou intervalos de valores com a variável inteira e irá executar os comandos que estiverem na linha correspondente. CASE SeletorVelocidade OF 1 : Escolha:=100 ; 2 : Escolha:=1000 ; 3,4 : Escolha:=10000 ; 5..100 : Escolha:=15000; ELSE Escolha:=0; END_CASE: No exemplo acima considere “SeletorVelocidade” como uma variável do tipo UINT. Se esta variável for igual a 1 a variavel “Escolha” será carregada com o valor 100. Se o “SeletorVelocidade” for igual a 3 ou 4 então “Escolha” será igual a 10000. Se “SeletorVelocidade” tiver um valor que está entre 5 e 100 então “Escolha” será igual a 15000. Se nenhuma das opção previstas na estrutura CASE foi obedecida então o comando ELSE é executado, ou seja, “Escolha” igual a 0.

Comandos de repetição:

(FOR)

Os comandos de repetição, ou comandos de “loop”, repetem as linhas de comando até que uma determinada condição seja satisfeita. O mais utilizado é o comando “FOR”. FOR TO BY DO ; ; END_FOR; Este comando irá incrementar a variável de iteração enquanto repete os comandos. Veja um exemplo prático abaixo: FOR Contagem:=0 TO 10 BY 2 DO ; ; END_FOR; Assim que o programa chega nesta linha a variável “Contagem” é carregada com o valor zero, todas as linhas de comando são executadas e a variável “Contagem” é incrementada por 2,

(REPEAT)

Diferente do FOR a expressão REPEAT não incrementa automaticamente a variável de iteração, ao invés disto ela repete os comandos até que a condição de repetição não seja mais verdadeira. Vale a pena ressaltar que, diferente do WHILE, se a “ExpressaoBooleana” não for verdadeira na primeira varredura, os comandos são executados uma única vez. REPEAT ; ; UNTIL END_REPEAT;

(EXIT)

O comando EXIT é utilizado para.encerrar um LOOP. Independente de utilizarmos um FOR, WHILE ou REPEAT, no instante que o programa encontra uma instrução “EXIT” o programa sai do LOOP. REPEAT ; ; IF THEN EXIT; END_IF; UNTIL END_REPEAT;

Chamando blocos de função

Blocos de função irão aparecer com a seguinte estrutura: ( := , := , => ); Na programação estruturada um cuidado especial deve ser tomado com blocos de funções, devido aos loops, decisões e seletores, algumas vezes a chamada do bloco pode ficar em algum trecho do programa onde o mesmo não é chamado, ou seja, suas saídas e entradas não são atualizadas. Veja o exemplo abaixo, considerando o bloco como sendo um TON: IF Var1 THEN Timer1 (IN:= Habilita, PT:= T#3S, Q=> Saida, ET=> TempoDecorrido); END_IF; Habilita:=TRUE; SaidaDigital:=Saida; Se a variável “Var1” não for verdadeira o temporizador nunca irá iniciar, mesmo com a variável “Habilitar” em 1. O mesmo vale para a variável “Saida”, se “Var1” voltar para zero, mesmo que o tempo de três segundos chegue ao fim, a saída não será habilitada enquanto o bloco não for chamado ao menos uma vez. É extremamente recomendado que os blocos de função tenham suas chamadas fora das estruturas de decisões e loops.

Comparação de projetos.

Inúmeras vezes nos deparamos com várias versões de um mesmo projeto, quer seja em computadores diferentes, CLPs diferentes ou mesmo um programa que acabamos de realizar o up-load e não sabemos o quanto o programa “puxado” está diferente do programa que consta em nossa máquina. Para estas situações temos o recurso de comparação de programas. Abrimos um dos programas em questão normalmente no CoDeSys. Então selecionamos no menu principal a opção “Project – Compare” e escolhemos o arquivo que desejamos comparar: Quando existem diferenças entre os objetos, os mesmos aparecem em vermelho nas duas telas. Quando há objetos que existem em um projeto, e não existem no outro, o mesmo aparece em verde no projeto que o contêm e aparece um espaço no projeto onde ele não existe. Os demais objetos que existem nos dois projetos, e são iguais em ambos, aparecem em preto ou em cinza. Para ver as diferenças entre os objetos basta clicar duas vezes em um deles.

Nestas situações uma boa saída é a criação de tasks, nós passamos a escolher a janela de tempo em que o programa será chamado ciclicamente. Na opção TASK Configuration que fica na aba Resource do CoDeSys podemos criar as tasks. Nesta situação o programa não pode mais se chamar PLC_PRG, para trocar o nome de um programa clique sobre o mesmo com o botão direito do mouse e escolha a opção “Rename Object”. Em task configuration clique com o botão direito e escolha a opção “append task”: Podemos criar várias Tasks diferentes, nestas tasks nós configuramos alguns parâmetros:

Tenha sempre em mente que o WEB visu é uma ferramenta que consome tempo deTenha sempre em mente que o WEB visu é uma ferramenta que consome tempo de processamento da CPU, ou seja, ela impacta diretamente na performance do processamento, nãoprocessamento da CPU, ou seja, ela impacta diretamente na performance do processamento, não é recomendável trabalhar com múltiplos acessos. (WEB + Programação + WEB....etc)é recomendável trabalhar com múltiplos acessos. (WEB + Programação + WEB....etc) ParaPara visualizarvisualizar aa telatela precisamosprecisamos terter instaladoinstalado umum “internet“internet browser”browser” emem nossonosso computador além do software “Java Machine”. Em algumas situações precisamos atualizar ocomputador além do software “Java Machine”. Em algumas situações precisamos atualizar o firmware da IHM (A família XC-CPU2xx-XV não necessita de atualização).firmware da IHM (A família XC-CPU2xx-XV não necessita de atualização). UmaUma vezvez queque oo programaprograma estáestá colocadocolocado nono CLPCLP bastabasta abrirmosabrirmos oo BrowserBrowser ee selecionarmos este endereço:selecionarmos este endereço: http://:8080/webvisu.htmhttp://:8080/webvisu.htm Para maiores referências sobre as ferramentas disponíveis para a criação de telas favorPara maiores referências sobre as ferramentas disponíveis para a criação de telas favor consulta o manual CoDeSys_Visu_V23_E.pdfconsulta o manual CoDeSys_Visu_V23_E.pdf

PlaceholdersPlaceholders

Uma das ferramentas mais úteis que temos no que tange a criação de telas deUma das ferramentas mais úteis que temos no que tange a criação de telas de visualização no CoDeSys é o Placeholder. Esta ferramenta permite que se crie uma tela básica,visualização no CoDeSys é o Placeholder. Esta ferramenta permite que se crie uma tela básica, ou uma sub tela, e que a mesma seja copiada inúmeras vezes, sendo que para cada cópia, nósou uma sub tela, e que a mesma seja copiada inúmeras vezes, sendo que para cada cópia, nós atribuímos um set de variáveis único. Em termos comparativos, seria um bloco de função utilizadoatribuímos um set de variáveis único. Em termos comparativos, seria um bloco de função utilizado para visualização. Veja o exemplo:para visualização. Veja o exemplo: Criamos uma tela pequena chamada PH_Motor na aba visualização:Criamos uma tela pequena chamada PH_Motor na aba visualização: Para qualquer animação, botão ou variável que quisermos utilizar nesta tela nós inserimosPara qualquer animação, botão ou variável que quisermos utilizar nesta tela nós inserimos $ <Nome da variável> $.$ <Nome da variável> $.

Contador Rápido 1CNTContador Rápido 1CNT Para o contadorPara o contador rápido 1CNT podemos utiliza-lorápido 1CNT podemos utiliza-lo de duas formas parade duas formas para fazer as contagemfazer as contagem dos pulsos enviados por um encoder por exemplo, podemos fazer a leitura e comparação dosdos pulsos enviados por um encoder por exemplo, podemos fazer a leitura e comparação dos valores no Codesys ou fazer esta comparação diretamente no hardware (Cartão), que com issovalores no Codesys ou fazer esta comparação diretamente no hardware (Cartão), que com isso podemos ganhar um tempo de rede e deixar a resposta a alguma comparação <, >, ou = maispodemos ganhar um tempo de rede e deixar a resposta a alguma comparação <, >, ou = mais rápida doque se fosse feita pelo CLP.rápida doque se fosse feita pelo CLP. Abaixo iremos explicarAbaixo iremos explicar os principais detalhes queos principais detalhes que devem serdevem ser considerados para fazer aconsiderados para fazer a leitura do cartão 1CNT dos dois modos, para isso vamos usar um Encoder incremental de 2 canaisleitura do cartão 1CNT dos dois modos, para isso vamos usar um Encoder incremental de 2 canais A e B de 24Vdc.A e B de 24Vdc.

Contador Rápido 1 CNT comparação via Codesys.Contador Rápido 1 CNT comparação via Codesys.

Depois que colocamos nossa rede máster na IHM ou CLP e nosso Gateway, devemosDepois que colocamos nossa rede máster na IHM ou CLP e nosso Gateway, devemos entrar no “I/O Assistant” pelo Codesys e alterar alguns parâmetros de acordo com a aplicação queentrar no “I/O Assistant” pelo Codesys e alterar alguns parâmetros de acordo com a aplicação que temos, conforme abaixo:temos, conforme abaixo: Selecione o cartão no “I/O Assistant” e vá na aba “PlugIn” lá podemos configurar opçõesSelecione o cartão no “I/O Assistant” e vá na aba “PlugIn” lá podemos configurar opções como Modo de contagem, Configurar a saída digital, limit de contagem superior e inferior, entrecomo Modo de contagem, Configurar a saída digital, limit de contagem superior e inferior, entre outras coisas que podem ser encontradas no manualoutras coisas que podem ser encontradas no manual MN05002012Z-EM,MN05002012Z-EM, para uma aplicação depara uma aplicação de

encoder incremental com sinais A e B em 24Vdc, não precisaremos modificar nenhum parâmetro, depois de alterados os parâmetros basta voltar para o Codesys. Quando nossa configuração volta para o Codesys sempre temos que incluir o COBid das Outputs, pois ele só tráz o COBid de leitura do contador rápido que sem o COBid dos Outputs não irá ler nada pois no mesmo temos que acionar alguns Bit’s para que as funções do cartão funcionem corretamente, abaixo podemos ver um passo a passo de como incluir o COBid das Outputs. Quando clicamos em cima do Gateway em nossa arquitetura de rede se abrirá uma aba a direita, devemos ir na opção “Receive PDO-Mapping” nesta aba temos duas janelas a da esquerda temos as opções que podemos incluir no COBid’s, no caso temos que clicar na opção “ExtentibleObject_5808” e selecionar a opção “EncoderControl_Generic XN-1CNT_0”, depois de selecionado devemo abrir a opção “PDO 0x1400” que está na janela da direita ali temos vários espações “vazios” para mover nosso objeto de extensão basta selecionar o primeito objeto vazio e pressionar o botão que o mesmo ficara´da seguinte forma:

Quando clicamos na aba Service Data Objects irá aparecer uma lista com algumas funções, devemos encontrar o Index 5800sub1 e mudar o valor de 0 para 7168 que com isso estaremos habilitando o reset quando acionarmos a entrada 14 do cartão 1 CNT.

Contador Rápido 1 CNT comparação no hardware.

Também podemos fazer a comparação do valor adquirido no 1CNT diretamente no cartão(Hardware), neste caso é feita uma comparação de um valor pré-determinado no cartão que também pode ser alterado no Codesys com o valor adquirido na entrada rápida do 1 CNT, essa comparação pode ser <= ou >=, com isso conseguimos ter respostas mais rápidas mas só vai funcionar no caso de quando o contador atingir um certo numero de pulsos ele ativa sua saída digital. Depois que colocamos nossa rede máster no Codesys para a IHM ou CLP e depois incluir o Gateway, devemos entrar no “I/O Assistant” pelo Codesys e alterar alguns parâmetros de acordo com a aplicação que temos, conforme abaixo:

Agora que já convertemos o valor a ser alterado para um formato que o bloco que executa a alteração do SDO entenda, temos que incluir esse bloco no programa o mesmo se chama “CanUser_SDOdownload” abaixo temos uma imagem do mesmo já no programa. Para sabermos qual é o Endereço do SDO que temos que alterar é só ir em PLC Configuration depois clicar no Gateway e depois ir na Aba “Service data Objects” lá encontraremos a opção “Cam1HightLimit_Generic XN_1CNT_0” que atende pelo Index “6B20sub1” esse é o endereço que usaremos para que o bloco “CanUser_SDOdownload” possa fazer a alteração do valor de comparação diretamente no SDO do 1CNT.