跳到正文
Learn-LAD
梯形图示例库/LAD 指令手册/Deserialize — 反序列化

Deserialize — 反序列化

把字节数组反序列化回变量。

移动 S7-1200/1500 TIA V19 别名:反序列化 / Deserialize

在 TIA 里试一下

选一个示例块,通过 TiaLink 导入当前 TIA 项目:预检、默认不覆盖、不自动保存。示例块不会自动运行;导入后请在 OB1 调用并接变量。

TiaLink 设置

默认 http://localhost:8080。也可以在本页地址后加 ?tialink= 临时指定。

TiaLink 启动时若设置了 --api-token,这里要填相同的值;只保存在本机浏览器 localStorage,不会上传。

一句话

Deserialize 把字节数组反序列化回变量。

符号与引脚

分类:移动 不需要实例 模板值:src_type, dest_type
引脚方向说明
en流输入使能输入
SRC_ARRAY输入源字节数组起始元素
DEST_VARIABLE输入目标变量
POS输入读取位置(InOut DInt)
eno流输出使能输出
RET_VAL输出返回码(0=成功)

符号见下面的最小示例;引脚名与方向来自 lad-ir 指令目录,说明为本站补充。

最小示例

Enable=1 时从 Buffer 的 Pos 位置读出 Value;Ret=0 表示成功。

Deserialize_Example:Network 1 — 反序列化

图中 # 前缀表示块内局部变量;实际工程里也可以是全局标签或 DB 变量。

怎么工作

  • SRC_ARRAY 是源字节数组起始元素,DEST_VARIABLE 是目标变量。
  • POS 是读取位置(InOut DInt),指令会把它更新到下一个位置;从 0 开始。
  • src_type/dest_type 用 Variant;RET_VAL 返回 0 表示成功,非 0 为错误码。
  • 目标变量的类型/字节数要和写入端一致。

常用场景

1. 反序列化

同上面的最小示例。

2. 从字节缓冲解析

示例把接收缓冲 Buffer 依次解析成 Speed、Temp;Buffer 由通信块接收(本页不展开通信配置)。

Deserialize_Unpack:Network 1 — 初始化位置;Network 2 — 解析 Speed;Network 3 — 解析 Temp

常见坑

  • POS 当 Input:POS 会被写回,必须用 InOut/DInt。
  • 类型/字节数不一致:两端结构要匹配,否则解析错位。
  • 缓冲越界:先确认 POS + 目标字节数 ≤ 数组长度。
  • 返回码:检查 RET_VAL,不要假设一定成功。

← 返回 LAD 指令手册