SIEMENS西门子 S120伺服电机 1FK7015-5AK74-1TG3
Serialize:序列化 (S7-1200, S7-1500) 说明 可以使用“序列化”指令将多个 PLC 数据类型 (UDT)、STRUCT 或 ARRAY of
因此,建议序列化的源数据区从大数据类型开始,以布尔型元素结束。这样,可大幅减少用 于填充的填充位。 说明 对 CPU S7-1200 上的多个结构进行序列化 如果要在缓冲区中对 CPU S7-1200 的多个结构进行序列化并且要与其进行通信(例如,与 控制系统或 CPU S7-1500 通信),则必须检查返回值(POS 参数的下标)是否为偶数。如 果并非偶数,则必须在序列化第二个结构之前将返回值增加 1,因为第一个结构并未填充字 节。 示例: 结构由 1 个 DWORD 和 1 个 BYTE 组成 缓冲区中下一个序列化结构的起始地址为 5。加 +1,使起始地址为偶数。 优化存储区 对固件版本 V4.2 及以上版本的 S7-1200 系列 CPU 和固件版本 V2.0 及以上版本的 S7-1500 系列 CPU,要对较大结构进行序列化,可将存储区声明为优化访问。对于标准存储区,顺序 表示保存不变。固件版本 V2.8 及以上版本中的特殊功能 (S7-1500): 要对“序列化”指令(版本 V2.1)的性能进行优化,参数 SRC_VARIABLE 和 DEST_ARRAY 不能为 VARIANT 指针,而只能使用特定的数据类型。 请注意,对指令的错误响应将会因此更改:出错时,CPU 不输出任何错误代码,而是切换为 STOP 模式并生成访问错误。为了避免该错误,可通过指令 "GET_ERROR" 和 "GET_ERR_ID" 进 行本地错误处理。 固件版本 V2.2 及以上版本中的特殊功能 (S7-1200/S7-1500): 使用“序列化”指令(版本 V2.2)时,工艺对象(如,TO_SpeedAxis.Statusword)中的元 素无法再互连输入或输出参数 (SRC_VARIABLE/DEST_ARRAY)。 固件版本 V2.1 及以上版本中的特殊功能 (S7-1200/S7-1500): 在“序列化”指令(版本 V2.1 及以上版本)的优化版本中,由于过程数据的复杂性,需要 比之前版本更多的工作存储器空间。“移动值”指令将值“0”移动到 #BufferPos 操作数。“序列化”指令对“Source”变量中的客户 数据进行序列化,并将该顺序表示写入“Buffer”变量中。"Buffer".Field 操作数中下一个未写入 的字节下标将保存在 #BufferPos 操作数中。MOVE_BLK:块移动 (S7-1200, S7-1500) 说明 可以使用“块移动”指令将一个存储区(源范围)的数据移动到另一个存储区(目标范围) 中。使用参数 COUNT 可以指定将移动到目标范围中的元素个数。可通过输入 IN 中元素的宽 度来定义元素待移动的宽度。 仅当源范围和目标范围的数据类型相同时,才能执行该指令。 如果满足下列条件之一,使能输出 ENO 将返回信号状态“0”: • 使能输入 EN 的信号状态为“0”。 • 移动的数据量超出输入 IN 或输出 OUT 所能容纳的数据量。当复制 ARRAY of BOOL 时,溢出的使能输出 ENO 将设置为“1”,直至超出 ARRAY 结构的字 节限制。如果 COUNT 输入的值超出了 ARRAY 结构的字节限制,则使能输出 ENO 将复位为 “0”。 说明 ARRAY 的使用 该指令用于从指定索引开始,将定义元素中 n 个元素(n 取决于参数 COUNT 的值)的内容 从源范围复制到目标范围。MOVE_BLK_VARIANT:存储区移动 (S7-1200, S7-1500) 说明 可以使用“块移动”指令将一个存储区(源范围)的数据移动到另一个存储区(目标范围) 中。可以将一个完整的 ARRAY 或 ARRAY 的元素复制到另一个相同数据类型的 ARRAY 中。源 ARRAY 和目标 ARRAY 的大小(元素个数)可能会不同。可以复制一个 ARRAY 内的多个或单 个元素。 要复制的元素数量不得超过所选源范围或目标范围。 如果在创建块时使用该指令,则无需确定该 ARRAY,源和目标将使用 VARIANT 进行传输。 无论后期如何声明该 ARRAY,参数 SRC_INDEX 和 DEST_INDEX 始终从下限“0”开始计数。 如果满足下列条件之一,使能输出 ENO 将返回信号状态“0”: • 使能输入 EN 的信号状态为“0”。 • 复制的数据多于可用的数据。定义要复制的第一个元 素: • SRC_INDEX 参数将从 0 开始计算。如果参数 SRC 中指定了 ARRAY, 则参数 SRC_INDEX 中 的整数将指定待复制源 区域中的第一个元素。 而与所声明的 ARRAY 限值无关。 • 如果 SRC 参数中未指 定 ARRAY 或者仅指定 了 ARRAY 的某个元 素,则将 SRC_INDEX 参数的值赋值为“0”。1) DEST 参数声明为 Output,因为数据流入变量。但此变量本身在块接口中必须声明为 InOut。 2) 参数 SRC 的数据类型不能为 BOOL 和 BOOL 型 ARRAY。 有关有效数据类型的更多信息,请参见“另请参见”。UMOVE_BLK:不可中断的存储区移动 (S7-1200, S7-1500) 说明 可以使用“不可中断的存储区移动”(Move block uninterruptible) 指令将一个存储区(源范 围)的数据移动到另一个存储区(目标范围)中。该指令不可中断。使用参数 COUNT 可以 指定将移动到目标范围中的元素个数。可通过输入 IN 中元素的宽度来定义元素待移动的宽度。 仅当源范围和目标范围的数据类型相同时,才能执行该指令。 说明 此移动操作不会被操作系统的其它任务打断。这也解释了在执行“不可中断的存储区移动” 指令期间,CPU 中断响应次数增加的原因。如果满足下列条件之一,使能输出 ENO 将返回信号状态“0”: • 使能输入 EN 的信号状态为“0”。 • 移动的数据量超出输入 IN 或输出 OUT 所能容纳的数据量。 当复制 ARRAY of BOOL 时,溢出的使能输出 ENO 将设置为“1”,直至超出 ARRAY 结构的字 节限制。如果 COUNT 输入的值超出了 ARRAY 结构的字节限制,则使能输出 ENO 将复位为 “0”。 说明 ARRAY 的使用 该指令用于从指定索引开始,将定义元素中 n 个元素(n 取决于参数 COUNT 的值)的内容 从源范围复制到目标范围。 使用“不可中断的块移动”(Move block uninterruptible) 指令,Zui多可移动 16 KB 大小的数据。 注意:CPU 对此有特定限制。如果操作数“TagIn_1”和“TagIn_2”的信号状态为“1”,则执行该指令。从第三个元素开始,该 指令选择 #a_array 变量中的三个 INT 元素,并将其内容复制到 #b_array 输出变量中,从第 二个元素开始。此移动操作不会被操作系统的其它任务打断。如果该指令执行成功,则使能 输出 ENO 的信号状态为“1”,同时置位输出“TagOut”。