跳到正文
Learn-LAD
梯形图示例库/LAD 指令手册/GATHER_BLK — 批量位打包

GATHER_BLK — 批量位打包

把位数组按每 16 位打包成多个 Word 元素。

移动 S7-1200/1500 TIA V19 别名:批量位打包 / GATHER_BLK

在 TIA 里试一下

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

TiaLink 设置

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

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

一句话

GATHER_BLK 把位数组按每 16 位打包成多个 Word 元素。

符号与引脚

分类:移动 不需要实例 模板值:dest_type, src_type, count_type
引脚方向说明
en流输入使能输入
IN输入位数组起始元素
COUNT_OUT输入输出元素个数(UDInt)
eno流输出使能输出
OUT输出目标数组起始元素

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

最小示例

Enable=1、Count=2 时,把 Bits[0..31] 打包成 Words[0..1]。

GATHER_BLK_Example:Network 1 — 批量位打包

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

怎么工作

  • IN 是位数组起始元素(如 Bits[0]),OUT 是目标数组起始元素(如 Words[0])。
  • COUNT_OUT 是输出元素个数(UDInt);每个 Word 吃 16 位。
  • dest_type/src_type/count_type 分别控制输出、输入、计数类型。
  • 位序按 TIA 规则:第 0 位对应第一个元素的最低位。

常用场景

1. 批量打包

同上面的最小示例。

2. 打包多个状态字

把 48 个状态位打包成 3 个 Word,便于批量通信。

GATHER_BLK_PackThree:Network 1 — 打包 3 个状态字

常见坑

  • 绑整个数组:IN/OUT 要绑数组起始元素,不是整个数组。
  • Count 超范围:Count * 16 不要超过位数组长度。
  • 位序写反:第 0 位是最低位;用已知值验证。
  • ENO 未接:后面的指令可能不执行;需要串联时检查 ENO。

← 返回 LAD 指令手册