← Últimos artigos
💬 NLP

ESBMC-PLC: Formal Verification of IEC 61131-3 Ladder Diagram Programs Using SMT-Based Model Checking

Este artigo apresenta o ESBMC-PLC, o primeiro verificador formal de código aberto que suporta nativamente programas de Diagrama de Escada (Ladder Diagram) da norma IEC 61131-3 ao traduzi-los em uma representação intermediária para verificação de modelos baseada em SMT, verificando com sucesso propriedades de segurança e detectando bugs em diversos benchmarks industriais, ao mesmo tempo em que aborda lacunas de pesquisa fundamentais na área.

Autores originais: Pierre Dantas, Lucas Cordeiro, Waldir Junior

Publicado 2026-06-16
📖 5 min de leitura🧠 Leitura aprofundada

Autores originais: Pierre Dantas, Lucas Cordeiro, Waldir Junior

Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo

Imagine uma fábrica onde máquinas gigantes, misturadores químicos e sinais de trem são controlados por um cérebro minúsculo e incansável chamado PLC (Controlador Lógico Programável). Essas máquinas funcionam com base em um tipo especial de manual de instruções chamado Diagrama de Escada (Ladder Diagram). Pense nisso como o desenho de uma escada onde cada "degrau" é uma regra: "Se a luz vermelha estiver acesa E o botão for pressionado, então ligue o motor".

Por décadas, engenheiros escreveram essas regras desenhando-as, não digitando código. Isso tornou muito difícil para os "inspetores de segurança" modernos (ferramentas de verificação formal) checarem se as regras eram perfeitas, porque os inspetores só entendiam código digitado, não desenhos.

Este artigo apresenta o ESBMC-PLC, uma nova ferramenta que atua como um tradutor universal e um inspetor de segurança super rigoroso, tudo em um só.

Veja como ele funciona, usando analogias simples:

1. O Tradutor (A "Pedra de Roseta")

Antes desta ferramenta, você não conseguia pedir a um computador para verificar um desenho. O ESBMC-PLC pega o "Diagrama de Escada" gráfico (o desenho) e o traduz instantaneamente para uma linguagem que o computador entende (um código intermediário baseado em texto).

  • A Analogia: Imagine que você tem uma receita escrita em um caderno de esboços com desenhos dos ingredientes. O ESBC-PLC é o chef que olha para as imagens e escreve instantaneamente as instruções exatas em texto: "Adicione 2 xícaras de farinha, depois mexa". Agora, o computador pode ler a receita.

2. O Simulador (O "Loop de Viagem no Tempo")

Um PLC não roda apenas uma vez; ele roda em um loop, verificando sensores e alterando saídas milhares de vezes por segundo.

  • A Analogia: A maioria das verificações de segurança olha para um único momento no tempo. O ESBMC-PLC é como um simulador de viagem no tempo que executa o "dia" da fábrica repetidamente. Mas, em vez de apenas reproduzir um dia específico, ele simula todos os dias possíveis de uma só vez. Ele pergunta: "E se o sensor quebrar? E se o botão for pressionado duas vezes? E se a energia oscilar?" Ele verifica todas as combinações de eventos para ver se um desastre pode acontecer.

3. A Prova "Ilimitada" (A "Garantia de Para Sempre")

As ferramentas antigas só podiam verificar um número limitado de etapas (como verificar os primeiros 100 dias de vida de uma fábrica). Se um erro acontecesse no dia 101, elas o perderiam.

  • A Analogia: O ESBMC-PLC usa um truque matemático especial chamado k-indução. Em vez de contar os dias um por um, ele prova uma regra que diz: "Se a fábrica estiver segura hoje, e as regras forem seguidas, ela estará segura amanhã, no dia seguinte e para sempre". Ele oferece uma garantia de para sempre de que a máquina nunca irá falhar, desde que as regras sejam seguidas.

4. A Linguagem "Sem Lógica" (O "Checklist em Linguagem Comum")

Normalmente, para pedir a um computador que verificasse a segurança, era necessário conhecer lógica matemática complexa (lógica temporal).

  • A Analogia: O ESBMC-PLC permite que os engenheiros escrevam regras de segurança em um simples checklist YAML (como uma lista de tarefas).
    • Em vez de: "Para todo tempo t, se A é verdadeiro, então B deve ser falso."
    • Você escreve: "O motor e o interruptor de reversão nunca devem estar ligados ao mesmo tempo."
      A ferramenta entende essa linguagem comum e verifica isso automaticamente.

O Que Eles Descobriram?

Os autores testaram esta ferramenta em 13 programas de fábrica diferentes, variando de controles de motores simples a semáforos complexos e bombas de água. Eles usaram programas de fornecedores do mundo real (como CONTROLLINO e MathWorks) que não foram projetados para serem testados, apenas para ver se a ferramenta conseguiria lidar com eles.

  • Os Resultados:
    • 100% de Precisão: Identificou corretamente todos os programas seguros e todos os programas inseguros.
    • Encontrou Bugs Ocultos: Encontrou 8 bugs específicos que os testes padrão não detectaram. Por exemplo, encontrou um cenário onde um botão de parada de emergência desligava a máquina, mas falhava em resetar um temporizador, fazendo com que a máquina reiniciasse imediatamente quando o botão fosse solto.
    • Velocidade: Verificou todos esses programas em menos de 60 milissegundos (mais rápido que um piscar de olhos humano).

A Conclusão

Este artigo apresenta a primeira ferramenta de código aberto que pode pegar um desenho industrial padrão (Diagrama de Escada), traduzi-lo e provar matematicamente que ele é seguro para sempre. Ela preenche a lacuna entre a forma gráfica tradicional que os engenheiros usam para projetar máquinas e a forma matemática de alta tecnologia que os computadores usam para verificar a segurança.

Nota Importante: O artigo afirma que isso funciona para as partes "principais" da programação industrial (lógica booleana, temporizadores, contadores). Ele ainda não lida com recursos complexos como números de ponto flutuante ou matrizes de dados avançadas, mas para a grande maioria da lógica de segurança crítica, ele funciona perfeitamente e está pronto para uso hoje.

Afogado em artigos na sua área?

Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.

Experimentar Digest →