跳到主要内容

在线监控

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

截图: 在线监控面板

进入在线模式

  • IDE 已连接 Runtime(状态栏绿色)
  • Ribbon → PLC → 在线监控(或快捷键 Ctrl+F5)
  • 编辑器切换为在线视图,变量值以彩色显示在右侧

监控表

除了在代码旁看值,还能把关注的变量集中显示:

  1. 项目浏览器 → 监控表 → 新建
  2. 在表格中一行一行加变量名
  3. 运行时每行显示当前值、数据类型、注释
  4. 值会根据扫描周期自动刷新

监控表可保存在项目里,下次打开继续用。

触发条件

想只在某条件下刷新,右键变量 → 触发条件:

  • 值变化时记录
  • 超阈值时报警
  • 定时采样(如每 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
科学计数REAL7.2456e+01
浮点小数REAL72.456
ASCIIBYTE / STRING'A' (0x41)
时间TIMET#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:

  1. IDE → 连接多个 Runtime (PLC1 / PLC2 / PLC3)
  2. 新建监视表 → 变量名前加 PLC 前缀: PLC1.iCount, PLC2.rTemp
  3. 一张表看全线状态

典型场景: 流水线有 5 个工位, 每站一个 PLC, 总控界面在一张监视表看 5 站产量。

冻结 (Freeze)

右键监视表 → 冻结:

  • 所有值定格在当前时刻
  • 用于"对比此刻值和 30 秒后值"
  • 解冻恢复实时刷新
  • 冻结期间仍可添加/删除变量, 只是不更新值

典型场景: 怀疑某个参数飘移, 冻结拍快照, 观察一会儿再看差异。

排错表

问题原因解决
变量值显示 ???变量未声明或重编译后变量表未同步重新连接, 同步变量表
值不刷新连接断开检查状态栏, 重新连接
值跳变异常被其他客户端强制查强制列表
结构体展开慢大结构体开销只展开需要的字段
数组显示全是 0地址越界确认数组声明
监视表丢失未保存项目启用自动保存

最佳实践

  • 分类监视表: 按功能分 (运动 / PID / 通讯 / 安全), 不要一张表塞一百个变量
  • 关键变量固定: 重点信号用固定位置放在监视表顶部
  • 格式化提高可读性: 位状态用二进制, 坐标用小数
  • 高亮规则: 超阈值立刻变红, 一眼看出问题
  • 导出存档: 调试结束的监视表导出保存, 下次复用
  • 定期审计: 发布前删掉调试残留的监视和高亮规则
  • 版本控制: 监视表 XML 纳入 Git, 团队共享同一套视图

相关文档