跳到主要内容

趋势图

监控表只能看瞬时值,想看变化过程要用趋势图。适合调 PID、分析抖动、查问题。

截图: 趋势图面板

新建趋势

项目浏览器 → 趋势 → 新建,进入趋势配置页:

  1. 添加变量,选要画曲线的变量(支持多个)
  2. 设置采样周期(10ms / 100ms / 1s)
  3. 设置数据保留时长(1 分钟 / 1 小时 / 1 天)
  4. 选择显示方式(线图/点图/区域图)

运行时查看

在线连接后,趋势图实时滚动刷新。操作:

操作效果
滚轮缩放时间轴
拖动平移
双击回到最新
十字光标显示指定时刻的所有变量值
右键 → 暂停停止刷新,定格分析

多变量对比

同一图里画多条曲线,颜色区分。常见组合:

  • PID:设定值 + 实际值 + 输出 三条一起画
  • 振动分析:主轴 X/Y/Z 三轴同时看
  • 节拍分析:工位 1/2/3 的完成信号对比

数据导出

右键 → 导出 CSV,带时间戳,可导入 Excel / Python 分析。

截图: 趋势图数据导出

长周期记录

如果要连续记录数天/数周, 建议用数据库模块(见 数据库通讯)把数据存到 SQL 或时序库, 趋势图只做实时显示。

实时趋势 vs 历史趋势

两种趋势模式:

模式数据源使用场景
实时趋势当前运行中的 Runtime在线观察波形
历史趋势已保存的数据库记录回溯已结束的问题

历史趋势可选数据源:

  • SQLite (默认): 本地 %AppData%/DarraPLC/trends.db
  • PostgreSQL / MySQL: 企业级集中存储
  • InfluxDB / TimescaleDB: 专业时序数据库, 支持 PB 级
  • CSV 归档: 直接读取 CSV 文件

采样策略

趋势数据采样方式:

1. 定时采样

固定周期采样 (推荐):

采样周期适用1 小时数据量
1ms运动控制 / 高速抓拍3.6M 点 / 变量
10ms电机转速 / PID360K 点
100ms温度 / 流量 (默认)36K 点
1s慢动态 (反应釜)3.6K 点
10s长周期 (仓储温度)360 点

2. 变化采样 (Change Triggered)

只在值变化超过阈值时采样, 节省存储:

rTemp 变化阈值 0.1 °C:
时刻 t=0s, 值 25.0 → 记录
时刻 t=5s, 值 25.05 → 跳过 (变化<0.1)
时刻 t=7s, 值 25.2 → 记录 (变化>0.1)

适合慢变量尖峰捕捉

3. 事件采样 (Event Triggered)

特定事件发生时开始记录一段数据:

触发条件: R_TRIG(bFault)
前触发: 2 秒 (记录事件前的数据)
后触发: 10 秒 (记录事件后)

故障诊断最有用, 可以看到故障前后 12 秒的完整波形。

4. 混合模式

平时变化采样 (省空间), 异常时切高频定时采样 (保留细节):

IF rError > 1.0 THEN
TrendSwitchToHighFreq(10ms); // 问题期间 10ms 采样
ELSE
TrendSwitchToLowFreq(1s); // 正常时 1s 采样
END_IF;

触发条件

触发表达式支持完整 ST 语法:

边沿触发:       R_TRIG(bFault)
值阈值: rTemp > 80.0
偏差阈值: ABS(rSetpoint - rActual) > 5.0
组合条件: bRun AND (rError > 2.0 OR bAlarm)
频率条件: TIME() % T#100ms = 0 (每 100ms)
复合表达式: rPressure > 10.0 AND tonTimeout.Q

多变量对比

一张趋势图同时显示多条曲线, 颜色 / 线型 / 刻度独立:

┌─ 趋势: PID 调参 ──────────────────────────────┐
│ │
│ 80 ┤ ╱╲ │ ← 设定值 (红)
│ 75 ┤ ╱ ╲ ╱‾‾‾‾ │
│ 70 ┤ ╱ ╲╱ │ ← 反馈值 (蓝)
│ 65 ┤ ╱ │
│ 60 ┤ ╱ │
│ └─────────────────────────────────────────┘
│ │
│ 100 ┤ ▁▂▄▆█▇▅▄▃▂▁ │ ← PID 输出 (绿)
│ 50 ┤ │
│ 0 └─────────────────────────────────────────┘
│ 0s 5s 10s 15s 20s 25s │
└───────────────────────────────────────────────┘

