S7-1500 与 ET200MP 的组态控制通信(Configuration Control)功能实现详解(上)
在工业自动化场景中,设备硬件的灵活调整往往是工程师面临的一大挑战 —— 新增模块、调整模块顺序,甚至临时缺失部分模块时,是否必须重新组态硬件并下载程序?西门子的组态控制(Configuration Control)功能给出了否定答案。本文将结合西门子官方技术文档,详细讲解 S7-1500 中央机架与 ET200MP 分布式 I/O 如何实现这一灵活功能,帮助你在硬件变动时无需重新组态,轻松维持设备运行。
一、什么是组态控制功能?
简单来说,组态控制功能的核心是 “最大组态先行,实际组态自适应”:
- 先在 TIA 博途中组态一个 “最大硬件配置”(包含当前所有模块及未来可能添加的模块);
- 下载后,通过程序中的控制数据记录(Data Record 196) 告知设备实际安装的模块位置;
- 即使实际模块缺失或顺序变化,只要不超过最大组态范围,设备就能正常运行;后续补充模块时,无需重新组态或下载硬件配置。
这一功能极大提升了工业现场的灵活性,特别适合需要分期扩展、模块可能临时调整的场景。
二、S7-1500 中央机架的组态控制实现步骤
1. 前提条件
- 软件:STEP7 Professional V13 及以上(推荐 TIA Portal 最新版本);
- 硬件:CPU S7-1500 固件版本 V1.5 及以上。
2. 组态 “最大硬件配置”
在 TIA 博途中,按照 “当前已有模块 + 未来可能添加的模块” 规划最大组态。例如:
- 假设规划 10 个插槽(0-9),包含电源、CPU、DI/DQ 模块、计数模板、模拟量模块等(本例共组态了 10 个插槽,槽号为 0 至 9,模块依次为 PS25W 24VDC 电源,S7-1516CPU,两个 DI16/DQ16 X24VDC模块,PS25W 24VDC电源,TM Count 2X24V计数模板,DI 16X24VDC 模 块,DQ 16X24VDC模块,AI 8XU/IRTD/TC 模 拟量输入模板,AQ 8XU/I HS 模 拟量输出模板);
- 实际安装的模块可能只是其中一部分(如仅 CPU、模拟量输入 / 输出模块等),后续可逐步补充,(实际安装的硬件依次为:S7-1516CPU,AI 8XU/IRTD/TC 模拟量输入模板,AQ 8XU/I HS 模拟量输出模板,TM Count 2X24V 计 数模板,PS25W 24VDC 电源,DI 16X24VDC 模 块,DQ 16X24VDC 模块)。
关键:最大组态需覆盖所有可能的硬件扩展,实际组态需是最大组态的 “子集”。
3. 激活组态控制功能
在硬件组态中,双击 S7-1500 CPU 打开属性窗口,按路径 “属性”→“常规”→“组态控制”,勾选 “允许通过用户程序重新组态设备”,保存设置。
4. 创建控制数据记录的数据块
需新建一个共享数据块,按规则存储 “最大组态与实际组态的对应关系”,数据结构如下:
字节位置 | 含义 | 数值规则 |
0 | 数据记录长度 | 4 + 最大组态的插槽数(前 4 字节为标头,后续对应每个插槽) |
1 | 数据记录 ID | 固定为 196(组态控制专用) |
2-3 | 版本号 | S7-1500 对应为 “4” 和 “0” |
4 及以后 | 插槽对应关系 | 按最大组态的插槽号(从 0 开始)依次填写:- 实际存在的模块:填写其在实际组态中的插槽号;- 实际缺失的模块:填写 B#16#FF |
例如:若最大组态有 10 个插槽,数据块长度为 4+10=14 字节,第 4 字节对应插槽 0,第 5 字节对应插槽 1,以此类推。
5. 在启动组织块中调用 WRREC 指令
必须在启动组织块(如 OB100) 中通过WRREC指令发送数据记录,确保设备启动时即可识别实际组态:
- WRREC指令位置:TIA 博途指令栏→“扩展指令”→“分布式 I/O”;
- 关键参数:ID设为 33(S7-1500 中央机架专用硬件标识符),DataPtr指向步骤 4 创建的数据块,Length对应数据记录长度;
- 注意:需等待WRREC的 “Done” 信号触发后再退出 OB100,否则 CPU 会从启动模式退回停止模式。
本例中为 OB100 调用“WRREC”指令传 送创建的数据记录。在右侧的指令栏中,按照顺序“扩展指令”-〉“分布式I/O”下找到“WRREC”指令。如果未能在启动 OB100中传输有效的控制数据记录, 则 CPU 会从启动模式返回到停止模式。因此,需要“WRREC”指令执行完才能退出启动组织块,本例中以功能块“WRREC”的完成信号“Done”为循环指令的结束条件,保证能够完成数据记录的传输。
对于S7-1500 CPU,使用硬件标识符 33(作为“WRREC” 指令的“ID”的参数)写入数据记录,程序如下所 示,其中,参数“WRREC_DONE”、 “WRREC_BUSY” 等是在组织块的接口参数中定义的临时变量: