LAD 调试
Darra IDE 提供多种梯形图调试手段,包括在线监视、强制写入、断点调试和趋势分析。调试时 LAD 编辑器的图形化特性使能流状态一目了然。
在线监视
连接运行时
在调试前,IDE 必须连接到 PLC 运行时 (Runtime):
- 确保 PLC Service 正在运行
- 在 IDE 工具栏点击"在线"按钮(或按
F5) - 状态栏变为绿色,显示
[在线]
导通着色
连接在线后,LAD 编辑器自动进入监视模式,每个元件根据实时变量值着色:
在线状态:
bSensor1 bSensor2 bOutput
──┤[ ]├───────┤[ ]├────────────( )──
绿色 绿色 绿色导通
bSensor1 bSensor2 bOutput
──┤[ ]├───────┤[/]├────────────( )──
绿色 灰色断开 灰色断开
| 颜色 | 状态 | 含义 |
|---|---|---|
| 绿色实心 | 导通 | 触点条件满足 / 线圈通电 |
| 灰色空心 | 断开 | 触点条件不满足 / 线圈未通电 |
| 黄色背景 | 强制 | 变量值被 Force 覆盖(非实际值) |
| 红色 | 错误 | 变量缺失 / 通讯中断 / 编译错误 |
值悬浮显示
将鼠标悬停在任意元件上,显示当前值:
鼠标悬停:
bSensor1 ──┤[ ]├──
↑
┌────┴────┐
│ bSensor1 │
│ TRUE │
│ I0.0 │
└─────────┘
定时器/计数器监视
定时器和计数器在在线模式下实时显示内部状态:
┌─ TON ───────┐
│ IN Q │── FALSE (未完成)
│ PT ET │
│ T#5s T#3.2s
└─────────────┘
↑ PT = 5s, ET = 3.2s, 正在计时中
强制写入 (Force)
强制功能允许工程师在在线状态下覆盖变量的实际值,用于测试特定逻辑路径。
强制单个变量
- 右键元件 → 强制 → 强制值
- 在对话框中输入要强制为 TRUE 或 FALSE
- 变量值立即变为强制值(黄色高亮)
强制前: 强制后:
bSensor1 bOutput bSensor1 bOutput
──┤[ ]├──────(/)── ──┤[ ]├──────(/)──
灰色断开 黄色强制(TRUE)
bOutput = FALSE
强制对话框
右键梯级空白区域 → 强制 → 打开强制对话框:
┌─────────────────────────────────────┐
│ 强制编辑 [X] │
├─────────────────────────────────────┤
│ 变量名 当前值 强制值 状态 │
│ ───────────────────────────────── │
│ bSensor1 FALSE TRUE 强制 │
│ bSensor2 TRUE FALSE 强制 │
│ bMotorRun FALSE -- 正常 │
│ rTemperature 45.2 80.0 强制 │
│ │
│ [+ 添加] [清除全部] │
│ │
│ [应用] [关闭] │
└─────────────────────────────────────┘
强制安全须知
强制使用规范
- 强制仅用于测试和调试,生产环境禁止使用
- 强制值会覆盖物理输入/输出,可能导致意外动作
- 切换离线/在线状态时,所有强制值自动清除
- 强制前确认不会造成设备危险
- 强制变量在状态栏显示
[强制激活]提示 - 建议在强制对话框中添加注释说明强制理由
清除强制
| 方式 | 说明 |
|---|---|
| 强制对话框 → 清除全部 | 清除所有强制变量 |
| 右键单个变量 → 清除强制 | 清除单个变量强制 |
| 断开在线连接 | 自动清除所有强制 |
| 重新下载项目 | 自动清除所有强制 |
断点调试
LAD 编辑器支持在梯级级别设置断点,用于调试复杂的逻辑问题。
设置断点
- 点击梯级号左侧的灰色区域,出现红色圆点
- 或右键梯级号 → 断点 → 插入断点
- 断点激活后,该梯级执行前暂停
● ┌────────────────────────────────┐
│ │ bStart bStop bMotorRun │
│ │──┤ ├──────┤/├─────(S)── │
│ └────────────────────────────────┘
↑ 红色圆点 = 断点已设置
断点状态
| 图标 | 状态 | 说明 |
|---|---|---|
● (红色实心) | 已启用 | 执行到该梯级时暂停 |
○ (灰色空心) | 已禁用 | 断点存在但被跳过 |
▶ (黄色箭头) | 已命中 | 当前停在该断点位置 |
调试控制
断点命中时,IDE 显示调试工具栏:
| 按钮 | 快捷键 | 功能 |
|---|---|---|
▶ 继续 | F5 | 继续执行到下一个断点 |
⏭ 单步 | F10 | 执行当前梯级,停在下一梯级 |
⏭ 步入 | F11 | 进入功能块内部调试 |
⏭ 步出 | Shift+F11 | 退出当前功能块 |
■ 停止 | Shift+F5 | 停止调试 |
变量查看
断点命中时,将鼠标悬停在变量上查看当前值,或在"监视"面板中查看变量列表。
断点条件
右键断点 → 条件,设置条件断点:
断点条件: bMotorRun = TRUE AND rCurrent > 10.0
仅在条件满足时中断,减少不必要的暂停。
趋势图
趋势图功能记录变量随时间的变化曲线,用于分析时序问题。
添加趋势变量
- 在在线模式下,选中要监视的变量
- 右键 → 添加到趋势图
- 或打开趋势面板,点击
+添加变量
趋势图界面
┌─────────────────────────────────────────┐
│ 趋势图 [设置] │
├─────────────────────────────────────────┤
│ rTemperature │
│ 85 ┤╱╲ ╱╲ │
│ 80 ┤ ╲ ╱ ╲ ╱╲ │
│ 75 ┤ ╲ ╱ ╲ ╱ ╲ │
│ 70 ┤ ╲╱ ╲╱ ╲╲ │
│ 65 ┤ ╲ │
│ └───┬───┬───┬───┬───┬───┬─── │
│ 14:00 14:01 14:02 14:03 │
│ │
│ bMotorRun ──────────── (ON/OFF) │
│ rTemperature ─────────── (范围: 0-100) │
│ bAlarm ────────────── (ON/OFF) │
├─────────────────────────────────────────┤
│ 暂停 │ 清除 │ 导出 CSV │ 设置 │
└─────────────────────────────────────────┘
趋势图设置
| 设置项 | 说明 |
|---|---|
| 采样周期 | 100ms / 500ms / 1s / 5s |
| 时间窗口 | 30s / 1min / 5min / 15min / 1h |
| 触发模式 | 正常 / 上升沿触发 / 下降沿触发 |
| Y 轴范围 | 自动 / 手动设置 |
| 显示网格 | 是/否 |
导出趋势数据
点击"导出 CSV"按钮,将趋势数据保存为 CSV 文件,可用 Excel 或其它分析工具打开。
调试工作流
典型调试流程
- 连接在线:按
F5连接到 PLC Runtime - 观察着色:查看 LAD 导通着色,定位断点位置
- 悬停取值:鼠标悬停查看变量实时值
- 强制测试:用强制功能模拟输入条件
- 设置断点:在可疑梯级设置断点单步执行
- 趋势分析:添加关键变量到趋势图观察变化
- 修改代码:发现问题后离线修改 → 重新下载 → 再次验证
常见调试场景
| 场景 | 方法 |
|---|---|
| 线圈不通 | 顺着梯级看哪个触点是灰色 |
| 定时器不计时 | 监视 IN 脚是否为 TRUE |
| 计数器不准 | 检查 CU 是否收到上升沿 |
| 输出意外保持 | 检查是否有 S 线圈未对应 R |
| 变量值不对 | 强制覆盖测试,排除输入源问题 |
| 逻辑顺序错误 | 设置断点逐级执行,观察执行顺序 |
| 时序问题 | 趋势图同时查看多个变量 |
诊断日志
LAD 调试过程中的诊断日志输出到 %AppData%/DarraPLC/logs/ 目录:
| 日志文件 | 内容 |
|---|---|
ide_lad_*.log | LAD 编辑器操作日志 |
ide_online_*.log | 在线通讯日志 |
runtime_debug_*.log | PLC 运行时调试日志 |