3. PLC仿真技术概述
在PLC仿真回归测试与流水线体系中,仿真技术是支撑“快速验证、低成本迭代、持续集成”的核心基础。理解仿真类型的差异与工具链的适用边界,决定了后续测试用例设计、流水线搭建和回归策略的有效性。本节从仿真类型、工具选型、适用场景三个维度展开,帮助建立清晰的仿真技术认知框架。
一、核心原理:仿真类型的两条主线
PLC仿真按“被测对象与真实硬件的耦合程度”可分为两大类:软件在环(SIL,Software-in-the-Loop)与硬件在环(HIL,Hardware-in-the-Loop)。二者的本质区别在于:控制逻辑运行在何处,以及I/O信号如何闭环。
- SIL:PLC程序运行在PC或服务器上的仿真运行时中,I/O通过软件模拟或虚拟映射完成。无需真实PLC硬件,适合逻辑验证、算法调试、批量回归。
- HIL:真实PLC控制器(或PLC运行时)与仿真被控对象模型通过I/O板卡或总线连接,形成硬件闭环。适合验证实时性、电气特性、通信协议和故障响应。
关键判断:SIL回答“逻辑对不对”,HIL回答“在真实硬件和实时约束下还对不对”。回归测试流水线通常以SIL为主力,HIL用于关键版本或安全相关功能的确认。
二、仿真类型对比与信号链结构
下图展示了SIL与HIL在信号链上的结构差异。SIL中,测试脚本直接驱动仿真运行时,I/O以变量或虚拟点形式存在;HIL中,真实PLC通过I/O模块与实时仿真机交换物理信号,被控对象模型运行在实时目标机上。
三、常用仿真工具及适用场景
不同工具在仿真类型、编程标准、实时能力和集成方式上各有侧重。选型时需结合项目使用的PLC品牌、编程标准(IEC 61131-3)、是否需要CI/CD集成以及预算约束。
| 工具 | 仿真类型 | 编程标准 | 核心优势 | 典型适用场景 |
|---|---|---|---|---|
| CODESYS Simulation | SIL | IEC 61131-3 | 与CODESYS开发环境无缝集成,支持虚拟PLC运行时 | 多品牌PLC逻辑验证、算法调试、批量回归 |
| TIA Portal PLCSIM | SIL / HIL | 西门子S7 | 与西门子生态深度绑定,PLCSIM Advanced支持HIL | 西门子S7-1200/1500项目仿真、通信测试 |
| OpenPLC | SIL | IEC 61131-3 | 开源免费,支持Modbus TCP/RTU,可运行于树莓派 | 教学实验、低成本原型验证、开源流水线集成 |
| Beremiz | SIL | IEC 61131-3 | 开源,支持多种运行时,图形化编程 | 开源PLC项目、跨平台逻辑验证 |
| PLCSIM Advanced | HIL | 西门子S7 | 支持虚拟PLC与真实I/O通信,API接口丰富 | 西门子HIL测试、CI/CD流水线集成 |
选型建议:若项目以西门子为主且需要HIL,优先PLCSIM Advanced;若追求开源和低成本,OpenPLC或Beremiz更合适;若需多品牌兼容和统一开发环境,CODESYS Simulation是首选。
四、方法流程:从SIL到HIL的回归测试路径
在实际回归测试流水线中,SIL与HIL并非互斥,而是形成分层验证路径。典型流程如下:
- 代码提交触发SIL回归:CI流水线自动拉取PLC代码,在CODESYS Simulation或OpenPLC中运行测试用例,验证逻辑正确性。
- SIL通过后生成候选版本:将通过的代码打包,部署到HIL测试台架。
- HIL验证实时性与硬件交互:通过PLCSIM Advanced或真实PLC,验证通信协议、I/O响应和故障处理。
- 结果回写与报告生成:将SIL和HIL结果汇总,生成回归测试报告,标记失败用例。
# 示例:SIL回归测试流水线片段(伪代码)
stages:
- name: sil_regression
tool: codesys_simulation
script: run_tests.py --suite regression --timeout 300
artifacts:
- test_report.xml
- name: hil_validation
tool: plcsim_advanced
script: hil_runner.py --config hil_config.yaml
depends_on: sil_regression
artifacts:
- hil_report.json
五、案例与场景:某包装线PLC回归测试
某包装线使用西门子S7-1500控制器,控制逻辑包含输送带启停、气缸动作和光电检测。团队在每次代码变更后执行以下回归流程:
- SIL阶段:使用TIA Portal PLCSIM运行逻辑测试,验证输送带联锁、气缸时序和急停逻辑,耗时约8分钟。
- HIL阶段:使用PLCSIM Advanced连接真实I/O模块,模拟光电传感器信号和气缸反馈,验证响应时间和故障诊断,耗时约25分钟。
- 结果:SIL发现逻辑错误3处,HIL发现通信超时1处,均在版本发布前修复。
常见误区:认为SIL通过即可直接发布。SIL无法覆盖实时性、电气特性和硬件故障场景,安全相关功能必须经过HIL验证。此外,SIL仿真运行时与真实PLC在扫描周期、内存映射上可能存在差异,需在测试用例中显式声明假设条件。
六、复盘与要点总结
本节的核心结论可归纳为三点:
- 仿真类型决定验证深度:SIL验证逻辑,HIL验证实时与硬件交互,二者互补而非替代。
- 工具选型匹配项目生态:西门子项目优先PLCSIM系列,开源项目可选OpenPLC或Beremiz,多品牌场景考虑CODESYS。
- 回归流水线分层执行:SIL作为快速门禁,HIL作为关键版本确认,形成“快筛+深验”的测试策略。
掌握仿真类型与工具特性后,下一步需要将其嵌入持续集成流水线,设计可重复、可追溯的回归测试用例,并建立仿真环境与真实硬件之间的一致性校验机制。