跳到主要内容
本文档已合并

LAD 元件参考

本文档列出 Darra IDE 梯形图编辑器中所有可用的编程元件,包括符号表示、参数说明和行为描述。

触点 (Contact)

触点是梯形图中用于"读取"布尔变量状态的元件。触点不改变变量值,只根据变量状态决定是否允许能流通过。

常开触点 (NO Contact)

  变量名
──┤ ├──
属性说明
符号--[ ]----┤ ├──
变量类型BOOL
能流条件变量为 TRUE 时导通
ST 等价IF <变量> THEN
典型用途读取传感器、按钮、状态位
     bSensor1                  bOutput
──┤ ├──────────────────────( )──
// bSensor1 = TRUE 时 bOutput 导通

常闭触点 (NC Contact)

  变量名
──┤/├──
属性说明
符号--[/]----┤/├──
变量类型BOOL
能流条件变量为 FALSE 时导通
ST 等价IF NOT <变量> THEN
典型用途急停(断线即停)、限位开关常闭
     bEStop                    bRunEnable
──┤/├──────────────────────( )──
// 急停未按下 (bEStop = FALSE) 时运行允许

上升沿检测 (P-Trigger / R_TRIG)

  变量名
──┤P ├──
属性说明
符号--[P]----┤P ├──
变量类型BOOL
能流条件变量从 FALSE → TRUE 时导通一个扫描周期
ST 等价R_TRIG(CLK := <变量>).Q
典型用途按钮按下触发、启动信号、计数脉冲

下降沿检测 (N-Trigger / F_TRIG)

  变量名
──┤N ├──
属性说明
符号--[N]----┤N ├──
变量类型BOOL
能流条件变量从 TRUE → FALSE 时导通一个扫描周期
ST 等价F_TRIG(CLK := <变量>).Q
典型用途停止检测、故障恢复、完成信号

取反 (Negate)

──┤NOT├──

将输入能流取反输出:输入导通 → 输出断开;输入断开 → 输出导通。

线圈 (Coil)

线圈是梯形图中用于"写入"布尔变量的元件。根据线圈类型,可能受能流控制或触发行为。

标准线圈 (Coil)

──( )──
属性说明
符号--( )--
写入条件能流导通时写 TRUE,断开时写 FALSE
ST 等价<变量> := <能流条件>;
典型用途普通输出控制
     bCond1     bCond2               bOut
──┤ ├──────┤/├──────────────────( )──
// bOut := bCond1 AND NOT bCond2;

取反线圈 (Negated Coil)

──(/)──
属性说明
符号--(/)--
写入条件能流导通时写 FALSE,断开时写 TRUE
典型用途反相输出控制

置位线圈 (Set / Latch)

──(S)──
属性说明
符号--(S)--
写入条件能流导通时置变量为 TRUE,断开时保持
ST 等价IF &lt;能流条件&gt; THEN <变量> := TRUE; END_IF;
典型用途自锁保持、状态锁存

复位线圈 (Reset / Unlatch)

──(R)──
属性说明
符号--(R)--
写入条件能流导通时置变量为 FALSE,断开时保持
ST 等价IF &lt;能流条件&gt; 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)

用于梯级内部分支点的能流暂存:

符号名称说明
MPSPush将当前能流压入栈
MRDRead读取栈顶能流(不弹出)
MPPPop弹出栈顶能流
  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 │
└────────────┘
引脚类型说明
INBOOL 输入启动计时:TRUE 开始计时
PTTIME 输入预设延时时间
QBOOL 输出计时完成输出
ETTIME 输出已计时时间

行为: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 │
└────────────┘
引脚类型说明
INBOOL 输入FALSE 开始计时
PTTIME 输入断开延时时间
QBOOL 输出延时期间保持 TRUE
ETTIME 输出已计时时间

行为: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 │
└────────────┘
引脚类型说明
CUBOOL 输入上升沿计数+1
RBOOL 输入复位计数器(CV=0,Q=FALSE)
PVINT 输入预设值
QBOOL 输出CV >= PV 时 TRUE
CVINT 输出当前计数值

CTD — 递减计数器

  ┌─ CTD ──────┐
│ CD Q ├──── bDone
│ LD CV ├──── iCount
│ PV │
│ 5 │
└────────────┘
引脚类型说明
CDBOOL 输入上升沿计数-1
LDBOOL 输入加载预设值到 CV
PVINT 输入预设值
QBOOL 输出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 = IN2IN1 = IN2
NE──[<>]──IN1 <> IN2IN1 &lt;&gt; IN2
GT──[>]──IN1 > IN2IN1 > IN2
LT──[&lt;]──IN1 < IN2IN1 < IN2
GE──[>=]──IN1 >= IN2IN1 >= IN2
LE──[&lt;=]──IN1 <= IN2IN1 &lt;= IN2
  bEnable  ┌─ GT ───┐    bAlarm
──┤ ├──────┤ rTemp ├───( )──
│ 80.0 │
└─────────┘
// rTemp > 80.0 时报警

范围检查示例

  ┌─ GE ───┐    ┌─ LE ───┐    bInRange
──┤ rValue ├────┤ rValue ├───( )──
│ 0.0 │ │ 100.0 │
└─────────┘ └─────────┘
// 0.0 &lt;= rValue &lt;= 100.0

数学运算块 (Math)

功能输入数说明
ADD加法2+IN1 + IN2 + ...
SUB减法2IN1 - IN2
MUL乘法2+IN1 * IN2 * ...
DIV除法2IN1 / IN2
MOD取模2IN1 MOD IN2
ABS绝对值1|IN1|
SQRT平方根1√IN1
SQR平方1IN1²
NEG取反1-IN1
  bCalc  ┌─ ADD ────┐    ┌─ DIV ────┐    rAvg
──┤ ├────┤ rVal1 ├────┤ rSum ├───┤MOVE├──
│ rVal2 │ │ 2.0 │
│ rVal3 │ └───────────┘
└───────────┘

移动指令 (MOVE)

──[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 &lt;标签&gt;无条件跳转到同 POU 内的标签位置
LBL &lt;标签&gt;跳转目标标记

条件返回 (RET)

──[RET]──

当能流导通时,立即结束当前 POU 的执行,返回调用者。

元件属性面板

在 Darra IDE 中双击任意元件,右侧属性面板显示可配置参数:

元件类型可配置属性
触点变量名、取反、注释
线圈变量名、类型(标准/S/R)、注释
定时器实例名、PT 值(TIME 格式)、IN 变量
计数器实例名、PV 值、CU/CD/R 变量
比较块输入 1、输入 2、比较类型
数学块输入列表、输出变量
FB 调用FB 实例名、各端口变量绑定
MOVE输入值、输出变量
JMP/LBL标签名

相关文档