apostila codesys avancada

Download Apostila Codesys Avancada

If you can't read please download the document

Upload: kauekoschitzroratto

Post on 16-Sep-2015

764 views

Category:

Documents


324 download

DESCRIPTION

Apostila Codesys Avancada

TRANSCRIPT

  • Programao avanada em ambiente CoDeSys.

  • 10 de outubro de 2012 Pgina: 2

    www.eaton.com Pgina 2

    Proibida a reproduo total ou parcial deste materi al, por qualquer meio ou processo sem expressa autorizao por escrito da EATON Ltda. Electrical Diviso Electrical PDO. A violao dos direitos autorais crime, podendo c ominar em pena de priso e/ou multa, conjuntamente com busca e apreenso do material, sem prejuzo das indenizae s civis (de acordo com o artigo 184 e pargrafos do Cdigo Pena l Brasileiro c/c a Lei n 9.610/98, Lei dos Direitos Autorais). As informaes contidas nesta apostila correspondem ao estado atual da tcnica e esto sujeitas a alteraes sem aviso prvio. Os programas de exemplo contidos nesta apostila so para efeitos didticos, a EATON no se responsabiliza po r quaisquer danos e/ou acidentes que a utilizao indevida dest es softwares venha a causar. A participao e/ou aquisio do treinamento no d nenhum direito ao participante sobre os softwares utilizad os durante o treinamento, incluindo cpias, verses de demonstra o e/ou verses originais. O treinamento tem como base a utilizao de produto s EATON. A EATON no se responsabiliza por quaisquer adapta es, converses e/ou utilizao dos conceitos contidos n esta apostila com produtos de outra fabricao.

  • 10 de outubro de 2012 Pgina: 3

    www.eaton.com Pgina 3

    INDEX:

    Introduo ao curso. .............................. ............................................................................................. 4Declarao de variveis. .................................................................................................................... 5

    ARRAY. (Vetores e Matrizes.) ........................................................................................................ 5Inicializao de variveis. ............................................................................................................... 8Tipos de dados derivados. .............................................................................................................. 9

    Enumeraes ....................................... .................................................................................... 10Estruturas ................................................................................................................................ 11

    Programao em ST (Texto Estruturado). ............ ........................................................................... 12Atribuies e Expresses. ......................... ................................................................................... 12Comando condicional. (IF, ELSIF e ELSE) .................................................................................. 14Comando seletor (CASE) ............................................................................................................. 15Comandos de repetio: ............................ ................................................................................... 15

    (FOR) ....................................................................................................................................... 15(WHILE) ................................................................................................................................... 16(REPEAT) ................................................................................................................................ 17(EXIT)....................................................................................................................................... 17

    Chamando blocos de funo ......................... ............................................................................... 17Programao em SFC (Sequential Function Chart) .... .................................................................... 18

    Atributos da Etapa. ....................................................................................................................... 20Transies. ....................................... ............................................................................................ 21Chart sequencial. .......................................................................................................................... 22Chart deciso ..................................... ........................................................................................... 22Chart paralelo. .............................................................................................................................. 23Variveis implcitas. ...................................................................................................................... 23Qualificadores de ao. ........................... ..................................................................................... 24

    Qualificador N (No Stored). ..................................................................................................... 24Qualificadores S e R (SET // RESET) ..................................................................................... 25Qualificador L (Limit ) ................................................................................................... 25Qualificador D (Delay ) ................................................................................................. 26Qualificador P (Pulse) .............................................................................................................. 26Qualificador SD (Store and Delay ) .............................................................................. 27Qualificador DS (Delay and Store ) .............................................................................. 27Qualificador SL (Store Limited ) ................................................................................... 28

    Criando aes. .................................... .......................................................................................... 28Explorando os recursos avanados do CoDeSys. ...... ..................................................................... 30

    Watch / Recipe manager .............................................................................................................. 30Watch / Receipt Manager em modo Offline............................................................................. 30Watch and Receipt Manager no modo Online. ....................................................................... 31

    LOG .............................................................................................................................................. 32Export / Import tools. ..................................................................................................................... 34Comparao de projetos. ........................... .................................................................................. 35TASK Manager ............................................................................................................................. 36Ferramentas de visualizao ....................... ................................................................................. 39

    Placeholders ............................................................................................................................ 40Contador Rpido 1CNT ................................................................................................................ 42Contador Rpido 1 CNT comparao via Codesys...................................................................... 42Contador Rpido 1 CNT comparao no hardware. .................................................................... 45Comunicao Ethernet CLP com CLP .................. ....................................................................... 51Comunicao CANopen CLP com CLP ................... .................................................................... 55PID Autotunig no Codesys ............................................................................................................ 58

  • 10 de outubro de 2012 Pgina: 4

    www.eaton.com Pgina 4

    Conforme explorado em treinamento anterior, alguns equipamentos EATON so programveis atravs de uma ferramenta conhecida como CoDeSys que obedece a uma normal europeia, a IEC 61131 captulo 3.

    Esta norma regulamenta 5 linguagens de programao diferentes, duas textuais, ou seja, sua programao simplesmente feita atravs de texto e trs grficas.

    Structured Text Texto Estruturado (ST)Instruction List Lista de Instrues (IL)Function Block Diagram Diagrama de Blocos de Funes (FBD)Ladder Diagram Diagrama de Contatos (LD)Sequential Function Charts (SFC)

    Linguagens Textuais

    Linguagens Grficas

  • 10 de outubro de 2012 Pgina: 5

    www.eaton.com Pgina 5

    ARRAY. (Vetores e Matrizes.) O CoDeSys permite que suas variveis sejam declaradas em forma de vetores e matrizes, que so variveis com a capacidade de armazenar vrios valores, de mesmo tipo, em seu interior. So como caixas numeradas que so solicitadas confo rme o nmero desejado.

    O Vetor armazena os valores em seu interior de forma Unidimensional, ou seja, a alocao feita atravs de um indexador.

    J a matriz pode armazenar valores em seu interior atravs de dois indexadores, tipo linha e coluna, ou trs indexadores, tipo linha, coluna e profundidade.

    Exemplo de declarao de um vetor: AT : ARRAY[..< N>] OF Onde: o nome da varivel que desjamos, o nome obedece as regras j estudadas para a declarao de variveis. se necessrio podemos especificar o endereo fsico DO PRIMEIRO VALOR do vetor, automaticamente o CLP entende que os valores seguintes seguiro nos endereos subsequentes. Valor inicial do vetor, normalmente utilizamos 0 ou 1. Valor final do vetor, quantas posies o veto r ter. Tipo de valores a serem armazenados conforme IEC 61131-3. Tomemos este exemplo de declarao: Vetor1 AT %IB0 : ARRAY[0..3] OF BYTE; Nosso Vetor se chama Vetor1, seu endereo inicia l a entrada fsica IB0, ele possui 4 posies, comeando em 0 e terminando em 3 e todos os valores armazenados dentro deste vetor so variveis do tipo BYTE!

  • 10 de outubro de 2012 Pgina: 6

    www.eaton.com Pgina 6

    Vejam agora este outro exemplo: Armazenador : ARRAY[1..1500] OF REAL; Neste caso o vetor se chama Armazenador, ele no possui endereo fsico definido, ou seja, os valores sero alocados dentro da memria d o CLP. Este vetor possui 1500 posies, comeando na posio 1 e indo at a posio 1500, d entro deste vetor armazenamos variveis do tipo REAL. As matrizes possuem o mesmo princpio de funcionamento dos vetores, a nica diferena que as matrizes possuem mais dimenses. Veja abaixo estes dois exemplos de declarao de matrizes: MatrizSimples : ARRAY[0..3,1..4] OF UINT; Matriz : ARRAY[1..4,1..4,0..3] OF INT; A MatrizSimples no tem endereo inicial definid o e possui 16 valores em seu interior, dispostos em 4 colunas, posies de 0 a 3, e 4 linh as, posies de 1 a 4. Neste exemplo armazenamos valores do tipo UINT. J a Matriz, no tem endereo inicial mas possui 64 valores em seu interior, dispostos em 4 profundidades, posies de 1 a 4, 4 colunas, p osies de 1 a 4 e 4 linhas, posies de 0 a 3. Neste exemplo armazenamos valores do tipo INT.

    Normalmente utilizamos estas variveis quando temos um grande volume de dados e desejamos que o acesso aos valores no interior destas matrizes seja decidido por uma outra varivel que ir apontar qual a posio desejada! No programa IecAdv_MatrizesUtilizacao.pro tem um exemplo de um programa com matrizes e vetores, veja:

  • 10 de outubro de 2012 Pgina: 7

    www.eaton.com Pgina 7

    Durante a simulao podemos ver que a Matriz chama da de Arr2, que aparece no Ladder Network 1, est ligada a um bloco MOVE, o valor que estiver em Arr2 ser movido para a varivel Resultado3. O valor que ser movido da Arr2 depende de duas variveis, so as variveis que aparecem entre colchetes [Linha, Coluna], se as d uas forem iguais a 0, ento o valor transferido para Resultado3 ser 0. Porm, se Linha for igual a 1 e Coluna for igual a 2, ento 9 o valor que ser enviado Resultado3.

    O mesmo princpio vale para a gravao de valores, na Network 2 temos um contato Grava habilitando um bloco MOVE, assim que este c ontato fecha, o valor da varivel Origem copiado para a matriz Arr3 na posio indicada pe las variveis: Matriz, Linha e Coluna. No exemplo abaixo, colocamos, Matriz=5, Linha=4 e Coluna=3, isto define a posio dentro de Arr3. Foramos a varivel Origem=146 e acionamos o contato Grava. Como resultado o valor 146, que est na varivel Origem gravado em Arr3[5,4,3].

  • 10 de outubro de 2012 Pgina: 8

    www.eaton.com Pgina 8

    Inicializao de variveis. Conforme estudamos no treinamento bsico, as variveis podem ser inicializadas, ou seja, antes do CLP rodar seu primeiro ciclo, estas variveis so carregadas com valores iniciais. TemperaturaDesejada : UINT:=234; Neste caso a varivel TemperaturaDesejada carregada com o valor 234 antes do primeiro ciclo do CLP rodar. Com vetores e matrizes a filosofia a mesma: Arr1 : ARRAY[0..4] OF USINT:=1,2,3,4,6,7; Neste exemplo os valores 1, 2, 3, 4, 6 e 7 so car regados no vetor, a dvida surge quando trabalhamos com vetores ou matrizes grandes. Veja o exemplo: Arr2 : ARRAY[0..4,0..5] OF USINT:=2(0), 2(1), 4,1, 3, 4, 2(9); Quando temos vetores e matrizes grandes e queremos inicializar o mesmo valor em vrias posies em sequncia, colocamos um multiplicador na frente do nmero desejado entre parnteses, como no exemplo acima, a matriz seria carregada como segue abaixo:

  • 10 de outubro de 2012 Pgina: 9

    www.eaton.com Pgina 9

    Observe que o zero, o um e o nove foram carregados duas vezes. O sistema neste caso carrega os valores em sequencia, ou seja, escrevemos os valores a serem carregados sem especificar a posio, o prpr io sistema os arranja seguindo a seguinte regra: Incrementa a posio da direita at o mximo definido pelo programador, ento incrementa a posio da esquerda, e volta a incrementar a posi o da direita at o fim. Veja exemplo: Arr3 : ARRAY[1..3,1..3,1..3] OF USINT:=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20;

    Tipos de dados derivados. Tipos de dados derivados so variveis que ns Construmos. Imagine que em meu programa vou utilizar vrias variveis tipo Matriz com 11 posies sendo que todas as posies sempre sero iniciadas em 1. Na aba Data Types do CoDeSys possvel criar estes dados derivados, veja o programa IecAdvEstruturas.Pro para um exemplo prtico.

    Neste caso eu criei um tipo de dados chamado Matr iz este tipo de dado utilizado para declarar variveis em meu programa. As minhas variveis declaradas ficaro assim: Deposito1 : Matriz; Deposito2 : Matriz; Deposito3 : Matriz;

    Arr2[0,0]=0 Arr2[1,0]=3

    Arr2[0,1]=0 Arr2[1,1]=4

    Arr2[0,2]=1 Arr2[1,2]=9

    Arr2[0,3]=1 Arr2[1,3]=9

    Arr2[0,4]=4 Arr2[1,4]= ....

    Arr2[0,5]=1 ..... Arr2[4,5]=...

    Arr3[1,1,1]=1 Arr3[2,1,1]=10 Arr3[3,1,1]=19

    Arr3[1,1,2]=2 Arr3[2,1,2]=11 Arr3[3,1,2]=20

    Arr3[1,1,3]=3 Arr3[2,1,3]=12

    Arr3[1,2,1]=4 Arr3[2,2,1=13

    Arr3[1,2,2]=5 Arr3[2,2,2]=14

    Arr3[1,2,3]=6 Arr3[2,2,3]=15

    Arr3[1,3,1]=7 Arr3[2,3,1]=16

    Arr3[1,3,2]=8 Arr3[2,3,2]=17

    Arr3[1,3,3]=9 Arr3[2,3,3]=18

  • 10 de outubro de 2012 Pgina: 10

    www.eaton.com Pgina 10

    Onde aparece : Matriz ; durante a compilao ser substitudo por : ARRAY[0..10] OF USINT;

    Enumeraes Servem para nomear diferentes status de uma varivel. Por exemplo eu quero criar uma varivel cujo seu contedo no ser um valor, e sim um status, por exemplo Operando, Parado e Fora de operao. Veja no programa IecAdvEstrutura s.Pro alguns exemplos de enumeraes.

    Na declarao de variveis, local ou global, eu simplesmente declaro: Farol1 : Semaforo ; A varivel Farol1, uma varivel do tipo Semforo, que possui trs status distintos: Verde, Amarelo ou Vermelho. A grande vantagem da enumerao deixar o programa mais fcil e claro.

    Neste exemplo carregamos o status Amarelo para dentro de Farol1 e depois comparamos se Farol1 igual a Amarelo. Em inmeros programas, normal utilizarmos BYTES para definio de status, o resultado que depois precisamos ter uma tabela debaixo do brao onde se l: Quando BYTE estiver em zero a mquina est parada, em 1 a mquina est funcionando, em 2 a mquina parou, em trs ela est em alarme e assim por diante. Com as enumeraes, ns podemos efetivamente carregar o status na varivel.

  • 10 de outubro de 2012 Pgina: 11

    www.eaton.com Pgina 11

    Estruturas Estruturas so como enumeraes, porm contm em seu interior vrios tipos tipos de dados diferentes. Imagine que precisamos monitorar vrios tanques, cada tanque precisa de 4 variveis: Pressao, Nvel, Nome do produto que est armazenado e as ltimas 100 medidas de temperatura. Agora imagine que temos 100 tanques para controlar, cada um deles com estas 4 variveis! Com as estruturas ns criamos um padro em Data ty pes:

    Ns criamos uma estrutura chamada TanquePadrao, de ntro desta estrutura temos quatro variveis, Pressao, Nivel, LabelTanque e Med idasAnteriores que um array com 101 posies para armazenar medidas anteriores. Em nossa declarao de variveis, local ou global, eu simplesmente crio a seguinte varivel: TanqueVariado : ARRAY[0..100] OF TanquePadrao; Acabamos de criar toda a declarao necessria ao monitoramento dos 100 tanques. Se colocarmos o programa IecAdv_ExemploEstruturas.pro em modo de simulao, poderemos abrir toda a estrutura de dados, veja que cada posio do vetor TanqueVariado, possui dentro de si 4 variveis, sendo que uma destas variveis um outro vetor.

    Obviamente possvel declarar as estruturas uma a uma:

  • 10 de outubro de 2012 Pgina: 12

    www.eaton.com Pgina 12

    Tanque1 : TanquePadrao ; Ou seja a varivel Tanque1 uma varivel do tipo TanquePadrao. A utilizao destas variveis extremamente simples. Colocamos o nome da varivel, neste caso, Tanque1 e pressionarmos . logo em s eguida, uma janela com todas as opes ir aparecer:

    Isso se quisermos acessar um dado dentro da estrutura, se quisermos copiar valores de uma estrutura a outra deixamos somente o nome principal:

    Neste exemplo, assim que o contato Copia ligar, todos os dados armazenados em Tanque1 sero copiados para o vetor TanqueVariado n a posio 2.

    Programao em ST (Texto Estruturado). A linguagem ST uma linguagem de programao text ual, muito parecida com a linguagem C e muito utilizada para: gerenciamento de dados, clculos complexos, vrios nveis de deciso, etc...

    Atribuies e Expresses. Atribuio similar ao comando MOVE do Ladder, el e coloca uma constante, ou ento uma varivel, dentro de outra varivel: Resultado := 13; Neste caso o valor 13 carregado para dentro da varivel Resultado. Sempre no final de uma atribuio colocamos ; a indicao de que a quela linha lgica chegou ao fim. Se o compilador no detectar o fim de linha, uma mensage m de erro ir aparecer durante a compilao do programa. Resultado1 := Valor_1; Neste outro exemplo o valor da varivel Valor_1 copiado para dentro da varivel Resultado1. A execuo de expresses booleanas simples, bast a inserir os operadores AND, OR, NOT e XOR entre vrias variveis, veja os exemplos: Resultado4:= NOT VarBOOLEANO1; Resultado5:= VarBOOLEANO AND VarBOOLEANO2;

  • 10 de outubro de 2012 Pgina: 13

    www.eaton.com Pgina 13

    Resultado6:=Var1 OR NOT ((Var2 XOR Var3) AND Var4); Neste ltimo exemplo os parnteses so resolvidos primeiro. Ou seja, primeiro ir executar (Var2 XOR Var3), ou exclusivo, o resultado ser caculado com AND Var4, e o no final este resultado ser negado e feito a operao com OR Var1. A mesma regra vale para operaes aritmticas: Resultado7:=34+VariavelNumerica2; Resultado8:=VariavelNumerica2 VariavelNumerica3; Quando necessria uma converso de tipos de dados: Resultado9:=INT_TO_REAL(VariavelNumerica2); Vrias operaes matemticas esto disponveis: +(soma), - (subtrao), * (multiplicao) e / (div iso); EXPT(base,potencia) (potencia) SIN(Variavel) (seno) COS(Variavel) (coseno) TAN(Variavel) (Tangente) ASIN(Variavel) (Arc-seno) ACOS(Variavel) (Arc-coseno) ATAN(Variavel) (Arc-tangente) EXP(Variavel) (Exponencial) SQRT(Variavel) (Raiz quadrada) LOG(Variavel) (logaritmo) LN(Variavel) (logaritmo natural) Da mesma forma podemos proceder comparaes, o r esultado nestes casos ser sempre um booleano. Um quando a expresso for verda deira e 0 quando falsa. Resultado16:=Var1>Var2; (* Se Var1 for maior que Var2 ento Resultado16 = 1 *) Veja abaixo os comparadores: > Maior < Menor Diferente = Maior ou igual = Igual

  • 10 de outubro de 2012 Pgina: 14

    www.eaton.com Pgina 14

    Comando condicional. (IF, ELSIF e ELSE) O comando condicional executa uma ou mais linhas de comandos desde que uma condio inicial seja satisfeita. IF THEN ; END_IF; Se a expresso retornar um valor verdadeiro, ento o programa ir executar os comandos que esto aps o operador THEN, caso contrrio o programa ir pular os comandos at o indicador de fim de comando, neste caso END_IF; O comando condicional tambm pode ser montado desta forma: IF THEN ; ; ELSE ; ; END_IF; Neste segundo exemplo, se a expresso retornar um valor verdadeiro, o programa ir executar o que se encontra aps o operador THEN. Ca so contrrio, ELSE, o programa ir executar o que est aps o operador ELSE. Outra forma de montar o comando condicional atravs dos comandos ELSIF: IF THEN ; ; ELSIF ; ; ELSIF ; ; ELSIF ; ........... ELSE ; ; END_IF; Neste caso o programa ir executar os comandos que estiverem abaixo da Expresso que for verdadeira. Se por acaso, duas expresso forem verdadeiras ao mesmo tempo, a que estiver primeiro a que ser executada, se nenhuma expresso for verdadeira, ento os comandos que aparecem abaixo do ELSE sero executados.

  • 10 de outubro de 2012 Pgina: 15

    www.eaton.com Pgina 15

    Comando seletor (CASE) O comando seletor ideal para seleo de vrias possibilidades, veja: CASE OF : ; ; : ; : ; ... ..(ValorM> : ; ELSE ; END_CASE: Onde aparece colocamos uma varivel do tipo INT, UINT, USINT, SINT, DINT ou UDINT. O programa ir comparar vrios valores ou intervalos de valores com a varivel 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 com o uma varivel do tipo UINT. Se esta varivel for igual a 1 a variavel Escolha ser carregada com o valor 100. Se o SeletorVelocidade for igual a 3 ou 4 ento Escol ha ser igual a 10000. Se SeletorVelocidade tiver um valor que est entre 5 e 100 ento Escolha ser igual a 15000. Se nenhuma das opo previstas na estrutura CASE f oi obedecida ento o comando ELSE executado, ou seja, Escolha igual a 0.

    Comandos de repetio:

    (FOR) Os comandos de repetio, ou comandos de loop, r epetem as linhas de comando at que uma determinada condio seja satisfeita. O mai s utilizado o comando FOR. FOR TO BY DO ; ; END_FOR; Este comando ir incrementar a varivel de iterao enquanto repete os comandos. Veja um exemplo prtico abaixo: FOR Contagem:=0 TO 10 BY 2 DO ; ; END_FOR; Assim que o programa chega nesta linha a varivel Contagem carregada com o valor zero, todas as linhas de comando so executadas e a varivel Contagem incrementada por 2,

  • 10 de outubro de 2012 Pgina: 16

    www.eaton.com Pgina 16

    valor precedido pelo comando BY. Os comandos so ex ecutados novamentes e o ciclo se repete at que a varivel contagem chegue a 10. O comando BY opcional, a omisso do mesmo compreendida pelo programa como incremento unitrio. A varivel de iterao no deve ser utilizada fora da repetio pois seu valor depende da implementao do comando. Os comandos dentro da repetio no podem afetar a varivel de iterao. Quando temos uma estrutura de repetio o programa fica para dentro desta repetio at que as condies sejam satisfeitas, ou seja, o temp o de ciclo do programa sobe quando utilizamos estas estruturas, um cuidado adicional deve ser tomado com estes comandos para evitar erros de watchdog. Veja outro exemplo abaixo: FOR Index:=0 TO 100 DO Vetor[Index]:=0; END_FOR; Neste exemplo, imagine a varivel Vetor como sendo um array unidimensional com 101 elementos (Vetor : ARRAY[0..100] OF UINT; ) quando o programa chegar no FOR a varivel Index colocada em 0. A linha de comando ento executada, ou seja, a posio 0 do nosso vetor carregada com o valor 0. Logo em seguida a varivel Index incrementada por 1, comando BY omitido. Desta vez a posio 1 do vetor carregada com 0. O comando ir se repetir at que Index seja igual a 100, ou seja, todo o vetor carregado com 0.

    (WHILE) Diferente do FOR a expresso WHILE no incrementa automaticamente a varivel de iterao, ao invs disto ela repete os comandos at que a condio de repetio no seja mais verdadeira. Vale a pena ressaltar que se a ExpressaoBooleana no for verdadeira na primeira varredura, os comandos no so executados nem uma nica vez. WHILE DO ; ; END_WHILE; Novamente, um cuidado adicional necessrio quando temos esta estrutura, o programa fica parado dentro do LOOP at que a expresso booleana deixe de ser verdadeira, isto aumenta o tempo de ciclo do CLP e pode provocar um erro de Watch Dog. WHILE Ponte < PosicaoFinal DO Movimento:=Movimento+1; Ponte:=Movimento; END_WHILE;

  • 10 de outubro de 2012 Pgina: 17

    www.eaton.com Pgina 17

    (REPEAT) Diferente do FOR a expresso REPEAT no incrementa automaticamente a varivel de iterao, ao invs disto ela repete os comandos at que a condio de repetio no seja mais verdadeira. Vale a pena ressaltar que, diferente do WHILE, se a ExpressaoBooleana no for verdadeira na primeira varredura, os comandos so e xecutados 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 instruo EXIT o programa sai do LOOP. REPEAT ; ; IF THEN EXIT; END_IF; UNTIL END_REPEAT;

    Chamando blocos de funo Blocos de funo iro aparecer com a seguinte estr utura: ( := , := , => ); Na programao estruturada um cuidado especial dev e ser tomado com blocos de funes, devido aos loops, decises e seletores, al gumas vezes a chamada do bloco pode ficar em algum trecho do programa onde o mesmo no chamado, ou seja, suas sadas e entradas no so 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 varivel Var1 no for verdadeira o temporizador nunca ir iniciar, mesmo com a varivel Habilitar em 1. O mesmo vale para a varivel Saida, se Var1 voltar para zero, mesmo que o tempo de trs segundos chegue ao fim, a sada no ser habilitada enquanto o bloco no for chamado ao menos uma vez. extremamente recomendado que os blocos de funo tenham suas chamadas fora das estruturas de decises e loops.

  • 10 de outubro de 2012 Pgina: 18

    www.eaton.com Pgina 18

    Programao em SFC (Sequential Function Chart) Universidades francesas desenvolveram o Grafcet, que nada mais era do que uma representao de processos sequenciais, baseado nas Redes de Petri. O Grafcet (Graphe Fonctionnel de Command Etape Transition) virou padro europeu em 1988, com a edio da IEC848. Em 1992 a IEC1131-3 adotou o SFC como sendo a quinta linguagem de programao, baseada na IEC 848. Em 1994 a IEC61131-3 introduziu algumas alteraes ao SFC.

    Diferente das demais linguagens, o SFC extremamente recomendado para:

    Descrever comportamentos sequenciais. Mquinas sequenciais e/ou complexas. Utilizado como linguagem de estruturao.

    O SFC traz inmeras vantagens ao programador, veja abaixo algumas delas:

    Facilidade para implementar lgicas que devam ocor rer em paralelo. Flags para controle e status do programa. Facilidade em estruturar programas complexos. Facilidade em detectar falhas de processo e de programa.

    A estrutura de um Chart relativamente simples, o programa baseado em Etapas e Transies. Temos a Etapa Inicial, sempre que o CLp ligado pela primeira vez esta etapa inicia ligada. As transies na verdade so condies que ditam q uando uma etapa anterior deve ser desligada e quando uma etapa posterior deve ser ligada. Obrigatoriamente todos os Charts devem ser montados respeitando-se a sequencia a seguir: Etapa-Transio-Etapa-Transio.....etc... Sempre que inserirmos uma nova Etapa, automaticamente, o programa ir inserir uma nova transio, e assim por diante. Da mesma forma, no podemos apagar uma etapa isola da, sempre que quisermos apagar um pedao do programa, teremos que apagar uma trans io tambm.

  • 10 de outubro de 2012 Pgina: 19

    www.eaton.com Pgina 19

    O funcionamento extremamente simples para um SFC. Assim que ligamos o CLP a Etapa Init acionada. Se houverem aes atreladas a esta etapa estas aes sero executadas. No momento em que a transio Trans1 ocorre, est a Transio tem que ser um valor booleano, a Etapa Init desligada e a etapa Step1 se torna ativa. A etapa Step1 permanece ativa enquanto a condi o Trans2 no disparar. No instante em que esta transio dispara o Step1 desligado e o Step2 se torna ativo. No caso do CoDeSys existem 4 bibliotecas que precisamos importar para podermos utilizar o SFC em sua totalidade, so elas:

    Assim que iniciamos um programa novo no CoDesys em SFC, precisamos nos certificar tambm que a opo Use IEC-Steps est ativa na parte superior da tela.

  • 10 de outubro de 2012 Pgina: 20

    www.eaton.com Pgina 20

    Atributos da Etapa. Todas as Etapas podem ser programadas com tempo mximo, mnimo e um comentrio.

    Alm de atribuir tempos e comentrios a cada Etapa, podemos tambm mudar a visualizao do programa como um todo. Tanto a altu ra, largura das caixas e comentrios bem como, qual informao desejamos ver ao lado de cada etapa.

  • 10 de outubro de 2012 Pgina: 21

    www.eaton.com Pgina 21

    Transies. As transies, na verdade, contm uma varivel booleana, uma constante ou uma equao cujo resultado um valor booleano. Transies mais complexas podem conter lgicas int ernas. Estas lgicas podem ser montadas em vrias linguagens diferentes. Para inserir uma lgica interna basta clicar duas vezes sobre a transio.

    Repare que quando trabalhamos com lgica interna p ara a transio, no importa a linguagem escolhida, voc nunca ter uma sada propriamente dita, no h bobina no caso do ladder, comando ST no caso da lista de instrues o u := no caso da programao estruturada. O prprio compilador entende que a sada da lgica se r o disparo da transio.

  • 10 de outubro de 2012 Pgina: 22

    www.eaton.com Pgina 22

    Chart sequencial. O Chart sequencial , como o nome j diz, um SFC escrito em apenas uma direo possvel, ou seja, as etapas ocorrem uma aps a out ra e no h caminhos alternativos.

    Para inserir etapas e transies em srie utilizam os os botes: para inserir etapas e transies antes ou depois da etapa selecionada. Lembre-se sempre, como o SFC montado respeitando-se a ordem: Etapa-transio-Etapa-trans io...no h como inserir somente uma etapa ou somente uma transio em srie.

    Chart deciso O Chart deciso aquele que possui vrios caminhos possveis durante sua execuo, veja o exemplo abaixo:

    Quando paramos no Step1 existem trs caminhos disponveis, via Trans2, Trans3 ou Trans4. Se ocorrer Trans2, ento o Step1 desligado e o Step5 acionado. Porm se ocorrer o Trans3, o Step1 desligado e quem acionado o Step2. Analogamente, se Trans4 dispara, ento Step1 desligado e o Step4 ligado. Apenas um Step ser ligado, mesmo que as trs transies estejam em nvel 1 ao mesmo tempo, a transio que vale a que est mais a esquerda do chart.

    Para iserir transies de deciso utilizamos os bo tes: que inserem transies esquerda ou direita da transio desejada!

  • 10 de outubro de 2012 Pgina: 23

    www.eaton.com Pgina 23

    Chart paralelo. O Chart Paralelo permite que vrias etapas sejam acionadas em paralelo. No exemplo abaixo, assim que Trans1 ocorrer, a etapa Step1 ser desligada, e as trs etapas abaixo da divergncia AND sero acionadas: Step2, Step3 e Step4. Uma vez dentro da estrutura paralela, os disparos das transies so totalmente independentes, podemos ter estruturas sequenciais, decisrias e paralelas dentro deste chart. A sada do paralelismo no entanto depende de dois fatores, em primeiro lugar, todas as etapas no final do paralelismo precisam estar ativas, neste exemplo: Step2, Step7 e Step8. A transio que se encontra aps a Convergncia AND d eve disparar, neste exemplo Trans6. Assim que esta condio satisfeita, todas as eta pas, Step2, Step7 e Step8 so desligadas e a etapa seguinte, Step9, acionada.

    Para inserir etapas em paralelismo utilizamos os botes: que inserem etapas em paralelo, esquerda ou direita da etapa selecionad a.

    Variveis implcitas. Variveis implcitas so variveis declaradas no programa em SFC que possuem funes pr-definidas. Estas variveis trazem recursos de controle e de monitoramentodo programa em SFC. Em qualquer lugar do programa em que escrevermos:

    .t Retorna um valor do tipo TIME relativo ao tempo que a etapa est ligada. .x Retorna um valor do tipo BOOL. Indica se a etapa em questo est

    ativa. ._x Retorna um valor do tipo BOOL. Indica que a etapa ser ativa no

    prximo ciclo. Outras variveis so declaradas na rea de declarao de variveis do programa, neste caso o nome da varivel se mantm e o compilador atribui uma funo especial a ela:

    SFCTrans : BOOL ; Vai para 1 sempre que alguma transio dispara.

  • 10 de outubro de 2012 Pgina: 24

    www.eaton.com Pgina 24

    SFCCurrentStep : String(); Armazena o nome da etapa que est ativa. SFCEnableLimit : BOOL ; Habilita o controle de timeout no grafcet. SFCQuitError : BOOL; Pra a execuo do grafcet enquanto a varivel estiver em 1,

    assim que a mesma retorna a zero, os erros de timeout e os temporizadores das etapas voltam a zero.

    SFCErrorAnalyzationTable : ExpressionResult ; Estrutura que, em caso de TimeOut, carrega o nome da varivel, endereo fsico, comentrio e valor atual de at 16 variveis da transio subseqente Etapa que gerou o erro.

    SFCError : BOOL ; Vai para 1 quando alguma etapa ultrapassou o tempo mximo. SFCErrorStep : String ; Carrega o nome da Etapa em que ocorreu o erro de TimeOut. SFCErrorPou : String ; Carrega o nome do POU em que ocorreu o erro de Timeout. SFCInit: BOOL ; Retorna o SFC Etapa inicial. Porm enquanto esta varivel

    permanecer em 1 o Grafcet permanece parado na Etapa inicial. SFCReset : BOOL; Retorna o SFC Etapa Inicial porm ESTA ETAPA processada,

    ou seja, uma ao dentro da etapa inicial pode leva r o SFCReset de volta a zero por exemplo.

    SFCPause : BOOL ; Pra a execuo do grafcet enquanto esta varivel for igual a TRUE.

    SFCTip, SFCTipMode : BOOL ; Variveis para controle passo a passo do programa SFC.

    SFCTipMode bloqueia o disparo das transies enqua nto estiver em 1. SFCTip fora o disparo das transies independente das condies de disparo.

    Qualificadores de ao. Cada etapa recebe uma ao, esta ao pode ser uma varivel booleana ou um sub-programa do tipo Action. O Qualificador aparece ao lado esquerdo do nome da ao conforme podemos ver nos exemplos abaixo.

    Qualificador N (No Stored). Este qualificador indica que a ao ligada ao me smo tempo em que a etapa ligada, assim que a etapa desativada, esta ao executada uma ltima vez, mesmo com a etapa desativada.

  • 10 de outubro de 2012 Pgina: 25

    www.eaton.com Pgina 25

    Qualificadores S e R (SET // RESET) O qualificador S ativa a ao correspondente to l ogo a Etapa se torna ativa. A ao permanece ativa, independente da etapa que a ativou, at que uma nova etapa com qualificador R seja ativada. Neste ponto o programa executa a ao uma ltima vez antes de desliga-la.

    Qualificador L (Limit ) A ao comea a ser executada quando Step1 se torn a ativo, todavia ela permanece ativa pelo tempo determinado. Se o estado for desativado antes, a ao tambm interromper o processamento antes.

    A ao executada uma ltima vez, quando a etapa desativada, ou aps o tempo expirar.

  • 10 de outubro de 2012 Pgina: 26

    www.eaton.com Pgina 26

    Qualificador D (Delay ) A ao comea a ser executada aps um atraso deter minado, a partir do instante de ativao da etapa. Assim que a etapa desativada, a ao executada uma ltima vez antes de ser desativada.

    Caso a etapa seja desativada antes do tempo de atraso ento a ao no ser executada!

    Qualificador P (Pulse) A ao executada uma nica vez assim que a etapa ativada.

  • 10 de outubro de 2012 Pgina: 27

    www.eaton.com Pgina 27

    Qualificador SD (Store and Delay ) A ao comea a ser executada aps um tempo de atra so INDEPENDENTE do tempo

    que a etapa permaneceu ativa! E permanece ativa at que um qualificador de reset seja ativado por StepN. A ao executada uma ltima vez assim que StepN fica ativo.

    Qualificador DS (Delay and Store ) Assim que Step1 ativo o tempo de atraso comea a ser computado. Assim que o tempo

    expira a ao ativada e permanece ativada at que o qualificador R seja ativo pela StepN. A ao executada uma ltima vez assim que StepN fica ativo.

    Caso Step1 seja desativado antes do tempo de atraso, ento a ao no ser ativa.

  • 10 de outubro de 2012 Pgina: 28

    www.eaton.com Pgina 28

    Qualificador SL (Store Limited ) Assim que Step1 ativo a ao tambm ativada e permanece ativa pelo tempo

    estipulado independente da durao de Step1. A ao executada uma ltima vez assim que o tempo esgota.

    Caso um qualificador R seja ativado antes do fim deste tempo, a ao ser desativada. Ele executada uma nica vez assim que StepN se torna ativo.

    Criando aes. As aes podem simples variveis booleanas, por exemplo, sadas digitais do CLP ou podemos ter programas dentro destas aes. Para adicionar aes basta clicar em uma etapa com o boto direito do mouse e selecionar a opo : Associate Action. Uma vez as sociada uma ao uma etapa podemos alterar o qualificador, que fica esquerda da ao , e selecionar a ao propriamente dita. Aqui colocamos o nome da varivel, no caso de uma varivel booleana, ou ento o nome da ao. Para inserirmos aes, clicamos com o boto direit o no programa SFC em questo e selecionamos a opo add action, o programa ir p erguntar em que linguagem queremos criar esta ao. Note que no h declarao de variveis na ao propriamente dita, a declarao ficar sempre no programa, pois a ao fica abaixo do programa.

    As aes podem chamar funes e blocos de funes em seu interior sem problemas.

  • 10 de outubro de 2012 Pgina: 29

    www.eaton.com Pgina 29

    As etapas podem chamar quantas aes forem necessrias para alcanar nossos objetivos.

  • 10 de outubro de 2012 Pgina: 30

    www.eaton.com Pgina 30

    Watch / Recipe manager Com a ajuda do Watch Recipe manager voc pode ver os valores das variveis

    selecionadas. Este recurso torna possvel tambm o preset de valores nas variveis e a transferncia dos mesmos como um grupo para o PLC (Write Recipe). Da mesma forma, os valores atuais do PLC podem ser lidos para dentro do CoDeSys e armazenados dentro do PC (Read Recipe). Estas funes so teis, por exemp lo, para a inicializao dos parmetros de controle.

    Watch / Receipt Manager em modo Offline No modo Offline, voc pode criar vrias listas diferentes, com variveis ou valores pr-

    definidos diferentes. Voc pode inserir variveis nas listas atravs do Input assistant, tecla F2, ou escrevendo

    as variveis diretamente. ..

  • 10 de outubro de 2012 Pgina: 31

    www.eaton.com Pgina 31

    As variveis na lista podem ser carregadas com valores constants. Isto significa que no modo Online podemos executar o comando Write Receipt que escreve estes valores iniciais s variveis em questo.

    No exemplo mostrado na figura acima, a varivel Counter presetada com o valor 6. Quando temos variveis do tipo array ou structure devemos enderear os elementos um a um. Por exemplo uma estrutura chamada struvar com trs variveis dentro da mesa: a, b, c: PLC_PRG.struvar.a:= PLC_PRG.struvar.b:= PLC_PRG.struvar.c:=

    No caso de arrays devemos indexar os elementos um a um: PLC_PRG.arr_var[0]:= PLC_PRG.arr_var[1]:=

    Watch and Receipt Manager no modo Online. No modo Online os valores so exibidos do lado das variveis. Arrays e estruturas

    marcados com um sinal de + na lateral esquerda indicam que dentro daquela varivel existem outros elementos.

    Clicando com o boto direito do mouse no nome da R eceita vemos vrias opes:

    Onde: New Watch List: Nos permite criar uma nova lista de visualizao. Delete Watch List: Apaga a lista de visualizao s elecionada. Write Recipe: Carrega os valores presetados do Watch Recipe Manager para o CLP. Read Recipe: Carrega os valores atuais do CLP para o Watch Recipe manager. Save Watch List: Salva a lista atual em seu PC com todos os valores lidos do CLP. Load Watch list: Carrega uma lista salva em seu PC com todos os valores presetados. Rename Watch Lista: Renomeia a lista atual.

  • 10 de outubro de 2012 Pgina: 32

    www.eaton.com Pgina 32

    LOG LOG uma ferramenta utilizada para registrar em ordem cronolgica toda a atividade que realizamos com o CoDeSys, esta atividade armazenada no prprio computador e estes arquivos podem ser salvos e abertos em outras ferramentas tais como os editores de texto. Para habilitar o LOG devemos ir primeiro no menu Project- Options e habilitar a ferramenta LOG. Assim que a mesma estiver habilitada e comearmos a trabalhar Online com o CLP, realizando downloads, forando variveis, etc... o Log ir registrar tudo no computador.

  • 10 de outubro de 2012 Pgina: 33

    www.eaton.com Pgina 33

  • 10 de outubro de 2012 Pgina: 34

    www.eaton.com Pgina 34

    Export / Import tools. As ferramentas de importao e exportao so larg amente utilizadas para aproveitar pedaos de um projeto em outro projeto. Para expo rtarmos um pedao de um projeto utilizamos a opo: Project Export no menu principal, o Co DeSys ir ento perguntar quais partes do projeto desejamos exportar, assim que selecionamos estes pedaos, escolhemos o nome do arquivo que desejamos gerar! Quando queremos importar estes pedaos selecionamo s a opo Project Import no menu principal, todos os elementos exportados aparecero neste novo CoDeSys.

    Quando trabalhamos com programas grandes esta ferramenta bastante til pois podemos dividir as tarefas entre vrios programadores e depois importar os pedaos criados separadamente. Sempre recomendvel separar os pedaos atravs da criao de folders para garantir um melhor reconhecimento das diversas partes. Utilizamos variveis globais quando as variveis que declaramos devem ser acessadas por todos os programadores, por exemplo, sadas fsicas do CLP, e as variveis locais para variveis que utilizaremos dentro de nosso programa. Isso garante que, mesmo que diferentes programadores criem variveis com os mesmos nomes, uma varivel local no afetar outra varivel local. Atualizaes em listas de variveis podem ser reenviadas ao time de programao que simplesmente ir importar as atualizaes sem perder o que j est feito. Assim que os pedaos estiverem prontos, os program adores exportam seus pedaos e o coordenador de projetos junta tudo em um nico programa principal.

  • 10 de outubro de 2012 Pgina: 35

    www.eaton.com Pgina 35

    Comparao de projetos. Inmeras vezes nos deparamos com vrias verses de um mesmo projeto, quer seja em computadores diferentes, CLPs diferentes ou mesmo um programa que acabamos de realizar o up-load e no sabemos o quanto o programa puxado est diferente do programa que consta em nossa mquina. Para estas situaes temos o recurso de comparao de programas. Abrimos um dos programas em questo normalmente no CoDeSys. Ento selecionamos no menu principal a opo Project Compare e escolhemos o arquivo que dese jamos comparar:

    Quando existem diferenas entre os objetos, os mes mos aparecem em vermelho nas duas telas. Quando h objetos que existem em um projeto, e no existem no outro, o mesmo aparece em verde no projeto que o contm e aparece um espao no projeto onde ele no existe. Os demais objetos que existem nos dois projetos, e so iguais em ambos, aparecem em preto ou em cinza. Para ver as diferenas entre os objetos basta clic ar duas vezes em um deles.

  • 10 de outubro de 2012 Pgina: 36

    www.eaton.com Pgina 36

    No caso acima a linha que est divergente aparecer em vermelho. As linhas azuis indicam que so linhas novas, enquanto que as linha s marcadas em cinza no existem no outro projeto.

    TASK Manager Em algumas situaes torna-se necessrio dividir o programa em vrias tarefas tasks diferentes, seja para otimizao do tempo de ciclo, seja para dividir um programa muito extenso ou s vezes at para melhorar o tempo de resposta da Ethernet. Quando trabalhamos sem o task configuration, ou seja, temos simplesmente o PLC_PRG, o prprio sistema executa este programa a cada 10mS independente do tamanho do mesmo. Dependendo do tamanho do programa podemos ter um erro watchdog, ou ento experimentar lentido nas respostas da ethernet. Considere um programa que demora 4mS para ser executado, no exemplo citado acima, PLC_PRG, o sistema tem ainda 6mS para gerenciar a Ethernet e solicitaes do CoDeSys quando estamos monitorando o programa on-line.

    Se o tempo de ciclo for aumentado para 9mS ento t emos uma sobra de 1mS para que o sistema cuide da Ethernet, webserver etc..

  • 10 de outubro de 2012 Pgina: 37

    www.eaton.com Pgina 37

    Nestas situaes uma boa sada a criao de task s, ns passamos a escolher a janela de tempo em que o programa ser chamado ciclicamente. Na opo TASK Configuration que fica na aba Resource do CoDeSys podemos criar as tasks. Nesta situao o programa no pode mais se chamar PLC_PRG, para trocar o nome de um programa clique sobre o mesmo com o boto direito do mouse e escolha a opo Rename Object. Em task configuration clique com o boto direito e escolha a opo append task:

    Podemos criar vrias Tasks diferentes, nestas tasks ns configuramos alguns parmetros:

  • 10 de outubro de 2012 Pgina: 38

    www.eaton.com Pgina 38

    Name: Nome da Task. Priority(0..31): prioridade da task em questo. Qua ndo temos vrias tasks este nmero que determina a prioridade entre elas. Ou seja, se estivermos executando o Task_A que tem prioridade 1 e, devido ao tempo definido, o sistema precisa executar o Task_B, se esta Task tiver uma prioridade com nmero menor, neste caso 0, ento a Task_A ser interrompida, a Task_B executada e assim que esta terminar o processo volta Task_A. Se a Task_B tiver uma prioridade com nmero maior, 2, 3, 4... ento o Task_A ir terminar a sua execuo e s ento a Task_B ser executada. Type: Tipo da task, normalmente selecionamos a op o cyclic e colocamos o intervalo que queremos que a task seja chamada, aumentando este tempo para, por exemplo, 20mS um caso citado anteriormente de tempo de execuo igual a 9 mS deixaria 11mS livres para que o CLP possa gerenciar a ethernet, web server, etc.... Watchdog: Determina o tempo que o sistema espera antes de sinalizar um erro de watchdog. Por exemplo se tivermos um programa de 4mS e este programa chamado a cada 8mS teremos o seguinte:

    Imagine que devido a saltos, loops e outras lgica s internas o programa extrapola este tempo de 4mS chegando a 12mS. Neste ponto temos outro parmetro chamado Sensitivity que indica quantas vezes seguidas o sistema tolera estes ciclos altos:

    Na situao acima, caso Sensivity seja regulado para 2, no ocorre erro pois o processo entende que no houveram duas extrapolaes de temp o consecutivas.

    J nesta situao, existe o erro de watchdog pois o sistema, por duas vezes seguidas, extrapolou o tempo mximo definido. Quando trabalhamos com vrias tasks temos a possibilidade de analizar o tempo geral, para isso precisamos importar a biblioteca SysTask Info.lib quando estivermos on-line veremos a seguinte tela no task Configuration:

    Outra forma de analizar os tempos das tasks atravs do comando tsk no PLC browser:

  • 10 de outubro de 2012 Pgina: 39

    www.eaton.com Pgina 39

    Ferramentas de visualizao Para habilitar a visualizao por WEB entramos na tela Target Settings e habilitamos a funo Web visualization na aba Visualization.

    Na opo width e height selecionamos as dimenses da tela que utilizaremos durante a rotina. Se vamos criar rotinas de alarmes nesta tela selecionamos tambm a opo Alarmhandling in the PLC. Na aba Visualizations clicamos com o boto direi to e selecionamos Add object, obrigatoriamente precisamos criar um primeiro objeto com o nome de PLC_VISU, esta tela a primeira a ser aberta quando chamarmos o WEB visualization, outras telas podem ser chamadas apartir desta.

  • 10 de outubro de 2012 Pgina: 40

    www.eaton.com Pgina 40

    Tenha 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, no recomendvel trabalhar com mltiplos acessos. (WEB + Programao + WEB....etc) Para visualizar a tela precisamos ter instalado um internet browser em nosso computador alm do software Java Machine. Em algumas situaes precisamos atualizar o firmware da IHM (A famlia XC-CPU2xx-XV no necessi ta de atualizao).

    Uma vez que o programa est colocado no CLP basta abrirmos o Browser e selecionarmos este endereo: http://:8080/webvisu.htm Para maiores referncias sobre as ferramentas disponveis para a criao de telas favor consulta o manual CoDeSys_Visu_V23_E.pdf

    Placeholders Uma das ferramentas mais teis que temos no que tange a criao de telas de visualizao no CoDeSys o Placeholder. Esta ferra menta permite que se crie uma tela bsica, ou uma sub tela, e que a mesma seja copiada inmeras vezes, sendo que para cada cpia, ns atribumos um set de variveis nico. Em termos comparativos, seria um bloco de funo utilizado para visualizao. Veja o exemplo: Criamos uma tela pequena chamada PH_Motor na aba visualizao:

    Para qualquer animao, boto ou varivel que quis ermos utilizar nesta tela ns inserimos $ $.

  • 10 de outubro de 2012 Pgina: 41

    www.eaton.com Pgina 41

    Neste caso o boto de liga ter a funo Tap varia ble, ou seja, ele ser um boto do tipo

    pulsante e a varivel atrelada a este boto a $Liga$. Todas as variveis utilizadas nesta tela sero colocadas como $xxxx$.

    Assim que criarmos nossa tela principal, utilizamos a opo visualization. Clicamos e arrastamos com o mouse na tela, assim que uma janela de dilogo aparece selecionamos a opo PH_Motor, neste caso o nome da sub tela que criamos anteriormente. Uma vez inserida a sub tela, clicamos duas vezes sobre a mesma e selecionamos a opo Placeholder na aba visualizao:

    A varivel $Liga$ ir aparecer, agora ligamos esta varivel varivel desejada em nosso programa, se copiarmos a mesma tela 20 vezes, em cada uma delas podemos direcionar uma varivel de programa diferente.

  • 10 de outubro de 2012 Pgina: 42

    www.eaton.com Pgina 42

    Contador Rpido 1CNT Para o contador rpido 1CNT podemos utiliza-lo de duas formas para fazer as contagem dos pulsos enviados por um encoder por exemplo, podemos fazer a leitura e comparao dos valores no Codesys ou fazer esta comparao diretam ente no hardware (Carto), que com isso podemos ganhar um tempo de rede e deixar a resposta a alguma comparao , ou = mais rpida doque se fosse feita pelo CLP. Abaixo iremos explicar os principais detalhes que devem ser considerados para fazer a leitura do carto 1CNT dos dois modos, para isso va mos usar um Encoder incremental de 2 canais A e B de 24Vdc.

    Contador Rpido 1 CNT comparao via Codesys. Depois que colocamos nossa rede mster na IHM ou CLP e nosso Gateway, devemos entrar no I/O Assistant pelo Codesys e alterar al guns parmetros de acordo com a aplicao que temos, conforme abaixo:

    Selecione o carto no I/O Assistant e v na aba PlugIn l podemos configurar opes como Modo de contagem, Configurar a sada digital, limit de contagem superior e inferior, entre outras coisas que podem ser encontradas no manual MN05002012Z-EM, para uma aplicao de

  • 10 de outubro de 2012 Pgina: 43

    www.eaton.com Pgina 43

    encoder incremental com sinais A e B em 24Vdc, no precisaremos modificar nenhum parmetro, depois de alterados os parmetros basta voltar para o Codesys.

    Quando nossa configurao volta para o Codesys sem pre temos que incluir o COBid das Outputs, pois ele s trz o COBid de leitura do contador rpido que sem o COBid dos Outputs no ir ler nada pois no mesmo temos que acionar alguns Bits para que as funes do carto 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 opo Receive PDO-Mapping nesta aba temos duas janelas a da esquerda temos as opes que podemos incluir no COB ids, no caso temos que clicar na opo ExtentibleObject_5808 e selecionar a opo Encod erControl_Generic XN-1CNT_0, depois de selecionado devemo abrir a opo PDO 0x1400 que e st na janela da direita ali temos vrios espaes vazios para mover nosso objeto de extens o basta selecionar o primeito objeto vazio e

    pressionar o boto que o mesmo ficarada seguinte forma:

  • 10 de outubro de 2012 Pgina: 44

    www.eaton.com Pgina 44

    Depois que incluimos o nosso COBid das Outputs j podemos fazer nosso programa, segue abaixo um exemplo:

    Alem de habilitar a contagem no 1CNT podemos tambm habilitar algumas outras funes utilizando o Byte de sada que foi criado conforme abaixo: Bit 0 Habilita a leitura do 1CNT; Bit 1 Habilita a funo de reset via Hardware atr avs da entrada DI1 (Borne 14); Bit 2 Reservado; Bit 3 Habilita sada digital DO1 a funcionar; Bit 4 Aciona a sada Digital DO1 (Borne 24); Bit 5 Habilita sada virtual DO1 a funcionar; Bit 6 Aciona a sada virtual DO1; Bit 7 Reservado; Para fazer o Reset da contagem via Hardware temos que fazer uma alterao no Service Data Objects conforme a imagen abaixo:

  • 10 de outubro de 2012 Pgina: 45

    www.eaton.com Pgina 45

    Quando clicamos na aba Service Data Objects ir aparecer uma lista com algumas funes, devemos encontrar o Index 5800sub1 e muda r o valor de 0 para 7168 que com isso estaremos habilitando o reset quando acionarmos a entrada 14 do carto 1 CNT.

    Contador Rpido 1 CNT comparao no hardware. Tambm podemos fazer a comparao do valor adquiri do no 1CNT diretamente no carto(Hardware), neste caso feita uma comparao de um valor pr-determinado no carto que tambm pode ser alterado no Codesys com o valor adquirido na entrada rpida do 1 CNT, essa comparao pode ser =, com isso conseguimos ter respostas mais rpidas mas s vai funcionar no caso de quando o contador atingir um certo numero de pulsos ele ativa sua sada digital. Depois que colocamos nossa rede mster no Codesys para a IHM ou CLP e depois incluir o Gateway, devemos entrar no I/O Assistant pelo C odesys e alterar alguns parmetros de acordo com a aplicao que temos, conforme abaixo:

  • 10 de outubro de 2012 Pgina: 46

    www.eaton.com Pgina 46

    Selecione o carto no I/O Assistant e v na aba PlugIn e depois devemos colocar nosso I/O Assistant Online com nosso Gateway para executar as alteraes necessrias para que o carto 1CNT possa realizar a comparao dos valores. Depois que o Gateway ficar Online com o I/O Assistant devemos ir na Aba Process Image e fazer as alteraes conforme a imagem abai xo:

  • 10 de outubro de 2012 Pgina: 47

    www.eaton.com Pgina 47

    Devemos colocar um valor de comparao pr determi nado, esse valor poder ser alterado depois pelo Codesys via COBid, ento s para ter uma base ou se o valor for sempre o mesmo. Temos que mudar as duas opes da D01 pois e la vem com os valores em 0 devemos mudar para 1 que a mesma estra apta a funcionar. Depois de habilitar as sadas temos que habilitar as comparao que vem de fabrica como 0 e temos que mudar para 1. Finalizado esta parte temos que ir na Aba Plug-In e fazer programaes conforme a imagem abaixo:

  • 10 de outubro de 2012 Pgina: 48

    www.eaton.com Pgina 48

    Na aba PlugIn devem ser modificados os valores de referencia de comparao isso feito na opo Refence Value 1, a funo da sada D01(S ada Fsica) e D02(Sada Virtual), tambm deve ser modificada a opo substitute value D01 pa ra 1, pois nessa opo que iremos escolher se nossa sada comear com o valor 1 e comutar para 0 ou ao contrrio. Depois destas configuraes terminadas s voltar para o Codesys no boto Close

    Project .

    No Codesys no podemos nos esquecer de clicar na Op o Activete COB-Ids. Agora vamos fazer um programa para podermos mudar o valor que setamos para a

    comparao via Codesys, segue abaixo uma imagem do programa.

  • 10 de outubro de 2012 Pgina: 49

    www.eaton.com Pgina 49

    Na Imagem acima estamos ativando alguma memrias pa ra Habilitar o encoder, abilitar o

    reset pelo Hardware e habilitar a sada digital a funcionar. Para modificarmos o valor de referencia de compara o da entrada rpida temos que criar

    um function Block que tranforma uma DWORD em 4 BYTEs pois o bloco que acessa a SDO referente ao valor de comparao s entende o valor por meio de BYTEs.

  • 10 de outubro de 2012 Pgina: 50

    www.eaton.com Pgina 50

    Agora que j convertemos o valor a ser alterado para um formato que o bloco que executa a alterao do SDO entenda, temos que incluir esse bloco no programa o mesmo se chama CanUser_SDOdownload abaixo temos uma imagem do me smo j no programa.

    Para sabermos qual o Endereo 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 opo Cam1HightLimit_Generic XN_1CNT_0 que aten de pelo Index 6B20sub1 esse o endereo que usaremos para que o bloco CanUser_SDO download possa fazer a alterao do valor de comparao diretamente no SDO do 1CNT.

  • 10 de outubro de 2012 Pgina: 51

    www.eaton.com Pgina 51

    Comunicao Ethernet CLP com CLP

    A comunicao Ethernet entre dois CLPs uma comun icao muito simples pelo motivo de ser uma comunicao direta que no precisa de Bl oco de funo para ficar gerenciando dados de envio/recebimento, a mesma feita simplesmente via Global Net Variables, e necessrio uma ateno especial com relao ao endereamento d os COBids pois esses so utilizados para envio e recebimento de pacotes de dados via Ethernet, abaixo veremos um passo a passo de como fazer esta comunicao.

    Quando estamos iniciando um projeto novo no Codesys passamos por algumas telas

    escolhendo qual ser nosso CLP, qual ser nossa linguagem de programao mas quando chegamos a tela Target Settings temos que marcar a opo Support network variables quando marcamos essa opo se abrir uma lacuna onde devemos escolher qual ser nossa comunicao no caso UDP para Ethernet, uma coisa qu e temos que ter ateno que esse UDP tem que ser em letra maiscula, pois se no nossa comunicao no ir funcionar, segue abaixo uma imagem desta configurao.

    Esse processo dever ser repitido em todos os CLPs que forem ligados na rede Ethernet. Agora temos que criar nossa Global Net Variables na aba Resources devemos clicar com o boto direito do mouse em cima de Global Var iables depis devemos adicionar um objeto, conforme abaixo.

  • 10 de outubro de 2012 Pgina: 52

    www.eaton.com Pgina 52

    Depois de clicarmos em Add Object ir aparecer uma tela chamada Properties, nela primeiramente devemos preencher o nome de nossa Global Net Variable depois devemos clicar em Add Network.

    Quando clicarmos em Add Netwaork a tela Propert ies ir se expandir neste momento que devemos conferir alguns parmetros e acrescer o utros, primeiramente temos que conferir se em Network Type est a marcado UDP, depois temos que marcar que ser o COBid de inicio de nossa mensagem, pois o COBid ir funcionar como um endereo de rede onde iremos armazenar nossas variveis, cada COBid tem o tamanho de 2 Words, nosso pacote funcionar da seguinte forma: Se tivermos um Global net Variables que tenha 10 variveis do tipo WORD ento estaremos utilizando 5 COBids na sequencia, portanto se determinarmos que nosso primeiro COBid ser o 1 estaremos utilizando at o 5 para armazenarmos nossa mensagem. Depois temos que preencher se nosso Global net Variable vai ser de escrita ou de leitura, na figura abaixo estamos criando um de Leitura, por isso marcamos a opo Read, segue abaixo duas imagens sendo uma de um Global net Variable de leitura e um de escrita, nele podemos notar que estamos escrevendo em um CLP1 a partir do COBid 1 e lendo no CLP2 o mesmo endereo.

  • 10 de outubro de 2012 Pgina: 53

    www.eaton.com Pgina 53

    No caso da Escrita podemos escolher tambm oque ir startar a atualizao da rede, que pode ser uma comunicao siclica, esperar um evento que no caso o set de uma varivel ou ento como est na imagem toda vez que olver a alterao de uma varivel dentro de um tempo mnimo de 20ms. No caso acima temos somente 2 CLPs em rede, mas podemos enfrentar casos com vrios CLPs em rede trocando muitas inforaes, por isso que temos que nos atentar com relao ao endereamento de nossos COBids, pois eles so o s endereos de rede que firaram armazenados nossas informaes. Depois que terminarmos de criar nossas Clobal net Variable de escrita e leitura nos nossos CLPs s fazer os programas e inserir as varaveis dentro delas, conforme abaixo. CLP 1

  • 10 de outubro de 2012 Pgina: 54

    www.eaton.com Pgina 54

  • 10 de outubro de 2012 Pgina: 55

    www.eaton.com Pgina 55

    CLP 2

    Comunicao CANopen CLP com CLP A Comunicao CANopen entre dois CLPs no difere muito da comunicao Ethernet que vimos anteriormente. A comunicao tambm feita com base em troca de informaes via Global net Variable e endereamento de COBids, a mesma tambm no precisa de bloco de funo para gerenciamento e envio e resposta de var iveis, somente da criao das Globals net Variables. Segue abaixo as principais configurae s que se diferem da Ethernet.

  • 10 de outubro de 2012 Pgina: 56

    www.eaton.com Pgina 56

    Quando utilizamos a rede CANopen entre CLP e CLP no podemos nos esquecer de ir na aba Network Functionality e preencher CAN em Nam es of supported network interfaces mas esse CAN tem que ser maisculo pois se no no ir funcionar. Uma coisa que no podemos nos esquecer tambm de incluir uma CanMaster na aba PLC Configuration pois ela que ir gerenciar os endereos de rede conforme abaixo:

  • 10 de outubro de 2012 Pgina: 57

    www.eaton.com Pgina 57

    Cada elemento na rede tem que ter um CanMaster em sua aba PLC Configuratio e deve ter um endereo de rede diferente. Pois se houver a lgum igual a rede no ir funcionar. Quando criamos nossas Global Net Variables podem os perceber que diferentemente da comunicao Ethernet na opo Network type agora tr z a opo CAN, pois alteramos ela para CAN na aba Terget Settings

    Com relao aos COBids de escrita e leitura no h diferena entre a rede Ethernet e CAN.

  • 10 de outubro de 2012 Pgina: 58

    www.eaton.com Pgina 58

    PID Autotunig no Codesys O PID uma funo muito utilizada nos dias atuais por ser um mtodo de controle de uma varivel baseado em um SET POINT que pode ser fixo ou varivel, seu controle se baseia em uma funo de transferncia em malha fechada com 3 variveis KP ( Parte Proporcional), KI (Parte Integral) e KD parte Derivativa) que podem ser alteradas manualmente ou automaticamente por meio de um PID Autotuning. Abaixo veremos como funciona e como parametrizar o bloco U_PID_autotuning_Controler.

    Acima temos uma imagem do bloco de funo de PID A utotuning e como ele se apresenta na programao Ladder do Codesys, Podemos ver que o nosso bloco possue varias entradas e sadas segue abaixo oque deve ser parametrizado em cada uma delas: Parametrizao das entradas do bloco. Setpoint_value_12Bit_UINT Esse a entrada onde devemos colocar nosso valor de refenecia que dever ser atingido pelo PID, deve ser declarado como UINT e tem resoluo de 12Bits(4096); Actual_value_12Bit_UINT Essa a entrada de referencia da malha fechada, onde deveremos entrar com o sinal do sensor de campo que nos dar o Fedback do processo, deve ser declarado como UINT e tem resoluo de 12Bits(4096); P_activate_BOOL Ativa parte KP (Proporcional) do bloco PID, essa tem como objetivo almentar ou diminuir a velocidade instantnea de correo do valor de sada, deve ser uma varivel do tipo BOOL. I_activate_BOOL Ativa a parte KI (Integral) do Bloco PID, essa t em por objetivo estabilizar o sinal de sada conforme o SetPoint informado, deve ser uma varivel do tipo BOOL. D_activate_BOOL - Ativa a parte KD (Derivativa) do Bloco PID, essa tem por objetivo dar velocidade na estabilizao do sinal de sada confo rme o SetPoint informado, deve ser uma varivel do tipo BOOL. Accept_manual_manipulated_variable_BOOL Ativa o controle manual do PID, quando o mesmo est em TRUE o PID desligado e enviado um valor pr definido diretamente na sada do bloco, isso faz uma ponte entre o valor pr determinado e a sada do bloco.

  • 10 de outubro de 2012 Pgina: 59

    www.eaton.com Pgina 59

    Input_reset_time_s_BOOL Quando est em falso quer diser que a entrada Derivate_action_time_10ths et em escala de ccimo de segundos, quando est em TRUE significa que a entrada est em escala de segundos. Setpoint_value_change_not_differentiate_BOOL Assa opo ativa a reverso da sada, fazendo assim uma lgica inversa, no caso de termos que fazer uma correo com um sensor que envie uma lgica inversa. Proportional_rate_percent_UINT Nesta entrada inserimos o valor manual para a pa rte KP(Proporcional) do nosso PID, por exemplo um valor calculado anteriormente, pois quando ativamos a parte KP do nosso PID ele envira este valor para o calculo da sada do PID, a mesma dever ser declarada como UINT. Reset_time_10ths_or_s_UINT Nesta entrada inserimos o valor manual para a pa rte KI (Integral) do nossp PID por exemplo um valor calculado anteriormente, pois quando ativamos a parte KI do nosso PID ele envira este valor para o calculo da sada do PID, a mesma dever ser declarada como UINT. Derivate_action_time_10ths_UINT - Nesta entrada inserimos o valor manual para a parte KD (Derivativa) do nossp PID por exemplo um valor calculado anteriormente, pois quando ativamos a parte KD do nosso PID ele envira este valor para o calculo da sada do PID, a mesma dever ser declarada como UINT. Manual_manipulated_variable_12Bit_UINT nesta entrada que colocarmos o valor que enviaramos diretamente para a sada quando acionarmos a entrada Accept_manual_manipulated_variable_BOOL, a mesma dever ser declarada como UINT. Autotuning_manipulated_variable_12Bit_UINT Esta varivel deve ser colocada no maximo de resoluo utilizada na aplicao a ser realizada, p ois quando o PID Autotuning foi iniciado ele ir enviar de primeira este valor para que quando ele cruze com o Set-Point dee a primeira referecia, matemtica para o calculo do PID.

    Os parmetros abaixo sempre devem ser ativados ao m esmo tempo para que o PID Autotuning seja iciniado, para que com isso ele mesmo fassa uma analise e encontre os parmetros necessrios para que a correo da sada seja feita e executada a malha fechada, geralmente utilizamos a mesma varivel para acionar todas juntas. Autotuning_accept_parameters_BOOL Esta entrada serve para aceitar os valores calculados pelo PID como parmetros do prprio, dever ser dec lacado como BOOL. Autotuning_activate_BOOL Esta entrada ativa o PID a funcionar em modo Autotuning, dever ser declacado como BOOL. Autotuning_re_optimize_BOOL Esta entrada ativa a reotimizao do PID, siguinifi ca que ele recalcular os valores de sada do PID, dever ser declacado como BOOL. Autotuning_disturbance_optimization_BOOL Esta entrada tenta otimisar algum disturbio gerado por algum tipo de interferencia, por exemplo uma temperature subindo linearmente e recebe um vento frio, isso far com que essa subida linear passe a se parecer com um dente de serra, dever ser declacado como BOOL. Autotuning_overshoot_20_percent_BOOL Esta entrada tenta limitar o overshoot para at 20%, do valor calculado, dever ser declarado como BOOL.

    Parametrizao das sadas do bloco.

  • 10 de outubro de 2012 Pgina: 60

    www.eaton.com Pgina 60

    Manipulated_variable_12Bit_UINT Sada de referencia do bloco PID, dever ser declarada como UINT e tem resoluo de 12 Bits(4096). Manipulated_variable_P_13Bit_INT Valor atual da componente KP (Proporcional) da v arivel de refreencia de sada. Manipulated_variable_I_13Bit_INT - Valor atual da componente KI (Integral) da varivel de refreencia de sada. Manipulated_variable_D_13Bit_INT - Valor atual da componente KI (Integral) da varivel de refreencia de sada. Autotuning_active_BOOL Esta sada fica TRUE quando o Autotuning est ativado, esta sada deve ser declarada como BOOL. Autotuning_proportional_rate_percent_ UINT Valor da component KP (Proporcional) Calculado pelo bloco, para a correo do erro. Autotuning_reset_time_10ths_or_s_UINT Valor da component KI (Integral) Calculado pelo bloco, para a correo do erro. Autotuning_derivate_action_time_10ths_UINT Valor da component KD (Derivative) Calculado pelo sistema.

  • 10 de outubro de 2012 Pgina: 61

    www.eaton.com Pgina 61

    So Paulo: Tel: 11 4525-7000 Rua Diacono Josias de Souza, 270 Lote 30 ao 36 Loteamento Multivias Jundia So Paulo CEP: 13212-171 Minas Gerais, Centro-Oeste e Norte: Tel: 31 2112-7070 Rua Juiz de Fora , 115 , sala 1110 - Barro Preto , Belo Horizonte - MG CEP 30180-060 Rio de Janeiro, Esprito Santo e Nordeste: Tel: 21 3541-4401 Avenida Dom Hlder Cmara, 5200 Rio de Janeiro RJ CEP: 20771-004

    Paran: Tel: 41 2107-9850 Rua Alexandre Gutierrez 990 Cj 18 - Agua Verde - Curitiba PR CEP: 80240-130 Santa Catarina: Tel: 47 3461-3179 Rua Joao Colin, 1285 Sl 3 - America Joinville SC CEP: 89204-001 Rio Grande do Sul: Tel: 51 2117-7000 Rua Florncio Ygartua, 270 Sala 1209 - Moinhos de Vento - Porto Alegre RS. CEP: 90430-010