4. WinCC Online TrendControl 控件:趋势曲线配置、时间轴设置、多曲线叠加
各位工程师朋友,咱们今天聊聊 WinCC 里这个 Online TrendControl 控件。说实话,这个控件是我在项目里用得最多的一个。为什么?因为现场操作员不看报表,他们就看趋势曲线。曲线一抖,就知道设备出问题了。曲线平了,说明生产稳定。所以,把趋势曲线玩明白,是 WinCC 工程师的基本功。
4.1 控件的基本认识
Online TrendControl,说白了就是一个实时曲线显示控件。它能连接变量,把数据点画成线。我个人习惯把它放在主画面的右上角,因为操作员右手点鼠标,眼睛自然往右上看。
这个控件有几个核心概念:
- 曲线(Trend):一条线代表一个变量
- 时间轴(Time Axis):横轴,显示时间
- 数值轴(Value Axis):纵轴,显示数值范围
- 数据窗口(Data Window):显示当前时间点的具体数值
嗯,这里要注意:Online TrendControl 和 Historical TrendControl 不一样。Online 是实时刷新的,Historical 是查历史数据的。别搞混了。
4.2 趋势曲线配置
配置曲线,其实就三步:添加变量、设置颜色、调整范围。我一步一步说。
4.2.1 添加变量
右键控件,选择 Configuration,弹出配置对话框。在 Trends 选项卡里,点击 Add New。
// 代码示例:通过 VBS 添加曲线
Dim objTrend
Set objTrend = ScreenItems("TrendControl1")
objTrend.Trends.Add "Temperature", "PLC1_Temp", 1
objTrend.Trends("Temperature").PenColor = RGB(255, 0, 0)
objTrend.Trends("Temperature").PenWidth = 2
我在项目中遇到过一个问题:变量名写错了,曲线死活不出来。后来我养成了一个习惯,先在变量管理里复制变量名,再粘贴到配置里。别手敲,容易出错。
4.2.2 设置颜色和线型
颜色选择有个小技巧:
- 温度用红色,因为热
- 压力用蓝色,因为冷
- 流量用绿色,因为流动
- 液位用黄色,因为警示
这不是标准,是我个人的习惯。但操作员一看颜色就知道是什么变量,不用看图例。你想想看,现场操作员哪有时间看文字?
4.2.3 数值轴范围
数值轴范围设置不好,曲线就变成一条直线。我建议:
- 最小值比实际量程低 10%
- 最大值比实际量程高 10%
- 比如温度量程 0-100°C,就设 -10 到 110
为什么要这样?因为有时候变量会超量程一点点,如果范围刚好卡在 0-100,超出的部分就看不到了。我曾经因为这个原因,被现场操作员骂了一顿。
4.3 时间轴设置
时间轴设置,是趋势曲线里最容易踩坑的地方。我重点说说。
4.3.1 时间范围
时间范围决定了曲线显示多长时间的数据。常见的有:
| 时间范围 | 适用场景 | 刷新频率 |
|---|---|---|
| 5 分钟 | 快速调试、波动分析 | 1 秒 |
| 30 分钟 | 日常监控 | 2 秒 |
| 1 小时 | 班次监控 | 5 秒 |
| 8 小时 | 交接班查看 | 10 秒 |
我个人习惯用 30 分钟。太短了看不到趋势,太长了数据点太密,曲线变成一团黑。
4.3.2 时间轴格式
时间轴显示格式,我建议用 HH:mm:ss。为什么?因为操作员需要精确到秒。如果只显示 HH:mm,那曲线抖动的时候,你根本不知道是哪个时间点抖的。
// 设置时间轴格式
objTrend.TimeAxis.Format = "HH:mm:ss"
objTrend.TimeAxis.MajorTickCount = 6 ' 显示 6 个时间刻度
objTrend.TimeAxis.MinorTickCount = 1 ' 不显示小刻度
嗯,这里要注意:时间刻度的数量不要太多。6 个刻度刚刚好,太多了画面乱,太少了看不清。
4.3.3 时间轴滚动模式
Online TrendControl 有两种滚动模式:
- 自动滚动:最新数据一直在最右边,旧数据往左移
- 手动滚动:可以拖动时间轴看历史数据,但不会自动更新
我建议默认用自动滚动。操作员不需要手动操作,就能看到最新数据。但如果你在做故障分析,可以切换到手动模式,拖动时间轴看故障发生前后的数据。
4.4 多曲线叠加
多曲线叠加,就是把多个变量画在同一个坐标系里。这样能直观地看出变量之间的关系。比如温度和压力同时变化,说明设备有问题。
4.4.1 叠加方式
有两种叠加方式:
- 同一数值轴:所有变量共用一个纵轴。适合量程相近的变量,比如两个温度
- 不同数值轴:每个变量有自己的纵轴。适合量程差异大的变量,比如温度和流量
我建议:量程相差超过 2 倍的,就用不同数值轴。否则数值小的变量会变成一条直线。
4.4.2 曲线区分
多曲线叠加,最怕分不清哪条线对应哪个变量。我总结了几个区分方法:
- 颜色区分:每条线用不同颜色,这是最基本的
- 线型区分:实线、虚线、点划线混合使用
- 线宽区分:主变量用粗线,辅助变量用细线
- 标记点区分:在数据点上加圆圈、方块等标记
我曾经在一个项目里,用了 6 条曲线叠加。颜色用了红橙黄绿蓝紫,线型用了实虚混合。结果操作员说:「张工,这线太多了,我眼睛都花了。」后来我改成只显示 3 条主曲线,其他曲线放在另一个画面里。所以,多曲线叠加不是越多越好,3-4 条是极限。
4.4.3 叠加示例
我给大家一个实际案例。一个反应釜的温度控制,需要同时显示:
- 釜内温度(主变量,红色粗实线)
- 夹套温度(辅助变量,蓝色细实线)
- 设定温度(参考变量,绿色虚线)
// 多曲线叠加配置示例
With ScreenItems("TrendControl1")
' 釜内温度
.Trends.Add "ReactorTemp", "PLC1_ReactorTemp", 1
.Trends("ReactorTemp").PenColor = RGB(255, 0, 0)
.Trends("ReactorTemp").PenWidth = 3
.Trends("ReactorTemp").PenStyle = 0 ' 实线
' 夹套温度
.Trends.Add "JacketTemp", "PLC1_JacketTemp", 1
.Trends("JacketTemp").PenColor = RGB(0, 0, 255)
.Trends("JacketTemp").PenWidth = 1
.Trends("JacketTemp").PenStyle = 0 ' 实线
' 设定温度
.Trends.Add "Setpoint", "PLC1_Setpoint", 1
.Trends("Setpoint").PenColor = RGB(0, 255, 0)
.Trends("Setpoint").PenWidth = 2
.Trends("Setpoint").PenStyle = 2 ' 虚线
End With
你看,三条线叠在一起,操作员一眼就能看出:釜内温度是不是在跟踪设定温度,夹套温度有没有异常。这就是多曲线叠加的价值。
4.5 避坑指南
最后,我分享几个我踩过的坑:
- 变量刷新频率不匹配:如果变量刷新频率是 1 秒,但趋势控件刷新频率是 5 秒,那曲线就是阶梯状的。我建议两者保持一致。
- 时间轴时区问题:如果服务器和客户端在不同时区,时间轴显示的时间可能不对。我建议统一用 UTC 时间,然后在显示时转换。
- 数据点过多导致卡顿:如果时间范围设得太大,数据点太多,控件会卡。我建议限制最大数据点数量,比如 1000 个点。
- 曲线颜色与背景冲突:深色背景用浅色曲线,浅色背景用深色曲线。别用黄色曲线配白色背景,根本看不清。
嗯,今天就聊到这里。趋势曲线这个东西,说简单也简单,说复杂也复杂。关键是要站在操作员的角度去想:他们需要看到什么?怎么才能一眼看出问题?想明白了,配置起来就顺手了。
核心要点回顾:
- Online TrendControl 是实时曲线控件,不是历史曲线
- 时间轴设置要匹配现场需求,30 分钟是常用值
- 多曲线叠加不超过 4 条,用颜色和线型区分
- 数值轴范围留 10% 余量,防止超量程
- 自动滚动模式下,拖动时间轴会暂停自动更新
公众号:蓝海资料掘金营,微信deep3321