双 Y 轴

不同单位的变量用不同 Y 轴:

  • 左 Y 轴: 温度 0-200°C
  • 右 Y 轴: 压力 0-10 bar

光标 (Cursor)

X 键开启十字光标:

时刻: t = 12.345s
rSetpoint = 75.0 °C
rActual = 73.8 °C
rError = 1.2 °C
fbPID.rOutput = 68.5 %

所有曲线在同一时刻的值同步显示, 便于逐点分析。

光标差 (Delta)

D 键放两个光标计算时间差和数值差:

Δt = 2.5 s
Δ(rActual) = +1.7 °C
斜率 = 0.68 °C/s

常用于:

  • 测量响应时间 (阶跃响应 10%→90%)
  • 测量过冲 (peak - steady)
  • 测量振荡周期

缓冲区管理

每条曲线都有循环缓冲区, 满了自动覆盖最旧数据:

缓冲大小1 小时覆盖1 天覆盖
1K 点1 秒
10K 点10 秒
100K 点1.7 分钟
1M 点 (默认)17 分钟
10M 点2.8 小时

超过缓冲时:

  • 覆盖旧: 先进先出 (默认)
  • 停止: 达到上限后停止记录
  • 归档: 自动转储到数据库, 缓冲继续滚动

导出数据

多种导出格式:

CSV

标准时间戳 + 列式数据:

Timestamp,rSetpoint,rActual,rOutput
2026-04-18T10:32:05.100,75.0,73.8,68.5
2026-04-18T10:32:05.200,75.0,73.9,67.8
2026-04-18T10:32:05.300,75.0,74.0,67.2
...

Excel (XLSX)

带图表模板, 直接打开看曲线。

MAT (MATLAB)

用于 MATLAB / Simulink 分析:

load('trend_data.mat');
plot(data.time, data.rActual);

JSON / Parquet

机器学习友好格式:

import pandas as pd
df = pd.read_parquet('trend_data.parquet')
df.plot()

导出范围

  • 全部缓冲
  • 当前可见区间
  • 两光标之间
  • 指定时间段

录制模式 (Recording)

24 小时连续录制:

  1. 新建趋势 → 录制模式
  2. 设置数据库 (SQLite / InfluxDB)
  3. 采样策略 (定时 + 事件组合)
  4. 启动录制, 后台持续写入
  5. 问题发生后, 历史趋势回放

典型场景: 生产线偶发故障, 每月出 1 次, 录制 30 天等复现, 然后回放分析。

趋势图与 PID 调参

PID 调参的标准流程依赖趋势图:

  1. 趋势图加入: rSetpoint, rActual, rError, rOutput, rPIntegral, rDiff
  2. 采样 10~100ms
  3. 给阶跃: rSetpoint = 50.0 → 75.0
  4. 观察曲线:
    • 上升时间: 10% → 90% 所用时间
    • 超调: peak / steady - 1
    • 稳定时间: 进入 ±2% 区间的时间
    • 稳态误差: 长期平均 rError
  5. 按 PID 调参经验调 Kp/Ki/Kd
  6. 再给阶跃, 对比前后趋势

排错表

问题原因解决
曲线不动采样周期未启动确认趋势已启动
曲线丢帧采样周期小于实际采样能力加大采样周期
数据导出空缓冲被清启动录制模式到数据库
多变量刻度不一致未用双 Y 轴右键曲线 → 分配 Y 轴
光标位置不对齐采样时间戳不一致确认所有变量同一采样源
趋势图闪烁刷新频率与系统冲突调整 Refresh 为 200ms

最佳实践

  • 关键变量打包: 按分析主题建独立趋势 (PID 调参 / 运动轨迹 / 通讯质量)
  • 采样周期匹配动态: 系统时间常数的 1/10 ~ 1/20
  • 事件触发录制: 把故障前后数据保存下来最关键
  • 长期录制转数据库: 别留在 RAM 缓冲, 宕机就丢
  • 导出归档: 调试完成保存一份 CSV, 纳入项目版本控制
  • 光标对比: 永远用两光标量化差异, 别只用眼睛看
  • 注释时间戳: 在趋势图打标签 (如"换型开始"), 便于回顾

相关文档