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图形
参数说明
接口变量 | 声明 | 数据类型 | 说明 |
---|---|---|---|
SOURCE_VAR | VAR_Input | ANY_TYPE | 待序列化的变量 |
POS | VAR_IN_OUT | DINT | 待序列化的变量存储到POS 参数计算的数组相对下标位置。 POS 参数将从0开始计算,对应数组的起始下标位置。指令执行后,POS=POS+数据占用的字节数量 |
DEST_ARRAY | VAR_IN_OUT | ARRAY of BYTE 或 ARRAY of CHAR | 用于存储所生成数据流的ARRAY变量名。 |
函数名称 | 返回值 | INT | 错误信息 |
返回值错误代码
错误代码(16进制码) | 说明 |
---|---|
0000 | 无错误 |
80B0 | 参数SOURCE_VAR和DEST_ARRAY的存储区重叠。 |
8150 | SOURCE_VAR参数中的 数据类型包含一个ZERO指针。 |
8151 | SOURCE_VAR参数中的引用无效 |
8236 | DEST_ARRAY参数处的变量非法 |
8250 | NULL指针在DEST_ARRAY参数处传递。 |
8251 | DEST_ARRAY参数中的引用无效 |
8253 | 参数DEST_ARRAY处该变量可提供的空间不足,无法包含参数SOURCE_VAR处变量中的内容。由于POS参数处变量的输入值,可用的存储空间将减少。 POS参数处的输入值可确定DEST_ARRAY参数处变量中的起始位置。 |
8254 | DEST_ARRAY参数中的数据类型无效 |
8382 | POS参数的值超出数组的限值。 |
示例
- LD示例图片如下图所示:
- ST示例代码如下所示:
ss:=SERIALIZE(SOURCE_VAR:=sarr[13],POS:=darr[0],DEST_ARRAY:=dd);