在线监控
连接 Runtime 后,可以实时查看 PLC 变量值,不用停机也不用加调试输出。

进入在线模式
- IDE 已连接 Runtime(状态栏绿色)
- Ribbon → PLC → 在线监控(或快捷键 Ctrl+F5)
- 编辑器切换为在线视图,变量值以彩色显示在右侧
监控表
除了在代码旁看值,还能把关注的变量集中显示:
- 项目浏览器 → 监控表 → 新建
- 在表格中一行一行加变量名
- 运行时每行显示当前值、数据类型、注释
- 值会根据扫描周期自动刷新
监控表可保存在项目里,下次打开继续用。
触发条件
想只在某条件下刷新,右键变量 → 触发条件:
- 值变化时记录
- 超阈值时报警
- 定时采样(如每 100ms)
批量操作
选中多行:
- Ctrl+C:复制当前值
- 右键 → 导出 CSV:存到文件分析
- 右键 → 冻结:暂停刷新,当前值固定
性能建议
监控不是越多越好。一次显示 100+ 变量会拖慢刷新, 建议:
- 只放关心的关键变量
- 非关键的用 趋势图 看历史

监视模式
在线监视有三种颗粒度:
1. 代码编辑器旁的内联监视
打开代码编辑器, 右侧自动显示每个变量的当前值:
PROGRAM Main
VAR
iCount : INT := 0; // ← [ 42 ] 在线时显示当前值
rTemp : REAL; // ← [ 72.5 ]
bReady : BOOL := FALSE; // ← [ TRUE ]
stMotor : ST_Motor; // ← [ (展开查看) ]
END_VAR
IF bReady THEN // ← 整行高亮 (当前导通)
iCount := iCount + 1; // ← 变量值实时更新
END_IF;
特点:
- 变量值紧跟声明, 不用切换视图
- LAD/CFC 元素自动着色: 导通=绿, 断开=灰
- 鼠标悬停: 结构体 / 数组展开完整内容
- 性能: 只监视当前屏幕可见变量, 自动按需订阅
2. 监视表 (Watch Table)
集中关注的变量列表, 独立于代码:
┌─────────────────────┬──────────┬─────────────┬───────┬─────────┐
│ 变量名 │ 类型 │ 当前值 │ 强制值│ 注释 │
├─────────────────────┼──────────┼─────────────┼───────┼─────────┤
│ bMotorOn │ BOOL │ TRUE │ — │ 电机使能│
│ rTemperature │ REAL │ 72.456 │ — │ 炉温 │
│ iPartCount │ INT │ 1523 │ — │ 产量 │
│ stRobot.stPose.rX │ LREAL │ 123.456 │ — │ 机器人X │
│ arSensors[3] │ INT │ 4096 │ 3000F │ 传感器3 │
│ fbPID.rOutput │ REAL │ 45.2 │ — │ PID输出 │
└─────────────────────┴──────────┴─────────────┴───────┴─────────┘
3. 结构展开监视
对复杂数据结构展开完整视图:
stRobot1 : ST_Robot
├── sName : STRING = 'R1'
├── iAxisCount : INT = 6
├── stPose : ST_Pose
│ ├── stPos : ST_Position
│ │ ├── rX : LREAL = 123.456
│ │ ├── rY : LREAL = -45.678
│ │ └── rZ : LREAL = 789.012
│ ├── rRoll : REAL = 0.0
│ ├── rPitch : REAL = 0.0
│ └── rYaw : REAL = 1.570796
└── arJointPos : ARRAY[0..5] OF REAL
├── [0] = 0.0
├── [1] = 45.0
├── [2] = -30.0
├── [3] = 0.0
├── [4] = 60.0
└── [5] = 0.0
4. 数组片段监视
大数组只显示关注的片段:
// 只看 aiBuffer[100..120] 这 21 个元素
arView : ARRAY[100..120] OF INT
右键大数组 → 添加切片监视 → 输入起止索引 → 只订阅这段内存, 减少流量。
监视表操作详解
添加变量
- 拖拽: 从变量表拖到监视表
- 粘贴: Ctrl+V 粘贴变量名文本
- 手输: 直接输入变量名 (支持自动补全)
- 批量: 右键 → 从 CSV 导入
格式化显示
右键单元格 → 显示格式:
| 格式 | 适用类型 | 示例 |
|---|---|---|
| 十进制 | 整数 | 1523 |
| 十六进制 | 整数 / 位 | 16#05F3 |
| 二进制 | 整数 / 位 | 2#0000_0101_1111_0011 |
| 布尔 | BOOL / 位 | TRUE / FALSE |
| 科学计数 | REAL | 7.2456e+01 |
| 浮点小数 | REAL | 72.456 |
| ASCII | BYTE / STRING | 'A' (0x41) |
| 时间 | TIME | T#1h23m45s |
列宽与排序
- 拖拽列头边缘调整宽度
- 点击列头 → 按该列排序
- 右键列头 → 隐藏/显示列
- 列配置随监视表保存
颜色高亮
根据条件自动着色:
| 条件 | 颜色 |
|---|---|
| 值变化 (最近 1 秒) | 黄底闪烁 |
| 强制中 | 红粗体 |
| 超出范围 | 红底 |
| 接近阈值 | 橙底 |
| 在允许范围 | 绿底 |
右键变量 → 高亮规则 定义条件。
刷新频率
监视刷新频率影响网络/CPU 负载:
| 频率 | 延迟感 | 适用 |
|---|---|---|
| 50ms | 几乎实时 | 关键信号, 调试 |
| 100ms | 流畅 | 一般监视 (默认) |
| 500ms | 可接受 | 背景监视 |
| 1s | 明显延迟 | 大量变量 |
| 5s | 缓慢 | 长期观察 |
监视表设置 → 刷新周期 调整。
自适应刷新
Darra 自动根据变量数量调整刷新策略:
- 少于 20 个变量 → 50ms 全速刷新
- 20~100 个 → 100ms 刷新
- 100~500 个 → 200ms 刷新
- 500+ → 500ms 刷新 (同时警告用户减少变量)
小技巧: 把不常看的变量放到非活动标签页, 切换到后台不订阅, 减少开销。
触发条件
不是每次变化都记录, 只在满足条件时记录:
触发条件表达式:
rTemp > 80.0 AND bMotorOn (温度高且电机开)
R_TRIG(bFault) (故障上升沿)
ABS(rError) > 5.0 (偏差过大)
TIME() % T#1s = 0 (每秒一次)
触发后的动作:
- 记录当前值到日志
- 加入趋势图采样
- 触发报警
- 启动录屏 (IDE 本地记录)
监视表导入导出
导出监视表
- 右键标签 → 导出监视表 → 选择 XML / JSON / CSV
- 包含变量列表 + 列配置 + 格式化设置 + 高亮规则
- 可跨项目导入
导入监视表
- 从标准项目模板继承一组监视表
- 同类型设备 (如 12 个电机) 用同一套监视模板
- 在线按场景切换监视表: 调试模式 / 运行模式 / 维护模式
版本控制
监视表 XML 可加入 Git 版本控制, 团队共享同一套调试视图。
多工位监视
同时监视多个 PLC:
- IDE → 连接多个 Runtime (PLC1 / PLC2 / PLC3)
- 新建监视表 → 变量名前加 PLC 前缀:
PLC1.iCount,PLC2.rTemp - 一张表看全线状态
典型场景: 流水线有 5 个工位, 每站一个 PLC, 总控界面在一张监视表看 5 站产量。
冻结 (Freeze)
右键监视表 → 冻结:
- 所有值定格在当前时刻
- 用于"对比此刻值和 30 秒后值"
- 解冻恢复实时刷新
- 冻结期间仍可添加/删除变量, 只是不更新值
典型场景: 怀疑某个参数飘移, 冻结拍快照, 观察一会儿再看差异。
排错表
| 问题 | 原因 | 解决 |
|---|---|---|
变量值显示 ??? | 变量未声明或重编译后变量表未同步 | 重新连接, 同步变量表 |
| 值不刷新 | 连接断开 | 检查状态栏, 重新连接 |
| 值跳变异常 | 被其他客户端强制 | 查强制列表 |
| 结构体展开慢 | 大结构体开销 | 只展开需要的字段 |
| 数组显示全是 0 | 地址越界 | 确认数组声明 |
| 监视表丢失 | 未保存项目 | 启用自动保存 |
最佳实践
- 分类监视表: 按功能分 (运动 / PID / 通讯 / 安全), 不要一张表塞一百个变量
- 关键变量固定: 重点信号用固定位置放在监视表顶部
- 格式化提高可读性: 位状态用二进制, 坐标用小数
- 高亮规则: 超阈值立刻变红, 一眼看出问题
- 导出存档: 调试结束的监视表导出保存, 下次复用
- 定期审计: 发布前删掉调试残留的监视和高亮规则
- 版本控制: 监视表 XML 纳入 Git, 团队共享同一套视图