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模块与实时仿真机交换物理信号,被控对象模型运行在实时目标机上。

SIL 软件在环 测试脚本 用例/断言 PLC仿真运行时 CODESYS / PLCSIM 虚拟I/O映射 变量/内存区 被控对象 软件模型 全软件闭环 · 无需硬件 · 适合批量回归 HIL 硬件在环 测试上位机 激励/采集 真实PLC控制器 CPU + I/O模块 实时仿真机 被控对象模型 物理I/O 4-20mA/24V 硬件闭环 · 实时约束 · 适合安全确认与通信验证

三、常用仿真工具及适用场景

不同工具在仿真类型、编程标准、实时能力和集成方式上各有侧重。选型时需结合项目使用的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并非互斥,而是形成分层验证路径。典型流程如下:

  1. 代码提交触发SIL回归:CI流水线自动拉取PLC代码,在CODESYS Simulation或OpenPLC中运行测试用例,验证逻辑正确性。
  2. SIL通过后生成候选版本:将通过的代码打包,部署到HIL测试台架。
  3. HIL验证实时性与硬件交互:通过PLCSIM Advanced或真实PLC,验证通信协议、I/O响应和故障处理。
  4. 结果回写与报告生成:将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作为关键版本确认,形成“快筛+深验”的测试策略。

掌握仿真类型与工具特性后,下一步需要将其嵌入持续集成流水线,设计可重复、可追溯的回归测试用例,并建立仿真环境与真实硬件之间的一致性校验机制。