跳到正文
Learn-LAD
梯形图示例库/LAD 指令手册/ENCO — 编码

ENCO — 编码

把输入位模式中优先的置位编码成位号:OUT = bitno(IN)。

字逻辑 S7-1200/1500 TIA V19 别名:编码 / ENCODE / ENCO

在 TIA 里试一下

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

TiaLink 设置

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

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

一句话

ENCO 把输入位模式中优先的置位编码成位号:OUT = bitno(IN)。

符号与引脚

分类:字逻辑 不需要实例 模板值:src_type
引脚方向说明
en流输入使能输入
IN输入输入位模式(DWord)
eno流输出使能输出
OUT输出位号(Int)

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

最小示例

Enable=1、Value=2#1000 时 Result=3(第 3 位)。

ENCO_Example:Network 1 — 编码

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

怎么工作

  • IN 是输入位模式(DWord),OUT 是位号(Int);src_type=DWord。
  • 单个位被置 1 时,输出就是该位的编号(从 0 开始)。
  • 多个位同时置 1 时,按 TIA 的优先级取一个位号;做优先级编码时建议先确认规则。
  • EN/ENO 是使能;输入为 0 时的输出按 TIA 规则确认。

常用场景

1. 一位编码

同上面的最小示例。

2. 优先级编码

把多个报警/请求位编码成最高优先级的编号,便于排队处理。

ENCO_Priority:Network 1 — 优先级编码

常见坑

  • 多位置 1:结果只反映一个优先级位;需要全部位时用位操作逐位判断。
  • 位号从 0 开始:第 0 位对应 1,不要和“第 1 位”混。
  • 输入为 0:输出按 TIA 规则处理,先判断 IN <> 0。
  • 和 DECO 混淆:ENCO 是“位模式 → 编号”,DECO 是“编号 → 一位”。
  • ENO 未接:后面的指令可能不执行;需要串联时检查 ENO。

← 返回 LAD 指令手册