← Últimos artigos
💻 computer science

ESBMC-PLC+: A Unified IEC~61131-3 Formal Verification Framework as a PLCverif Successor

Este artigo introduz o ESBMC-PLC+, um framework de código aberto unificado que estende o backend do ESBMC para suportar todas as principais linguagens IEC 61131-3 (incluindo Diagrama de Escada e Texto Estruturado) e verificação ilimitada, superando assim as limitações de formato de entrada e as restrições de prova limitada de seu antecessor, o PLCverif, ao superar significativamente o nuXmv na verificação de programas intensivos em temporizadores.

Autores originais: Pierre Dantas, Lucas Cordeiro, Waldir Junior

Publicado 2026-06-24
📖 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 um Controlador Lógico Programável (CLP) como o cérebro de uma máquina de fábrica. É um computador industrial robusto que diz a robôs, válvulas e luzes quando se mover, parar ou mudar de cor. Essas máquinas funcionam em um ciclo de repetição rigoroso chamado "ciclo de varredura" (scan cycle), verificando sensores e tomando decisões milhares de vezes por segundo. Como essas máquinas controlam coisas como usinas nucleares e sinais de trens, um único erro no código pode ser catastrófico.

A verificação formal é como um revisor matemático superinteligente que verifica cada cenário possível que a máquina possa enfrentar para garantir que ela nunca trave ou aja de forma perigosa.

Por anos, a melhor ferramenta de código aberto para este trabalho foi chamada de PLCverif. Pense no PLCverif como um mecânico altamente qualificado que é ótimo em consertar carros (código baseado em texto), mas se recusa a olhar sob o capô de motocicletas (diagramas de escada/ladder) ou não possui as ferramentas certas para provar que o motor funcionará para sempre sem superaquecer (provas ilimitadas/unbounded).

Este artigo apresenta o ESBMC-PLC+, um novo "super-mecânico" atualizado, projetado para substituir e melhorar o PLCverif. Aqui está o que ele faz, explicado de forma simples:

1. Falando Todas as Línguas (O Framework Unificado)

Programadores de CLP falam três linguagens principais:

  • Diagrama de Escada (Ladder Diagram - LD): Parece um diagrama de circuito elétrico com degraus e trilhos. É a linguagem mais popular em fábricas (como o "inglês" da indústria).
  • Texto Estruturado (Structured Text - ST): Parece código de computador padrão (semelhante a Pascal ou C).
  • LD Gráfico: A versão visual dos Diagramas de Escada.

O Problema: A ferramenta antiga (PLCverif) só conseguia ler a linguagem "Texto Estruturado". Se um engenheiro tivesse um Diagrama de Escada, ele precisava reescrevê-lo manualmente para texto, o que é lento e propenso a erros. Além disso, se o Diagrama de Escada tivesse "blocos de função" complexos (como temporizadores ou contadores), a ferramenta antiga não conseguia lidar com eles de forma alguma.

A Solução: O ESBMC-PLC+ é um tradutor universal. Ele pode ler nativamente as três linguagens.

  • Para o Texto Estruturado, ele usa um compilador de código aberto confiável (MATIEC) para traduzir o código em um formato que o mecanismo de verificação entenda.
  • Para os Diagramas de Escada, ele possui um novo "decodificador" que agora consegue entender temporizadores e contadores complexos que antes eram ignorados.

2. A Garantia do "Para Sempre" (Provas Ilimitadas/Unbounded)

Imagine que você está testando uma ponte.

  • Verificação Limitada (O Jeito Antigo): Você dirige um caminhão sobre a ponte 100 vezes. Se ela aguentar, você diz: "Provavelmente é segura". Mas você não sabe o que acontece na 101ª vez, ou se a ponte desmorona após 1.000 anos. Isso é o que o principal mecanismo da ferramenta antiga (CBMC) fazia.
  • Provas Ilimitadas (O Novo Jeito): O ESBMC-PLC+ usa uma técnica chamada k-indução. Em vez de apenas verificar 100 vezes, ele usa matemática para provar que, se a ponte aguentar os primeiros segundos, ela aguentará por infinito. Ele garante que a máquina nunca falhará, não importa quanto tempo ela funcione.

3. O Demônio da Velocidade (SMT vs. BDD)

O artigo compara o ESBMC-PLC+ contra o mecanismo "ilimitado" da ferramenta antiga (nuXmv), que utiliza um método chamado BDD (Diagramas de Decisão Binária).

  • A Analogia: Imagine que você tem uma biblioteca gigante de livros (todos os estados possíveis da máquina).
    • A Ferramenta Antiga (BDD) tenta ler cada um dos livros, um por um. Se a biblioteca for enorme (porque a máquina tem muitos temporizadores ou contadores), ela fica sobrecarregada e para de funcionar (timeout).
    • O ESBC-PLC+ (SMT) usa um índice mágico. Em vez de ler todos os livros, ele pede a um bibliotecário superinteligente (um solver SMT) para verificar a lógica de toda a biblioteca de uma só vez.
  • O Resultado: Em programas com temporizadores, o ESBMC-PLC+ foi de 400 a 2.000 vezes mais rápido que a ferramenta antiga. Em alguns casos, a ferramenta antiga desistia após 2 minutos, enquanto o ESBMC-PLC+ terminava a prova em menos de um segundo.

4. O Que Ele Realmente Consertou

O artigo destaca duas "lacunas" específicas que ele fechou:

  1. O Texto Ausente: Ele adicionou suporte para programas em Texto Estruturado (ST), que a ferramenta antiga lidava mal ou de forma inexistente para código padrão IEC.
  2. Os Temporizadores "Fantasmas": Nos Diagramas de Escada visuais, havia "blocos de função" (como temporizadores que esperam 5 segundos antes de ligar uma luz). A ferramenta antiga ignorava esses blocos, efetivamente fingindo que eles não existiam. Isso levava a resultados "vacuosos" — onde a ferramenta dizia "Seguro!" apenas porque não estava olhando para as partes perigosas. O ESBMC-PLC+ agora modela esses temporizadores corretamente, garantindo que a verificação de segurança seja real, e não um falso positivo.

Resumo

ESBMC-PLC+ é uma nova ferramenta de código aberto que atua como um tradutor universal para o código de máquinas industriais. Ele fala todas as principais linguagens que os engenheiros usam, lida com diagramas visuais complexos com temporizadores e contadores, e utiliza um mecanismo matemático mais rápido e inteligente para provar que as máquinas serão seguras para sempre, não apenas durante um curto teste. Ele foi projetado para ser o sucessor direto e superior ao padrão anterior da indústria, o PLCverif.

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 →