跳到正文
Learn-LAD
梯形图示例库/LAD 指令手册/GATHER — 位数组打包

GATHER — 位数组打包

把 Bool 数组的位打包成一个字/字节。

移动 S7-1200/1500 TIA V19 别名:位打包 / GATHER / Gather

在 TIA 里试一下

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

TiaLink 设置

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

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

一句话

GATHER 把 Bool 数组的位打包成一个字/字节。

符号与引脚

分类:移动 不需要实例 模板值:dest_type, src_type
引脚方向说明
en流输入使能输入
IN输入Bool 数组
eno流输出使能输出
OUT输出打包结果(Word/Byte)

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

最小示例

Enable=1 时 WordOut = GATHER(Bits);Bits[0]=1 对应结果的最低位。

GATHER_Example:Network 1 — 位数组打包

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

怎么工作

  • IN 是 Bool 数组,OUT 是打包结果(Word/Byte/DWord)。
  • dest_type 决定结果类型,src_type=Bool;数组长度不要超过目标类型的位数。
  • 位序按 TIA 规则:数组第 0 个元素对应最低位,依次向高位。
  • EN/ENO 是使能。

常用场景

1. 打包成字

同上面的最小示例。

2. 打包成字节

把 8 个状态位打包成一个 Byte,便于通信/显示。示例先把 Run/Fault/TankHigh 等 8 个状态位写入 Bits[0..7],再 GATHER 成 StatusByte。

GATHER_PackByte:Network 1 — 状态位来源;Network 2 — 打包成字节

常见坑

  • 数组太长:超出目标类型位数的元素会被忽略/报错;先确认长度。
  • 位序写反:第 0 个元素是最低位;接线前用已知值验证。
  • 目标类型不匹配:dest_type 要和 OUT 变量一致。
  • ENO 未接:后面的指令可能不执行;需要串联时检查 ENO。

← 返回 LAD 指令手册