LAD 梯形图的完整元件参考、时序图、示例已全部合并至 LAD 梯形图完全参考手册。
本文档保留为历史参考,新内容请直接查看综合手册的对应章节:
本文档列出 Darra IDE 梯形图编辑器中所有可用的编程元件,包括符号表示、参数说明和行为描述。
触点是梯形图中用于"读取"布尔变量状态的元件。触点不改变变量值,只根据变量状态决定是否允许能流通过。
| 属性 | 说明 |
|---|
| 符号 | --[ ]-- 或 --┤ ├── |
| 变量类型 | BOOL |
| 能流条件 | 变量为 TRUE 时导通 |
| ST 等价 | IF <变量> THEN |
| 典型用途 | 读取传感器、按钮、状态位 |
bSensor1 bOutput
──┤ ├──────────────────────( )──
// bSensor1 = TRUE 时 bOutput 导通
| 属性 | 说明 |
|---|
| 符号 | --[/]-- 或 --┤/├── |
| 变量类型 | BOOL |
| 能流条件 | 变量为 FALSE 时导通 |
| ST 等价 | IF NOT <变量> THEN |
| 典型用途 | 急停(断线即停)、限位开关常闭 |
bEStop bRunEnable
──┤/├──────────────────────( )──
// 急停未按下 (bEStop = FALSE) 时运行允许
上升沿检测 (P-Trigger / R_TRIG)
| 属性 | 说明 |
|---|
| 符号 | --[P]-- 或 --┤P ├── |
| 变量类型 | BOOL |
| 能流条件 | 变量从 FALSE → TRUE 时导通一个扫描周期 |
| ST 等价 | R_TRIG(CLK := <变量>).Q |
| 典型用途 | 按钮按下触发、启动信号、计数脉冲 |
下降沿检测 (N-Trigger / F_TRIG)
| 属性 | 说明 |
|---|
| 符号 | --[N]-- 或 --┤N ├── |
| 变量类型 | BOOL |
| 能流条件 | 变量从 TRUE → FALSE 时导通一个扫描周期 |
| ST 等价 | F_TRIG(CLK := <变量>).Q |
| 典型用途 | 停止检测、故障恢复、完成信号 |
取反 (Negate)
将输入能流取反输出:输入导通 → 输出断开;输入断开 → 输出导通。
线圈 (Coil)
线圈是梯形图中用于"写入"布尔变量的元件。根据线圈类型,可能受能流控制或触发行为。
标准线圈 (Coil)
| 属性 | 说明 |
|---|
| 符号 | --( )-- |
| 写入条件 | 能流导通时写 TRUE,断开时写 FALSE |
| ST 等价 | <变量> := <能流条件>; |
| 典型用途 | 普通输出控制 |
bCond1 bCond2 bOut
──┤ ├──────┤/├──────────────────( )──
// bOut := bCond1 AND NOT bCond2;
取反线圈 (Negated Coil)
| 属性 | 说明 |
|---|
| 符号 | --(/)-- |
| 写入条件 | 能流导通时写 FALSE,断开时写 TRUE |
| 典型用途 | 反相输出控制 |
置位线圈 (Set / Latch)
| 属性 | 说明 |
|---|
| 符号 | --(S)-- |
| 写入条件 | 能流导通时置变量为 TRUE,断开时保持 |
| ST 等价 | IF <能流条件> THEN <变量> := TRUE; END_IF; |
| 典型用途 | 自锁保持、状态锁存 |
复位线圈 (Reset / Unlatch)
| 属性 | 说明 |
|---|
| 符号 | --(R)-- |
| 写入条件 | 能流导通时置变量为 FALSE,断开时保持 |
| ST 等价 | IF <能流条件> THEN <变量> := FALSE; END_IF; |
| 典型用途 | 故障复位、状态清除 |
置位优先 (SR) 和复位优先 (RS)
┌─ SR ─┐
│ S1 Q├──── bOut
│ R │
└───────┘
┌─ RS ─┐
│ S Q├──── bOut
│ R1 │
└───────┘
| 类型 | 冲突规则 | 说明 |
|---|
| SR (置位优先) | S 和 R 同时有效 → 置位 | 优先置位 |
| RS (复位优先) | S 和 R 同时有效 → 复位 | 优先复位(安全推荐) |
中间变量 (Midline / MPS/MRD/MPP)
用于梯级内部分支点的能流暂存:
| 符号 | 名称 | 说明 |
|---|
MPS | Push | 将当前能流压入栈 |
MRD | Read | 读取栈顶能流(不弹出) |
MPP | Pop | 弹出栈顶能流 |
bCommon ┌─ bA ──( bOut1 )
──┤ ├──MPS──┤
├─ bB ──( bOut2 )
└─ bC ──( bOut3 )──MPP
Darra IDE 自动管理栈操作,工程师通过"分支"按钮插入分叉点即可。
定时器 (Timer)
定时器是梯形图中最常用的功能块之一。Darra IDE 支持三种 IEC 61131-3 标准定时器。
TON — 接通延时定时器
┌─ TON ─────┐
│ IN Q ├──── bDone
│ PT ET ├──── tElapsed
│ T#2s │
└────────────┘
| 引脚 | 类型 | 说明 |
|---|
IN | BOOL 输入 | 启动计时:TRUE 开始计时 |
PT | TIME 输入 | 预设延时时间 |
Q | BOOL 输出 | 计时完成输出 |
ET | TIME 输出 | 已计时时间 |
行为:IN 为 TRUE 时开始计时,ET 递增。当 ET >= PT 时 Q 变为 TRUE。IN 变为 FALSE 时 ET 清零,Q 变为 FALSE。
bTrigger ┌─ TON ─────┐ bDelayDone
──┤ ├────────┤ IN Q ├────( )──
│ PT ET │
│ T#3s │
└────────────┘
TOF — 断开延时定时器
┌─ TOF ─────┐
│ IN Q ├──── bDone
│ PT ET ├──── tElapsed
│ T#5s │
└────────────┘
| 引脚 | 类型 | 说明 |
|---|
IN | BOOL 输入 | FALSE 开始计时 |
PT | TIME 输入 | 断开延时时间 |
Q | BOOL 输出 | 延时期间保持 TRUE |
ET | TIME 输出 | 已计时时间 |
行为:IN 为 TRUE 时 Q 立即为 TRUE,ET = 0。IN 从 TRUE → FALSE 时开始计时,ET 递增。ET >= PT 时 Q 变为 FALSE。
TP — 脉冲定时器
┌─ TP ───────┐
│ IN Q ├──── bPulse
│ PT ET ├──── tElapsed
│ T#500ms │
└────────────┘
行为:IN 上升沿触发,Q 输出宽度为 PT 的脉冲。PT 期间后续上升沿不扩展脉冲。
定时器组合示例
// 闪烁灯:TP 自反馈
bFlash ┌─ TP ───────┐ bFlash
──┤/├─────────────┤ IN Q ├──────( )──
│ PT ET │
│ T#500ms │
└────────────┘
计数器 (Counter)
CTU — 递增计数器
┌─ CTU ──────┐
│ CU Q ├──── bDone
│ R CV ├──── iCount
│ PV │
│ 10 │
└────────────┘
| 引脚 | 类型 | 说明 |
|---|
CU | BOOL 输入 | 上升沿计数+1 |
R | BOOL 输入 | 复位计数器(CV=0,Q=FALSE) |
PV | INT 输入 | 预设值 |
Q | BOOL 输出 | CV >= PV 时 TRUE |
CV | INT 输出 | 当前计数值 |
CTD — 递减计数器
┌─ CTD ──────┐
│ CD Q ├──── bDone
│ LD CV ├──── iCount
│ PV │
│ 5 │
└────────────┘
| 引脚 | 类型 | 说明 |
|---|
CD | BOOL 输入 | 上升沿计数-1 |
LD | BOOL 输入 | 加载预设值到 CV |
PV | INT 输入 | 预设值 |
Q | BOOL 输出 | CV <= 0 时 TRUE |
CTUD — 双向计数器
┌─ CTUD ───────┐
│ CU QU ├──── bUpDone
│ CD QD ├──── bDownDone
│ R CV ├──── iCount
│ LD │
│ PV │
│ 100 │
└──────────────┘
同时支持递增 (CU) 和递减 (CD) 输入,兼有 R 复位和 LD 加载功能。
bSensorIn ┌─ CTUD ───────┐
──┤P├────────┤ CU QU ├── bHigh
│ CD QD ├── bEmpty
bSensorOut │ CV├── iStock
──┤P├────────┤ R PV │
bReset │ LD 100 │
──┤ ├────────┤ │
└──────────────┘
// 库存监控:进料+1、出料-1、满仓报警、空仓报警
比较指令 (Compare)
比较块有两个数据输入和一个布尔输出,输出由比较结果决定。
| 块 | 符号 | 条件 | ST 等价 |
|---|
| EQ | ──[==]── | IN1 = IN2 | IN1 = IN2 |
| NE | ──[<>]── | IN1 <> IN2 | IN1 <> IN2 |
| GT | ──[>]── | IN1 > IN2 | IN1 > IN2 |
| LT | ──[<]── | IN1 < IN2 | IN1 < IN2 |
| GE | ──[>=]── | IN1 >= IN2 | IN1 >= IN2 |
| LE | ──[<=]── | IN1 <= IN2 | IN1 <= IN2 |
bEnable ┌─ GT ───┐ bAlarm
──┤ ├──────┤ rTemp ├───( )──
│ 80.0 │
└─────────┘
// rTemp > 80.0 时报警
范围检查示例
┌─ GE ───┐ ┌─ LE ───┐ bInRange
──┤ rValue ├────┤ rValue ├───( )──
│ 0.0 │ │ 100.0 │
└─────────┘ └─────────┘
// 0.0 <= rValue <= 100.0
数学运算块 (Math)
| 块 | 功能 | 输入数 | 说明 |
|---|
| ADD | 加法 | 2+ | IN1 + IN2 + ... |
| SUB | 减法 | 2 | IN1 - IN2 |
| MUL | 乘法 | 2+ | IN1 * IN2 * ... |
| DIV | 除法 | 2 | IN1 / IN2 |
| MOD | 取模 | 2 | IN1 MOD IN2 |
| ABS | 绝对值 | 1 | |IN1| |
| SQRT | 平方根 | 1 | √IN1 |
| SQR | 平方 | 1 | IN1² |
| NEG | 取反 | 1 | -IN1 |
bCalc ┌─ ADD ────┐ ┌─ DIV ────┐ rAvg
──┤ ├────┤ rVal1 ├────┤ rSum ├───┤MOVE├──
│ rVal2 │ │ 2.0 │
│ rVal3 │ └───────────┘
└───────────┘
移动指令 (MOVE)
| 属性 | 说明 |
|---|
| 功能 | 当能流导通时,将输入值复制到输出 |
| ST 等价 | IF <能流> THEN <OUT> := <IN>; END_IF; |
| 数据类型 | 任意基本类型(自动匹配) |
bLoad ┌─ MOVE ─┐ rSetpoint
──┤ ├─────────┤ IN OUT├───
│ 100.0 │
└─────────┘
功能块调用 (FB/FC Call)
在 LAD 中可以调用 SCL 编写的自定义功能块 (FB) 或函数 (FC),表现形式与标准定时器相同。
FB 实例调用
bEnable ┌─ FB_Motor ─────────┐
──┤ ├──────┤ bStart bRunning├── bMotorOn
│ rSetSpeed rActSpeed├── rFeedback
bStop │ │
──┤/├──────┤ bStop sDiagMsg├── sStatus
└─────────────────────┘
函数调用 (FC)
函数是无状态的,每次调用独立计算:
bEnable ┌─ FC_CalcDistance ─┐
──┤ ├──────┤ rX1 rDist├── rResult
│ rY1 │
│ rX2 │
│ rY2 │
└───────────────────┘
跳转与标签 (JMP / LBL)
无条件跳转
bSkip bOut1
──┤ ├────[JMP LBL_Skip]──( )──
// 当 bSkip = TRUE 时跳转到 LBL_Skip,跳过中间梯级
bCond1 bOut2
──┤ ├──────( )──
// 被跳过的梯级
[LBL_Skip]
// 跳转目标
| 元件 | 说明 |
|---|
JMP <标签> | 无条件跳转到同 POU 内的标签位置 |
LBL <标签> | 跳转目标标记 |
条件返回 (RET)
当能流导通时,立即结束当前 POU 的执行,返回调用者。
元件属性面板
在 Darra IDE 中双击任意元件,右侧属性面板显示可配置参数:
| 元件类型 | 可配置属性 |
|---|
| 触点 | 变量名、取反、注释 |
| 线圈 | 变量名、类型(标准/S/R)、注释 |
| 定时器 | 实例名、PT 值(TIME 格式)、IN 变量 |
| 计数器 | 实例名、PV 值、CU/CD/R 变量 |
| 比较块 | 输入 1、输入 2、比较类型 |
| 数学块 | 输入列表、输出变量 |
| FB 调用 | FB 实例名、各端口变量绑定 |
| MOVE | 输入值、输出变量 |
| JMP/LBL | 标签名 |
相关文档