Programação para Automação: Programando um CLP

A história do controlador lógico programável (CLP) é o encontro da Revolução Industrial com a Revolução da Informação. Desde o surgimento da linha de montagem móvel no início da década de 1910, houve uma busca constante para tornar a manufatura rápida, confiável e consistentemente repetível. As fábricas da Primeira Revolução Industrial utilizavam exclusivamente potência mecânica e elétrica para enfrentar o desafio da produção em massa. Isso funcionava muito bem enquanto a linha de montagem não fosse reconfigurada com frequência. Mas, na década de 1960, a indústria automotiva precisava de ajuda para reconfigurar suas linhas de montagem a cada novo modelo — um processo manual que exigia técnicos para religar sensores e solenoides manualmente. Ao mesmo tempo, a nascente indústria de computadores havia amadurecido o suficiente para oferecer uma solução robusta fisicamente e economicamente viável. As montadoras começaram a instalar os precursores do hardware do CLP moderno; em vez de precisar refazer toda a fiação das linhas de montagem, os técnicos poderiam simplesmente carregar um novo código para alterar os processos de fabricação. Ou melhor, essa era a teoria.

Este artigo examina as várias opções para programar um CLP moderno conforme definido pela norma internacional IEC 61131-3. No entanto, cada fabricante de CLP oferece software para programar seu hardware específico, de forma que há variações nos métodos de programação entre os fabricantes.

O Início da Programação de CLPs

Embora esses precursores dos CLPs — uma variedade de sistemas de controle mecânicos, elétricos, eletrônicos, além de controles pneumáticos e hidráulicos — tenham funcionado bem inicialmente, apresentavam uma falha grave. Reprogramá-los exigia conhecimento das linguagens de programação Assembly ou Fortran, mas os eletricistas e mecânicos responsáveis pela manutenção e atualização desses sistemas não eram programadores. Eles, na verdade, falavam uma linguagem chamada lógica ladder (ou lógica de escada). Os engenheiros eletrônicos voltaram ao planejamento e desenvolveram a primeira geração do que hoje chamamos de CLP. Nas décadas seguintes, novos métodos de programação foram introduzidos; porém, até hoje, a lógica ladder permanece como o método dominante de programação no mundo industrial.

Lógica Ladder

A lógica ladder foi inicialmente criada para documentar visualmente o projeto e a construção de painéis de relés usados na manufatura e no controle de processos (Figura 1). Ela se assemelha aos diagramas esquemáticos do hardware de lógica por relés. Um diagrama ladder começa com os trilhos de alimentação desenhados como duas linhas verticais. Linhas horizontais, chamadas degraus (rungs), entre esses trilhos representam uma operação lógica atômica. Os símbolos de entrada, chamados contatos, representam sensores, interruptores e botões de pressão. Eles são posicionados à esquerda e no centro de cada degrau. Já as saídas (referidas como bobinas), como motores, relés, lâmpadas indicadoras ou sirenes, ficam à direita dos degraus. A lógica de controle do sistema é implementada organizando os contatos e bobinas para criar relações lógicas (por exemplo, E, OU, NÃO) entre as entradas e vinculá-las às saídas.

Figura 1: Exemplo de um diagrama de lógica ladder. (Fonte: Green Shoe Garage)

Dois símbolos comuns de lógica de entrada são “examinar ligado” ou EON (às vezes também chamado de “examinar se fechado” ou XIC) e “examinar desligado” ou EOF (ou “examinar se aberto” ou XIO). O EON pode representar tanto um contato normalmente aberto quanto um buffer. Já o EOF pode representar um contato normalmente fechado ou um inversor. Por fim, o símbolo lógico de saída é chamado de saída energizada, ou OUT (Figura 2). Ele tem apenas um significado: fornecer energia ao dispositivo de saída que a bobina de saída controla.

Figura 2: Símbolos comuns da lógica ladder. Da esquerda para a direita: examinar ligado (EON), examinar desligado (EOF) e saída energizada (OUT). (Fonte: Green Shoe Garage)

Quando organizadas em paralelo, as entradas são dispostas de maneira equivalente à expressão lógica OU (OR). Por outro lado, quando organizadas em série, as entradas formam uma relação lógica E (AND). Outro ponto essencial a ser lembrado é que as saídas devem aparecer apenas uma vez em um diagrama ladder, para garantir que haja apenas uma sequência de entradas controlando o estado de cada saída.

Um CLP opera em um processo conhecido como ciclo de varredura do programa, executando o programa repetidamente. Em média, um CLP leva algumas dezenas de milissegundos para avaliar todas as entradas com base nas instruções e alterar as saídas de acordo com o estado atual da máquina. A representação em lógica ladder do programa de controle é normalmente lida da esquerda para a direita e de cima para baixo. Em geral, o ciclo de varredura segue este fluxo:

  1. Leitura das entradas
  2. Execução do programa
  3. Escrita dos bits de saída

