BLOCK-SIM: 博途程序块仿真工具
BLOCK-SIM 是面向 TIA Portal PLC 程序块的块级仿真与单元测试工具。
博途PLC工程智能体 | 梯形图转SCL | 自然语言生成梯形图 | 自然语言生成SCL | 逆向生成程序块文档 | 梯形图在线查看 | 博途编程文档MCP | AI模型价格对比 | AI工具导航 | ONNX模型库 | Vibe Coding教程 | PLC在线仿真器 | Tripo 3D | Meshy AI
PLC 程序开发完成后,如何验证一个 FB 或 FC 的逻辑是否正确?
传统 PLC 开发通常需要将整个程序下载到 PLC 或 PLCSIM 中,然后通过修改输入、观察输出的方式进行测试。
但对于单个程序块的逻辑验证来说,这种方式往往过于复杂。
如果只是想验证一个电机控制 FB、一个分拣逻辑 FC,或者一个状态机程序块,真的有必要启动完整的 PLC 仿真环境吗?
在软件开发中,我们通常会使用 Unit Test(单元测试),直接对一个函数或模块进行测试。
PLC 程序同样需要这样的能力。
BLOCK-SIM 就是面向 TIA Portal PLC 程序块的块级仿真与单元测试工具。
它针对单个 OB、FB、FC 进行逻辑仿真,通过构造输入、执行程序、检查输出,对 PLC 程序块进行自动化验证。
BLOCK-SIM 不是 PLCSIM,也不是完整 PLC 系统仿真器。
它解决的是 PLC 程序块的单元测试问题。
1、BLOCK-SIM 解决的问题
在实际 PLC 开发中,我们经常需要验证这样的程序:
- 一个电机控制 FB 是否正确;
- 一个自动门控制 FC 是否正确;
- 一个状态机是否能够正确切换;
- 一个联锁逻辑是否符合要求;
- 一个计数器逻辑是否正确;
- 一个故障处理程序是否能够正确复位;
- 修改程序后,原来的逻辑是否仍然正常。
这些问题的共同特点是:
我们只需要验证一个程序块,而不是整个 PLC 项目。
例如:
MotorControl
├── Start
├── Stop
├── Enable
├── Fault
├── Reset
└── MotorRunning我们真正想测试的是:
输入条件
↓
MotorControl FB
↓
输出结果而不是:
整个 PLC 项目
↓
硬件组态
↓
CPU
↓
I/O
↓
通信
↓
整个程序这就是 BLOCK-SIM 与传统 PLC 仿真工具的区别。
2、什么是块级仿真?
BLOCK-SIM 的核心概念是:
Block-level Simulation —— 程序块级仿真。
它把一个 PLC 程序块作为独立的测试对象。
例如:
Test Case
↓
┌─────────────┐
│ Inputs │
└──────┬──────┘
↓
┌─────────────┐
│ FB / FC │
│ Program │
└──────┬──────┘
↓
┌─────────────┐
│ Outputs │
└─────────────┘测试只关注这个程序块本身。
因此不需要建立完整的 PLC 硬件环境,也不需要连接真实 PLC。
3、BLOCK-SIM 与 PLCSIM 有什么区别?
BLOCK-SIM 和 PLCSIM 面向的是不同的问题。
3.1 PLCSIM:仿真 PLC
PLCSIM 的核心目标是让 PLC 程序在一个虚拟 PLC 环境中运行。
它更适合验证:
- PLC 程序整体运行;
- OB 调度;
- PLC 运行状态;
- I/O 行为;
- 与 HMI 等系统的交互;
- 更接近真实 PLC 的系统级测试。
其测试对象通常是:
整个 PLC
↓
OB
FB
FC
DB
I/O
...3.1 BLOCK-SIM:测试程序块
BLOCK-SIM 则把测试范围缩小到一个程序块:
Test Case
↓
FB
↓
Expected Output它更接近软件开发中的:
Unit Test
↓
Function / Class
↓
Assertion因此两者并不是简单的竞争关系。
可以把它们理解成:
| BLOCK-SIM | PLCSIM | |
|---|---|---|
| 核心定位 | 程序块级仿真 / 单元测试 | PLC 系统级仿真 |
| 测试对象 | OB / FB / FC | PLC 项目 / CPU |
| 是否需要完整 PLC 环境 | 不需要 | 通常需要 |
| 硬件组态 | 不需要 | 可以涉及 |
| I/O 系统 | 作为测试输入输出 | 可以进行系统级模拟 |
| 单个 FB/FC 快速测试 | 适合 | 相对复杂 |
| 自动化单元测试 | 核心场景 | 不是主要定位 |
| 回归测试 | 适合 | 可以实现,但粒度更大 |
| AI 生成代码验证 | 非常适合 | 更偏系统验证 |
| 系统级 PLC 仿真 | 不是目标 | 核心场景 |
因此:
PLCSIM 是 PLC Simulator,BLOCK-SIM 是 PLC Block Simulator。
一个关注 PLC 系统,一个关注 程序块。
4、自动设计仿真用例
BLOCK-SIM 最核心的能力之一,是根据 PLC 程序块自动设计测试用例。
传统的单元测试需要工程师自己分析程序,然后手工设计:
- 测试输入;
- 初始状态;
- 输入变化;
- 执行周期;
- 预期输出;
- 边界条件;
- 异常条件。
对于一个复杂的 FB 或 FC,这项工作本身就可能非常耗时。
BLOCK-SIM 可以分析程序块的输入、输出以及内部控制逻辑,自动设计适合当前程序的仿真测试用例。
对于包含计时、锁存、联锁等逻辑的程序,也可以根据程序结构设计相应的测试场景。
因此,工程师不需要从零开始考虑:
“这个 FB 到底应该怎么测试?”
而是可以让 BLOCK-SIM 先根据程序自动生成一组测试用例,再由工程师检查、调整和执行。
5、如何安装 BLOCK-SIM
打开 BLOCK-SIM 产品页面:
根据当前使用的 TIA Portal 版本下载对应的 Add-In 插件。
目前支持的 TIA Portal 版本以产品页面提供的版本为准。
下载完成后,解压插件安装包。
找到对应版本的 .addin 文件,并将其安装到 TIA Portal 的 AddIns 目录。
以 TIA Portal V19 为例:
C:\Program Files\Siemens\Automation\Portal\V19\AddIns安装完成后重新启动 TIA Portal。
打开 Options → Add-ins,确认 BLOCK-SIM 已经出现在 Add-ins 列表中。
5、使用方法
BLOCK-SIM 需要配合 TIA Portal Add-In 插件使用。
5.1 下载插件
首先下载插件压缩包:博途V19插件下载链接
下载完成后,将压缩包保存到本地。
5.2 安装 TIA Portal Add-In
下载完成后,解压插件安装包。
找到其中的 *.addin 文件,并将其复制到对应 TIA Portal 版本的 AddIns 目录。
例如 TIA Portal V19:
C:\Program Files\Siemens\Automation\Portal\V19\AddIns完成复制后,TIA Portal 即可识别该插件。
5.3 激活插件
启动 TIA Portal,并打开需要分析的项目。
在 TIA Portal 的 Add-ins 面板中找到 REVERSE-DOCS 插件,并按照插件菜单完成激活。

5.4 选择程序块
在 TIA Portal 项目树中选择需要分析的程序块。在目标程序块上点击鼠标右键,在弹出的菜单中选择【逆向生成程序块文档】:

工具会读取当前程序块进行仿真。
7、BLOCK-SIM 适合什么场景?
BLOCK-SIM 主要适用于PLC 程序块的单元测试和回归测试,例如:
- 新开发 FB/FC 的逻辑验证;
- AI 生成 PLC 程序后的自动验证;
- 电机、阀门、气缸等控制模块测试;
- 状态机和顺序控制测试;
- 联锁、许可和故障逻辑测试;
- 计数器、定时器等功能测试;
- 修改程序后的回归测试;
- PLC 程序库开发和测试。
而当需要验证完整 PLC 项目、CPU 运行环境、硬件组态、I/O 或系统级交互时,则可以进一步使用 PLCSIM 等系统级仿真工具。
8、结束语
随着 PLC 程序越来越复杂,传统的“编程 → 下载 → 调试”方式也面临越来越高的验证成本。
在软件工程中,一个函数可以拥有自己的 Unit Test;同样,一个 PLC 的 FB、FC 也应该能够被独立测试。
BLOCK-SIM 希望做的,就是为 PLC 程序补上这一层能力。
它不试图替代 PLCSIM,也不负责模拟完整的 PLC 硬件和控制系统,而是专注于更小、更快、更适合自动化测试的程序块级仿真。
从自动设计测试用例,到执行块级仿真,再到 PASS/FAIL 验证,BLOCK-SIM 让 PLC 程序可以像软件模块一样被测试、验证和回归。
特别是在 AI 开始参与 PLC 编程之后,这种能力变得更加重要:
AI 负责生成程序,BLOCK-SIM 负责验证程序。
最终,我们希望 PLC 开发也能够逐步形成:
需求
↓
AI / 工程师编程
↓
BLOCK-SIM 单元测试
↓
PLCSIM 系统测试
↓
现场部署让更多 PLC 程序在进入真实设备之前,先经过充分的自动化验证。
插件官网:TIA Portal 程序块仿真工具