A padronização é um fator chave para aumentar a eficiência de sistemas de automação industrial. Neste contexto, a norma IEC 61131-3 define diretrizes e características essenciais para o desenvolvimento de aplicações para controladores programáveis. Essa padronização global permite que dispositivos de diferentes fabricantes operem em harmonia e com alto desempenho.
Neste artigo, exploramos detalhes da norma e como ela dá mais agilidade à programação de CLPs, impulsionando a inovação no setor industrial.
O que é a norma IEC 61131-3?
A IEC 61131-3 é uma norma internacional que padroniza o tipo de linguagem que deve ser utilizado para a programação de controladores. Mas o que isso significa na prática?
IEC é a sigla para International Electrotechnical Commission (Comissão Eletrotécnica Internacional), uma organização global que prepara e publica normas internacionais para todas as tecnologias elétricas, eletrônicas e relacionadas. Essas normas são amplamente adotadas e seguidas em todo o mundo para garantir a interoperabilidade, segurança e desempenho dos produtos e sistemas eletromecânicos.
Imagine que você está gerenciando uma fábrica com vários equipamentos de diferentes fabricantes. Cada equipamento tem seu próprio controlador e, muitas vezes, seu próprio jeito de ser programado. Isso pode tornar a integração e a manutenção desses sistemas uma tarefa complicada e cara. A IEC 61131-3 surgiu para resolver esse problema.
A norma define cinco linguagens de programação padrão que podem ser usadas em qualquer CLP, independentemente do fabricante. Iremos identificar essas linguagens e explorar suas características únicas mais à frente.
Ao utilizar um CLP desenvolvido com base na norma, você pode programar e integrar equipamentos de diferentes fabricantes com muito mais facilidade, dando dinâmica e conectividade às suas aplicações.
Como é estruturada a norma IEC 61131-3
A IEC 61131 é uma norma abrangente dividida em várias partes, cada uma abordando diferentes aspectos dos controladores programáveis. A parte 3, conhecida como IEC 61131-3, é a mais relevante em termos de programação de CLPs.
Ela foca especificamente nas linguagens de programação e nos modelos de software, estabelecendo cinco linguagens padrão. Esse tipo de definição técnica garante que os sistemas sejam interoperáveis e que usuários possam trabalhar com diferentes fabricantes sem a necessidade de aprender novos métodos para cada equipamento que for integrar aos seus sistemas.
Veja também: O que é CLP e quando utilizá-lo?
A terceira parte da norma é estruturada em cinco seções principais que detalhamos abaixo:
Definições Gerais: a primeira seção da norma estabelece a terminologia comum que será usada ao longo do documento, garantindo uma base sólida para todos os usuários.
Hardware: nela são especificados os requisitos de hardware para os controladores programáveis, incluindo suas características físicas e funcionais. Ela assegura que os dispositivos sejam compatíveis com os padrões de desempenho e qualidade necessários para a automação industrial.
Linguagem de Programação: define as linguagens de programação padrão do documento, permitindo que técnicos e engenheiros programem diferentes CLPs usando as mesmas linguagens.
Diretrizes de Usuário: fornece orientações e práticas recomendadas para os usuários, ajudando a garantir a implementação eficaz e segura dos sistemas de automação. Inclui detalhes sobre design de programas, manutenção e solução de problemas.
Comunicação: aqui, a norma aborda os protocolos de comunicação que os CLPs devem suportar para garantir a interoperabilidade e a troca eficiente de informações entre dispositivos de diferentes fabricantes.
Além dessas cinco seções principais a norma ainda possui mais três seções extra, sendo uma reservada para novas informações e as duas seguintes:
Programação de controle fuzzy: essa seção aborda a programação de controle fuzzy (ou lógica nebulosa), permitindo que o CLP lide com incertezas e variabilidades em processos industriais de forma mais eficiente.
Diretrizes para Aplicação e Implementação de Linguagens de Programação: a seção fornece diretrizes detalhadas para a aplicação e implementação das linguagens de programação definidas na norma.
Elementos Comuns e Linguagens de Programação
Uma forma mais elegante de enxergar a norma é estruturando-a em informações sobre Elementos Comuns e diretivas para as Linguagens de Programação. Vamos entender como essa divisão pode ser realizada e olhar para estas áreas com mais detalhes.
Elementos Comuns definidos na IEC 61131-3
A norma IEC 61131-3 padroniza diversos elementos na programação de controladores programáveis para garantir consistência e interoperabilidade. Aqui estão os principais elementos comuns determinados pela norma e suas breves explicações:
Tipagem de Dados
Nesta seção são definidos os tipos de dados utilizados em ambientes de programação. A tipagem de dados é usada para definição do tipo de qualquer parâmetro usado, prevenindo erros na fase inicial de desenvolvimento do projeto. Isto evita, por exemplo, a divisão de uma data por um inteiro.
Os tipos de dados mais comuns são Boolean, Integer, Real, Byte e Word, mas também Date, Time_of_Day e String. Baseado nisto, é também possível definir tipos de dados pessoais, chamados de tipos derivados. Desta forma, pode-se definir uma entrada analógica como tipo de dado e reutilizá-la inúmeras vezes.
Variáveis
Variáveis são associadas a endereços explícitos de hardware, como entradas e saídas. Desta forma, cria-se um alto nível de independência do hardware, proporcionando a reutilização do software.
O escopo das variáveis é normalmente limitado à unidade de organização nas quais elas são declaradas, o chamado escopo local. Isto significa que elas podem ser reutilizadas em outras partes sem nenhum conflito, eliminando dados corrompidos pelo programa, outra fonte de erros muito comum. Porém, se as variáveis tiverem escopo global, estas devem ser declaradas como tal.
Blocos Funcionais (Function Blocks)
O conceito de blocos funcionais é um dos mais importantes da norma IEC61131-3. Um bloco funcional é formado por componentes reutilizáveis que encapsulam uma função específica ou um conjunto de operações. Eles permitem que os usuários reutilizem códigos existentes e mantenham seus programas organizados.
As principais características dos blocos funcionais são que estes possuem um conjunto de dados, os quais podem ser alterados por um algoritmo interno. Somente o conjunto de dados é mantido na memória para uma determinada instância do bloco funcional.
Inclusive, blocos funcionais podem ser utilizados para a criação de outros blocos funcionais, chamados de blocos derivados. Isso aumenta ainda mais a capacidade de reutilização do software desenvolvido.
Funções
Funções são elementos de software que não possuem persistência, existindo apenas em tempo de execução. Portanto, sempre produzem o mesmo resultado para o mesmo conjunto de entradas. Elas têm apenas uma saída, ao contrário dos Blocos de Funções que podem ter várias. O resultado pode ser um tipo de dado simples de múltiplos elementos, como vetores e estruturas.
Programas
Tipicamente, um programa consiste em um código de execução capaz de trocar dados através de conexões de software. Um programa pode acessar as variáveis do CLP e se comunicar com outros programas.
Segundo a norma, “programa é uma montagem lógica de todos os elementos de linguagens e construções necessárias para o processamento de sinal requerido para o controle de uma máquina ou processo por um sistema controlador programável”.
A execução de diferentes partes de um programa pode ser controlada usando Tasks.
Tarefas (Tasks)
Uma Tarefa, ou Task, é um mecanismo de escalonamento muito útil para sistemas de tempo real, que executa Programas ou Blocos funcionais periodicamente ou em resposta a um evento, permitindo a execução de programas em diferentes taxas.
As tasks podem ser preemptivas, utilizadas em sistemas que devem apresentar comportamento determinístico, e não-preemptivas, para aplicações com intervalo variado entre acionamentos.
Configuração
Uma configuração é específica para um sistema de controle particular, incluindo a disposição do hardware, recursos de processamento, endereçamento de memória para I/O e demais capacidades do sistema. Porém, em sistemas mais complexos podem existir diversas configurações ou uma configuração com diversos CLPs, as quais interagem entre si através de interfaces de comunicação padronizadas pela norma.
Recursos
Um recurso é basicamente qualquer elemento com capacidade de processamento, responsável pela execução dos programas. Uma característica dos recursos é que eles podem ser tanto artifícios de software quanto de hardware. Cada recurso deve ser independente, não podendo ser influenciado por outros recursos.
Interfaces de Comunicação
A IEC 61131-3 também padroniza as interfaces de comunicação, permitindo que os CLPs se conectem e troquem dados com outros dispositivos e sistemas de forma eficiente e confiável. As interfaces podem ser do tipo Entrada/Saída, para acesso a dispositivos de campo, Comunicação, para interação com CLPs, IHMs e outros equipamentos inteligentes, ou de Sistema, para comunicação interna entre o hardware de diferentes partes do próprio CLP.
As 5 linguagens de programação definidas na IEC 61131-3
Como já mencionamos anteriormente, a IEC 61131-3 define cinco linguagens de programação padrão para garantir a uniformidade e a interoperabilidade de programas desenvolvidos para controladores programáveis. Cada linguagem tem suas próprias características e é adequada para diferentes tipos de aplicações.
Abaixo, trazemos uma rápida explanação sobre as linguagens de programação padronizadas pela norma e para quais tipos de aplicação cada uma é especialmente adequada.
Ladder Diagram (LD)
Ladder é uma linguagem gráfica que se assemelha a diagramas elétricos usados em esquemas de relés. Sua principal característica é a facilidade de compreensão para técnicos e engenheiros elétricos, pois utiliza símbolos familiares de contatos e bobinas. Essa linguagem é ideal para aplicações de controle lógico e sequenciamento simples.
Function Block Diagram (FBD)
FDB também é uma linguagem gráfica, mas usa blocos para representar funções e a interconexão entre elas. Sua vantagem é permitir a visualização clara do fluxo de dados e das relações entre diferentes funções. FBD é especialmente adequada para aplicações que envolvem processamento de sinais, controle de processos e operações matemáticas.
Structured Text (ST)
ST é uma linguagem textual de alto nível, semelhante a linguagens de programação como C++. Ela oferece uma sintaxe poderosa para implementar algoritmos complexos e lógica avançada. ST é ideal para cálculos matemáticos, manipulação de dados e algoritmos complexos, oferecendo uma abordagem mais flexível e detalhada para a programação de CLPs.
Instruction List (IL)
IL é uma linguagem textual de baixo nível, semelhante à linguagem de montagem. Ela usa comandos simples e diretos, proporcionando um controle detalhado do hardware. IL é adequada para tarefas que requerem eficiência e controle preciso em nível de hardware, sendo a escolha preferida quando a performance é uma preocupação crítica.
Sequential Function Chart (SFC)
SFC é uma linguagem gráfica que organiza processos em etapas sequenciais e ações. Ela divide o processo em etapas claras e ações associadas, facilitando o controle de processos sequenciais complexos. A linguagem é ideal para controle de processos industriais onde as operações seguem uma sequência bem definida, permitindo uma programação organizada e sistemática.
Cada uma dessas linguagens oferece vantagens específicas e pode ser escolhida com base nas necessidades particulares da aplicação. A padronização pela IEC 61131-3 permite que os usuários escolham a linguagem mais adequada sem se preocupar com a compatibilidade entre CLPs de diferentes fabricantes.
Veja também: Começando a programar CLP Nexto.
Nexto, um CLP baseado na IEC 61131-3
Moderna e de alta velocidade, a Série Nexto de controladores programáveis utiliza tecnologia de ponta para proporcionar confiabilidade e conectividade, contribuindo para o aumento de produtividade do seu negócio. Desenvolvidos com base nas especificações de linguagem de programação previstas na norma internacional IEC 61131-3, os CLPs da Nexto têm capacidade de executar módulos criados em diferentes linguagens na mesma aplicação.
Os produtos da família são programados através do software MasterTool IEC XE, recurso que também possibilita a conversão de aplicações entre as linguagens gráficas e reutilizá-las em outras versões do software. Essa capacidade dá ao usuário uma poderosa maneira de organizar a sua aplicação, além de reutilizar código desenvolvido em aplicações anteriores.
Conheça mais sobre os controladores programáveis Nexto e descubra como sua flexibilidade e alta versatilidade permitem que os produtos da série possam ser utilizados nos mais variados processos da indústria internacional.