·
Cursos Gerais ·
Outros
Envie sua pergunta para a IA e receba a resposta na hora
Texto de pré-visualização
CONTROLADORES LÓGICOS PROGRAMÁVEIS AULA 3 Profª Carla Eduarda Orlando de Moraes de Lara CONVERSA INICIAL Nesta etapa vamos discutir um assunto extremamente importante quando nos referimos aos controladores lógicos programáveis a sua programação Portanto durante nossos estudos vamos conhecer e analisar as cinco linguagens de programação de CLP padronizadas Antes de começarmos precisamos entender como e por que ocorreu essa padronização Após a criação do CLP ocorreu uma vasta aplicação desse dispositivo na automação industrial sendo assim seu mercado de desenvolvimento e fabricação estava muito aquecido Várias empresas começaram a fabricar modelos de CLP porém cada uma desenvolvia o dispositivo e não existia uma padronização o que gerava diversos modelos com diferentes formas de programálos e incompatibilidade entre os sistemas Além disso exigia que os usuários tivessem conhecimento de diferentes linguagens e informações sobre cada modelo Isso gerava diversos problemas como desperdício de recursos humanos em diferentes treinamentos para entender como utilizar e programar os modelos de CLP além de como já mencionado a existência de incompatibilidade entre os sistemas Nesse cenário foi percebida a necessidade de uma padronização desses dispositivos então a Comissão Eletromecânica Internacional do inglês International Electrotechnical Commission IEC reuniu uma forçatarefa para criar uma norma que padronizasse o CLP que é chamada de IEC 61131 e é destinada ao projeto completo do CLP definindo desde seu hardware até suas especificações e testes conforme pode ser visto no Quadro 1 a seguir Nesta etapa vamos discutir a respeito da terceira parte dessa norma que é dedicada à padronização das linguagens de programação Quadro 1 Norma IEC 61131 Parte Título Parte 1 Informações gerais Parte 2 Requisitos de equipamentos e testes Parte 3 Linguagens de programação Parte 4 Orientações ao usuário Parte 5 Comunicações Parte 6 Comunicação via fieldbus Parte 7 Programação de controle FUZZY Parte 8 Orientações para implementação das linguagens de programação 3 Fonte Elaborado por Lara 2022 com base em Silva 2016 Conforme apresentado e discutindo por Silva 2016 a parte 3 da norma IEC 61131 apresenta e define cinco linguagens de programação que visam cobrir uma variedade de aplicações sendo essas linguagens divididas entre gráficas e textuais Ainda segundo esse mesmo autor essa padronização culminou em vantagens como possibilidade de programação empregando a melhor linguagem para cada parte da planta conforme suas necessidades economia no tempo de processamento qualidade na programação sendo possível empregar todas as linguagens em uma mesma planta Entre as linguagens gráficas estão o diagrama de blocos funcionais o sequenciamento gráfico de funções e o diagrama ladder já entre as textuais se encontram o texto estruturado e a lista de instruções Cada linguagem tem características próprias e são indicadas para diferentes processos sendo assim em cada tópico desta etapa abordaremos uma dessas linguagens TEMA 1 TEXTO ESTRUTURADO A linguagem texto estruturado do inglês structured text ST é uma das duas linguagens textuais definidas pela norma IEC 611313 conforme já discutimos Podemos considerar que as instruções sobre o processo serão inseridas no programa de instruções por meio de statements que são palavras que apresentam significados de funções e subrotinas que alterarão variáveis do programa Outra característica dessa linguagem é que ela é lida de maneira simplificada com estruturas de laços de repetição contadores e lógicas condicionais como if then e for A linguagem ST teve origem nas linguagens de programação Pascal e C e como já mencionado ela possibilita a utilização de laços condicionais e de iterações transformandoa em uma boa opção quando se deseja implementar lógicas rápidas e personalizadas dentro de determinada aplicação Ainda essa linguagem é considerada a mais robusta entre as cinco padronizadas isso porque todo programa desenvolvido nas demais linguagens é convertido para ST por meio da compilação Isso ocorre porque a linguagem ST é muito próxima 4 a da linguagem de máquina portanto ela é facilmente compreendida pela unidade central de processamento do CLP Para compreendermos com mais detalhes essa linguagem nas próximas subseções vamos discutir seus elementos suas instruções além dos seus comandos 11 Elementos característicos do texto estruturado Cada linha do programa de instruções desenvolvido em ST trabalha com expressões formadas por operadores e operandos responsáveis por retornar valores quando executados Silva 2016 Quando falamos em elementos precisamos discutir a respeito de alguns itens como atribuição expressões operandos e operadores Quando desejarmos atribuir valores a uma variável empregamos o operador que pode ser usado tanto para atribuir um valor de uma variável a outra como o retorno de uma função Na Quadro 2 a seguir temos alguns exemplos de atribuições Quadro 2 Exemplos de atribuições em ST Atribuição Exemplo Atribuindo valor literal a uma variável X 25 Atribuindo valor de uma variável a outra variável XY Atribuindo valor de uma operação para uma variável YXKVZ Atribuindo valor de uma função para uma variável ZMODXY Fonte Lara 2022 Além da atribuição a linguagem ST trabalha com expressões as quais são formadas por operadores e operandos que retornam um valor ao serem executados Após a execução de uma expressão o valor atual de uma variável é substituído pelo resultado da avaliação da expressão Podemos definir uma expressão como uma especificação da variável do lado esquerdo seguida pelo operador de atribuição e pela expressão a ser validada Silva 2016 Outra observação importante é que as expressões devem trabalhar com variáveis do mesmo tipo em ambos os lados Um operando pode ser um endereço um valor literal uma variável ou ainda uma chamada de função ou bloco funcional Silva 2016 Seguindo a mesma regra que mencionamos anteriormente os tipos de dados dos operandos envolvidos em uma instrução devem ser sempre iguais 5 Já os operadores pedem um símbolo de operação aritmética uma operação lógica ou ainda uma função a ser executada Além disso os operadores são adaptáveis aos tipos de dados dos operandos bem como são executados seguindo a sequência de prioridade de execução 12 Instruções As instruções podem ser aplicadas em diferentes situações Nesta seção vamos discutir duas instruções sendo elas IFTHENENDIF IFTHENELSEENDIF A instrução IFTHENENDIF pode ser definida como a determinação para que uma instrução ou um grupo de instruções seja executado caso a expressão booleana que rege a condição estiver em nível lógico alto verdadeiro Caso a condição esteja em nível lógico baixo falso a instrução ou o grupo não será executado Nessa situação a instrução identifica o fim da condição sendo que a instrução ENDIF finaliza a instrução como um todo Outra possibilidade é a instrução IFTHENELSEENDIF na qual existe a instrução ELSE após a instrução Nesse caso a instrução IF é executada caso as expressões associadas às instruções anteriores forem verdadeiras ou caso sejam falsas a instrução não será executada Um exemplo de uso dessa instrução é dado na Figura 1 a seguir que consiste na implementação de uma partida direta por meio de um CLP Figura 1 Chave de partida direta com instrução ELSE Fonte Elaborada por Lara 2022 com base em Silva 2016 6 13 Comando condicional CASE Outra possibilidade de instrução é o comando condicional CASE que é destinado a expressões que envolvam dados do tipo INT além de lista de grupo de instruções Basicamente podemos descrever o seu funcionamento com a função CASE contendo ações a serem realizadas caso a condição seja atingida e em alguns casos sendo implementado uma função ELSE dentro dessa instrução para executar ações caso a expressão do CASE não seja atendida Na Figura 2 a seguir ilustramos a estrutura do comando condicional CASE Figura 2 Comando condicional CASE Fonte Elaborada por Lara 2022 com base em Silva 2016 14 Comando de repetição Quando falamos em comandos de repetição estamos nos referindo a instruções que possibilitam implementar ações que serão executadas por uma determinada quantidade de vezes ou então enquanto alguma condição for atendida Seguindo esse conceito vamos discutir a respeito de dois comandos de repetição sendo eles FORDO e WHILEDOENDWHILE Quanto ao emprego do comando FORDO ele pode ser utilizado sempre que o número de ocorrência pode ser determinado Nesse caso uma sequência de instruções é executada até que o comando do valor final ENDFOR seja acionado O número de ocorrência depende do valor inicial valor final e da variável de controle sendo que todos devem ser do mesmo tipo A variável de controle sobre incrementos é de um valor inicial até o final sendo o padrão o incremento unitário porém é possível definir valores de incremento diferentes de 1 O laço é repetido até que a variável de controle assuma o valor final sendo um exemplo de uso desse comando dado na Figura 3 a seguir 7 Figura 3 Comando de repetição FORDO Fonte Elaborada por Lara 2022 com base em Silva 2016 Quando a sequência de instruções precisa ser executada repetidamente até que a sua expressão não seja mais verdadeira é preciso empregar o comando de repetição WHILEDOENDWHILE Portanto podemos definir o funcionamento desse comando como executar uma sequência de instruções enquanto for atendida determinada condição a partir do momento que não for mais atendida ocorre a instrução ENDWHILE que finaliza o laço de repetição Na Figura 4 a seguir apresentamos um exemplo de uso do comando WHILEDOENDWHILE Figura 4 Comando de repetição WHILEDOENDWHILE Fonte Elaborada por Lara 2022 com base em Silva 2016 TEMA 2 DIAGRAMA DE BLOCOS FUNCIONAIS A primeira linguagem de programação de CLP gráfica que estudaremos é o diagrama de blocos funcionais do inglês functional block diagram FBD Essa linguagem é semelhante à eletrônica digital por isso acaba sendo a preferida dos profissionais com experiência em eletrônica Outro fato interessante é que os blocos funcionais também existem e são utilizados dentro das demais linguagens de programação de CLP como a linguagem ladder Essa linguagem faz uso de diagramas de circuitos que representam blocos e são interconectados por linhas de fluxo de sinal formando assim o programa de instruções Ainda podemos definir um bloco como um elemento que apresenta entradas realiza um processamento específico e então realiza a alteração das saídas com o resultado obtido Silva 2016 Basicamente 8 podemos dividir os blocos em dois tipos sendo estes funções e blocos funcionais As funções executam suas ações e encerram a execução não sendo mantida nenhuma informação além do resultado da saída Além disso as funções podem ser provenientes do sistema como os temporizadores e contados ou então implementadas pelo usuário Já os blocos funcionais têm como característica permanência de dados sendo necessário especificálos e ainda podem conter diferentes ciclos de execução Conforme discutido por Silva 2016 o uso da linguagem FBD agrega diversos benefícios como simplificação da representação do programa facilidade na depuração do aplicativo e redução no número de códigos gerados Ademais as saídas de um bloco funcional podem ser conectadas às entradas de outros blocos funcionais sendo cada ligação responsável por indicar que determinado parâmetro de entrada de um bloco obtém o valor de um parâmetro específico da saída do bloco anterior Para desenvolver programas na linguagem FBD é necessário seguir algumas regras que são acesso externo apenas aos parâmetros de entrada e de saída do bloco execução do bloco em caso de este fazer parte de uma rede de blocos as instâncias de um bloco funcional podem ser empregadas na definição de outros blocos e programas as instâncias de um bloco funcional declarado como global são acessíveis em qualquer parte do recurso ou configuração Silva 2016 Nas seções a seguir vamos discutir os blocos funcionais padrões que existem nos CLPs e as funções elementares Além disso finalizaremos nosso tópico analisando um exemplo de programa de instruções desenvolvido na linguagem FBD 21 Bloco funcional padrão Quando falamos em bloco funcional padrão estamos nos referindo a elementos que os fabricantes de CLPs criam agrupando em bibliotecas que acompanham os softwares Esses blocos são básicos e destinados a programação de lógicas e algoritmos mais complexos Além desses blocos considerados padrões o usuário também poderá criar blocos funcionais que 9 serão armazenados em uma outra biblioteca Embora exista a possibilidade de criação de blocos é recomendado que sejam utilizados os blocos padrões da norma IEC 611313 para ter uma maior facilidade em caso de portabilidade Os primeiros blocos funcionais padronizados que vamos discutir são os blocos set e reset que também são chamados de blocos biestáveis que são utilizados como memórias SR e RS respectivamente Uma representação para o bloco set pode ser verificada na Figura 5 a seguir Nesse bloco a função set domina ou seja se os sinais de set e reset são ambos verdadeiros em suas entradas S1 e R a saída Q1 será verdadeira Ainda na Figura 5 podemos observar uma representação do bloco set por meio de blocos lógicos Figura 5 Representação para o bloco set Fonte Elaborada por Lara 2022 com base em Moraes 2015 Já para o bloco reset temos uma representação dada na Figura 6 a seguir Nesse bloco a função que domina é a reset ou seja se os sinais de set e reset são ambos verdadeiros em suas entradas S e R1 a saída Q1 será falsa Ainda na Figura 6 podemos observar uma representação do bloco reset por meio de blocos lógicos Figura 6 Representação para o bloco reset Fonte Elaborada por Lara 2022 com base em Moraes 2015 Ainda conforme estudamos em momento anterior existem os blocos de contagem e de temporização Nos blocos de contadores a saída será do tipo bit para contagem enquanto nos blocos temporizadores a saída será do tipo bit para tempo Como já discutimos anteriormente sobre os tipos de contadores e de temporizadores nesta etapa abordaremos apenas suas representações 10 dentro da linguagem FBD Sendo assim na Figura 7 a seguir trazemos as representações para os blocos contadores padrões e na Figura 8 as representações para os temporizadores padrões O bloco contador crescente CTU é apresentado na Figura 7 a e o contador decrescente é apresentado na Figura 7 b Além disso o bloco temporizador com atraso na ligação TON é apresentado na Figura 8 a e o bloco temporizador com atraso no desligamento TOF é apresentado na Figura 8 b Figura 7 Representação para os blocos contadores Fonte Elaborada por Lara 2022 com base em Silva 2016 Figura 8 Representação para os blocos temporizadores Fonte Elaborada por Lara 2022 com base em Silva 2016 22 Função elementar Conforme já discutimos as funções elementares não apresentam estados internos sendo assim os valores de entrada são os mesmos e o valor de saída também será o mesmo toda vez que a função for executada Graficamente uma função elementar é representada por um bloco com entradas e saídas sendo que as entradas serão sempre representadas à esquerda enquanto as saídas 11 sempre ficarão à direita do bloco Além disso o nome da função que também indicará seu tipo é apresentado no centro do bloco Ainda o número de execução será apresentado à direita do tipo de função As funções elementares mais comuns para os CLPs são as operações lógicas como as lógicas AND OR NOT e XOR que também estudamos em momento anterior As funções lógicas AND e NOR estão representadas a seguir na Figura 9 a e b respectivamente Já as funções lógicas OR e XOR são apresentadas na Figura 10 a e b respectivamente Figura 9 Representação para as funções AND e NOT Fonte Elaborada por Lara 2022 com base em Silva 2016 Figura 10 Representação para as funções OR e XOR Fonte Elaborada por Lara 2022 com base em Silva 2016 23 Exemplo de programa empregando FBD O exemplo de programa de instruções desenvolvido na linguagem FBD que estudaremos se trata da chave de partida direta de um motor elétrico empregado no acionamento de uma esteira O motor é ligado pelo botão B1 e desligado pelo botão B0 além de que o sistema conta com proteção térmica do relé térmico RT1 O sistema apresenta sinalização para o funcionamento do motor a lâmpada L1 indica que o motor está desligado e a lâmpada L2 indica motor ligado O motor é acionado pelo contator C1 O FBD para a chave de 12 partida direta pode ser observado na Figura 11 a seguir que ilustra a conexão dos blocos de funções para formar a lógica de acionamento Figura 11 FDB da chave de partida direta Fonte Elaborada por Lara 2022 com base em Silva 2016 TEMA 3 LISTA DE INSTRUÇÕES A outra linguagem textual definida pela norma IEC 611313 é a lista de instruções do inglês instruction list IL Essa linguagem faz uso de mnemônicas para a construção das instruções do programa que comandará os processos no CLP Além disso é considerada semelhante à linguagem de máquina portanto é muito eficiente Outra característica dessa linguagem é que ela é semelhante à linguagem Assembly Em razão das características já mencionadas essa linguagem é preferida por profissionais que tenham experiência com linguagens de programação A linguagem IL faz uso de instruções que são inseridas de modo a construir a sequência de operações do programa de instruções Cada instrução começa em uma linha do código e deve conter um operador com modificadores opcionais Silva 2016 Ainda é possível inserir um ou mais operando separados por vírgulas os quais serão empregados no uso de funções ou blocos de funções Cada linha deve conter uma estrutura formada por rótulo operador e modificador 13 operando e comentário nessa sequência sendo uma representação dessa configuração dada na Figura 12 a seguir Figura 12 Configuração de uma linha de instrução em IL Fonte Lara 2022 Entre as instruções mais comuns estão a load LD e a store ST responsáveis por carregar um operando para o acumulador e por armazenar o conteúdo do acumulador no local especificado pelo operando respectivamente As funções e os blocos de funções podem ser inseridos no código por meio da chamada desses elementos pelo nome conforme podemos observar no exemplo disposto na Figura 13 a seguir que ilustra um bloco temporizador sendo inserido no código Figura 13 Exemplo de chamada de bloco temporizador em IL Fonte Elaborada por Lara 2022 com base em Silva 2016 Retomando o conceito das mnemônicas utilizadas na linguagem IL estas representam os operadores que podem ter modificadores em alguns casos Os modificadores influenciarão na execução dos operadores por exemplo é possível tornar inverso um operador empregando o modificador N No Quadro 3 a seguir são apresentados os principais operadores relacionando estes com seus modificadores caso existam e seu significado 14 Tabela 3 Exemplos de mnemônicas empregadas na IL Operador Modificador Significado LD N Carrega operando no acumulador ST N Guarda o resultado no operando S Seta operando para 1 R Reseta operando para 0 AND N Lógica E OR N Lógica OU XOR N Lógica OU exclusivo NOT N Lógica negativa ADD Adição SUB Subtração MUL Multiplicação DIV Divisão MOD Módulo da divisão GT Maior que GE Maior que ou igual EQ Igual NE Diferente LE Menor que ou igual LT Menor que CAL C N Chamada de bloco funcional RET C N Retorno de função ou floco funcional Executa o último operador adiado Fonte Lara 2022 Ainda falando sobre os modificadores eles podem ser tipo N C e Caso seja N ele servirá para inverter o valor do operando ou negar um valor pode ser empregado por exemplo juntamente com os operadores AND e OR para gerar as funções lógicas NAND e NOR O modificador C tem como função dar uma condição portanto sempre que se desejar condicionar algum operador é preciso utilizálo Caso sejam combinados os modificadores C e N CN a instrução será executada somente se o valor do acumulador for um booleano falso Por fim o parêntese é empregado quando se deseja mover a avaliação do operando Silva 2016 Além de todos os conceitos que abordamos a respeito da linguagem IL temos que discutir a respeito da inserção de comentários no código que são fundamentais para futuras alterações dele principalmente se estas não forem realizadas pelo desenvolvedor inicial do código Para inserir comentário na linguagem IL é preciso começálos com a sequência de caracteres e finalizar com a sequência por exemplo comentários 15 31 Exemplo de programa em IL A fim de entendermos melhor a implementação de programas de instrução na linguagem IL vamos analisar um exemplo prático Nosso exemplo consiste em uma esteira comandada por um motor elétrico M1 que é ligado pela botoeira B1 e desligado pela botoeira B0 Além disso os circuitos contam com um relé térmico para proteção RT1 e a sinalização dada pelas lâmpadas L1 indicando motor desligado e L2 indicando motor ligado O acionamento de M1 fará com que a esteira seja movimentada portanto foi implementada uma chave de partida direta para acionar M1 o que é comum com motores de baixa potência Silva 2016 Os diagramas de força e de comando são apresentados na Figura 14 a seguir que representam as ligações realizadas por meio de comandos elétricos implementados com os componentes eletromecânicos Figura 14 Diagramas de força e comando da chave de partida direta Fonte Elaborada por Lara 2022 com base em Silva 2016 16 Caso o acionamento do motor seja implementado por meio de um CLP este poderá ser controlador por meio de um programa de instruções que é apresentado na linguagem IL por meio do código dado na Figura 15 a seguir Figura 15 Programa de instruções para chave de partida direta em IL Fonte Elaborada por Lara 2022 com base em Silva 2016 Como podemos observar o programa apresentado na Figura 15 anterior é equivalente aos circuitos de força e comando apresentados precedentemente Ainda como o código é comentado podemos verificar o que cada instrução realiza TEMA 4 SEQUENCIAMENTO GRÁFICO DE FUNÇÕES A segunda linguagem de programação de CLPs gráfica que estudaremos nesta etapa é o sequenciamento gráfico de funções do inglês sequential flow chart SFC que pode ser definida como um método gráfico estruturado para o desenvolvimento de programas de instruções para controle sequencial ou dependentes de tempo empregando uma sequência de etapas e transições Silva 2016 Outra informação importante a respeito da linguagem SFC é que ela teve como base as redes Petri e o Graphe Fountionnel de Command EtapeTransition Grafcet por isso também é comumente chamada de Grafcet Além disso é uma das linguagens de programação aceitas pela maioria dos CLPs Entre as características do SFC se configuram a facilidade de interpretação a modelagem do sequenciamento e a modelagem de funções Silva 2016 Conforme abordado por Moraes 2015 a linguagem SFC é formada por passos transições arcos ações qualificadas e expressões booleanas além de ser graficamente desenhada na vertical Cada passo caracteriza um estado particular do sistema descrito e é simbolizado por um retângulo Já a transição é 17 o elemento que existe entre os passos e está vinculada a uma condição que caso seja satisfeita avança de um passo para o próximo Quando analisamos o comportamento sequencial este tem como objetivos descrever o comportamento sequencial de um sistema apresentar linguagem de estruturação de ações de um programa segundo um modelo topdown descrever o comportamento de baixo nível de um processo sequencial representar um processo de comunicação de dados ser aplicado na estruturação de programas não importando a linguagem Silva 2016 Agora que já contextualizamos essa linguagem vamos abordar nas seções a seguir os detalhes dela como os elementos estruturais e as regras de evolução para o SFC além de um exemplo de programa de instrução desenvolvido nessa linguagem que é responsável pela implementação do controle de uma chave de partida direta ou seja o mesmo exemplo que estamos estudando nas demais linguagens abordadas nesta etapa 41 Elementos estruturais do SFC De acordo com o que já discutimos o SFC faz uso de elementos para criar a programa de controle sendo assim esses elementos são chamados de elementos estruturais Nesse cenário passaremos agora a analisar cada um deles de forma detalhada com a intenção de entender como se relacionam e formam os programas de controle No Quadro 4 a seguir abordamos as simbologias adotadas para os elementos estruturais 18 Tabela 4 Símbolos gráficos dos elementos do SFC Fonte Elaborada por Lara 2022 com base em Silva 2016 O passo representa um possível estado operacional do sistema contendo um nome e sendo representado por um retângulo Ainda quando um passo se encontra ativo ele é assinalado por meio de uma marca chamada de token Um passo se torna ativo quando a transição do passo anterior é satisfeita fazendo com que o programa avance para o passo atual Seguindo essa mesma lógica podemos dizer que esse mesmo passo será desativado quando a transição para o próximo passo for satisfeita Além disso a cada passo podem ser associados blocos de ações ou ainda nenhuma ação sendo nesse caso chamado de passo de espera Cada passo recebe um único nome e deve aparecer apenas uma vez no diagrama do SFC O passo inicial tem uma simbologia diferente conforme mostrado no Quadro 4 anterior A cada passo são designadas uma ou mais ações caso não seja um passo de passo de espera Essas ações são listadas em uma etiqueta retangular à direta do símbolo do passo além disso elas podem ser de diferentes tipos padronizados chamados de qualificadores de ações Os qualificadores de ações definidos pela norma IEC 611313 são apresentados no Quadro 5 a 19 seguir Os qualificadores influenciam a ordem em que as diferentes ações designadas em um mesmo passo serão executadas Tabela 5 Qualificadores de ações Qualificador Descrição N Ação simples SR Ação de setreset L Ação com tempo limitado D Ação de entrada retardada SD Ação de entrada com retardo prefixado P Ação pulsada DS Ação retardada e setada SL Ação setada com tempo limitado Fonte Lara 2022 A transição é representada graficamente pela barra que corta a ligação entre dois passos sucessivos conforme pode ser observado no Quadro 4 anterior simbolizando uma barreira que precisa ser alcançada para que a execução do programa avance do passo atual para o próximo A cada transição podem ser atribuídas uma ou mais condições e a execução só avança de um passo para outro quando são satisfeitas todas as condições associadas àquela transição 42 Regras de evolução do SFC Quando falamos em regras de evolução do SFC estamos nos referindo à dinâmica envolvida na execução e no trânsito de informações no diagrama Em outras palavras estamos nos referindo à forma e às regras que governam a localização e o trânsito da execução A seguir vamos discutir a respeito dessas regras conforme abordado por Moraes 2015 Simultaneidade é empregada quando vários passos procedem ou sucedem uma mesma transição sendo necessário utilizar duas linhas em paralelo para representar na conexão OU divergente duas transições são saídas de um mesmo passo sem simultaneidade OU convergente duas transições têm passos distintos de entrada e um mesmo passo de saída E divergente a transição é sucedida por dois ou mais passos e existe um traço duplo de simultaneidade 20 E convergente a transição é precedida por dois ou mais passos sendo marcada com um traço duplo de simultaneidade Quando desenvolvemos um diagrama em SFC precisamos nos atentar a essas características pois conforme discutimos elas influenciarão a ordem de execução dos passos 43 Exemplo de programa em SFC De acordo com o que já havíamos mencionado nosso exemplo de programa de instrução em SFC consiste na chave de partida direta sendo que o sistema apresenta o mesmo diagrama de força e comando que foi apresentado na Figura 14 anterior Os componentes do sistema são os mesmos dos exemplos dos tópicos anteriores aqui só mudaremos a linguagem empregada no programa de instruções Portanto na Figura 16 a seguir é apresentado o programa em SFC desenvolvido para a chave de partida direta Figura 16 Diagrama em SFC para a chave de partida direta Fonte Elaborada por Lara 2022 com base em Silva 2016 21 TEMA 5 LINGUAGEM LADDER Neste tópico estudaremos a linguagem de programação de CLP mais utilizada considerada pela norma IEC 611313 como uma linguagem gráfica chamada de linguagem ladder ou ainda diagrama ladder De acordo com Silva 2016 essa linguagem foi a primeira a ser utilizada pelos fabricantes além de ser a mais aceita pelos programadores de CLP ao redor do mundo Ainda temos que essa linguagem está presente em praticamente todos os CLPs disponíveis no mercado de tecnologia para automação industrial Mas afinal o que fez dessa linguagem a preferida e mais utilizada na programação de CLP Para responder a essa pergunta precisamos refletir sobre dois aspectos importantes em primeiro lugar é o fato dessa linguagem ser muito semelhante à lógica de comandos elétricos por contar com praticamente os mesmos elementos mudando apenas a forma como os representamos o segundo fato é o de que o CLP substituiu os painéis eletromecânicos em diversas aplicações e as lógicas de comandos destes empregava comandos elétricos Portanto considerando que essa linguagem é muito parecida com os diagramas de força e comandos que já eram empregados ela se tornou a preferida dos programadores por ser possível aproveitar sua experiência com o desenvolvimento das lógicas de comandos O diagrama desenvolvido em ladder é formado de três componentes principais contatos bobinas e blocos de funções Os contatos podem ser de dois tipos o normalmente fechado NA e o normalmente aberto NA sendo estes associados às entradas ou às saídas do CLP conforme a lógica de acionamento Já as bobinas são associadas sempre às saídas do CLP Os blocos de funções apresentam as configurações já estudadas anteriormente e são inseridos para otimizar e tornar as operações mais fáceis dentro da lógica desenvolvida em ladder A simbologia adotada para os elementos do ladder é apresentada na Figura 17 a seguir além disso nessa mesma figura é feito uma analogia entre eles e os elementos empregados em comandos elétricos Como podemos observar na Figura 17 a seguir os elementos são os mesmos porém sua simbologia é diferente Isso se deve também ao fato de os diagramas em comandos serem desenvolvidos na vertical e de cima para baixo Já um diagrama em ladder é formado por duas linhas de alimentação verticais unidas por linhas de código empregando os elementos da Figura 17 em um 22 arranjo horizontal Esse formato do diagrama inclusive está relacionado a seu nome pois a palavra ladder é significa escada em inglês por isso essa linguagem recebeu esse nome pois o diagrama é semelhante a uma escada sendo cada degrau correspondente a uma linha do código Os contatos NA têm seu estado natural normalmente aberto e quando a variável associada a eles é acionada ou seja passa a ter nível lógico alto eles são acionados também mudando seu estado original para normalmente fechados Já um contato NF tem seu estado natural como fechado e quando o elemento associado a ele é energizado ele se abrirá As bobinas são sempre o último elemento da linha além disso são sempre associadas às saídas do CLP portanto para energizar uma determinada saída é necessário energizar a bobina associada a ela Figura 17 Simbologia dos elementos em ladder e em comandos elétricos Fonte Lara 2022 Além da bobina apresentada na Figura 17 anterior temos outros dois tipos de bobinas que podem ser empregadas nos diagramas desenvolvidos em ladder chamadas de bobinas de set e reset A bobina de set tem como função acionar a saída em que ela foi associada já a bobina de reset tem como função desligar a saída a ela associada Essas bobinas diferentes chamadas de bobinas biestáveis tem a simbologia ilustrada na Figura 18 a a seguir 23 Figura 18 Simbologia das bobinas de setreset e exemplo de uso Fonte Lara 2022 Ainda analisando a Figura 18 anterior temos um exemplo de uso das bobinas dado na Figura 18 b sendo a entrada I1 responsável por setar a saída Q0 enquanto a entrada I0 é responsável por resetar essa mesma saída Quando empregamos bobinas de set e reset é sempre importante inserir inicialmente no código a bobina de set e na sequência a bobina de reset Além disso cada bobina associada à saída somente pode aparecer uma vez no código e isso também se aplica a bobinas comuns Outro fato a ser considerado no desenvolvimento de diagramas em ladder é a associação de contados pois por meio dessas associações podemos implementar condições de acionamentos por exemplo as operações lógicas que já estudamos As bobinas podem ser acionadas apenas em paralelo ou seja jamais podemos associar duas bobinas em série pois cada linha do diagrama deve ter apenas uma bobina Além de tudo o que já discutimos a respeito da linguagem ladder precisamos entender como são feitos os endereçamentos e como funcionam os blocos funcionais dentro dessa linguagem Nas seções a seguir abordaremos esses conceitos 51 Endereçamento Cada instrução seja ela de entrada ou de saída do CLP precisa estar associada a um endereço que indica sua localização na memória do equipamento Cada símbolo empregado no diagrama seja contatos NA NF ou bobinas é associado a um operando que pode ser identificado por letra número ou nome A norma IEC 61131 não especifica essa identificação que muda de fabricante para fabricante portanto é necessário consultar o manual do CLP a 24 ser utilizado O que temos definido na norma é que as entradas serão associadas à letra I as saídas à letra Q e as memórias à letra M Na Figura 19 a seguir apresentamos um exemplo de endereçamento de um CLP Figura 19 Exemplo de representação de endereços de um CLP Fonte Lara 2022 Analisando a Figura 19 anterior o modelo de CLP representado tem como entradas I1 I2 I3 e I4 já para saídas temos Q0 Q1 Q2 e Q3 A quantidade de entradas e saídas depende do tamanho do CLP conforme estudado em momento anterior Além disso as memórias são utilizadas apenas no diagrama ladder não sendo representadas no CLP Para o exemplo apresentado na Figura 19 anterior na entrada I1 do CLP foi conectada a botoeira B1 e na entrada I2 a botoeira B0 Além disso na saída Q0 temos a lâmpada L1 conectada Todas as vezes que as botoeiras forem acionadas ocorrerá uma mudança no sinal nas entradas I1 e I2 o que mudará a posição dos contados associados a elas Em contrapartida quando a saída Q0 for acionada a lâmpada L1 também será pois está conectada a essa saída e será desligada quando a saída for desativada É importante mencionar que no ladder não deve aparecer os nomes de B1 B0 ou L1 pois os dispositivos conectados às entradas e saídas não são identificados pelo CLP e sim os sinais que eles oferecem aos módulos de entrada e saída Na Figura 20 a seguir ilustramos um exemplo de código em ladder para acionamento da lâmpada L1 sempre que a botoeira B1 for acionada além do desligamento dessa lâmpada quando a botoeira B0 é acionada O diagrama dado na Figura 20 faz uso do artifício de contato de selo que consiste em associar um contato NA da saída em paralelo com a entrada que é acionada 25 assim com apenas um pulso na entrada de acionamento é possível manter a saída energizada Figura 20 Exemplo de diagrama em ladder considerando endereçamento Fonte Lara 2022 52 Blocos funcionais Outros elementos comuns dentro da construção de programas em ladder são os blocos funcionais os quais já estudamos anteriormente Esses blocos podem ser tanto já definidos e de funções básicas como as operações lógicas os temporizadores e os contadores quanto blocos com fins específicos desenvolvidos pelo usuário e salvos na memória do CLP Os blocos funcionais são inseridos nas linhas do código sendo apenas definidos quais serão seus parâmetros de entrada e quais elementos serão acionados por suas saídas Na Figura 21 a seguir é apresentado um exemplo de uso de blocos funcionais no caso temporizador e contador dentro de um programa desenvolvido em ladder Conforme podemos verificar o funcionamento do programa consiste em acionar a saída Q0 quando a entrada I0 é ativada além disso a saída será desligada por duas situações seja quando a entrada I1 for acionada ou então ao final da contagem pelo bloco CTU Já na segunda linha a entrada I2 é responsável por incrementar a contagem a cada vez que é acionada Quando é atingido o valor de 12 pulsos nessa entrada a saída Q do bloco é ativada desligando Q0 ligando Q1 e iniciando o processo de contagem de tempo do temporizador Ao final da contagem de tempo pelo bloco TON a saída Q1 é desligada pois existe um contato NF da saída desse bloco na linha que acionada essa saída 26 Figura 21 Exemplo de uso de blocos funcionais em ladder Fonte Lara 2022 FINALIZANDO Ao longo desta etapa estudamos as cinco linguagens definidas pela norma IEC 611313 bem como verificamos que existem diferentes tipos destas portanto sempre haverá uma linguagem que o profissional que programará o CLP terá uma maior identificação Ainda é importante mencionar que um programa de instruções para CLP pode empregar mais de uma linguagem no seu desenvolvimento e as linguagens possíveis de serrem utilizadas dependerão do modelo de CLP adotado Cada linguagem é indicada para um tipo de processo sendo assim apresentamos na Tabela 6 a seguir algumas das indicações de emprego de cada uma das linguagens Groover 2011 27 Tabela 6 Características das linguagens de CLP padronizadas pela norma IEC 61131 Linguagem Aplicações em que melhor se enquadram Linguagem ladder Controle discreto Diagrama de blocos funcionais Controle contínuo Sequenciamento gráfico de funções Sequenciamento Lista de instruções Controle discreto Texto estruturado Lógica complexa cálculos etc Fonte Elaborada por Lara 2022 com base em Groover 2011 A linguagem mais empregada na programação de CLP é a ladder em razão da semelhança com as lógicas desenvolvidas em comandos elétricos porém cada linguagem apresenta características que as tornam mais indicadas para determinadas aplicações É sempre importante verificar quais as linguagens disponíveis no CLP que será utilizado inclusive este é um fator a ser analisado já na especificação de um modelo para a aplicação juntamente com outros elementos como quantidade de entradas e saídas estrutura entre outros Outro aliado na programação de CLP é o manual do modelo que é fornecido pelo fabricante pois é nesse material que encontraremos informações essenciais para sua programação conforme discutimos nesta etapa Portanto o processo de programação começa com o estudo das informações destinadas a esse tema contidas no manual 28 REFERÊNCIAS GROOVER M Automação industrial e sistemas de manufatura 3 ed São Paulo Pearson Prentice Hall 2011 MORAES C C de Engenharia de automação industrial 2 ed Rio de Janeiro LTC 2015 SILVA E A da Introdução às linguagens de programação para CLP São Paulo Blucher 2016
Envie sua pergunta para a IA e receba a resposta na hora
Texto de pré-visualização
CONTROLADORES LÓGICOS PROGRAMÁVEIS AULA 3 Profª Carla Eduarda Orlando de Moraes de Lara CONVERSA INICIAL Nesta etapa vamos discutir um assunto extremamente importante quando nos referimos aos controladores lógicos programáveis a sua programação Portanto durante nossos estudos vamos conhecer e analisar as cinco linguagens de programação de CLP padronizadas Antes de começarmos precisamos entender como e por que ocorreu essa padronização Após a criação do CLP ocorreu uma vasta aplicação desse dispositivo na automação industrial sendo assim seu mercado de desenvolvimento e fabricação estava muito aquecido Várias empresas começaram a fabricar modelos de CLP porém cada uma desenvolvia o dispositivo e não existia uma padronização o que gerava diversos modelos com diferentes formas de programálos e incompatibilidade entre os sistemas Além disso exigia que os usuários tivessem conhecimento de diferentes linguagens e informações sobre cada modelo Isso gerava diversos problemas como desperdício de recursos humanos em diferentes treinamentos para entender como utilizar e programar os modelos de CLP além de como já mencionado a existência de incompatibilidade entre os sistemas Nesse cenário foi percebida a necessidade de uma padronização desses dispositivos então a Comissão Eletromecânica Internacional do inglês International Electrotechnical Commission IEC reuniu uma forçatarefa para criar uma norma que padronizasse o CLP que é chamada de IEC 61131 e é destinada ao projeto completo do CLP definindo desde seu hardware até suas especificações e testes conforme pode ser visto no Quadro 1 a seguir Nesta etapa vamos discutir a respeito da terceira parte dessa norma que é dedicada à padronização das linguagens de programação Quadro 1 Norma IEC 61131 Parte Título Parte 1 Informações gerais Parte 2 Requisitos de equipamentos e testes Parte 3 Linguagens de programação Parte 4 Orientações ao usuário Parte 5 Comunicações Parte 6 Comunicação via fieldbus Parte 7 Programação de controle FUZZY Parte 8 Orientações para implementação das linguagens de programação 3 Fonte Elaborado por Lara 2022 com base em Silva 2016 Conforme apresentado e discutindo por Silva 2016 a parte 3 da norma IEC 61131 apresenta e define cinco linguagens de programação que visam cobrir uma variedade de aplicações sendo essas linguagens divididas entre gráficas e textuais Ainda segundo esse mesmo autor essa padronização culminou em vantagens como possibilidade de programação empregando a melhor linguagem para cada parte da planta conforme suas necessidades economia no tempo de processamento qualidade na programação sendo possível empregar todas as linguagens em uma mesma planta Entre as linguagens gráficas estão o diagrama de blocos funcionais o sequenciamento gráfico de funções e o diagrama ladder já entre as textuais se encontram o texto estruturado e a lista de instruções Cada linguagem tem características próprias e são indicadas para diferentes processos sendo assim em cada tópico desta etapa abordaremos uma dessas linguagens TEMA 1 TEXTO ESTRUTURADO A linguagem texto estruturado do inglês structured text ST é uma das duas linguagens textuais definidas pela norma IEC 611313 conforme já discutimos Podemos considerar que as instruções sobre o processo serão inseridas no programa de instruções por meio de statements que são palavras que apresentam significados de funções e subrotinas que alterarão variáveis do programa Outra característica dessa linguagem é que ela é lida de maneira simplificada com estruturas de laços de repetição contadores e lógicas condicionais como if then e for A linguagem ST teve origem nas linguagens de programação Pascal e C e como já mencionado ela possibilita a utilização de laços condicionais e de iterações transformandoa em uma boa opção quando se deseja implementar lógicas rápidas e personalizadas dentro de determinada aplicação Ainda essa linguagem é considerada a mais robusta entre as cinco padronizadas isso porque todo programa desenvolvido nas demais linguagens é convertido para ST por meio da compilação Isso ocorre porque a linguagem ST é muito próxima 4 a da linguagem de máquina portanto ela é facilmente compreendida pela unidade central de processamento do CLP Para compreendermos com mais detalhes essa linguagem nas próximas subseções vamos discutir seus elementos suas instruções além dos seus comandos 11 Elementos característicos do texto estruturado Cada linha do programa de instruções desenvolvido em ST trabalha com expressões formadas por operadores e operandos responsáveis por retornar valores quando executados Silva 2016 Quando falamos em elementos precisamos discutir a respeito de alguns itens como atribuição expressões operandos e operadores Quando desejarmos atribuir valores a uma variável empregamos o operador que pode ser usado tanto para atribuir um valor de uma variável a outra como o retorno de uma função Na Quadro 2 a seguir temos alguns exemplos de atribuições Quadro 2 Exemplos de atribuições em ST Atribuição Exemplo Atribuindo valor literal a uma variável X 25 Atribuindo valor de uma variável a outra variável XY Atribuindo valor de uma operação para uma variável YXKVZ Atribuindo valor de uma função para uma variável ZMODXY Fonte Lara 2022 Além da atribuição a linguagem ST trabalha com expressões as quais são formadas por operadores e operandos que retornam um valor ao serem executados Após a execução de uma expressão o valor atual de uma variável é substituído pelo resultado da avaliação da expressão Podemos definir uma expressão como uma especificação da variável do lado esquerdo seguida pelo operador de atribuição e pela expressão a ser validada Silva 2016 Outra observação importante é que as expressões devem trabalhar com variáveis do mesmo tipo em ambos os lados Um operando pode ser um endereço um valor literal uma variável ou ainda uma chamada de função ou bloco funcional Silva 2016 Seguindo a mesma regra que mencionamos anteriormente os tipos de dados dos operandos envolvidos em uma instrução devem ser sempre iguais 5 Já os operadores pedem um símbolo de operação aritmética uma operação lógica ou ainda uma função a ser executada Além disso os operadores são adaptáveis aos tipos de dados dos operandos bem como são executados seguindo a sequência de prioridade de execução 12 Instruções As instruções podem ser aplicadas em diferentes situações Nesta seção vamos discutir duas instruções sendo elas IFTHENENDIF IFTHENELSEENDIF A instrução IFTHENENDIF pode ser definida como a determinação para que uma instrução ou um grupo de instruções seja executado caso a expressão booleana que rege a condição estiver em nível lógico alto verdadeiro Caso a condição esteja em nível lógico baixo falso a instrução ou o grupo não será executado Nessa situação a instrução identifica o fim da condição sendo que a instrução ENDIF finaliza a instrução como um todo Outra possibilidade é a instrução IFTHENELSEENDIF na qual existe a instrução ELSE após a instrução Nesse caso a instrução IF é executada caso as expressões associadas às instruções anteriores forem verdadeiras ou caso sejam falsas a instrução não será executada Um exemplo de uso dessa instrução é dado na Figura 1 a seguir que consiste na implementação de uma partida direta por meio de um CLP Figura 1 Chave de partida direta com instrução ELSE Fonte Elaborada por Lara 2022 com base em Silva 2016 6 13 Comando condicional CASE Outra possibilidade de instrução é o comando condicional CASE que é destinado a expressões que envolvam dados do tipo INT além de lista de grupo de instruções Basicamente podemos descrever o seu funcionamento com a função CASE contendo ações a serem realizadas caso a condição seja atingida e em alguns casos sendo implementado uma função ELSE dentro dessa instrução para executar ações caso a expressão do CASE não seja atendida Na Figura 2 a seguir ilustramos a estrutura do comando condicional CASE Figura 2 Comando condicional CASE Fonte Elaborada por Lara 2022 com base em Silva 2016 14 Comando de repetição Quando falamos em comandos de repetição estamos nos referindo a instruções que possibilitam implementar ações que serão executadas por uma determinada quantidade de vezes ou então enquanto alguma condição for atendida Seguindo esse conceito vamos discutir a respeito de dois comandos de repetição sendo eles FORDO e WHILEDOENDWHILE Quanto ao emprego do comando FORDO ele pode ser utilizado sempre que o número de ocorrência pode ser determinado Nesse caso uma sequência de instruções é executada até que o comando do valor final ENDFOR seja acionado O número de ocorrência depende do valor inicial valor final e da variável de controle sendo que todos devem ser do mesmo tipo A variável de controle sobre incrementos é de um valor inicial até o final sendo o padrão o incremento unitário porém é possível definir valores de incremento diferentes de 1 O laço é repetido até que a variável de controle assuma o valor final sendo um exemplo de uso desse comando dado na Figura 3 a seguir 7 Figura 3 Comando de repetição FORDO Fonte Elaborada por Lara 2022 com base em Silva 2016 Quando a sequência de instruções precisa ser executada repetidamente até que a sua expressão não seja mais verdadeira é preciso empregar o comando de repetição WHILEDOENDWHILE Portanto podemos definir o funcionamento desse comando como executar uma sequência de instruções enquanto for atendida determinada condição a partir do momento que não for mais atendida ocorre a instrução ENDWHILE que finaliza o laço de repetição Na Figura 4 a seguir apresentamos um exemplo de uso do comando WHILEDOENDWHILE Figura 4 Comando de repetição WHILEDOENDWHILE Fonte Elaborada por Lara 2022 com base em Silva 2016 TEMA 2 DIAGRAMA DE BLOCOS FUNCIONAIS A primeira linguagem de programação de CLP gráfica que estudaremos é o diagrama de blocos funcionais do inglês functional block diagram FBD Essa linguagem é semelhante à eletrônica digital por isso acaba sendo a preferida dos profissionais com experiência em eletrônica Outro fato interessante é que os blocos funcionais também existem e são utilizados dentro das demais linguagens de programação de CLP como a linguagem ladder Essa linguagem faz uso de diagramas de circuitos que representam blocos e são interconectados por linhas de fluxo de sinal formando assim o programa de instruções Ainda podemos definir um bloco como um elemento que apresenta entradas realiza um processamento específico e então realiza a alteração das saídas com o resultado obtido Silva 2016 Basicamente 8 podemos dividir os blocos em dois tipos sendo estes funções e blocos funcionais As funções executam suas ações e encerram a execução não sendo mantida nenhuma informação além do resultado da saída Além disso as funções podem ser provenientes do sistema como os temporizadores e contados ou então implementadas pelo usuário Já os blocos funcionais têm como característica permanência de dados sendo necessário especificálos e ainda podem conter diferentes ciclos de execução Conforme discutido por Silva 2016 o uso da linguagem FBD agrega diversos benefícios como simplificação da representação do programa facilidade na depuração do aplicativo e redução no número de códigos gerados Ademais as saídas de um bloco funcional podem ser conectadas às entradas de outros blocos funcionais sendo cada ligação responsável por indicar que determinado parâmetro de entrada de um bloco obtém o valor de um parâmetro específico da saída do bloco anterior Para desenvolver programas na linguagem FBD é necessário seguir algumas regras que são acesso externo apenas aos parâmetros de entrada e de saída do bloco execução do bloco em caso de este fazer parte de uma rede de blocos as instâncias de um bloco funcional podem ser empregadas na definição de outros blocos e programas as instâncias de um bloco funcional declarado como global são acessíveis em qualquer parte do recurso ou configuração Silva 2016 Nas seções a seguir vamos discutir os blocos funcionais padrões que existem nos CLPs e as funções elementares Além disso finalizaremos nosso tópico analisando um exemplo de programa de instruções desenvolvido na linguagem FBD 21 Bloco funcional padrão Quando falamos em bloco funcional padrão estamos nos referindo a elementos que os fabricantes de CLPs criam agrupando em bibliotecas que acompanham os softwares Esses blocos são básicos e destinados a programação de lógicas e algoritmos mais complexos Além desses blocos considerados padrões o usuário também poderá criar blocos funcionais que 9 serão armazenados em uma outra biblioteca Embora exista a possibilidade de criação de blocos é recomendado que sejam utilizados os blocos padrões da norma IEC 611313 para ter uma maior facilidade em caso de portabilidade Os primeiros blocos funcionais padronizados que vamos discutir são os blocos set e reset que também são chamados de blocos biestáveis que são utilizados como memórias SR e RS respectivamente Uma representação para o bloco set pode ser verificada na Figura 5 a seguir Nesse bloco a função set domina ou seja se os sinais de set e reset são ambos verdadeiros em suas entradas S1 e R a saída Q1 será verdadeira Ainda na Figura 5 podemos observar uma representação do bloco set por meio de blocos lógicos Figura 5 Representação para o bloco set Fonte Elaborada por Lara 2022 com base em Moraes 2015 Já para o bloco reset temos uma representação dada na Figura 6 a seguir Nesse bloco a função que domina é a reset ou seja se os sinais de set e reset são ambos verdadeiros em suas entradas S e R1 a saída Q1 será falsa Ainda na Figura 6 podemos observar uma representação do bloco reset por meio de blocos lógicos Figura 6 Representação para o bloco reset Fonte Elaborada por Lara 2022 com base em Moraes 2015 Ainda conforme estudamos em momento anterior existem os blocos de contagem e de temporização Nos blocos de contadores a saída será do tipo bit para contagem enquanto nos blocos temporizadores a saída será do tipo bit para tempo Como já discutimos anteriormente sobre os tipos de contadores e de temporizadores nesta etapa abordaremos apenas suas representações 10 dentro da linguagem FBD Sendo assim na Figura 7 a seguir trazemos as representações para os blocos contadores padrões e na Figura 8 as representações para os temporizadores padrões O bloco contador crescente CTU é apresentado na Figura 7 a e o contador decrescente é apresentado na Figura 7 b Além disso o bloco temporizador com atraso na ligação TON é apresentado na Figura 8 a e o bloco temporizador com atraso no desligamento TOF é apresentado na Figura 8 b Figura 7 Representação para os blocos contadores Fonte Elaborada por Lara 2022 com base em Silva 2016 Figura 8 Representação para os blocos temporizadores Fonte Elaborada por Lara 2022 com base em Silva 2016 22 Função elementar Conforme já discutimos as funções elementares não apresentam estados internos sendo assim os valores de entrada são os mesmos e o valor de saída também será o mesmo toda vez que a função for executada Graficamente uma função elementar é representada por um bloco com entradas e saídas sendo que as entradas serão sempre representadas à esquerda enquanto as saídas 11 sempre ficarão à direita do bloco Além disso o nome da função que também indicará seu tipo é apresentado no centro do bloco Ainda o número de execução será apresentado à direita do tipo de função As funções elementares mais comuns para os CLPs são as operações lógicas como as lógicas AND OR NOT e XOR que também estudamos em momento anterior As funções lógicas AND e NOR estão representadas a seguir na Figura 9 a e b respectivamente Já as funções lógicas OR e XOR são apresentadas na Figura 10 a e b respectivamente Figura 9 Representação para as funções AND e NOT Fonte Elaborada por Lara 2022 com base em Silva 2016 Figura 10 Representação para as funções OR e XOR Fonte Elaborada por Lara 2022 com base em Silva 2016 23 Exemplo de programa empregando FBD O exemplo de programa de instruções desenvolvido na linguagem FBD que estudaremos se trata da chave de partida direta de um motor elétrico empregado no acionamento de uma esteira O motor é ligado pelo botão B1 e desligado pelo botão B0 além de que o sistema conta com proteção térmica do relé térmico RT1 O sistema apresenta sinalização para o funcionamento do motor a lâmpada L1 indica que o motor está desligado e a lâmpada L2 indica motor ligado O motor é acionado pelo contator C1 O FBD para a chave de 12 partida direta pode ser observado na Figura 11 a seguir que ilustra a conexão dos blocos de funções para formar a lógica de acionamento Figura 11 FDB da chave de partida direta Fonte Elaborada por Lara 2022 com base em Silva 2016 TEMA 3 LISTA DE INSTRUÇÕES A outra linguagem textual definida pela norma IEC 611313 é a lista de instruções do inglês instruction list IL Essa linguagem faz uso de mnemônicas para a construção das instruções do programa que comandará os processos no CLP Além disso é considerada semelhante à linguagem de máquina portanto é muito eficiente Outra característica dessa linguagem é que ela é semelhante à linguagem Assembly Em razão das características já mencionadas essa linguagem é preferida por profissionais que tenham experiência com linguagens de programação A linguagem IL faz uso de instruções que são inseridas de modo a construir a sequência de operações do programa de instruções Cada instrução começa em uma linha do código e deve conter um operador com modificadores opcionais Silva 2016 Ainda é possível inserir um ou mais operando separados por vírgulas os quais serão empregados no uso de funções ou blocos de funções Cada linha deve conter uma estrutura formada por rótulo operador e modificador 13 operando e comentário nessa sequência sendo uma representação dessa configuração dada na Figura 12 a seguir Figura 12 Configuração de uma linha de instrução em IL Fonte Lara 2022 Entre as instruções mais comuns estão a load LD e a store ST responsáveis por carregar um operando para o acumulador e por armazenar o conteúdo do acumulador no local especificado pelo operando respectivamente As funções e os blocos de funções podem ser inseridos no código por meio da chamada desses elementos pelo nome conforme podemos observar no exemplo disposto na Figura 13 a seguir que ilustra um bloco temporizador sendo inserido no código Figura 13 Exemplo de chamada de bloco temporizador em IL Fonte Elaborada por Lara 2022 com base em Silva 2016 Retomando o conceito das mnemônicas utilizadas na linguagem IL estas representam os operadores que podem ter modificadores em alguns casos Os modificadores influenciarão na execução dos operadores por exemplo é possível tornar inverso um operador empregando o modificador N No Quadro 3 a seguir são apresentados os principais operadores relacionando estes com seus modificadores caso existam e seu significado 14 Tabela 3 Exemplos de mnemônicas empregadas na IL Operador Modificador Significado LD N Carrega operando no acumulador ST N Guarda o resultado no operando S Seta operando para 1 R Reseta operando para 0 AND N Lógica E OR N Lógica OU XOR N Lógica OU exclusivo NOT N Lógica negativa ADD Adição SUB Subtração MUL Multiplicação DIV Divisão MOD Módulo da divisão GT Maior que GE Maior que ou igual EQ Igual NE Diferente LE Menor que ou igual LT Menor que CAL C N Chamada de bloco funcional RET C N Retorno de função ou floco funcional Executa o último operador adiado Fonte Lara 2022 Ainda falando sobre os modificadores eles podem ser tipo N C e Caso seja N ele servirá para inverter o valor do operando ou negar um valor pode ser empregado por exemplo juntamente com os operadores AND e OR para gerar as funções lógicas NAND e NOR O modificador C tem como função dar uma condição portanto sempre que se desejar condicionar algum operador é preciso utilizálo Caso sejam combinados os modificadores C e N CN a instrução será executada somente se o valor do acumulador for um booleano falso Por fim o parêntese é empregado quando se deseja mover a avaliação do operando Silva 2016 Além de todos os conceitos que abordamos a respeito da linguagem IL temos que discutir a respeito da inserção de comentários no código que são fundamentais para futuras alterações dele principalmente se estas não forem realizadas pelo desenvolvedor inicial do código Para inserir comentário na linguagem IL é preciso começálos com a sequência de caracteres e finalizar com a sequência por exemplo comentários 15 31 Exemplo de programa em IL A fim de entendermos melhor a implementação de programas de instrução na linguagem IL vamos analisar um exemplo prático Nosso exemplo consiste em uma esteira comandada por um motor elétrico M1 que é ligado pela botoeira B1 e desligado pela botoeira B0 Além disso os circuitos contam com um relé térmico para proteção RT1 e a sinalização dada pelas lâmpadas L1 indicando motor desligado e L2 indicando motor ligado O acionamento de M1 fará com que a esteira seja movimentada portanto foi implementada uma chave de partida direta para acionar M1 o que é comum com motores de baixa potência Silva 2016 Os diagramas de força e de comando são apresentados na Figura 14 a seguir que representam as ligações realizadas por meio de comandos elétricos implementados com os componentes eletromecânicos Figura 14 Diagramas de força e comando da chave de partida direta Fonte Elaborada por Lara 2022 com base em Silva 2016 16 Caso o acionamento do motor seja implementado por meio de um CLP este poderá ser controlador por meio de um programa de instruções que é apresentado na linguagem IL por meio do código dado na Figura 15 a seguir Figura 15 Programa de instruções para chave de partida direta em IL Fonte Elaborada por Lara 2022 com base em Silva 2016 Como podemos observar o programa apresentado na Figura 15 anterior é equivalente aos circuitos de força e comando apresentados precedentemente Ainda como o código é comentado podemos verificar o que cada instrução realiza TEMA 4 SEQUENCIAMENTO GRÁFICO DE FUNÇÕES A segunda linguagem de programação de CLPs gráfica que estudaremos nesta etapa é o sequenciamento gráfico de funções do inglês sequential flow chart SFC que pode ser definida como um método gráfico estruturado para o desenvolvimento de programas de instruções para controle sequencial ou dependentes de tempo empregando uma sequência de etapas e transições Silva 2016 Outra informação importante a respeito da linguagem SFC é que ela teve como base as redes Petri e o Graphe Fountionnel de Command EtapeTransition Grafcet por isso também é comumente chamada de Grafcet Além disso é uma das linguagens de programação aceitas pela maioria dos CLPs Entre as características do SFC se configuram a facilidade de interpretação a modelagem do sequenciamento e a modelagem de funções Silva 2016 Conforme abordado por Moraes 2015 a linguagem SFC é formada por passos transições arcos ações qualificadas e expressões booleanas além de ser graficamente desenhada na vertical Cada passo caracteriza um estado particular do sistema descrito e é simbolizado por um retângulo Já a transição é 17 o elemento que existe entre os passos e está vinculada a uma condição que caso seja satisfeita avança de um passo para o próximo Quando analisamos o comportamento sequencial este tem como objetivos descrever o comportamento sequencial de um sistema apresentar linguagem de estruturação de ações de um programa segundo um modelo topdown descrever o comportamento de baixo nível de um processo sequencial representar um processo de comunicação de dados ser aplicado na estruturação de programas não importando a linguagem Silva 2016 Agora que já contextualizamos essa linguagem vamos abordar nas seções a seguir os detalhes dela como os elementos estruturais e as regras de evolução para o SFC além de um exemplo de programa de instrução desenvolvido nessa linguagem que é responsável pela implementação do controle de uma chave de partida direta ou seja o mesmo exemplo que estamos estudando nas demais linguagens abordadas nesta etapa 41 Elementos estruturais do SFC De acordo com o que já discutimos o SFC faz uso de elementos para criar a programa de controle sendo assim esses elementos são chamados de elementos estruturais Nesse cenário passaremos agora a analisar cada um deles de forma detalhada com a intenção de entender como se relacionam e formam os programas de controle No Quadro 4 a seguir abordamos as simbologias adotadas para os elementos estruturais 18 Tabela 4 Símbolos gráficos dos elementos do SFC Fonte Elaborada por Lara 2022 com base em Silva 2016 O passo representa um possível estado operacional do sistema contendo um nome e sendo representado por um retângulo Ainda quando um passo se encontra ativo ele é assinalado por meio de uma marca chamada de token Um passo se torna ativo quando a transição do passo anterior é satisfeita fazendo com que o programa avance para o passo atual Seguindo essa mesma lógica podemos dizer que esse mesmo passo será desativado quando a transição para o próximo passo for satisfeita Além disso a cada passo podem ser associados blocos de ações ou ainda nenhuma ação sendo nesse caso chamado de passo de espera Cada passo recebe um único nome e deve aparecer apenas uma vez no diagrama do SFC O passo inicial tem uma simbologia diferente conforme mostrado no Quadro 4 anterior A cada passo são designadas uma ou mais ações caso não seja um passo de passo de espera Essas ações são listadas em uma etiqueta retangular à direta do símbolo do passo além disso elas podem ser de diferentes tipos padronizados chamados de qualificadores de ações Os qualificadores de ações definidos pela norma IEC 611313 são apresentados no Quadro 5 a 19 seguir Os qualificadores influenciam a ordem em que as diferentes ações designadas em um mesmo passo serão executadas Tabela 5 Qualificadores de ações Qualificador Descrição N Ação simples SR Ação de setreset L Ação com tempo limitado D Ação de entrada retardada SD Ação de entrada com retardo prefixado P Ação pulsada DS Ação retardada e setada SL Ação setada com tempo limitado Fonte Lara 2022 A transição é representada graficamente pela barra que corta a ligação entre dois passos sucessivos conforme pode ser observado no Quadro 4 anterior simbolizando uma barreira que precisa ser alcançada para que a execução do programa avance do passo atual para o próximo A cada transição podem ser atribuídas uma ou mais condições e a execução só avança de um passo para outro quando são satisfeitas todas as condições associadas àquela transição 42 Regras de evolução do SFC Quando falamos em regras de evolução do SFC estamos nos referindo à dinâmica envolvida na execução e no trânsito de informações no diagrama Em outras palavras estamos nos referindo à forma e às regras que governam a localização e o trânsito da execução A seguir vamos discutir a respeito dessas regras conforme abordado por Moraes 2015 Simultaneidade é empregada quando vários passos procedem ou sucedem uma mesma transição sendo necessário utilizar duas linhas em paralelo para representar na conexão OU divergente duas transições são saídas de um mesmo passo sem simultaneidade OU convergente duas transições têm passos distintos de entrada e um mesmo passo de saída E divergente a transição é sucedida por dois ou mais passos e existe um traço duplo de simultaneidade 20 E convergente a transição é precedida por dois ou mais passos sendo marcada com um traço duplo de simultaneidade Quando desenvolvemos um diagrama em SFC precisamos nos atentar a essas características pois conforme discutimos elas influenciarão a ordem de execução dos passos 43 Exemplo de programa em SFC De acordo com o que já havíamos mencionado nosso exemplo de programa de instrução em SFC consiste na chave de partida direta sendo que o sistema apresenta o mesmo diagrama de força e comando que foi apresentado na Figura 14 anterior Os componentes do sistema são os mesmos dos exemplos dos tópicos anteriores aqui só mudaremos a linguagem empregada no programa de instruções Portanto na Figura 16 a seguir é apresentado o programa em SFC desenvolvido para a chave de partida direta Figura 16 Diagrama em SFC para a chave de partida direta Fonte Elaborada por Lara 2022 com base em Silva 2016 21 TEMA 5 LINGUAGEM LADDER Neste tópico estudaremos a linguagem de programação de CLP mais utilizada considerada pela norma IEC 611313 como uma linguagem gráfica chamada de linguagem ladder ou ainda diagrama ladder De acordo com Silva 2016 essa linguagem foi a primeira a ser utilizada pelos fabricantes além de ser a mais aceita pelos programadores de CLP ao redor do mundo Ainda temos que essa linguagem está presente em praticamente todos os CLPs disponíveis no mercado de tecnologia para automação industrial Mas afinal o que fez dessa linguagem a preferida e mais utilizada na programação de CLP Para responder a essa pergunta precisamos refletir sobre dois aspectos importantes em primeiro lugar é o fato dessa linguagem ser muito semelhante à lógica de comandos elétricos por contar com praticamente os mesmos elementos mudando apenas a forma como os representamos o segundo fato é o de que o CLP substituiu os painéis eletromecânicos em diversas aplicações e as lógicas de comandos destes empregava comandos elétricos Portanto considerando que essa linguagem é muito parecida com os diagramas de força e comandos que já eram empregados ela se tornou a preferida dos programadores por ser possível aproveitar sua experiência com o desenvolvimento das lógicas de comandos O diagrama desenvolvido em ladder é formado de três componentes principais contatos bobinas e blocos de funções Os contatos podem ser de dois tipos o normalmente fechado NA e o normalmente aberto NA sendo estes associados às entradas ou às saídas do CLP conforme a lógica de acionamento Já as bobinas são associadas sempre às saídas do CLP Os blocos de funções apresentam as configurações já estudadas anteriormente e são inseridos para otimizar e tornar as operações mais fáceis dentro da lógica desenvolvida em ladder A simbologia adotada para os elementos do ladder é apresentada na Figura 17 a seguir além disso nessa mesma figura é feito uma analogia entre eles e os elementos empregados em comandos elétricos Como podemos observar na Figura 17 a seguir os elementos são os mesmos porém sua simbologia é diferente Isso se deve também ao fato de os diagramas em comandos serem desenvolvidos na vertical e de cima para baixo Já um diagrama em ladder é formado por duas linhas de alimentação verticais unidas por linhas de código empregando os elementos da Figura 17 em um 22 arranjo horizontal Esse formato do diagrama inclusive está relacionado a seu nome pois a palavra ladder é significa escada em inglês por isso essa linguagem recebeu esse nome pois o diagrama é semelhante a uma escada sendo cada degrau correspondente a uma linha do código Os contatos NA têm seu estado natural normalmente aberto e quando a variável associada a eles é acionada ou seja passa a ter nível lógico alto eles são acionados também mudando seu estado original para normalmente fechados Já um contato NF tem seu estado natural como fechado e quando o elemento associado a ele é energizado ele se abrirá As bobinas são sempre o último elemento da linha além disso são sempre associadas às saídas do CLP portanto para energizar uma determinada saída é necessário energizar a bobina associada a ela Figura 17 Simbologia dos elementos em ladder e em comandos elétricos Fonte Lara 2022 Além da bobina apresentada na Figura 17 anterior temos outros dois tipos de bobinas que podem ser empregadas nos diagramas desenvolvidos em ladder chamadas de bobinas de set e reset A bobina de set tem como função acionar a saída em que ela foi associada já a bobina de reset tem como função desligar a saída a ela associada Essas bobinas diferentes chamadas de bobinas biestáveis tem a simbologia ilustrada na Figura 18 a a seguir 23 Figura 18 Simbologia das bobinas de setreset e exemplo de uso Fonte Lara 2022 Ainda analisando a Figura 18 anterior temos um exemplo de uso das bobinas dado na Figura 18 b sendo a entrada I1 responsável por setar a saída Q0 enquanto a entrada I0 é responsável por resetar essa mesma saída Quando empregamos bobinas de set e reset é sempre importante inserir inicialmente no código a bobina de set e na sequência a bobina de reset Além disso cada bobina associada à saída somente pode aparecer uma vez no código e isso também se aplica a bobinas comuns Outro fato a ser considerado no desenvolvimento de diagramas em ladder é a associação de contados pois por meio dessas associações podemos implementar condições de acionamentos por exemplo as operações lógicas que já estudamos As bobinas podem ser acionadas apenas em paralelo ou seja jamais podemos associar duas bobinas em série pois cada linha do diagrama deve ter apenas uma bobina Além de tudo o que já discutimos a respeito da linguagem ladder precisamos entender como são feitos os endereçamentos e como funcionam os blocos funcionais dentro dessa linguagem Nas seções a seguir abordaremos esses conceitos 51 Endereçamento Cada instrução seja ela de entrada ou de saída do CLP precisa estar associada a um endereço que indica sua localização na memória do equipamento Cada símbolo empregado no diagrama seja contatos NA NF ou bobinas é associado a um operando que pode ser identificado por letra número ou nome A norma IEC 61131 não especifica essa identificação que muda de fabricante para fabricante portanto é necessário consultar o manual do CLP a 24 ser utilizado O que temos definido na norma é que as entradas serão associadas à letra I as saídas à letra Q e as memórias à letra M Na Figura 19 a seguir apresentamos um exemplo de endereçamento de um CLP Figura 19 Exemplo de representação de endereços de um CLP Fonte Lara 2022 Analisando a Figura 19 anterior o modelo de CLP representado tem como entradas I1 I2 I3 e I4 já para saídas temos Q0 Q1 Q2 e Q3 A quantidade de entradas e saídas depende do tamanho do CLP conforme estudado em momento anterior Além disso as memórias são utilizadas apenas no diagrama ladder não sendo representadas no CLP Para o exemplo apresentado na Figura 19 anterior na entrada I1 do CLP foi conectada a botoeira B1 e na entrada I2 a botoeira B0 Além disso na saída Q0 temos a lâmpada L1 conectada Todas as vezes que as botoeiras forem acionadas ocorrerá uma mudança no sinal nas entradas I1 e I2 o que mudará a posição dos contados associados a elas Em contrapartida quando a saída Q0 for acionada a lâmpada L1 também será pois está conectada a essa saída e será desligada quando a saída for desativada É importante mencionar que no ladder não deve aparecer os nomes de B1 B0 ou L1 pois os dispositivos conectados às entradas e saídas não são identificados pelo CLP e sim os sinais que eles oferecem aos módulos de entrada e saída Na Figura 20 a seguir ilustramos um exemplo de código em ladder para acionamento da lâmpada L1 sempre que a botoeira B1 for acionada além do desligamento dessa lâmpada quando a botoeira B0 é acionada O diagrama dado na Figura 20 faz uso do artifício de contato de selo que consiste em associar um contato NA da saída em paralelo com a entrada que é acionada 25 assim com apenas um pulso na entrada de acionamento é possível manter a saída energizada Figura 20 Exemplo de diagrama em ladder considerando endereçamento Fonte Lara 2022 52 Blocos funcionais Outros elementos comuns dentro da construção de programas em ladder são os blocos funcionais os quais já estudamos anteriormente Esses blocos podem ser tanto já definidos e de funções básicas como as operações lógicas os temporizadores e os contadores quanto blocos com fins específicos desenvolvidos pelo usuário e salvos na memória do CLP Os blocos funcionais são inseridos nas linhas do código sendo apenas definidos quais serão seus parâmetros de entrada e quais elementos serão acionados por suas saídas Na Figura 21 a seguir é apresentado um exemplo de uso de blocos funcionais no caso temporizador e contador dentro de um programa desenvolvido em ladder Conforme podemos verificar o funcionamento do programa consiste em acionar a saída Q0 quando a entrada I0 é ativada além disso a saída será desligada por duas situações seja quando a entrada I1 for acionada ou então ao final da contagem pelo bloco CTU Já na segunda linha a entrada I2 é responsável por incrementar a contagem a cada vez que é acionada Quando é atingido o valor de 12 pulsos nessa entrada a saída Q do bloco é ativada desligando Q0 ligando Q1 e iniciando o processo de contagem de tempo do temporizador Ao final da contagem de tempo pelo bloco TON a saída Q1 é desligada pois existe um contato NF da saída desse bloco na linha que acionada essa saída 26 Figura 21 Exemplo de uso de blocos funcionais em ladder Fonte Lara 2022 FINALIZANDO Ao longo desta etapa estudamos as cinco linguagens definidas pela norma IEC 611313 bem como verificamos que existem diferentes tipos destas portanto sempre haverá uma linguagem que o profissional que programará o CLP terá uma maior identificação Ainda é importante mencionar que um programa de instruções para CLP pode empregar mais de uma linguagem no seu desenvolvimento e as linguagens possíveis de serrem utilizadas dependerão do modelo de CLP adotado Cada linguagem é indicada para um tipo de processo sendo assim apresentamos na Tabela 6 a seguir algumas das indicações de emprego de cada uma das linguagens Groover 2011 27 Tabela 6 Características das linguagens de CLP padronizadas pela norma IEC 61131 Linguagem Aplicações em que melhor se enquadram Linguagem ladder Controle discreto Diagrama de blocos funcionais Controle contínuo Sequenciamento gráfico de funções Sequenciamento Lista de instruções Controle discreto Texto estruturado Lógica complexa cálculos etc Fonte Elaborada por Lara 2022 com base em Groover 2011 A linguagem mais empregada na programação de CLP é a ladder em razão da semelhança com as lógicas desenvolvidas em comandos elétricos porém cada linguagem apresenta características que as tornam mais indicadas para determinadas aplicações É sempre importante verificar quais as linguagens disponíveis no CLP que será utilizado inclusive este é um fator a ser analisado já na especificação de um modelo para a aplicação juntamente com outros elementos como quantidade de entradas e saídas estrutura entre outros Outro aliado na programação de CLP é o manual do modelo que é fornecido pelo fabricante pois é nesse material que encontraremos informações essenciais para sua programação conforme discutimos nesta etapa Portanto o processo de programação começa com o estudo das informações destinadas a esse tema contidas no manual 28 REFERÊNCIAS GROOVER M Automação industrial e sistemas de manufatura 3 ed São Paulo Pearson Prentice Hall 2011 MORAES C C de Engenharia de automação industrial 2 ed Rio de Janeiro LTC 2015 SILVA E A da Introdução às linguagens de programação para CLP São Paulo Blucher 2016