跳到主要内容

7.11.5 序列化

功能

序列化指令将多个PLC数据类型(UDT)、STRUCT或ARRAY of (数据类型) 转换为顺序标识,而不会丢失结构部分。

注意
  • 序列化指令临时将用户程序的多个结构化数据项保存到序列化数组(数据类型必须为ARRAY[] of BYTE 或 ARRAY[] of CHAR)中,并发送到其他CPU。
  • 序列化数组的最大容量为64KB。建议将ARRAY的下限定义为“0”,这是因为ARRAY中的下标对应POS参数值。例如, ARRAY[]= POS0。下文中的说明与示例均基于此公式。 参数POS处操作数中包含有关转换后数据占用的字节数量信息。 指令执行后,POS=POS+数据占用的字节数量。

LD图形

alt text

参数说明

接口变量声明数据类型说明
SOURCE_VARVAR_InputANY_TYPE待序列化的变量
POSVAR_IN_OUTDINT待序列化的变量存储到POS 参数计算的数组相对下标位置。 POS 参数将从0开始计算,对应数组的起始下标位置。指令执行后,POS=POS+数据占用的字节数量
DEST_ARRAYVAR_IN_OUTARRAY of BYTE 或 ARRAY of CHAR用于存储所生成数据流的ARRAY变量名。
函数名称返回值INT错误信息

返回值错误代码

错误代码(16进制码)说明
0000无错误
80B0参数SOURCE_VAR和DEST_ARRAY的存储区重叠。
8150SOURCE_VAR参数中的 数据类型包含一个ZERO指针。
8151SOURCE_VAR参数中的引用无效
8236DEST_ARRAY参数处的变量非法
8250NULL指针在DEST_ARRAY参数处传递。
8251DEST_ARRAY参数中的引用无效
8253参数DEST_ARRAY处该变量可提供的空间不足,无法包含参数SOURCE_VAR处变量中的内容。由于POS参数处变量的输入值,可用的存储空间将减少。 POS参数处的输入值可确定DEST_ARRAY参数处变量中的起始位置。
8254DEST_ARRAY参数中的数据类型无效
8382POS参数的值超出数组的限值。

示例

  • LD示例图片如下图所示: alt text
  • ST示例代码如下所示:
ss:=SERIALIZE(SOURCE_VAR:=sarr[13],POS:=darr[0],DEST_ARRAY:=dd);