Documente Academic
Documente Profesional
Documente Cultură
CoDeSys.
avanada
em
ambiente
10 de outubro de 2012
Pgina: 2
www.eaton.com
Pgina 2
INDEX:
Introduo ao curso. ........................................................................................................................... 4
Declarao de variveis. .................................................................................................................... 5
ARRAY. (Vetores e Matrizes.) ........................................................................................................ 5
Inicializao de variveis. ............................................................................................................... 8
Tipos de dados derivados............................................................................................................... 9
Enumeraes ........................................................................................................................... 10
Estruturas ................................................................................................................................ 11
Programao em ST (Texto Estruturado). ....................................................................................... 12
Atribuies e Expresses. ............................................................................................................ 12
Comando condicional. (IF, ELSIF e ELSE) .................................................................................. 14
Comando seletor (CASE) ............................................................................................................. 15
Comandos de repetio: ............................................................................................................... 15
(FOR) ....................................................................................................................................... 15
(WHILE) ................................................................................................................................... 16
(REPEAT) ................................................................................................................................ 17
(EXIT)....................................................................................................................................... 17
Chamando blocos de funo ........................................................................................................ 17
Programao em SFC (Sequential Function Chart) ........................................................................ 18
Atributos da Etapa. ....................................................................................................................... 20
Transies. ................................................................................................................................... 21
Chart sequencial. .......................................................................................................................... 22
Chart deciso ................................................................................................................................ 22
Chart paralelo. .............................................................................................................................. 23
Variveis implcitas. ...................................................................................................................... 23
Qualificadores de ao. ................................................................................................................ 24
Qualificador N (No Stored). ..................................................................................................... 24
Qualificadores S e R (SET // RESET) ..................................................................................... 25
Qualificador L (Limit <time>) ................................................................................................... 25
Qualificador D (Delay <time>) ................................................................................................. 26
Qualificador P (Pulse) .............................................................................................................. 26
Qualificador SD (Store and Delay <time>) .............................................................................. 27
Qualificador DS (Delay and Store <time>) .............................................................................. 27
Qualificador SL (Store Limited <time>) ................................................................................... 28
Criando aes. .............................................................................................................................. 28
Explorando os recursos avanados do CoDeSys. ........................................................................... 30
Watch / Recipe manager .............................................................................................................. 30
Watch / Receipt Manager em modo Offline............................................................................. 30
Watch and Receipt Manager no modo Online. ....................................................................... 31
LOG .............................................................................................................................................. 32
Export / Import tools. ..................................................................................................................... 34
Comparao de projetos. ............................................................................................................. 35
TASK Manager ............................................................................................................................. 36
Ferramentas de visualizao ........................................................................................................ 39
Placeholders ............................................................................................................................ 40
Contador Rpido 1CNT ................................................................................................................ 42
Contador Rpido 1 CNT comparao via Codesys...................................................................... 42
Contador Rpido 1 CNT comparao no hardware. .................................................................... 45
Comunicao Ethernet CLP com CLP ......................................................................................... 51
Comunicao CANopen CLP com CLP ....................................................................................... 55
PID Autotunig no Codesys ............................................................................................................ 58
10 de outubro de 2012
Pgina: 3
www.eaton.com
Pgina 3
Introduo ao curso.
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)
10 de outubro de 2012
Pgina: 4
www.eaton.com
Linguagens
Textuais
Linguagens
Grficas
Pgina 4
Declarao de variveis.
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 conforme 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:
<NomeVariavel> AT <Endereo Fisico> : ARRAY[<I>..<N>] OF <Tipo>
Onde: <NomeVariavel> o nome da varivel que desjamos, o nome obedece as regras j
estudadas para a declarao de variveis.
<Endereo Fisico> se necessrio podemos especificar o endereo fsico DO
PRIMEIRO VALOR do vetor, automaticamente o CLP entende que os valores seguintes seguiro
nos endereos subsequentes.
<I> Valor inicial do vetor, normalmente utilizamos 0 ou 1.
<N> Valor final do vetor, quantas posies o vetor ter.
<Tipo> 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 inicial 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: 5
www.eaton.com
Pgina 5
: ARRAY[0..3,1..4] OF UINT;
: ARRAY[1..4,1..4,0..3] OF INT;
10 de outubro de 2012
Pgina: 6
www.eaton.com
Pgina 6
Durante a simulao podemos ver que a Matriz chamada 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 duas 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.
10 de outubro de 2012
Pgina: 7
www.eaton.com
Pgina 7
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 carregados 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: 8
www.eaton.com
Pgina 8
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
Neste caso eu criei um tipo de dados chamado Matriz este tipo de dado utilizado para
declarar variveis em meu programa. As minhas variveis declaradas ficaro assim:
Deposito1 : Matriz;
Deposito2 : Matriz;
Deposito3 : Matriz;
10 de outubro de 2012
Pgina: 9
www.eaton.com
Pgina 9
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 IecAdvEstruturas.Pro alguns exemplos de enumeraes.
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: 10
www.eaton.com
Pgina 10
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 types:
Ns criamos uma estrutura chamada TanquePadrao, dentro desta estrutura temos quatro
variveis, Pressao, Nivel, LabelTanque e MedidasAnteriores 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.
10 de outubro de 2012
Pgina: 11
www.eaton.com
Pgina 11
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 seguida, uma janela com todas as opes ir
aparecer:
Neste exemplo, assim que o contato Copia ligar, todos os dados armazenados em
Tanque1 sero copiados para o vetor TanqueVariado na posio 2.
Atribuies e Expresses.
Atribuio similar ao comando MOVE do Ladder, ele 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 aquela linha lgica chegou ao fim. Se o
compilador no detectar o fim de linha, uma mensagem 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, basta 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: 12
www.eaton.com
Pgina 12
Maior
Menor
Diferente
Menor ou igual
Maior ou igual
Igual
10 de outubro de 2012
Pgina: 13
www.eaton.com
Pgina 13
10 de outubro de 2012
Pgina: 14
www.eaton.com
Pgina 14
Comandos de repetio:
(FOR)
Os comandos de repetio, ou comandos de loop, repetem as linhas de comando at
que uma determinada condio seja satisfeita. O mais utilizado o comando FOR.
FOR <InicializacaoDaVariavel> TO <ValorMaximoDeIncrementos> BY <ValorIncrementos> DO
<Comandos>;
<Comandos>;
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
<Comandos>;
<Comandos>;
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: 15
www.eaton.com
Pgina 15
valor precedido pelo comando BY. Os comandos so executados 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 tempo 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 <ExpressaoBooleana> DO
<Comandos>;
<Comandos>;
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: 16
www.eaton.com
Pgina 16
(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 executados uma nica vez.
REPEAT
<Comandos>;
<Comandos>;
UNTIL <ExpressaoBooleana>
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
<Comandos>;
<Comandos>;
IF <ExpressaoBooleana> THEN
EXIT;
END_IF;
UNTIL <ExpressaoBooleana>
END_REPEAT;
10 de outubro de 2012
Pgina: 17
www.eaton.com
Pgina 17
10 de outubro de 2012
Pgina: 18
www.eaton.com
Pgina 18
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: 19
www.eaton.com
Pgina 19
Atributos da Etapa.
Todas as Etapas podem ser programadas com tempo mximo, mnimo e um comentrio.
10 de outubro de 2012
Pgina: 20
www.eaton.com
Pgina 20
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 internas. 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 para 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 ou := no caso da programao estruturada. O
prprio compilador entende que a sada da lgica ser o disparo da transio.
10 de outubro de 2012
Pgina: 21
www.eaton.com
Pgina 21
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 outra e no h caminhos alternativos.
Para inserir etapas e transies em srie utilizamos 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-transio...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:
Trans4.
Quando paramos no Step1 existem trs caminhos disponveis, via Trans2, Trans3 ou
10 de outubro de 2012
Pgina: 22
www.eaton.com
Pgina 22
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 deve disparar, neste exemplo Trans6.
Assim que esta condio satisfeita, todas as etapas, Step2, Step7 e Step8 so
desligadas e a etapa seguinte, Step9, acionada.
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:
<NomeDoPasso>.t Retorna um valor do tipo TIME relativo ao tempo que a etapa est
ligada.
<NomeDoPasso>.x Retorna um valor do tipo BOOL. Indica se a etapa em questo est
ativa.
<NomeDoPasso>._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:
10 de outubro de 2012
Pgina: 23
www.eaton.com
Pgina 23
Qualificadores de ao.
Cada etapa recebe uma ao, esta ao pode ser uma varivel booleana ou um subprograma do tipo Action. O Qualificador aparece ao lado esquerdo do nome da ao conforme
podemos ver nos exemplos abaixo.
10 de outubro de 2012
Pgina: 24
www.eaton.com
Pgina 24
10 de outubro de 2012
Pgina: 25
www.eaton.com
Pgina 25
Qualificador P (Pulse)
A ao executada uma nica vez assim que a etapa ativada.
10 de outubro de 2012
Pgina: 26
www.eaton.com
Pgina 26
10 de outubro de 2012
Pgina: 27
www.eaton.com
Pgina 27
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 associada 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 direito no programa SFC em questo e
selecionamos a opo add action, o programa ir perguntar 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: 28
www.eaton.com
Pgina 28
As etapas podem chamar quantas aes forem necessrias para alcanar nossos
objetivos.
10 de outubro de 2012
Pgina: 29
www.eaton.com
Pgina 29
10 de outubro de 2012
Pgina: 30
www.eaton.com
Pgina 30
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:=<value>
PLC_PRG.struvar.b:=<value>
PLC_PRG.struvar.c:=<value>
No caso de arrays devemos indexar os elementos um a um:
PLC_PRG.arr_var[0]:=<value>
PLC_PRG.arr_var[1]:=<value>
Clicando com o boto direito do mouse no nome da Receita vemos vrias opes:
Onde:
New Watch List: Nos permite criar uma nova lista de visualizao.
Delete Watch List: Apaga a lista de visualizao selecionada.
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: 31
www.eaton.com
Pgina 31
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: 32
www.eaton.com
Pgina 32
10 de outubro de 2012
Pgina: 33
www.eaton.com
Pgina 33
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 programadores exportam seus pedaos e o
coordenador de projetos junta tudo em um nico programa principal.
10 de outubro de 2012
Pgina: 34
www.eaton.com
Pgina 34
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 desejamos comparar:
10 de outubro de 2012
Pgina: 35
www.eaton.com
Pgina 35
No caso acima a linha que est divergente aparecer em vermelho. As linhas azuis
indicam que so linhas novas, enquanto que as linhas 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 temos uma sobra de 1mS para que o
sistema cuide da Ethernet, webserver etc..
10 de outubro de 2012
Pgina: 36
www.eaton.com
Pgina 36
Nestas situaes uma boa sada a criao de tasks, 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: 37
www.eaton.com
Pgina 37
Imagine que devido a saltos, loops e outras lgicas 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 tempo 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 SysTaskInfo.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: 38
www.eaton.com
Pgina 38
Ferramentas de visualizao
Para habilitar a visualizao por WEB entramos na tela Target Settings e habilitamos a
funo Web visualization na aba Visualization.
rotina.
10 de outubro de 2012
Pgina: 39
www.eaton.com
Pgina 39
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 necessita de atualizao).
Uma vez que o programa est colocado no CLP basta abrirmos o Browser e
selecionarmos este endereo:
http://<IP da IHM>: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 ferramenta 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 quisermos utilizar nesta tela ns inserimos
$ <Nome da varivel> $.
10 de outubro de 2012
Pgina: 40
www.eaton.com
Pgina 40
Neste caso o boto de liga ter a funo Tap variable, 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: 41
www.eaton.com
Pgina 41
10 de outubro de 2012
Pgina: 42
www.eaton.com
Pgina 42
Quando nossa configurao volta para o Codesys sempre 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 COBids, no caso temos que clicar na opo
ExtentibleObject_5808 e selecionar a opo EncoderControl_Generic XN-1CNT_0, depois de
selecionado devemo abrir a opo PDO 0x1400 que est na janela da direita ali temos vrios
espaes vazios para mover nosso objeto de extenso basta selecionar o primeito objeto vazio e
pressionar o boto
10 de outubro de 2012
Pgina: 43
www.eaton.com
Pgina 43
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 atravs 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: 44
www.eaton.com
Pgina 44
Quando clicamos na aba Service Data Objects ir aparecer uma lista com algumas
funes, 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 carto 1 CNT.
10 de outubro de 2012
Pgina: 45
www.eaton.com
Pgina 45
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 abaixo:
10 de outubro de 2012
Pgina: 46
www.eaton.com
Pgina 46
10 de outubro de 2012
Pgina: 47
www.eaton.com
Pgina 47
Na aba PlugIn devem ser modificados os valores de referencia de comparao isso feito
na opo Refence Value 1, a funo da sada D01(Sada Fsica) e D02(Sada Virtual), tambm
deve ser modificada a opo substitute value D01 para 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
10 de outubro de 2012
Pgina: 48
www.eaton.com
Pgina 48
Na Imagem acima estamos ativando alguma memrias para Habilitar o encoder, abilitar o
reset pelo Hardware e habilitar a sada digital a funcionar.
Para modificarmos o valor de referencia de comparao 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: 49
www.eaton.com
Pgina 49
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 mesmo 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 atende pelo Index 6B20sub1 esse o
endereo que usaremos para que o bloco CanUser_SDOdownload possa fazer a alterao do
valor de comparao diretamente no SDO do 1CNT.
10 de outubro de 2012
Pgina: 50
www.eaton.com
Pgina 50
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 Variables depis devemos adicionar um objeto,
conforme abaixo.
10 de outubro de 2012
Pgina: 51
www.eaton.com
Pgina 51
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.
10 de outubro de 2012
Pgina: 52
www.eaton.com
Pgina 52
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 os 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: 53
www.eaton.com
Pgina 53
10 de outubro de 2012
Pgina: 54
www.eaton.com
Pgina 54
CLP 2
10 de outubro de 2012
Pgina: 55
www.eaton.com
Pgina 55
Quando utilizamos a rede CANopen entre CLP e CLP no podemos nos esquecer de ir na
aba Network Functionality e preencher CAN em Names 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: 56
www.eaton.com
Pgina 56
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 algum igual a rede no ir funcionar.
Quando criamos nossas Global Net Variables podemos perceber que diferentemente da
comunicao Ethernet na opo Network type agora trz a opo CAN, pois alteramos ela para
CAN na aba Terget Settings
CAN.
Com relao aos COBids de escrita e leitura no h diferena entre a rede Ethernet e
10 de outubro de 2012
Pgina: 57
www.eaton.com
Pgina 57
Acima temos uma imagem do bloco de funo de PID Autotuning 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 tem 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 conforme 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: 58
www.eaton.com
Pgina 58
10 de outubro de 2012
Pgina: 59
www.eaton.com
Pgina 59
Valor
da
component
KP
(Proporcional)
10 de outubro de 2012
Pgina: 60
www.eaton.com
Pgina 60
So Paulo:
Tel: 11 4525-7000
Rua Diacono Josias de Souza, 270 Lote 30
ao 36 Loteamento Multivias Jundia So
Paulo
CEP: 13212-171
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
10 de outubro de 2012
Pgina: 61
www.eaton.com
Pgina 61