[论文解读] PLCverif: Status of a Formal Verification Tool for Programmable Logic Controller
PLCverif 是一个用于可编程逻辑控制器(PLCs)的开源形式化验证工具,可自动化将 PLC 代码转换为形式化模型,并利用 CBMC 和 Theta 等工具进行模型检查。它通过断言和基于模式的需求规范提升了易用性,支持多种 PLC 语言(西门子、部分施耐德),并通过 CFA 简化、抽象化和反例分析提升了性能,显著助力安全关键型工业控制系统的验证。
Programmable Logic Controllers (PLC) are widely used for industrial automation including safety systems at CERN. The incorrect behaviour of the PLC control system logic can cause significant financial losses by damage of property or the environment or even injuries in some cases, therefore ensuring their correct behaviour is essential. While testing has been for many years the traditional way of validating the PLC control system logic, CERN developed a model checking platform to go one step further and formally verify PLC logic. This platform, called PLCverif, first released internally for CERN usage in 2019, is now available to anyone since September 2020 via an open source licence. In this paper, we will first give an overview of the PLCverif platform capabilities before focusing on the improvements done since 2019 such as the larger support coverage of the Siemens PLC programming languages, the better support of the C Bounded Model Checker backend (CBMC) and the process of releasing PLCverif as an open-source software.
研究动机与目标
- 为解决传统测试在验证复杂 PLC 逻辑方面的局限性,特别是针对无法进行完全测试的安全关键系统。
- 通过自动化将 PLC 代码转换为形式化模型,降低 PLC 开发人员使用形式化验证的门槛。
- 通过抽象化和优化技术缓解模型检查中的状态空间爆炸问题。
- 通过支持断言和自然语言模式的需汏述方式,以及提供可操作的反例分析,提升易用性。
- 通过以开源软件形式发布 PLCverif 并采用可扩展的架构,推动形式化验证在工业自动化中的广泛应用。
提出的方法
- 将 PLC 程序(以结构化文本、梯形图、功能块图表示)解析为控制流自动机(CFA),一种基于控制流的形式化中间表示。
- 支持两种需求规范方法:嵌入式断言(例如 //#ASSERT)和带占位符的基于模式的模板,用于时序逻辑转换。
- 应用 CFA 简化技术以简化模型并减少状态空间,提升验证可行性。
- 与外部模型检查器(CBMC、Theta 和 ESBMC)集成,以执行时序逻辑属性的形式化验证。
- 实现抽象策略,如对输入的非确定性建模和函数抽象,以支持对大型 PLC 系统的迭代验证。
- 提供反例分析,以突出显示导致属性违反的代码位置,提升可调试性。
实验结果
研究问题
- RQ1如何使 PLC 程序的形式化验证对缺乏形式方法专业知识的工业开发者更加易用?
- RQ2哪些技术能有效减少 PLC 模型检查中的状态空间爆炸问题,同时保持验证的正确性?
- RQ3如何通过自然语言模式或注释简化 PLC 工程师的需求规范,避免使用低级逻辑表达?
- RQ4通过抽象化、模型简化以及与现代 SMT 基模型检查器的集成,可实现哪些性能提升?
- RQ5迭代式与组合式验证策略能否有效应用于具有模块化结构的大规模 PLC 应用?
主要发现
- PLCverif 成功支持多种西门子 PLC 编程语言(SCL、LAD、FBD),并已添加对施耐基电气 PLC 的部分支持。
- 该平台已以 MIT 许可证发布为开源软件,支持社区贡献并推动更广泛的应用。
- 升级至 Java 11 并与最新版 Theta 模型检查器集成,显著提升了兼容性和性能。
- CFA 简化与抽象技术显著减少了验证时间和状态空间大小,使此前无法处理的用例得以验证。
- 反例分析现能突出显示相关代码段,通过聚焦潜在的根本原因,显著缩短调试时间。
- 针对基于 SMT 的模型检查器(如 ESBMC)和迭代验证策略的持续工作,显示出在扩展至更大、更复杂的 PLC 系统方面的潜力。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。