Serialize:序列化 (S7-1500) 说明 可以使用“序列化”指令将多个 PLC 数据类型(UDT)、STRUCT 或 ARRAY of
存储区的容量 对齐规则为优化存储区内的简单结构中不包含填充字节。这样,优化存储区中的结构大小将小于标准存储区中的。结构型和嵌套结构型 ARRAY 包含填充字节。对于包含组合结构(所需存储空间更高)的存储区而言,该规则并并为通用规则。 S7-1500 系列 CPU: 对于块属性为“优化块访问”的块,BOOL类型的长度为 1 个字节。这样,优化存储区中主 要由 BOOL 数据类型组成的结构大小将大于标准存储区。含少量 BOOL数据类型的组 合型结构在优化存储区内的大小,要小于该结构在标准存储区内的大小。 优化存储区 对固件版本 V4.2 及以上版本的S7-1200 系列 CPU 和固件版本 V2.0 及以上版本的 S7-1500 系列CPU,要取消较大结构的序列化,可将顺序表示的存储区声明为优化访问。对于标准存 储区,顺序表示中内容保存不变。ARRAY中的字节仅支持符号化访问。 参数 下表列出了“取消序列化”指令的参数: 参数 声明 数据类型 存储区 说明 SRC_ARRAYInput ARRAY[*] of BYTE 1) 或者 ARRAY of CHAR I、Q、D、FB 的 块接口(可在 Input、Output、Static 和 Temp 部分 中)。 无 I/O 数据 用于保存其数据流将取消 序列化的 ARRAY of BYTE或 ARRAY of CHAR。 S7-1500: 进行性能优化时,该参数 不能为 VARIANT 指针。 DEST_VARIABLE InOut 所有数据类型 I、Q、D、FB 的 块接口。 无 I/O 数据 已取消序列化数据待写入 的目标变量。S7-1500: 进行性能优化时,该参数 不能为 VARIANT 指针。 POS InOut DINT I、Q、M、D、L POS参数中的操作数将根 据转换后客户数据所占用 的字节数,存储第一个字 节的下标。POS 参数将从 0 开始计算。固件版本 V2.8及以上版本中的特殊功能 (S7-1500): 要对“取消序列化”指令(版本 V2.1)的性能进行优化,参数 SRC_ARRAY 和DEST_VARIABLE 不能为 VARIANT 指针,而只能使用特定的数据类型。请注意,对指令的错误响应将会更改:出错时,CPU 不输出任何错误代码,而是切换为 STOP模式并生成访问错误。为了避免该错误,可通过指令 "GET_ERROR" 和 "GET_ERR_ID" 进 行本地错误处理。 固件版本V2.2 及以上版本中的特殊功能 (S7-1200/S7-1500): 使用“取消序列化”指令(版本V2.2)时,工艺对象(如,TO_SpeedAxis.Statusword)中 的元素无法再互连输入或输出参数(SRC_ARRAY/DEST_VARIABLE)。 固件版本 V2.1 及以上版本中的特殊功能 (S7-1200/S7-1500):在“取消序列化”指令(版本 V2.1 及以上版本)的优化版本中,由于过程数据的复杂性,需 要比之前版本更多的工作存储器空间。
存储区的容量对齐规则为优化存储区内的简单结构中不包含填充字节。这样,优化存储区中的结构大小将 小于标准存储区中的。结构型和嵌套结构型 ARRAY包含填充字节。对于包含组合结构(所 需存储空间更高)的存储区而言,该规则并并为通用规则。 S7-1500 系列 CPU:如果某个块的块属性为“优化块访问”,则 BOOL 数据类型的长度将取决于紧跟其后的数据 类型。即,如果 BOOL 数据类型之后为BYTE,则长度为 1 个字节。即,如果 BOOL 数据类 型之后为 WORD,则长度为 2 个字节。这样,优化存储区中主要由BOOL 数据类型组成的结 构大小将大于标准存储区。含少量 BOOL 数据类型的组合型结构在优化存储区内的大小,要小于该结构在标准存储区内的大小。 建议序列化的源数据区从大数据类型开始,以布尔型元素结束。这样,可大幅减少用于填充的填充位。 优化存储区 对固件版本 V4.2 及以上版本的 S7-1200 系列 CPU 和固件版本 V2.0 及以上版本的S7-1500 系列 CPU,要对较大结构进行序列化,可将存储区声明为优化访问。对于标准存储区,顺序 表示保存不变。 参数下表列出了“序列化”指令的参数: 参数 声明 数据类型 存储区 说明 SRC_VARIA BLE Input 所有数据类型I、Q、D、FB 的 块接口、无 I/O 数据 待序列化的变量。 S7-1500: 进行性能优化时,该参数 不能为 VARIANT指针。 DEST_ARRA Y InOut ARRAY of BYTE 或 ARRAY of CHAR I、Q、D、FB 的块接口(可在 Input、 Output、Static 和 Temp 部分 中)。 无 I/O 数据 用于存储所生成数据流的ARRAY。 S7-1500: 进行性能优化时,该参数 不能为 VARIANT 指针。MOVE_BLK:移动块 (S7-1500)说明 可以使用“移动块”(Move block) 指令将一个存储区(源范围)的数据移动到另一个存储区 (目标范围)中。使用参数COUNT 可以指定将移动到目标范围中的元素个数。可通过 IN 参 数处的元素宽度来指定待移动元素的宽度。仅当源范围和目标范围的数据类型相才能执行该指令。如果移动的数据量超出 IN 参数或 OUT 参数可容纳的量,输出 OUT的值将无效。 说明 ARRAY 的使用 该指令用于从指定索引开始,将定义元素中 n 个元素(n 取决于参数 COUNT 的值)的内容从源范围复制到目标范围。 参数 下表列出了“移动块”指令的参数: 参数 声明 数据类型 存储区 说明 IN 1) Input二进制数、整 数、浮点数、定 时器、TOD、 LTOD、DATE、 CHAR、WCHAR D、L 待复制源区域中的首个元 素COUNT Input USINT、UINT、 UDINT、ULINT I、Q、M、D、 L、P 或常量 要从源范围复制到目标范围的元素个数 OUT 1) Output 二进制数、整 数、浮点数、定 时器、TOD、 LTOD、DATE、 CHAR、WCHARD、L 源范围内容要复制到的目 标范围中的首个元素 1) Array 结构中的元素只能使用指定的数据类型。可以从“???”下拉列表中选择该指令的数据类型。有关有效数据类型的更多信息,请参见“另请参见”。MOVE_BLK_VARIANT:移动块 (S7-1500) 说明可以使用“块移动”指令将一个存储区(源范围)的数据移动到另一个存储区(目标范围) 中。可以将一个完整的 ARRAY 或 ARRAY的元素复制到另一个相同数据类型的 ARRAY 中。源 ARRAY 和目标 ARRAY 的大小(元素个数)可能会不同。可以复制一个ARRAY 内的多个或单 个元素。要复制的元素数量不得超过所选源范围或目标范围。 如果在创建块时使用该指令,则无需确定该ARRAY,源和目标将使用 VARIANT 进行传输。 无论后期如何声明该 ARRAY,参数 SRC_INDEX 和DEST_INDEX 始终从下限“0”开始计数。如果复制的数据多于可用的数据,则不执行该指令。UMOVE_BLK:不可中断的存储区移动 (S7-1500) 说明可以使用“不可中断的存储区移动”(Move block uninterruptible) 指令将一个存储区(源范围)的数据移动到另一个存储区(目标范围)中。该指令不可中断。使用参数 COUNT 可以 指定将移动到目标范围中的元素个数。可通过输入IN 中元素的宽度来定义元素待移动的宽度。 仅当源范围和目标范围的数据类型相才能执行该指令。 说明此移动操作不会被操作系统的其它任务打断。这也解释了在执行“不可中断的存储区移动” 指令期间,CPU 中断响应次数增加的原因。如果移动的数据量超出 IN 参数或 OUT 参数可容纳的量,输出 OUT 的值将无效。 可以使用“不可中断的存储区移动”指令移动Zui多16 KB 大小的数据。注意:CPU 对此有特 定限制。 说明 ARRAY 的使用 该指令用于从指定索引开始,将定义元素中 n个元素(n 取决于参数 COUNT 的值)的内容 从源范围复制到目标范围。