工作原理
可以使用组态控制来组态控制系统的结构(此处为S7-1500 的集中式组态)并使用不同于此组态的变型(选项)。
一系列相似设备单元或机器所需的所有模块都在具有最大组态的主项目(全站组态方式)中进行组态。
在主项目的用户程序中,包含有适用于不同设备单元或机器的各种站组态方式,以及站组态方式的选件。例如,某种站组态方式仅使用一部分已组态的模块,而且这些模块以不同的顺序插入。
操作员可根据现场特定的设备选择某种站组态方式。他们无需修改项目,因此也无需下载修改后的组态。
在启动程序中编程的控制数据记录会通知 CPU 哪些模块缺失以及哪些模块所在的插槽不同于预设组态。组态控制对模块的参数分配没有影响。
组态控制为用户提供了灵活性,只要实际组态不超过预设的最高组态,就可以改变集中式安装。
下文将介绍如何激活组态控制(CPU 参数分配)以及如何构造所需的数据记录。
要求
STEP 7 Professional 版本 V13 或更高版本
CPU S7-15XX 固件版本 1.5 或更高版本支持“组态控制”功能的模块还在硬件目录的说明(信息文本)中提供“组态控制”(Configuration control) 条目。
建议:在加载带有修改后的控制数据记录的新程序之前,需先复位为工厂出厂设置。此操作可以防止因存在不兼容的控制数据记录而造成状态不一致。
启动参数“比较预设组态与实际组态”设置为“即使不一致也启动 CPU”(默认设置)。
所需步骤
在“组态控制”(Configuration control) 区域组态 CPU 时启用“允许通过用户程序重新组态设备”(Allow to reconfigure the device via the user program) 参数。
根据以下描述的控制数据记录示例,按照当前组态创建控制数据记录(例如在数据块中)。控制数据记录的编号为 196。请注意,需要先创建一个包含控制数据记录结构的 PLC 数据类型,并将该数据块定义为 PLC 数据类型。
在启动程序中将控制数据记录传输到 CPU。
对于集中插入的模块,仅当 CPU 的操作模式从 STOP 更改为 RUN 后,组态控制才会生效。因此,请在启动 OB 中调用扩展的 WRREC(写入数据记录)指令,将创建的控制数据记录传输到 CPU;请参见下一章节。
如果在启动 OB 中未传输有效的控制数据记录,则控制未做好运行准备。在这种情况下,CPU 从启动状态恢复到 STOP 状态。
在启动程序中传输控制数据记录
CPU 处理 WRREC 指令以便异步传输控制数据记录。因此,必须在一个循环内,在启动 OB 中重复地调用 WRREC,直到输出参数“BUSY”或“DONE”指出数据记录已传输。
提示信息:请使用 SCL 编程语言和 REPEAT ... UNTIL 指令编程此循环。
REPEAT
"WRREC_DB"(REQ := "start_config_control",
ID := 33,
INDEX := 196,
LEN := "conf_LEN",
DONE => "conf_DONE",
BUSY => "conf_BUSY",
ERROR => "conf_ERROR",
RECORD := "ConfDB".ConfigControl,
STATUS => "conf_STATUS");
UNTIL NOT "conf_BUSY"
END_REPEAT;
下表中列出了组态控制中需指定特定值的块参数。有关其它块参数,另请参见“WRREC”:
参数 | 说明 |
---|---|
ID | 硬件标识符,对于集中排列模块的组态控制,始终为 33(十进制)。 |
INDEX | 数据记录编号,对于集中排列模块的组态控制,始终为 196(十进制)。 |
RECORD | 要传输的控制数据记录。 参见“控制数据记录”部分的控制数据记录结构。 提示信息:WRREC 指令(V1.1 以及更高版本)块参数“RECORD”的数据类型为“VARIANT”,因此需要带数据类型的变量。如果将控制数据记录存储在数据块中,那么此数据块必须具有数据类型。所创建的数据块不得是“全局 DB”类型,更确切地说,它必须属于用户数据类型。 请按以下步骤操作: 首先创建一个具有控制数据记录结构的新 PLC 数据类型(用户数据类型),并为其命名,例如命名为“ConfDB”。 创建一个新数据块。选择新创建的用户数据类型(如“ConfDB”),作为该数据块的类型。 |
在图形编程语言中,使用程序控制指令实现循环。
FBD 中的示例:使用 LABEL(跳转标签)和 JMP(RLO=1 时跳转)指令编写循环。
模块的排列
下表列出了插槽号的分配:
插槽 | 模块 | 说明 |
---|---|---|
0 | 电源模块(可选) | CPU 左侧的插槽 |
1 | CPU | 插槽 1 中始终为 CPU |
2 到 31 | I/O 模块/系统电源模块(取决于具体组态) | CPU 右侧的插槽 |
控制数据记录
将包含插槽分配的控制数据记录 196 定义为用于组态控制。
字节 | 元素 | 代码 | 说明 |
---|---|---|---|
0 | 块长度 | 4 + 插槽数 | 标头 |
1 | 块 ID | 196 | |
2 | 版本 | 4 (用于集中式 I/O) | |
3 | 子版本 | 0 | |
4 | 分配所组态的插槽 0 | 实际插槽 0 | 控制元素 每个元素分别为设备中与已组态插槽对应的实际插槽。下面说明了控制元素的结构。 |
5 | 分配所组态的插槽 1 | 实际插槽 1 (始终为 1,因为 CPU 始终位于插槽 1 中) |
|
6 | 分配的已组态插槽 2 | 实际插槽或 16#FF | |
7 | 分配的已组态插槽 3 | 实际插槽或 16#FF | |
... | ... | ... | |
4+(最大插槽编号) | 分配所组态的最大插槽编号 | 实际插槽或 16#FF |
控制元素的结构
控制元素包含有关哪个模块插入哪个插槽的信息。
字节编号代表按升序排列的已组态插槽(参见上文):
字节 4 代表已组态的插槽 0
字节 5 代表已组态的插槽 1
字节 6 代表已组态的插槽 2
依此类推。
在相应字节中输入指定值,具体取决于以下规则:
如果模块在实际组态中存在,则输入模块的实际插槽编号。
示例 1:组态为插入插槽 2 的模块位于插槽 2。
在字节 6(= 组态的插槽 2)中输入值 2(= 实际插槽)。
示例 2:组态为插入插槽 3 的模块位于插槽 2。
在字节 7(= 组态的插槽 3)中输入值 2(= 实际插槽)。
如果模块在实际结构中不存在,则在所组态插槽的字节中输入 16#FF (255)。
规则
请遵守以下规则:
如果启用了组态控制,没有控制数据记录 CPU 将不工作。如果在启动 OB 中未传送有效的控制数据记录,则 CPU 将从启动模式返回到 STOP 模式。此时,不会对集中式 I/O 进行初始化。CPU 转入 STOP 操作模式的原因将保存在诊断缓冲区中。
要对 WRREC 指令寻址,请使用硬件标识符 33(十进制,适用于 ID 块参数)写入控制数据记录。
控制数据记录始终保存在 CPU 中,因此在重新启动时如果组态没有发生变更则无需重新写入控制数据记录 196。在调试前,建议对 CPU 执行存储器复位,以删除存在的任何控制数据记录。
CPU 将忽略不在预设组态中的控制数据记录中的插槽条目。
您可以缩短控制数据记录。但必须包含当前预设组态中最多到最后一个插槽的条目数。
在控制数据记录中,每个实际插槽只能记录一次。
只能将实际插槽分配给一个已组态的插槽。
使用 CP/CM:
对于组态控制,点对点 CP/CM 的工作方式类似于数字量和模拟量模块(无限制)。
固件版本为 V1.7 或更高版本的 CPU:
如果集中式组态包括 CP/CM,例如 CM 1542-5(DP 主站或 DP 从站),那么这些 CM/CP 将不受组态控制的影响。因此,这些模块必须保留在其组态的插槽中,并且其组态的插槽编号输入到控制数据记录中(“实际插槽 = 组态的插槽”)通过将 CM/CP 插入到紧挨着 CPU 的右边可实现最大灵活性。
固件版本为 V1.6 或更高版本的 CPU:
原则上,CM 和 CP 不能用于组态控制。
系统电源模块 (PS) 也应遵从组态控制。有关此主题的信息,请参见 S7-1500 系统手册。特别是对插槽 0 上的系统电源模块 (PS),建议避免重新组态。
说明 修改过的组态 将修改后的组态写入控制数据记录时,CPU 将自动重新启动为更新后的组态。 因此始终保存的原始数据记录 196 将被删除,并始终保存新的数据记录 196。 |
操作期间的行为
预设组态和实际组态之间差异的影响:
对于在线显示以及诊断缓冲区中的显示(模块正常或模块发生故障),始终使用硬件配置而并非不同的实际组态。
示例:模块提供诊断信息。此模块组态为插入插槽 4,但实际却插入到插槽 3 中(模块缺失,参见下一章节中的示例)。在线视图中,指示组态的插槽 4 发生故障。在实际组态中,插槽 3 中的模块通过 LED 显示屏指出出现错误。
如果模块在控制数据记录中记录为缺失,那么自动化系统将会执行以下操作:
在控制数据记录中指定为不存在的模块不提供诊断,其状态始终为“正常”(OK)。值状态为“正常”(OK)
对输出进行直接写访问,或者对不存在的输出过程映像进行写访问:仍然无效;不显示任何访问错误。
对输入进行直接读访问,或者对不存在的输入过程映像进行读访问:提供值“0”;不显示任何访问错误。
将数据记录写入不存在的模块:仍然无效;不显示任何错误。
从不存在的模块读取数据记录:显示错误,因为无法返回有效的数据记录。
错误消息
如果在写入控制数据记录的过程中发生错误,则将返回以下错误消息:
错误消息
错误代码 | 含义 |
---|---|
16#80B1 | 长度无效;数据记录 196 中的长度信息不正确。 |
16#80B5 | 未分配组态控制参数。 |
16#80E2 | 数据记录在错误的 OB 中传送。该数据记录需在启动程序中传送。 |
16#80B8 | 参数错误;模块指示存在无效参数。 |
以下部分组态了一个包含系统电源、CPU 和 3 个 I/O 模块的组态。
插槽 3 中的模块在第一个组态扩展中不存在,被组态控制“隐藏”。
在第二个组态扩展中,最初隐藏的模块位于最后一个插槽中。CPU 通过一条修改后的控制数据记录获知增加插槽的信息。
缺少模块的实际组态
指定的组态包含所有可以在最后扩展阶段显示的模块。
在指定组态中插入到插槽 3 的模块在实际扩展组态中缺失。因此,插槽 3 必须在控制数据记录中相应地进行编码:"FF H" (= 不存在)。
① | 模块在实际组态中缺失 |
后继所添加模块的实际组态
在指定组态中插入到插槽 3 的模块作为最后一个模块插入到插槽 4,添加到实际组态之后。
控制数据记录会相应地进行调整。