·
Engenharia Elétrica ·
Outros
Envie sua pergunta para a IA e receba a resposta na hora
Texto de pré-visualização
Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 AUTOMAÇÃO INDUSTRIAL INICIAÇÃO AO CODESYS Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Sumário Criar um novo projeto 7 Habilitar simulação 8 Primeiro Programa 9 Criar Visualization 10 Criar objetos 11 Compilar o programa 14 Ficar online 16 Forçar entrada 17 Testando o Visualization 17 Criando um novo PRG em ladder 19 Adicionando Tasks 20 Criando o código em Ladder 20 Exemplos de lógica booleana 23 Logica AND em ST 23 Logica AND em Ladder 23 Logica OR em Ladder 24 Logica NOT em ST 24 Logica NOT em Ladder 24 Tecnica de auto retenção 25 Exemplo em ST 25 Exemplo em Ladder 26 Operações matemáticas 27 Variáveis numéricas 27 Números inteiros 27 Números reais 27 Visualization 27 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Adicionando um Textfild 27 Formato do texto 28 Variável 28 Exemplos 30 Mover 30 ST 30 Ladder 30 Soma 30 ST 30 Ladder 31 Subtração 31 ST 31 Ladder 31 Multiplicação 31 ST 31 Ladder 31 Divisão 32 ST 32 Ladder 32 Modulo 32 ST 32 Ladder 32 Exponencial 32 ST 32 Ladder 32 Igual 33 ST 33 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Ladder 33 Maior 33 ST 33 Ladder 33 Menor 34 ST 34 Ladder 34 Diferente 34 ST 34 Ladder 34 Timers 35 TON 35 Ladder 35 ST 36 TOF 36 Ladder 36 ST 37 Conversor de tipo 38 Exemplo 38 Visualization 39 Outros tipos 39 Condicionar operação 40 Exemplo em Ladder 40 Exemplo em ST 40 Princípio de máquina de estado 41 Exemplo de máquina de estado em ladder 41 Exemplo de máquina de estado em ST 44 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Sequential Funtion Chart SFC 45 Exemplo de máquina de estado com CFC 45 Estruturas 49 Folder 49 Exemplo 49 Enumerations 50 Exemplo 51 Estructure 53 Exemplo 53 Function 56 Exemplo 56 Function Block 60 Exemplo 60 Exercícios 62 Controle de pigmentos 62 Objetivo do controle 62 Dispositivos 62 Descrição do Programa 62 Controle de partida com tensão reduzida EstrelaTriangulo 63 Objetivo do controle 63 Dispositivos 63 Descrição do Programa 64 P á g i n a 7 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Criar um novo projeto Após abrir o software CODESYS no canto superior direito clique em File em seguida clique em New Project Selecione o tipo de projeto a ser criado será utilizado Standard Project em Name de um título ao projeto e em Location selecione a pasta que deseja salvalo P á g i n a 8 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Ao clicar em Ok o software irá solicitar o Device a ser trabalhado e a linguagem de programação do primeiro programa a ser gerado isto pode ser alterado com o desenvolver do projeto Para o primeiro exemplo será utilizado o control win V3 x64 e linguagem ST conforme as figuras abaixo Habilitar simulação O device selecionado permite habilitar o modo de simulação ou seja não será necessário ter um hardware físico como controlador Clicando com o botão direito em Device CODESYS Control Win V3 x64 irá abrir uma lista de ações possíveis nesta lista devese dar um click com o botão direito em Simulation P á g i n a 9 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Deve ser observado que na parte inferior da janela irá aparecer a palavra SIMULATION com fundo vermelho isto indica que o software será simulado pelo CODESYS Primeiro Programa Com um duplo clique em PLCPRG PRG irá abrir uma janela dividida em duas partes a parte superior é destinada para a declaração de variáveis locais de entrada ou saída Para o primeiro exemplo será criado duas variáveis uma representando uma entrada física um botão sensor ou bit de entrada e outro dando um sinal de saída binaria Na parte destinada a linhas de código deve ser escrita a seguinte linha OUT1 IN1 P á g i n a 10 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Esta linha está igualando a variável de saída OUT1 a variável de entrada IN1 na linguagem ST isto é feito com o comando qual pega o conteúdo da direita e transfere para a esquerda Criar Visualization O visualization é uma excelente ferramenta para testar e criar supervisórios o mesmo permite acesso via web e possibilita uma simulação de entradas e saídas do código Clicando com o botão direito em Application deve seguir com o mouse até Add Object expandindo as opções e clicando em Visualization P á g i n a 11 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Ira abrir uma janela onde é possível dar um nome a sua página nesta mesma tela será necessário selecionar a opção Active Criar objetos Na arvore de projeto localizada na esquerda do CODESYS é possível ver o item com o nome que foi dado a página do visualization Com um duplo clique neste item será possível abrir a tela de edição nesta tela no canto inferior direito fica localizado a aba ToolBox nele é possível escolher um objeto para adicionar ao projeto P á g i n a 12 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Na aba LampsSwitchesBitmaps da janela ToolBox devese clicar no item e arrastar para a localização desejada isto deve ser feito para os itens Lamp e PushSwitch Com um duplo clique no item a janela Properties será abera em seu topo a caixa de seleção Advanced deve ser selecionada assim o desenvolvedor terá acesso as configurações mais avançadas do objeto No item Position deve se dar um duplo clique no campo Value da propriedade Variable com isto ira aparecer um botão no final do campo com três pontos Clicando neste botão será aberta a janela se seleção da variável quer o seu objeto ira ler ou escrever esporadicamente ambas as funções Para expandindo a aba Aplication e a PLCPRG deve clicar no botão com o símbolo localizado a esquerda dos itens P á g i n a 13 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Após os itens serem expandidos as variáveis do PLPRG estão organizadas em arvore logo abaixo do item para o PushSwitch deve ser selecionada a vaiável IN1 pois o botão é uma entrada de sinal para o controlador Para a Lamp deve ser selecionada a vaiável OUT1 pois a lamp é uma saída de sinal do controlador O botão utilizado acima é uma chave de retenção para comandos de pulso deve ser usado o objeto Button na aba Common controls P á g i n a 14 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Esse objeto requer mais detalhes para ser configurado Primeiro deve configurar a variável de estado do botão isto é possível na seção Button state variable no item Digital Variable Após isto devemos criar um evento neste botão na seção Inptconfiguration expanda a seção Tap e indique a variável no item variable Compilar o programa A compilação do programa é essencial para a verificação de falhas de sintaxe da programação isto é feito através do botão Build localizado na aba de ferramentas superior do CODESYS ou apertando a tecla F11 do teclado Após compilar é preciso observar a parte inferior do CODESYS nela existe um campo chamado Last build qual mostra a quantidade de erros e warnings que possuem no código e Precompile qual mostra objetivamente se a compilação é válida ou não Caso o código esteja com erro no canto inferior esquerdo é possível abrir a aba de mensagens onde é informado a possível origem e causa do erro isto pode não ser exato mas costuma ser bem próximo ao erro por isto o desenvolvedor deve ter atenção e reler o código etapa por etapa P á g i n a 15 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Com um duplo clique em cima do erro o próprio CODESYS leva o cursor a página e linha qual está identificando o bug Para testar o recurso de localização de erro na linha de código remova o ponto e vírgula conforme a imagem abaixo e aperte F11 Clique no X logo acima da declaração de variáveis para fechar a página do código aberto Va até a aba Messages e de um duplo clique no erro note que a página do código é aberta novamente isto indica que a falha esta nela e o cursor ira piscar na linha sugerida P á g i n a 16 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Ficar online Apertando as teclas Alt e F8 do teclado ou clicando em Login é possível passar o software para o controlador e fica online no mesmo Esta função é extremamente útil para depurar o código pois além das falhas de sintaxe do código podem existir com frequência falhas de logica com esta função é possível visualizar o que o código está executando e ver exatamente o trecho com falha de logica Após clicar em Login o CODESYS irá alertar que a aplicação anterior que está rodando no controlador ira ser substituída por esta clique em Yes Eventualmente o processo de LoginCompilação ira necessitar parar a aplicação que está rodando no controlador para poder continuar isto ocorre quando é alterado mapas de variáveis e algumas vezes ao alterar variáveis muito utilizadas no código Pode se observar isto na barra inferior do software lá ira ter a informação STOP ou RUM em destaque por vermelho ou verde respectivamente Para dar RUN na aplicação que está no dispositivo clique no ícone de Play na barra superior do CODESYS Agora note que o status mudou para RUN P á g i n a 17 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Forçar entrada Quando se está online no equipamento é possível forçar valores e estados das variáveis desde que as mesmas não provenham de uma entrada em execução Isto auxilia nos testes de logica e passagem do código podendo assim forçar situações no código e analisar tratamentos Com o código online de um duplo clique onde está escrito FALSE na variável IN1 na linha de código isto ira preparar o valor para TRUE O valor também pode ser preparado na tabela de variáveis em Prepared value Após preparar o valor desejado aperte combinadamente as teclar Ctrl e F7 isto faz com que o valor preparado seja transferido para a variável a ser forçada Testando o Visualization Com o software online de um duplo clique em Visualization ou no nome que você deu a sua página A tela que foi criada vai estar em execução e ao clicar no botão note que a lâmpada ira acender e ao clicar de novo ira apagar P á g i n a 18 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 O botão utilizado é auto retentivo ou seja ele irá manter o estado que for colocado P á g i n a 19 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Criando um novo PRG em ladder Um PRG é o nível mais baixo de execução do software isto faz com que seja necessário chamalo através de uma Task esta task pode ser por interrupção cíclica ou chamada por eventos Apesar ser possível chamar vários PRGs em uma task não é aconselhável criar muitas pois o tempo de varredura ira se dividir entre elas diminuindo o processamento do controlador Ou seja se cada PRG demorar 200ms ao fim da execução de dois PRGs se passaram 400ms isto pode atrapalhar leituras de sinais Para adicionar um novo PRG clique com o botão esquerdo do mouse em Aplication expandir o item Add Object e clicar em POU Ira abrir uma janela onde é possível escolher o nome e a estrutura Program ou Funcion Block o Funcion por hora é escolhido Program PRG e no final do diálogo é possível escolher a linguagem de implementação a linguagem ladder deve ser escolhida P á g i n a 20 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Adicionando Tasks Para que este novo PRG seja executado deve ser adicionado nas tasks para fazer isto e dado um duplo clique em MainTask Ira abrir a tela de configuração da task nela é possível mudar o tipo prioridade e intervalo de execução No centro esquerdo desta tela existe um botão com símbolo de escrito Add Call devese clicar nele e selecionar a PRG criada Criando o código em Ladder Em ladder as linhas de código se chamam Network é necessário a inserção das mesmas manualmente Será reproduzido o mesmo exemplo anterior então deve ser declarada as mesmas variáveis P á g i n a 21 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Para começar a inserir comandos em ladder basta clicar com o botão direito na Network e selecionar o que deseja adicionar a princípio adicione um contato em Insert Contact Após inserir um contato é preciso inserir um coil ou saída Note que há pontos de exclamação em cima dos elementos adicionados isto quer dizer que nenhuma variável foi ligada ao código Para ligar basta clicar nos pontos de interrogação e digitar ou selecionar na lista de variáveis P á g i n a 22 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 É possível utilizar o mesmo visualization do exemplo anterior para testar este código basta copiar e colar os elementos e editar o caminho da propriedade variável P á g i n a 23 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Exemplos de lógica booleana O principal meio de controle de processo em uma automação são os sinais discretos por terem custo baixo de implantação e manutenção e estes sinais são facilmente tratados e manipulados utilizando lógica booleana Para isto se utiliza o Vizualization criado nos exemplos piloto Ladder e ST para executar e testar os exemplos a seguir apenas sendo necessário adicionar mais um PushSwitch em cada linguagem Também será necessário declarar mais uma entrada em ambos os PRGs Logica AND em ST Logica AND em Ladder Logica OR em ST P á g i n a 24 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Logica OR em Ladder Logica NOT em ST Logica NOT em Ladder P á g i n a 25 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Tecnica de auto retenção Na indústria é muito comum comando duplo para acionamento de cargas o chamado selo eletricamente é a auto realimentação da bobina de uma contatora ou de um relé sendo desligada por um contato normalmente fechado que ao ser acionado corta a alimentação deste atuador É possível reproduzir esta técnica via software quando conveniente Fazendo analogia ao esquema elétrico acima temos S0 IN2 S1 IN1 K1 OUT1 Observação A execução deste exemplo é necessário utilizar um Button da aba Common controls com a função Tap Exemplo em ST A linguagem ST se assemelha muito a linguagens de programação de computadores o C em especial esta nova demanda exige códigos mais simples P á g i n a 26 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 e limpos algo muito difícil de se fazer em uma linguagem de blocos cuja a interpretação é dada a partir de diferentes diagramas e simbologias Exemplo em Ladder Note que em ladder o comando elétrico equivalente é idêntico o que muda é a posição de interpretação Isto se deve por conta que a linguagem Ladder foi feita para eletricistas programarem uma vez que comandos elétricos é algo trivial para eles Outro fator que contribuiu para a analogia ao esquema elétrico é que historicamente na evolução da automação viemos de comandos elétricos para logicas com reles reles programáveis e só depois os controladores lógicos herdando assim muitas características de suas técnicas antecessoras P á g i n a 27 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Operações matemáticas Variáveis numéricas A declaração de variáveis numéricas se dá de forma idêntica a uma booleana tendo apenas o cuidado adicional de observar o tipo e tamanho da mesma podendo variar de números inteiros e reais Para o exemplo declare 3 variáveis da seguinte forma Iremos utilizar números reais porem o tratamento para outros tipos não há diferencia Números inteiros Números reais Visualization Adicionando um Textfild Dentro do visualization na ToolBox vá na aba Common Controls e arraste para o local desejado duas Textfilds P á g i n a 28 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Formato do texto Dentro das propriedades dos Textsfilds na seção Texts na propriedade Text é possível inserir um texto a ser exibido ou formato de exibição de uma variável Vamos alterar o formato de exibição para um número com virgula sendo exibido três casas antes e duas depois da virgula Variável O Textfild pode ser configurado para entrada e exibição de um valor ou apenas exibição de um O Texfild superior vamos configurar a variável de entrada e saída Para configurar a variável de saída o que será exibido no textfild na seção Text variables linque a variavem de entrada do programa de forma idêntica a um botão Para adicionar a variável de entrada ou escrita do textfild é necessário criar um evento na seção Inputconfiguration no item OnMouseUp só irá ocorrer o evento quando soltar o clique do mouse em cima da caixa de texto de um duplo clique P á g i n a 29 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Na janela que abriu de um duplo clique em Write a Variable No campo Input type selecione VisuDialogsNumpad isto fara abrir um teclado numérico Mantenha a configuração Use text output variable isto faz ele reaproveitar a variável de saída como entrada Repita este procedimento para as duas entradas IN1 e IN2 e adicione Label identificando os itens P á g i n a 30 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Exemplos Mover Mover um valor de uma variável para outra é uma forma de armazenar o estado de uma entrada ou valor naquele momento para ser reaproveitado em outro momento para comparação ou atribuição ST Em ST o processo e bem simples basta igualar a variável de saída com a variável de entrada Ladder Na direita fica localizado a ToolBox da programação Ladder nela expanda a seção Other Operator e arraste o item MOVE até a Network Note que irá aparecer destacado em cinza a escrita Start here o bloco deve ser soltado em cima do campo cinza Note que será adicionado um contato aberto e um bloco escrito MOVE no contato digite TRUE isto fara com que ele seja sempre verdadeiro e no bloco digite a entrada e a saída Soma Este exemplo irá somar o número IN1 com o IN2 ST P á g i n a 31 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Ladder Subtração Este exemplo irá subtrair o número IN2 do IN1 ST Ladder Multiplicação Este exemplo irá muliplicar o número IN1 pelo IN2 ST Ladder P á g i n a 32 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Divisão Este exemplo irá dividir o número IN1 pelo IN2 ST Ladder Modulo Este extrair o modulo do número IN1 ST Ladder Exponencial Este exemplo irá elevar o número IN1 pelo IN2 ST Ladder P á g i n a 33 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Igual Este exemplo irá comparar se IN1 e IN2 e mover 1 para a OUT1 se for verdadeiro caso seja falso ira mover 0 ST Ladder Maior Este exemplo irá comparar se IN1 e IN2 e mover 1 para a OUT1 se for verdadeiro caso seja falso ira mover 0 ST Ladder P á g i n a 34 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Menor Este exemplo irá comparar se IN1 e IN2 e mover 1 para a OUT1 se for verdadeiro caso seja falso ira mover 0 ST Ladder Diferente Este exemplo irá comparar se IN1 e IN2 e mover 1 para a OUT1 se for verdadeiro caso seja falso ira mover 0 ST Ladder P á g i n a 35 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Timers Temporizadores são muito importantes na automação industrial seja para causar um retardo em um sinal ou prolongar sua atuação identificar falhar por timer out condicionar passagens entre outras funções que dependam de uma contagem de tempo Basicamente existem dois tipos de times TON e TOF ambos são compostos por Entrada IN Saída Q Tempo corrente ET Tempo de referência PT TON O funcionamento do timer TON consiste em iniciar uma contagem de tempo a partir do momento que uma entrada IN seja verdadeira o tempo será contado até atingir o tempo de referência neste momento a saída Q será ativada assim como demonstra o gráfico abaixo Ladder Para executar o exemplo é preciso declarar as seguintes variáveis P á g i n a 36 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Em ToolBox no menu Function blocks adcione um bloco TON e reproduza o exemplo abaixo é necessário apagrar os três pontos de interrogação caso não use uma variável em ET ST Para executar o exemplo é preciso declarar as seguintes variáveis Reproduza o código a seguir TOF O funcionamento do timer TOF consiste em ativar sua saída Q assim que a entrada IN for falsa o tempo da duração deste retardo é ocasionado pelo tempo de referência como pode ser notado no gráfico abaixo Ladder Para executar o exemplo é preciso declarar as seguintes variáveis P á g i n a 37 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Em ToolBox no menu Function blocks adcione um bloco TON e reproduza o exemplo abaixo é necessário apagrar os três pontos de interrogação caso não use uma variável em ET ST Para executar o exemplo é preciso declarar as seguintes variáveis Reproduza o código a seguir P á g i n a 38 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Conversor de tipo As variáveis possuem um tipo especificado no momento da sua declaração porem o aproveitamento desta variável em outro lugar como uma nova entrada de dados pode haver incompatibilidade de tipo Isto ocorre por que não é possível atribuir um valor de tipo X para uma variável de tipo Y Por conta disto devemos converte este tipo para encaixar o mesmo dentro da variável Exemplo Note que tanto no exemplo em ladder quanto no exemplo em ST a soma de dois números Reais não se iguala a um inteiro Para contornar este problema podemos usar o comando REALTOINT P á g i n a 39 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Visualization Reproduza o seguinte vizualization para testar o código Note que valores após a virgula são arredondados após a soma isto ocorre por que o valor de saída é um inteiro Outros tipos Tendo em mente que eu quero transformar uma variável do tipo X em uma variável em tipo Y fazendo analogia com o exemplo anterior temos XTOY substituindo X e Y com os tipos desejados é possível encontrar o código necessário para tal conversão Em ladder o bloco se chama TOX ou seja ele identifica o tipo de entrada e você apenas escolhe o tipo de saída P á g i n a 40 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Condicionar operação O condicionamento de uma operação é importante para determinar a hora que ela deve ser executada isto é a base da técnica máquina de estados uma vez que você compara e toma decisões d o que deve ser executado de acordo ao estado Para isto declare mais uma variável booleana em seu PRG Em seu visualization crie um button e configure a função Tap para esta variável Exemplo em Ladder Exemplo em ST P á g i n a 41 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Princípio de máquina de estado A técnica máquina de estado é a mais utilizada para softwares de automação industrial pois grande parte do levantamento dos estágios de operação é feita em um levantamento comumente feito através do brainstorming outras técnicas de levantamento de prérequisitos também possibilitam o mesmo levantamento A máquina de estados consiste em armazenar variáveis anteriores relevantes para determinar o atual estágio de operação As etapas podem ser levantadas de forma de texto indentado ou por fluxogramas com auxílio do Visio Cada etapa ou estagio necessita de uma condição ou sinalização de termino assim o código pula para a próxima etapa pertinente não necessariamente na sequência Cada linguagem possui ferramentas diferentes que podem ser utilizadas para o controle da máquina de estado Porem seja qual for a linguagem utilizada o segredo está no levantamento de prérequisitos e organização do código Exemplo de máquina de estado em ladder Para o exemplo a seguir deve ser criado as seguintes variáveis P á g i n a 42 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 A variável iMQNST índice da máquina de estado é comparada linha a linha com valores de estado no exemplo são 5 estados Etapa 0 1 2 3 e 4 Na etapa 0 ao pressionar o botão ligar dado pela variável BotaoLigar o Led1 é aceso e a condição para passar para a próxima etapa é se o botão não estiver pressionado e o Led1 estiver ligado Isto consecutivamente para os seguintes leds até a etapa 3 Na etapa 4 os leds serão apagados e a condição para a próxima etapa é todos os leds apagados como não existe próxima etapa o ciclo de máquina deve ser reiniciado indo para a etapa 0 No exemplo ladder o bloco move é utilizado para manipular a variável que indica o estágio seguinte ou anterior Etapa 0 Etapa 1 Etapa 2 Etapa 3 Etapa 4 P á g i n a 43 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Após criar as variáveis e o código a cima crie o seguinte Visualisation OBS O Textfield deve ser configurado para receber inteiro e a variável de entrada é iMQNST Os Leds devem ser configurados com as respectivas variáveis O botão ligar deve ser configurada a função Tap com a variável BotaoLigar Note que ao clicar no botão o lede respectivo ao estágio acende porem não passa para o próximo estágio enquanto o mesmo não é solto P á g i n a 44 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Exemplo de máquina de estado em ST Em ST é muito comum utilizar o comando CASE para montar uma máquina de estado e dentro de cada condição fazer as avaliações e condicionar a passagem para o próximo estágio O case executa o trecho de código de que estiver dentro do índice desejado qual é dado pela variável iMQNST P á g i n a 45 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Sequential Funtion Chart SFC SFC é uma linguagem da de programação visual muito semelhante ao fluxograma levantado no início do projeto o seu objetivo é exatamente este ser idêntico ao fluxograma contendo passagens de estagio condicionada sendo possível criar de forma rápida e visual a máquina de estado do processo programando dentro dos blocos dos estágios funções a serem executadas naquele ponto Exemplo de máquina de estado com CFC Adicione uma nova POU configurando como program e linguagem se programação Sequential Funcion Chart SFC Obs Não esqueça de adicionar este novo Prog nas tasks a serem executadas O programa criado deve se parecer com a imagem abaixo note que tem uma etapa uma condição de passagem e uma seta de retorno Para reproduzir o mesmo exemplo anterior clique com o botão direito na transição e clique em Insert steptransition after P á g i n a 46 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Repita este procedimento até atingir cinco estágios e cinco transições como a imagem a baixo e renomeie as etapas Na parte superior onde se declara as variáveis declare as mesmas variáveis que os exemplos em Ladder e ST com exceção da variável iMQNST pois o controle da máquina de estado agora é feito no próprio modo de programação com as transições P á g i n a 47 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Nas transições deve ser colocada a condição para executar a próxima etapa a etapa anterior não para de ser executada enquanto esta condição não for satisfeita e a seta de retorno deve ser configurada para que no final do ciclo volte para Etapa0 Cada etapa pode ser programada em sua linguagem de preferência de acordo com a necessidade do desenvolvedor até mesmo ter uma outra máquina de estados em SFC para cada etapa Para criar o código que vai ser executado em cada etapa as chamadas Actions ou ações de um duplo clique na etapa desejada e de Ok Na tela seguinte é possível escolher o nome da sua Action e a linguagem de programação da mesma P á g i n a 48 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Para fazer a Action em ST use o seguinte código Para fazer a em Ladder use o seguinte código ATENÇÃO A variáveis LigarLedX podem variar de acordo com a etapa Para o Visualisation o TextFild não será mais necessário uma vez que a variável iMQNST não vai mais existir P á g i n a 49 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Estruturas Folder As pastas ou Folder em inglês servem para organizar e separar partes do código em projetos com uma extensão considerável é prudente organizar o código em etapas e funções do equipamento ou linha de montagem Exemplo Observe a linha de montagem abaixo Note que nesta linha de montagem existem 5 postos de trabalho cada posto de trabalho possui suas funções distintas e independentes É comum mais de um desenvolvedor trabalhar no mesmo projeto muitas vezes dividindo os postos de trabalho entre eles para uma melhor comunicação e desenvolvimento do projeto Porem além dos postos de trabalho existem as funções de cada posto e que podem ser chamadas em momentos diferentes então se torna necessário separar os objetos de programação por posto de trabalho Para criar uma pasta basta clicar com o botão direito no nível de arvore que deseja que a pasta fique abaixo e clique em Add Folder P á g i n a 50 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Agora basta clicar nos arquivos que deseja e arrastar mantendo o botão do mouse para dentro da pasta Enumerations Nas maquinas de estado é comum a comparação de um valor inteiro de estado atual com outro valor de possíveis estados esta técnica necessita de um mapeamento de números e operações de forma documental Com as Enuns isto se torna mais fácil pois podemos criar as estruturas de máquina de estado e atribuir nomes para valores por exemplo o número 1 se chama INICIO o 2 se chama MEIO e o 3 se chama FIM Assim se torna mais fácil ler interpretar e depurar o código quando necessário Apesar do desenvolvedor conhecer muito bem os estados criados ao mudar o programador de projeto ou o mesmo ficar tempo sem acessar o código pode acabar esquecendo alguns detalhes que nomes sugestivos para valores da enun são muito uteis P á g i n a 51 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Exemplo Clique com o botão direito em Application vá até o item Add Object e clique em DUT Na janela a seguir de o nome para a sua ENUN e selecione o item Enumeration Ao clicar em Add deve abrir a janela de programação da enun caso isto não ocorra de um duplo clique nela na aba esquerda Com a janela de edição da enum aberta digite o seguinte código P á g i n a 52 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 No código em ST declare as seguintes variáveis Após declarar as variáveis digite o seguinte código Compilando e depurando o código note que logo em frente ao ESTADO1 e dos outros vai aparecer a letra C dentro de um círculo verde isto indica que o valor atribuído naquela variável é constante dado pela ENUN P á g i n a 53 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Estructure As structure são muito uteis quando é necessário repetir uma serie de dados que compõe uma estrutura por exemplo Aluno Nome RA NOTA M1 NOTA M2 Media Em uma estrutura convencional teríamos que criar uma variável para cada item de cada aluno isto poluiria muito o código fora o tempo de desenvolvimento Já criando uma structure é como se criássemos um tipo de variável sendo assim podemos criar apenas os alunos do tipo aluno Exemplo Clique com o botão direito em Application vá até o item Add Object e clique em DUT P á g i n a 54 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Na janela a seguir de o nome para a sua structure e selecione o item structure Dentro do código da structure digite o seguinte texto P á g i n a 55 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Em seguida escreva e depure o seguinte código Com o código online note que as variáveis Aluno1 Aluno2 e Alnuno3 declaradas possuem um na esquerda ao clicar nele podemos expandir e ver o valor atribuído no código para cada variável daquela estrutura P á g i n a 56 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Function Quando um trecho de código é constantemente utilizado como cálculo de algum parâmetro ou acesso a dados externos convém criar uma função que execute este código apenas passando os parâmetros de entrada assim facilita a escrita do código e agiliza o desenvolvimento Exemplo O triângulo possui perímetro soma das medidas dos lados e área No caso dos triângulos a área é medida através da metade do produto da base pela altura de acordo com a fórmula com b medida da base e h medida da altura Nosso trabalho enfatizará a área de um triângulo equilátero Observe o triângulo de vértices A B e C com lados medindo a e altura h Clique com o botão direito em Application vá até o a aba add object e clique em POU P á g i n a 57 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 De o nome para a função de GetAreaTriangulo os nomes de funções costumam ser sugestivos sento um prefixo de função e o restante auto descritivo assim outro programador identifica que esta função ira retornar a área do triangulo Selecione como Function e o return type REAL Selecione a linguagem de programação em Structured Text clique em Add P á g i n a 58 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Na área de declaração de variáveis declare as seguintes variáveis de entrada VARINPUT rBase do tipo real e rAltura do tipo real Em seguida na área de código atribua o resultado da função com a equação da área do triangulo Em PLCPROG declare rBaseAux do tipo real rAlturaAux do tipo real rAreaAux do tipo real Em seguida atribua na variável rAreaAux a chamada da função passando os parâmetros Copile o código e teste altere os valores de base e altura e veja que a função calcula e devolve na variável referente área P á g i n a 59 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Agora crie mais uma variável chamada blnCalcular e condicione a execução da função com o blnCalcular Execute o código e note que o valor de rAreaAux apenas é atualizado ao executar a função P á g i n a 60 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Function Block Assim como a Function a Function Block também é utilizada quando um trecho de código é constantemente utilizado porem com a diferença que ela funciona em blocos ou seja de forma semelhante a um timer ou contador Imagina a situação em que é necessário calcular a área de vários triângulos a function block diferente da function pode ser executada ao mesmo tempo com diversos resultados diferentes Exemplo De o nome para a função de GetAreaTriangulo os nomes de funções costumam ser sugestivos sento um prefixo de função e o restante auto descritivo assim outro programador identifica que esta função ira retornar a área do triangulo Selecione como Function block Selecione a linguagem de programação em Structured Text clique em Add P á g i n a 61 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Declare na área de variáveis de entrada as variáveis rAltura e rBase ambas do tipo real e na área de variáveis de saída declare a variável rArea do tipo real E no código atribua a variável de área com a equação da área do triangulo No PLCPROG declare 3 variaveis chamadas TrianguloA TrianguloB e TrianguloC do tipo GetAreaTriangulo Em seguida reproduza o código da imagem Note que é necessário apenas chamar a função para ela ser executada e a variável pode ser atribuída diretamente como se fosse uma Structure P á g i n a 62 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Exercícios Controle de pigmentos Objetivo do controle Existem pigmentos de 3 cores ao controlar diferentes interruptores os operadores podem encher as latas com pigmentos correspondentes Dispositivos X0 Interruptor de início de enchimento X1 Interruptor de controle amarelo X2 Interruptor de controle azul X3 Interruptor de controle verde mistura de amarelo e azul Y0 Válvula de controle amarela Y1 Válvula de controle azul Descrição do Programa O interruptor principal do controle de enchimento precisa ser ligado X0 ON antes do início do enchimento Quando amarelo e azul são preenchidos ao mesmo tempo ele fica verde Quando o interruptor de preenchimento de pigmento amarelo estiver ligado X1 LIGADO o Y0 ON e o sistema começa a preencher a cor amarela Quando o interruptor de preenchimento de pigmento azul estiver ligado X2 LIGADO o Y1 ON e o sistema começa a preencher a cor azul Quando o interruptor de preenchimento de pigmento verde está ligado X3 ON o Y0 ON e o Y1 ON as instruções serão executadas e o sistema começará a preencher a cor verde P á g i n a 63 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Controle de partida com tensão reduzida EstrelaTriangulo Objetivo do controle Como o próprio nome já diz este sistema realizará uma partida do motor trifásico em um fechamento estrela e após alguns segundos quando o motor já partiu o sistema irá migrar para o fechamento triângulo vale lembrar que o intuito desta e de qualquer uma das partidas indiretas é reduzir a corrente elétrica no instante da partida arranque do motor elétrico trifásico Dispositivos X0 ON quando START é pressionado X1 ON quando STOP é pressionado Temporizador T1 de 10 segundos T2 Temporizador de 1 segundo Y0 Contator de partida do motor KM0 Y1 Contator Estrela KM1 Y2 Conector Triangulo KM2 P á g i n a 64 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Descrição do Programa X0 ON quando START é pressionado Y0 estará LIGADO e travado O contator de partida do motor KM0 estará LIGADO e o temporizador T0 começará a contar por 10 segundos Ao mesmo tempo porque Y0 LIGADO T0 DESLIGADO e Y2 DESLIGADO Y1 estará LIGADO O contator KM1 será ativado Quando o temporizador T0 atingir o valor definido T0 estará LIGADO e Y1 estará DESLIGADO O temporizador T1 começará a conte por 1 s Após 1 segundo T1 ON e Y2 ON o contator KM2 será ativado X1 ON quando STOP é pressionado Y0 Y1 e Y2 estarão desligados e o motor parará de funcionar não importa se está no modo inicial ou no modo de execução
Envie sua pergunta para a IA e receba a resposta na hora
Texto de pré-visualização
Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 AUTOMAÇÃO INDUSTRIAL INICIAÇÃO AO CODESYS Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Sumário Criar um novo projeto 7 Habilitar simulação 8 Primeiro Programa 9 Criar Visualization 10 Criar objetos 11 Compilar o programa 14 Ficar online 16 Forçar entrada 17 Testando o Visualization 17 Criando um novo PRG em ladder 19 Adicionando Tasks 20 Criando o código em Ladder 20 Exemplos de lógica booleana 23 Logica AND em ST 23 Logica AND em Ladder 23 Logica OR em Ladder 24 Logica NOT em ST 24 Logica NOT em Ladder 24 Tecnica de auto retenção 25 Exemplo em ST 25 Exemplo em Ladder 26 Operações matemáticas 27 Variáveis numéricas 27 Números inteiros 27 Números reais 27 Visualization 27 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Adicionando um Textfild 27 Formato do texto 28 Variável 28 Exemplos 30 Mover 30 ST 30 Ladder 30 Soma 30 ST 30 Ladder 31 Subtração 31 ST 31 Ladder 31 Multiplicação 31 ST 31 Ladder 31 Divisão 32 ST 32 Ladder 32 Modulo 32 ST 32 Ladder 32 Exponencial 32 ST 32 Ladder 32 Igual 33 ST 33 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Ladder 33 Maior 33 ST 33 Ladder 33 Menor 34 ST 34 Ladder 34 Diferente 34 ST 34 Ladder 34 Timers 35 TON 35 Ladder 35 ST 36 TOF 36 Ladder 36 ST 37 Conversor de tipo 38 Exemplo 38 Visualization 39 Outros tipos 39 Condicionar operação 40 Exemplo em Ladder 40 Exemplo em ST 40 Princípio de máquina de estado 41 Exemplo de máquina de estado em ladder 41 Exemplo de máquina de estado em ST 44 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Sequential Funtion Chart SFC 45 Exemplo de máquina de estado com CFC 45 Estruturas 49 Folder 49 Exemplo 49 Enumerations 50 Exemplo 51 Estructure 53 Exemplo 53 Function 56 Exemplo 56 Function Block 60 Exemplo 60 Exercícios 62 Controle de pigmentos 62 Objetivo do controle 62 Dispositivos 62 Descrição do Programa 62 Controle de partida com tensão reduzida EstrelaTriangulo 63 Objetivo do controle 63 Dispositivos 63 Descrição do Programa 64 P á g i n a 7 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Criar um novo projeto Após abrir o software CODESYS no canto superior direito clique em File em seguida clique em New Project Selecione o tipo de projeto a ser criado será utilizado Standard Project em Name de um título ao projeto e em Location selecione a pasta que deseja salvalo P á g i n a 8 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Ao clicar em Ok o software irá solicitar o Device a ser trabalhado e a linguagem de programação do primeiro programa a ser gerado isto pode ser alterado com o desenvolver do projeto Para o primeiro exemplo será utilizado o control win V3 x64 e linguagem ST conforme as figuras abaixo Habilitar simulação O device selecionado permite habilitar o modo de simulação ou seja não será necessário ter um hardware físico como controlador Clicando com o botão direito em Device CODESYS Control Win V3 x64 irá abrir uma lista de ações possíveis nesta lista devese dar um click com o botão direito em Simulation P á g i n a 9 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Deve ser observado que na parte inferior da janela irá aparecer a palavra SIMULATION com fundo vermelho isto indica que o software será simulado pelo CODESYS Primeiro Programa Com um duplo clique em PLCPRG PRG irá abrir uma janela dividida em duas partes a parte superior é destinada para a declaração de variáveis locais de entrada ou saída Para o primeiro exemplo será criado duas variáveis uma representando uma entrada física um botão sensor ou bit de entrada e outro dando um sinal de saída binaria Na parte destinada a linhas de código deve ser escrita a seguinte linha OUT1 IN1 P á g i n a 10 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Esta linha está igualando a variável de saída OUT1 a variável de entrada IN1 na linguagem ST isto é feito com o comando qual pega o conteúdo da direita e transfere para a esquerda Criar Visualization O visualization é uma excelente ferramenta para testar e criar supervisórios o mesmo permite acesso via web e possibilita uma simulação de entradas e saídas do código Clicando com o botão direito em Application deve seguir com o mouse até Add Object expandindo as opções e clicando em Visualization P á g i n a 11 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Ira abrir uma janela onde é possível dar um nome a sua página nesta mesma tela será necessário selecionar a opção Active Criar objetos Na arvore de projeto localizada na esquerda do CODESYS é possível ver o item com o nome que foi dado a página do visualization Com um duplo clique neste item será possível abrir a tela de edição nesta tela no canto inferior direito fica localizado a aba ToolBox nele é possível escolher um objeto para adicionar ao projeto P á g i n a 12 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Na aba LampsSwitchesBitmaps da janela ToolBox devese clicar no item e arrastar para a localização desejada isto deve ser feito para os itens Lamp e PushSwitch Com um duplo clique no item a janela Properties será abera em seu topo a caixa de seleção Advanced deve ser selecionada assim o desenvolvedor terá acesso as configurações mais avançadas do objeto No item Position deve se dar um duplo clique no campo Value da propriedade Variable com isto ira aparecer um botão no final do campo com três pontos Clicando neste botão será aberta a janela se seleção da variável quer o seu objeto ira ler ou escrever esporadicamente ambas as funções Para expandindo a aba Aplication e a PLCPRG deve clicar no botão com o símbolo localizado a esquerda dos itens P á g i n a 13 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Após os itens serem expandidos as variáveis do PLPRG estão organizadas em arvore logo abaixo do item para o PushSwitch deve ser selecionada a vaiável IN1 pois o botão é uma entrada de sinal para o controlador Para a Lamp deve ser selecionada a vaiável OUT1 pois a lamp é uma saída de sinal do controlador O botão utilizado acima é uma chave de retenção para comandos de pulso deve ser usado o objeto Button na aba Common controls P á g i n a 14 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Esse objeto requer mais detalhes para ser configurado Primeiro deve configurar a variável de estado do botão isto é possível na seção Button state variable no item Digital Variable Após isto devemos criar um evento neste botão na seção Inptconfiguration expanda a seção Tap e indique a variável no item variable Compilar o programa A compilação do programa é essencial para a verificação de falhas de sintaxe da programação isto é feito através do botão Build localizado na aba de ferramentas superior do CODESYS ou apertando a tecla F11 do teclado Após compilar é preciso observar a parte inferior do CODESYS nela existe um campo chamado Last build qual mostra a quantidade de erros e warnings que possuem no código e Precompile qual mostra objetivamente se a compilação é válida ou não Caso o código esteja com erro no canto inferior esquerdo é possível abrir a aba de mensagens onde é informado a possível origem e causa do erro isto pode não ser exato mas costuma ser bem próximo ao erro por isto o desenvolvedor deve ter atenção e reler o código etapa por etapa P á g i n a 15 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Com um duplo clique em cima do erro o próprio CODESYS leva o cursor a página e linha qual está identificando o bug Para testar o recurso de localização de erro na linha de código remova o ponto e vírgula conforme a imagem abaixo e aperte F11 Clique no X logo acima da declaração de variáveis para fechar a página do código aberto Va até a aba Messages e de um duplo clique no erro note que a página do código é aberta novamente isto indica que a falha esta nela e o cursor ira piscar na linha sugerida P á g i n a 16 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Ficar online Apertando as teclas Alt e F8 do teclado ou clicando em Login é possível passar o software para o controlador e fica online no mesmo Esta função é extremamente útil para depurar o código pois além das falhas de sintaxe do código podem existir com frequência falhas de logica com esta função é possível visualizar o que o código está executando e ver exatamente o trecho com falha de logica Após clicar em Login o CODESYS irá alertar que a aplicação anterior que está rodando no controlador ira ser substituída por esta clique em Yes Eventualmente o processo de LoginCompilação ira necessitar parar a aplicação que está rodando no controlador para poder continuar isto ocorre quando é alterado mapas de variáveis e algumas vezes ao alterar variáveis muito utilizadas no código Pode se observar isto na barra inferior do software lá ira ter a informação STOP ou RUM em destaque por vermelho ou verde respectivamente Para dar RUN na aplicação que está no dispositivo clique no ícone de Play na barra superior do CODESYS Agora note que o status mudou para RUN P á g i n a 17 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Forçar entrada Quando se está online no equipamento é possível forçar valores e estados das variáveis desde que as mesmas não provenham de uma entrada em execução Isto auxilia nos testes de logica e passagem do código podendo assim forçar situações no código e analisar tratamentos Com o código online de um duplo clique onde está escrito FALSE na variável IN1 na linha de código isto ira preparar o valor para TRUE O valor também pode ser preparado na tabela de variáveis em Prepared value Após preparar o valor desejado aperte combinadamente as teclar Ctrl e F7 isto faz com que o valor preparado seja transferido para a variável a ser forçada Testando o Visualization Com o software online de um duplo clique em Visualization ou no nome que você deu a sua página A tela que foi criada vai estar em execução e ao clicar no botão note que a lâmpada ira acender e ao clicar de novo ira apagar P á g i n a 18 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 O botão utilizado é auto retentivo ou seja ele irá manter o estado que for colocado P á g i n a 19 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Criando um novo PRG em ladder Um PRG é o nível mais baixo de execução do software isto faz com que seja necessário chamalo através de uma Task esta task pode ser por interrupção cíclica ou chamada por eventos Apesar ser possível chamar vários PRGs em uma task não é aconselhável criar muitas pois o tempo de varredura ira se dividir entre elas diminuindo o processamento do controlador Ou seja se cada PRG demorar 200ms ao fim da execução de dois PRGs se passaram 400ms isto pode atrapalhar leituras de sinais Para adicionar um novo PRG clique com o botão esquerdo do mouse em Aplication expandir o item Add Object e clicar em POU Ira abrir uma janela onde é possível escolher o nome e a estrutura Program ou Funcion Block o Funcion por hora é escolhido Program PRG e no final do diálogo é possível escolher a linguagem de implementação a linguagem ladder deve ser escolhida P á g i n a 20 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Adicionando Tasks Para que este novo PRG seja executado deve ser adicionado nas tasks para fazer isto e dado um duplo clique em MainTask Ira abrir a tela de configuração da task nela é possível mudar o tipo prioridade e intervalo de execução No centro esquerdo desta tela existe um botão com símbolo de escrito Add Call devese clicar nele e selecionar a PRG criada Criando o código em Ladder Em ladder as linhas de código se chamam Network é necessário a inserção das mesmas manualmente Será reproduzido o mesmo exemplo anterior então deve ser declarada as mesmas variáveis P á g i n a 21 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Para começar a inserir comandos em ladder basta clicar com o botão direito na Network e selecionar o que deseja adicionar a princípio adicione um contato em Insert Contact Após inserir um contato é preciso inserir um coil ou saída Note que há pontos de exclamação em cima dos elementos adicionados isto quer dizer que nenhuma variável foi ligada ao código Para ligar basta clicar nos pontos de interrogação e digitar ou selecionar na lista de variáveis P á g i n a 22 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 É possível utilizar o mesmo visualization do exemplo anterior para testar este código basta copiar e colar os elementos e editar o caminho da propriedade variável P á g i n a 23 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Exemplos de lógica booleana O principal meio de controle de processo em uma automação são os sinais discretos por terem custo baixo de implantação e manutenção e estes sinais são facilmente tratados e manipulados utilizando lógica booleana Para isto se utiliza o Vizualization criado nos exemplos piloto Ladder e ST para executar e testar os exemplos a seguir apenas sendo necessário adicionar mais um PushSwitch em cada linguagem Também será necessário declarar mais uma entrada em ambos os PRGs Logica AND em ST Logica AND em Ladder Logica OR em ST P á g i n a 24 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Logica OR em Ladder Logica NOT em ST Logica NOT em Ladder P á g i n a 25 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Tecnica de auto retenção Na indústria é muito comum comando duplo para acionamento de cargas o chamado selo eletricamente é a auto realimentação da bobina de uma contatora ou de um relé sendo desligada por um contato normalmente fechado que ao ser acionado corta a alimentação deste atuador É possível reproduzir esta técnica via software quando conveniente Fazendo analogia ao esquema elétrico acima temos S0 IN2 S1 IN1 K1 OUT1 Observação A execução deste exemplo é necessário utilizar um Button da aba Common controls com a função Tap Exemplo em ST A linguagem ST se assemelha muito a linguagens de programação de computadores o C em especial esta nova demanda exige códigos mais simples P á g i n a 26 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 e limpos algo muito difícil de se fazer em uma linguagem de blocos cuja a interpretação é dada a partir de diferentes diagramas e simbologias Exemplo em Ladder Note que em ladder o comando elétrico equivalente é idêntico o que muda é a posição de interpretação Isto se deve por conta que a linguagem Ladder foi feita para eletricistas programarem uma vez que comandos elétricos é algo trivial para eles Outro fator que contribuiu para a analogia ao esquema elétrico é que historicamente na evolução da automação viemos de comandos elétricos para logicas com reles reles programáveis e só depois os controladores lógicos herdando assim muitas características de suas técnicas antecessoras P á g i n a 27 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Operações matemáticas Variáveis numéricas A declaração de variáveis numéricas se dá de forma idêntica a uma booleana tendo apenas o cuidado adicional de observar o tipo e tamanho da mesma podendo variar de números inteiros e reais Para o exemplo declare 3 variáveis da seguinte forma Iremos utilizar números reais porem o tratamento para outros tipos não há diferencia Números inteiros Números reais Visualization Adicionando um Textfild Dentro do visualization na ToolBox vá na aba Common Controls e arraste para o local desejado duas Textfilds P á g i n a 28 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Formato do texto Dentro das propriedades dos Textsfilds na seção Texts na propriedade Text é possível inserir um texto a ser exibido ou formato de exibição de uma variável Vamos alterar o formato de exibição para um número com virgula sendo exibido três casas antes e duas depois da virgula Variável O Textfild pode ser configurado para entrada e exibição de um valor ou apenas exibição de um O Texfild superior vamos configurar a variável de entrada e saída Para configurar a variável de saída o que será exibido no textfild na seção Text variables linque a variavem de entrada do programa de forma idêntica a um botão Para adicionar a variável de entrada ou escrita do textfild é necessário criar um evento na seção Inputconfiguration no item OnMouseUp só irá ocorrer o evento quando soltar o clique do mouse em cima da caixa de texto de um duplo clique P á g i n a 29 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Na janela que abriu de um duplo clique em Write a Variable No campo Input type selecione VisuDialogsNumpad isto fara abrir um teclado numérico Mantenha a configuração Use text output variable isto faz ele reaproveitar a variável de saída como entrada Repita este procedimento para as duas entradas IN1 e IN2 e adicione Label identificando os itens P á g i n a 30 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Exemplos Mover Mover um valor de uma variável para outra é uma forma de armazenar o estado de uma entrada ou valor naquele momento para ser reaproveitado em outro momento para comparação ou atribuição ST Em ST o processo e bem simples basta igualar a variável de saída com a variável de entrada Ladder Na direita fica localizado a ToolBox da programação Ladder nela expanda a seção Other Operator e arraste o item MOVE até a Network Note que irá aparecer destacado em cinza a escrita Start here o bloco deve ser soltado em cima do campo cinza Note que será adicionado um contato aberto e um bloco escrito MOVE no contato digite TRUE isto fara com que ele seja sempre verdadeiro e no bloco digite a entrada e a saída Soma Este exemplo irá somar o número IN1 com o IN2 ST P á g i n a 31 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Ladder Subtração Este exemplo irá subtrair o número IN2 do IN1 ST Ladder Multiplicação Este exemplo irá muliplicar o número IN1 pelo IN2 ST Ladder P á g i n a 32 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Divisão Este exemplo irá dividir o número IN1 pelo IN2 ST Ladder Modulo Este extrair o modulo do número IN1 ST Ladder Exponencial Este exemplo irá elevar o número IN1 pelo IN2 ST Ladder P á g i n a 33 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Igual Este exemplo irá comparar se IN1 e IN2 e mover 1 para a OUT1 se for verdadeiro caso seja falso ira mover 0 ST Ladder Maior Este exemplo irá comparar se IN1 e IN2 e mover 1 para a OUT1 se for verdadeiro caso seja falso ira mover 0 ST Ladder P á g i n a 34 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Menor Este exemplo irá comparar se IN1 e IN2 e mover 1 para a OUT1 se for verdadeiro caso seja falso ira mover 0 ST Ladder Diferente Este exemplo irá comparar se IN1 e IN2 e mover 1 para a OUT1 se for verdadeiro caso seja falso ira mover 0 ST Ladder P á g i n a 35 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Timers Temporizadores são muito importantes na automação industrial seja para causar um retardo em um sinal ou prolongar sua atuação identificar falhar por timer out condicionar passagens entre outras funções que dependam de uma contagem de tempo Basicamente existem dois tipos de times TON e TOF ambos são compostos por Entrada IN Saída Q Tempo corrente ET Tempo de referência PT TON O funcionamento do timer TON consiste em iniciar uma contagem de tempo a partir do momento que uma entrada IN seja verdadeira o tempo será contado até atingir o tempo de referência neste momento a saída Q será ativada assim como demonstra o gráfico abaixo Ladder Para executar o exemplo é preciso declarar as seguintes variáveis P á g i n a 36 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Em ToolBox no menu Function blocks adcione um bloco TON e reproduza o exemplo abaixo é necessário apagrar os três pontos de interrogação caso não use uma variável em ET ST Para executar o exemplo é preciso declarar as seguintes variáveis Reproduza o código a seguir TOF O funcionamento do timer TOF consiste em ativar sua saída Q assim que a entrada IN for falsa o tempo da duração deste retardo é ocasionado pelo tempo de referência como pode ser notado no gráfico abaixo Ladder Para executar o exemplo é preciso declarar as seguintes variáveis P á g i n a 37 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Em ToolBox no menu Function blocks adcione um bloco TON e reproduza o exemplo abaixo é necessário apagrar os três pontos de interrogação caso não use uma variável em ET ST Para executar o exemplo é preciso declarar as seguintes variáveis Reproduza o código a seguir P á g i n a 38 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Conversor de tipo As variáveis possuem um tipo especificado no momento da sua declaração porem o aproveitamento desta variável em outro lugar como uma nova entrada de dados pode haver incompatibilidade de tipo Isto ocorre por que não é possível atribuir um valor de tipo X para uma variável de tipo Y Por conta disto devemos converte este tipo para encaixar o mesmo dentro da variável Exemplo Note que tanto no exemplo em ladder quanto no exemplo em ST a soma de dois números Reais não se iguala a um inteiro Para contornar este problema podemos usar o comando REALTOINT P á g i n a 39 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Visualization Reproduza o seguinte vizualization para testar o código Note que valores após a virgula são arredondados após a soma isto ocorre por que o valor de saída é um inteiro Outros tipos Tendo em mente que eu quero transformar uma variável do tipo X em uma variável em tipo Y fazendo analogia com o exemplo anterior temos XTOY substituindo X e Y com os tipos desejados é possível encontrar o código necessário para tal conversão Em ladder o bloco se chama TOX ou seja ele identifica o tipo de entrada e você apenas escolhe o tipo de saída P á g i n a 40 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Condicionar operação O condicionamento de uma operação é importante para determinar a hora que ela deve ser executada isto é a base da técnica máquina de estados uma vez que você compara e toma decisões d o que deve ser executado de acordo ao estado Para isto declare mais uma variável booleana em seu PRG Em seu visualization crie um button e configure a função Tap para esta variável Exemplo em Ladder Exemplo em ST P á g i n a 41 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Princípio de máquina de estado A técnica máquina de estado é a mais utilizada para softwares de automação industrial pois grande parte do levantamento dos estágios de operação é feita em um levantamento comumente feito através do brainstorming outras técnicas de levantamento de prérequisitos também possibilitam o mesmo levantamento A máquina de estados consiste em armazenar variáveis anteriores relevantes para determinar o atual estágio de operação As etapas podem ser levantadas de forma de texto indentado ou por fluxogramas com auxílio do Visio Cada etapa ou estagio necessita de uma condição ou sinalização de termino assim o código pula para a próxima etapa pertinente não necessariamente na sequência Cada linguagem possui ferramentas diferentes que podem ser utilizadas para o controle da máquina de estado Porem seja qual for a linguagem utilizada o segredo está no levantamento de prérequisitos e organização do código Exemplo de máquina de estado em ladder Para o exemplo a seguir deve ser criado as seguintes variáveis P á g i n a 42 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 A variável iMQNST índice da máquina de estado é comparada linha a linha com valores de estado no exemplo são 5 estados Etapa 0 1 2 3 e 4 Na etapa 0 ao pressionar o botão ligar dado pela variável BotaoLigar o Led1 é aceso e a condição para passar para a próxima etapa é se o botão não estiver pressionado e o Led1 estiver ligado Isto consecutivamente para os seguintes leds até a etapa 3 Na etapa 4 os leds serão apagados e a condição para a próxima etapa é todos os leds apagados como não existe próxima etapa o ciclo de máquina deve ser reiniciado indo para a etapa 0 No exemplo ladder o bloco move é utilizado para manipular a variável que indica o estágio seguinte ou anterior Etapa 0 Etapa 1 Etapa 2 Etapa 3 Etapa 4 P á g i n a 43 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Após criar as variáveis e o código a cima crie o seguinte Visualisation OBS O Textfield deve ser configurado para receber inteiro e a variável de entrada é iMQNST Os Leds devem ser configurados com as respectivas variáveis O botão ligar deve ser configurada a função Tap com a variável BotaoLigar Note que ao clicar no botão o lede respectivo ao estágio acende porem não passa para o próximo estágio enquanto o mesmo não é solto P á g i n a 44 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Exemplo de máquina de estado em ST Em ST é muito comum utilizar o comando CASE para montar uma máquina de estado e dentro de cada condição fazer as avaliações e condicionar a passagem para o próximo estágio O case executa o trecho de código de que estiver dentro do índice desejado qual é dado pela variável iMQNST P á g i n a 45 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Sequential Funtion Chart SFC SFC é uma linguagem da de programação visual muito semelhante ao fluxograma levantado no início do projeto o seu objetivo é exatamente este ser idêntico ao fluxograma contendo passagens de estagio condicionada sendo possível criar de forma rápida e visual a máquina de estado do processo programando dentro dos blocos dos estágios funções a serem executadas naquele ponto Exemplo de máquina de estado com CFC Adicione uma nova POU configurando como program e linguagem se programação Sequential Funcion Chart SFC Obs Não esqueça de adicionar este novo Prog nas tasks a serem executadas O programa criado deve se parecer com a imagem abaixo note que tem uma etapa uma condição de passagem e uma seta de retorno Para reproduzir o mesmo exemplo anterior clique com o botão direito na transição e clique em Insert steptransition after P á g i n a 46 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Repita este procedimento até atingir cinco estágios e cinco transições como a imagem a baixo e renomeie as etapas Na parte superior onde se declara as variáveis declare as mesmas variáveis que os exemplos em Ladder e ST com exceção da variável iMQNST pois o controle da máquina de estado agora é feito no próprio modo de programação com as transições P á g i n a 47 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Nas transições deve ser colocada a condição para executar a próxima etapa a etapa anterior não para de ser executada enquanto esta condição não for satisfeita e a seta de retorno deve ser configurada para que no final do ciclo volte para Etapa0 Cada etapa pode ser programada em sua linguagem de preferência de acordo com a necessidade do desenvolvedor até mesmo ter uma outra máquina de estados em SFC para cada etapa Para criar o código que vai ser executado em cada etapa as chamadas Actions ou ações de um duplo clique na etapa desejada e de Ok Na tela seguinte é possível escolher o nome da sua Action e a linguagem de programação da mesma P á g i n a 48 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Para fazer a Action em ST use o seguinte código Para fazer a em Ladder use o seguinte código ATENÇÃO A variáveis LigarLedX podem variar de acordo com a etapa Para o Visualisation o TextFild não será mais necessário uma vez que a variável iMQNST não vai mais existir P á g i n a 49 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Estruturas Folder As pastas ou Folder em inglês servem para organizar e separar partes do código em projetos com uma extensão considerável é prudente organizar o código em etapas e funções do equipamento ou linha de montagem Exemplo Observe a linha de montagem abaixo Note que nesta linha de montagem existem 5 postos de trabalho cada posto de trabalho possui suas funções distintas e independentes É comum mais de um desenvolvedor trabalhar no mesmo projeto muitas vezes dividindo os postos de trabalho entre eles para uma melhor comunicação e desenvolvimento do projeto Porem além dos postos de trabalho existem as funções de cada posto e que podem ser chamadas em momentos diferentes então se torna necessário separar os objetos de programação por posto de trabalho Para criar uma pasta basta clicar com o botão direito no nível de arvore que deseja que a pasta fique abaixo e clique em Add Folder P á g i n a 50 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Agora basta clicar nos arquivos que deseja e arrastar mantendo o botão do mouse para dentro da pasta Enumerations Nas maquinas de estado é comum a comparação de um valor inteiro de estado atual com outro valor de possíveis estados esta técnica necessita de um mapeamento de números e operações de forma documental Com as Enuns isto se torna mais fácil pois podemos criar as estruturas de máquina de estado e atribuir nomes para valores por exemplo o número 1 se chama INICIO o 2 se chama MEIO e o 3 se chama FIM Assim se torna mais fácil ler interpretar e depurar o código quando necessário Apesar do desenvolvedor conhecer muito bem os estados criados ao mudar o programador de projeto ou o mesmo ficar tempo sem acessar o código pode acabar esquecendo alguns detalhes que nomes sugestivos para valores da enun são muito uteis P á g i n a 51 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Exemplo Clique com o botão direito em Application vá até o item Add Object e clique em DUT Na janela a seguir de o nome para a sua ENUN e selecione o item Enumeration Ao clicar em Add deve abrir a janela de programação da enun caso isto não ocorra de um duplo clique nela na aba esquerda Com a janela de edição da enum aberta digite o seguinte código P á g i n a 52 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 No código em ST declare as seguintes variáveis Após declarar as variáveis digite o seguinte código Compilando e depurando o código note que logo em frente ao ESTADO1 e dos outros vai aparecer a letra C dentro de um círculo verde isto indica que o valor atribuído naquela variável é constante dado pela ENUN P á g i n a 53 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Estructure As structure são muito uteis quando é necessário repetir uma serie de dados que compõe uma estrutura por exemplo Aluno Nome RA NOTA M1 NOTA M2 Media Em uma estrutura convencional teríamos que criar uma variável para cada item de cada aluno isto poluiria muito o código fora o tempo de desenvolvimento Já criando uma structure é como se criássemos um tipo de variável sendo assim podemos criar apenas os alunos do tipo aluno Exemplo Clique com o botão direito em Application vá até o item Add Object e clique em DUT P á g i n a 54 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Na janela a seguir de o nome para a sua structure e selecione o item structure Dentro do código da structure digite o seguinte texto P á g i n a 55 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Em seguida escreva e depure o seguinte código Com o código online note que as variáveis Aluno1 Aluno2 e Alnuno3 declaradas possuem um na esquerda ao clicar nele podemos expandir e ver o valor atribuído no código para cada variável daquela estrutura P á g i n a 56 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Function Quando um trecho de código é constantemente utilizado como cálculo de algum parâmetro ou acesso a dados externos convém criar uma função que execute este código apenas passando os parâmetros de entrada assim facilita a escrita do código e agiliza o desenvolvimento Exemplo O triângulo possui perímetro soma das medidas dos lados e área No caso dos triângulos a área é medida através da metade do produto da base pela altura de acordo com a fórmula com b medida da base e h medida da altura Nosso trabalho enfatizará a área de um triângulo equilátero Observe o triângulo de vértices A B e C com lados medindo a e altura h Clique com o botão direito em Application vá até o a aba add object e clique em POU P á g i n a 57 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 De o nome para a função de GetAreaTriangulo os nomes de funções costumam ser sugestivos sento um prefixo de função e o restante auto descritivo assim outro programador identifica que esta função ira retornar a área do triangulo Selecione como Function e o return type REAL Selecione a linguagem de programação em Structured Text clique em Add P á g i n a 58 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Na área de declaração de variáveis declare as seguintes variáveis de entrada VARINPUT rBase do tipo real e rAltura do tipo real Em seguida na área de código atribua o resultado da função com a equação da área do triangulo Em PLCPROG declare rBaseAux do tipo real rAlturaAux do tipo real rAreaAux do tipo real Em seguida atribua na variável rAreaAux a chamada da função passando os parâmetros Copile o código e teste altere os valores de base e altura e veja que a função calcula e devolve na variável referente área P á g i n a 59 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Agora crie mais uma variável chamada blnCalcular e condicione a execução da função com o blnCalcular Execute o código e note que o valor de rAreaAux apenas é atualizado ao executar a função P á g i n a 60 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Function Block Assim como a Function a Function Block também é utilizada quando um trecho de código é constantemente utilizado porem com a diferença que ela funciona em blocos ou seja de forma semelhante a um timer ou contador Imagina a situação em que é necessário calcular a área de vários triângulos a function block diferente da function pode ser executada ao mesmo tempo com diversos resultados diferentes Exemplo De o nome para a função de GetAreaTriangulo os nomes de funções costumam ser sugestivos sento um prefixo de função e o restante auto descritivo assim outro programador identifica que esta função ira retornar a área do triangulo Selecione como Function block Selecione a linguagem de programação em Structured Text clique em Add P á g i n a 61 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Declare na área de variáveis de entrada as variáveis rAltura e rBase ambas do tipo real e na área de variáveis de saída declare a variável rArea do tipo real E no código atribua a variável de área com a equação da área do triangulo No PLCPROG declare 3 variaveis chamadas TrianguloA TrianguloB e TrianguloC do tipo GetAreaTriangulo Em seguida reproduza o código da imagem Note que é necessário apenas chamar a função para ela ser executada e a variável pode ser atribuída diretamente como se fosse uma Structure P á g i n a 62 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Exercícios Controle de pigmentos Objetivo do controle Existem pigmentos de 3 cores ao controlar diferentes interruptores os operadores podem encher as latas com pigmentos correspondentes Dispositivos X0 Interruptor de início de enchimento X1 Interruptor de controle amarelo X2 Interruptor de controle azul X3 Interruptor de controle verde mistura de amarelo e azul Y0 Válvula de controle amarela Y1 Válvula de controle azul Descrição do Programa O interruptor principal do controle de enchimento precisa ser ligado X0 ON antes do início do enchimento Quando amarelo e azul são preenchidos ao mesmo tempo ele fica verde Quando o interruptor de preenchimento de pigmento amarelo estiver ligado X1 LIGADO o Y0 ON e o sistema começa a preencher a cor amarela Quando o interruptor de preenchimento de pigmento azul estiver ligado X2 LIGADO o Y1 ON e o sistema começa a preencher a cor azul Quando o interruptor de preenchimento de pigmento verde está ligado X3 ON o Y0 ON e o Y1 ON as instruções serão executadas e o sistema começará a preencher a cor verde P á g i n a 63 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Controle de partida com tensão reduzida EstrelaTriangulo Objetivo do controle Como o próprio nome já diz este sistema realizará uma partida do motor trifásico em um fechamento estrela e após alguns segundos quando o motor já partiu o sistema irá migrar para o fechamento triângulo vale lembrar que o intuito desta e de qualquer uma das partidas indiretas é reduzir a corrente elétrica no instante da partida arranque do motor elétrico trifásico Dispositivos X0 ON quando START é pressionado X1 ON quando STOP é pressionado Temporizador T1 de 10 segundos T2 Temporizador de 1 segundo Y0 Contator de partida do motor KM0 Y1 Contator Estrela KM1 Y2 Conector Triangulo KM2 P á g i n a 64 Marcos Alexandre Spalluto de Almeida almeidaenergytechgmailcom 15 99720 5052 Descrição do Programa X0 ON quando START é pressionado Y0 estará LIGADO e travado O contator de partida do motor KM0 estará LIGADO e o temporizador T0 começará a contar por 10 segundos Ao mesmo tempo porque Y0 LIGADO T0 DESLIGADO e Y2 DESLIGADO Y1 estará LIGADO O contator KM1 será ativado Quando o temporizador T0 atingir o valor definido T0 estará LIGADO e Y1 estará DESLIGADO O temporizador T1 começará a conte por 1 s Após 1 segundo T1 ON e Y2 ON o contator KM2 será ativado X1 ON quando STOP é pressionado Y0 Y1 e Y2 estarão desligados e o motor parará de funcionar não importa se está no modo inicial ou no modo de execução