Algumas regras finais para programar com lógica ladder:

  • Organize seu código de lógica ladder de forma que o fluxo seja lógico e fácil de seguir. Agrupe funções relacionadas e utilize sub-rotinas para modularizar seu código.
  • Limite o tamanho dos degraus (rungs), pois degraus excessivamente grandes podem ser difíceis de depurar. Divida a lógica complexa em etapas menores e mais gerenciáveis.
  • NÃO programe paradas de emergência no software do CLP. Considere como seu programa irá  se comportar diante de eventos inesperados, como falhas de sensores — projete para operação em modo seguro (fail-safe) a fim de minimizar riscos. As paradas de emergência devem ser cabeadas diretamente no sistema elétrico da máquina. Nunca confie apenas no CLP para questões de vida e segurança.
  • Conecte entradas a buffers ou inversores para permitir alterações via software, em vez de refazer a fiação da máquina. Lembre-se: no mundo industrial, o tempo de inatividade tem implicações significativas em termos de custo e produtividade. Alterar o código é muito mais simples do que refazer conexões físicas.
  • Aplique princípios lógicos consistentes ao longo do programa. Por exemplo, se você utilizar contatos normalmente abertos (NA) para condições de partida, continue usando contatos NA para funções semelhantes, a menos que haja uma razão específica para mudar. Da mesma forma, ao usar contadores, mantenha consistência entre contadores progressivos e regressivos.
  • Compreenda os mapas de memória, também chamados de tabelas de dados. Como o CLP é um dispositivo com memória limitada e utiliza endereços de memória fixos para entradas e saídas, programar com sucesso exige um conhecimento profundo da estrutura de memória interna — mais ainda do que em outros tipos de desenvolvimento de software, como aplicações desktop. Além disso, diferentes tipos de dados (alguns fabricantes os chamam de tipos de arquivo) são representados por diferentes quantidades de bits. Caracteres especiais são utilizados para indicar os diversos componentes da memória, como:

O:3.1/0
[Tipo ou Número de Arquivo] : [Número do Elemento] . [Número da Palavra] / [Número do Bit]

O tipo/número de arquivo representa o tipo de dado, como uma entrada, saída ou contador. O número do elemento indica o slot de E/S (entrada/saída). Se o tipo de dado for multi-palavra, então o número da palavra define qual palavra acessar. Por fim, o número do bit representa qual bit da palavra está sendo acessado. Assim, neste exemplo, estamos acessando o primeiro bit da segunda palavra do terceiro slot de saída.

Mais uma vez, esses formatos variam de fabricante para fabricante, mas, em geral, é fundamental ter um conhecimento detalhado de onde cada bit individual está localizado — especialmente no caso das E/S externas.

Além da Lógica Ladder

Além dos diagramas ladder, a norma IEC 61131-3 também regula outros dois métodos gráficos de programação de CLPs: o diagrama de blocos de função (FBD) e o gráfico de funções sequenciais (SFC). Ela também descreve um método textual chamado texto estruturado, uma linguagem de programação estruturada em blocos cuja sintaxe se assemelha à linguagem Pascal. Vale destacar que o Arduino também introduziu um método baseado em sua própria plataforma (que é, na verdade, uma adaptação de C) para programar a família de CLPs Arduino Opta. Outros fornecedores de CLPs começaram a se afastar de linguagens proprietárias, adotando linguagens como Python, Java e C++.

Os métodos baseados em texto estruturado têm ganhado popularidade entre organizações que buscam tornar seus processos de manufatura compatíveis com o IIoT (Internet Industrial das Coisas). O IIoT — seja conectado à internet ou a redes privadas de longa distância — oferece vantagens que podem atrair muitos fabricantes (embora também traga certos riscos) em relação às tecnologias tradicionais de automação fabril não conectadas em rede.

Com o avanço do IIoT, os CLPs modernos agora incluem recursos avançados de rede, permitindo fácil conexão à internet e comunicação com outros dispositivos no ecossistema IIoT. Isso inclui suporte a diversos protocolos de comunicação, como MQTT, AMQP e OPC UA, que são essenciais para conectividade em nuvem em tempo real e troca de dados. Esses recursos são desejáveis por várias razões, como integração com sistemas de planejamento de recursos empresariais (ERP), criação de gêmeos digitais, manutenção preditiva e monitoramento remoto.

Artigo escrito por Michael Parks  e publicado no blog da Mouser Electronics: Coding for Automation: Programming a PLC | Bench Talk

Traduzido pela Equipe Embarcados. Visite a página da Mouser Electronics no Embarcados

Comentários:
Notificações
Notificar
0 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Home » Hardware » Programação para Automação: Programando um CLP

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: