
GATHER — 位数组打包
把 Bool 数组的位打包成一个字/字节。
在 TIA 里试一下
选一个示例块,通过 TiaLink 导入当前 TIA 项目:预检、默认不覆盖、不自动保存。示例块不会自动运行;导入后请在 OB1 调用并接变量。
一句话
GATHER 把 Bool 数组的位打包成一个字/字节。
符号与引脚
分类:移动
不需要实例
模板值:dest_type, src_type
| 引脚 | 方向 | 说明 |
|---|---|---|
en | 流输入 | 使能输入 |
IN | 输入 | Bool 数组 |
eno | 流输出 | 使能输出 |
OUT | 输出 | 打包结果(Word/Byte) |
符号见下面的最小示例;引脚名与方向来自 lad-ir 指令目录,说明为本站补充。
最小示例
Enable=1 时 WordOut = GATHER(Bits);Bits[0]=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。

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