使用结构化的 PLC 变量(S7-1200 V4 和更高版本/S7-1500)
为了便于查看程序内容,可以在一个较高级 PLC 变量中将多个输入/输出地址进行分组。 较高级的 PLC 变量是指一种包含多个逻辑上相关的输入/输出的结构。 调用块时,先传送较高级的变量,之后仅需所有相关输入/输出的输入/输出参数。
工作原理
要创建结构化的 PLC 变量,首先需要定义一个 PLC 数据类型 (UDT)。 并在该数据类型中声明所需的数据元素并指定它们的名称和数据类型。
然后,再切换到 PLC 变量表中并在此指定较高级的 PLC 变量。 选择 PLC 数据类型作为变量的数据类型。 从较高级变量的起始地址开始,系统现在将预留一定数量的输入或输出地址。 所预留的地址数量取决于 PLC 数据类型的长度。
如果调用一个块而且该块在程序执行中需要使用预留的输入或输出,则可将较高级变量传递为一个块参数。
对各个 PLC 变量的寻址方式与程序代码中的结构元素相同。
在以下章节中,将详细介绍各处理步骤:
应用示例
要对函数模块的输入或输出进行分组,可以使用结构化的 PLC 变量。 下图显示了 Motor 的语义表示: 在“Datatype_Motor”PLC 数据类型中,为三个输入中的每一个都创建一个元素。
但已声明变量的存储区域不能重叠。 在本示例中,“Speed”组件的数据类型为“Integer”,因此必须以字地址开始。 因此,第一个输入字将适用“Dummy”填充变量进行填充。 这意味着,“Speed”在第二个输入字中。
下图显示了基于“Data type_Motor”数据类型的较高级的“Motor”PLC 变量。 通过声明“Motor”,将在输入模块上预留地址 IW0 和 IW1。
下图显示了如何将“Motor”PLC 变量传输为“Motor_Control”块的输入参数。
可在“Motor_Control”块中寻址该变量的单个成员。
寻址 | 说明 |
---|---|
“Motor” | 寻址较高级别的 PLC 变量。 |
'Motor'.On | 寻址结构化 PLC 变量的成员。 |
'Motor'.On:P | 寻址 I/O 输入或输出(PI 或 PQ)。 |
使用结构化 PLC 变量的规则
创建和使用结构化 PLC 变量时应遵循的注意事项。
结构化 PLC 变量可用于“输入”(Inputs) 和“输出”(Outputs) 操作数区域。
结构化变量不能用于位存储器地址区域。
结构化 PLC 变量不能从 HMI 进行寻址。
创建结构化 PLC 变量
规则
创建结构化 PLC 变量时,应遵循以下规则:
对“Inputs”和“Outputs”操作数区域,使用不同的 PLC 数据类型。
结构化变量不能用于位存储器地址区域。
由于无法确保模块的过程映像进行同步更新,因此请勿在 PLC 数据类型中对不同模块的输入或输出进行分组。
步骤
要创建结构化 PLC 变量,请按以下步骤操作:
在项目树中,双击“PLC 数据类型”(PLC data types) 文件夹中的命令“新增数据类型”(Add new data type)。 这样,将创建并打开一个用于创建 PLC 数据类型的新声明表。 将所有所需元素都声明为 PLC 类型。 可以使用除“STRING”和“WSTRING”数据类型之外的其它所有数据类型。 在项目树中选择该 PLC 数据类型,然后在快捷菜单中选择命令“编译 > 软件(仅更改)”(Compile > Software (only changes))。 将编译 PLC 数据类型,然后在 PLC 变量表中使用。 即时是对现有 PLC 数据类型进行更改,也必须重新编译该程序。 这样,才会更新使用 PLC 数据类型的所有位置。 在相同的 CPU 中打开一个 PLC 变量表。 声明一个新变量或选择一个现有变量。 在“数据类型”(Data type) 列中,选择 PLC 数据类型并将其分配给该 PLC 变量。 该 PLC 变量将采用 PLC 数据类型的结构。 并自动分配一个相应地址。 结构化的 PLC 变量始终从字地址开始。 |
上一篇:PWM调制的那些事儿
下一篇:西门子博途之POINTER 类型的参数