WinCC 趋势曲线的缩放脚本控制
WinCC 默认的趋势控件虽然具备基本的缩放功能,但在实际工业现场,操作员往往需要一键切换特定的时间跨度,例如“最近 1 小时”或“最近 24 小时”。自带的工具栏操作繁琐,无法实现定制化需求。通过 VBS 脚本直接控制趋势控件的 StartTime 和 EndTime 属性,可以快速实现自定义缩放逻辑。
1. 准备工作
确保计算机已安装 SIMATIC WinCC V7.x 或 TIA Portal WinCC Professional 组态软件。本指南以 WinCC V7.x 为例,脚本语言选用 VBS。
- 打开 WinCC 图形编辑器,加载需要修改的画面文件。
- 确认画面中已存在一个“在线趋势控制”控件,假设其名称为
TrendControl_1。 - 准备两个按钮控件,分别命名为
Btn_ZoomIn和Btn_ZoomOut,用于触发缩放动作。
2. 脚本逻辑设计
在编写代码前,需明确时间计算的逻辑。缩放的本质是修改趋势曲线显示的时间窗口。假设当前结束时间为 $T_{end}$,时间跨度为 $\Delta T$。
- 放大(查看更短时间):减小 $\Delta T$,保持 $T_{end}$ 不变或微调。
- 缩小(查看更长时间):增大 $\Delta T$,保持 $T_{end}$ 不变或微调。
为了简化操作,本方案采用“固定结束时间为当前时刻,调整开始时间”的策略。逻辑流程如下:
上述流程中,所有节点文本均包含中文或标点,因此必须使用英文双引号 " 包裹。箭头符号 --> 必须为英文半角。
3. 编写 VBS 脚本
打开脚本编辑器,创建一个新的全局脚本或直接在按钮事件中编写。以下代码实现了将趋势图范围设置为“最近 1 小时”的功能。
Option Explicit
Function ZoomToOneHour()
Dim objTrend
Dim dtEnd
Dim dtStart
' 获取画面上的趋势控件对象
Set objTrend = ScreenItems("TrendControl_1")
' 获取当前系统时间作为结束时间
dtEnd = Now
' 计算开始时间:当前时间减去 1 小时
' DateAdd 函数语法:DateAdd(间隔,数值,日期)
dtStart = DateAdd("h", -1, dtEnd)
' 将计算后的时间赋值给控件属性
objTrend.EndTime = dtEnd
objTrend.StartTime = dtStart
' 强制刷新控件显示
objTrend.Refresh
Set objTrend = Nothing
End Function
代码中 ScreenItems 用于获取画面对象,DateAdd 用于时间运算。"h" 代表小时单位,-1 代表向前推 1 小时。所有字符串参数必须使用英文双引号 "。
4. 关键参数说明
脚本中涉及的核心对象属性如下表所示。修改这些属性可直接改变趋势图的显示状态。
| 属性名称 | 数据类型 | 说明 | 示例值 |
|---|---|---|---|
StartTime |
Date | 趋势图显示的开始时间 | 2023-10-01 08:00:00 |
EndTime |
Date | 趋势图显示的结束时间 | 2023-10-01 09:00:00 |
Refresh |
Method | 强制控件重新绘制数据 | objTrend.Refresh |
ScreenItems |
Collection | 获取画面控件对象的集合 | ScreenItems("Name") |
注意表格上下必须保留空行,且对齐符号 :--- 不可省略。单元格内若需换行使用 <br>,但本表无需换行。
5. 绑定事件与测试
脚本编写完成后,需将其关联到按钮的点击事件上。
- 选中画面上的
Btn_ZoomIn按钮。 - 右键点击按钮,选择“属性”菜单。
- 展开“鼠标”选项卡,双击“按左键”事件。
- 选择“直接连接”或“动作”选项,点击“浏览”按钮。
- 找到刚才编写的
ZoomToOneHour函数,点击“确定”保存。 - 重复上述步骤,为
Btn_ZoomOut按钮绑定对应的放大脚本(修改DateAdd中的数值即可,例如改为-24表示最近 24 小时)。 - 保存画面文件,激活运行系统。
- 点击按钮,观察趋势曲线的时间轴是否发生预期变化。
6. 常见问题排查
若脚本执行后趋势图无变化,请按以下顺序检查:
- 检查控件名称是否完全匹配。脚本中的
TrendControl_1必须与画面属性中的名称一致,包括大小写。 - 检查时间格式是否正确。WinCC 脚本中时间变量必须是
Date类型,不能是字符串。 - 检查权限设置。确保当前登录用户拥有操作该控件的权限。
- 检查数据连接。若趋势控件未连接有效的变量标签,即使时间轴改变也无法显示曲线。
- 检查脚本错误。在 WinCC 消息系统中查看是否有 VBS 运行时错误报警。
若需实现更复杂的动态缩放,例如根据按钮次数累加时间跨度,可定义一个全局变量存储当前跨度值,每次点击时对该变量进行加减运算,公式如下:
$$ \Delta T_{new} = \Delta T_{old} + \Delta T_{step} $$
其中 $\Delta T_{step}$ 为每次点击增加的时间步长。将该变量代入 DateAdd 函数即可实现渐进式缩放。

暂无评论,快来抢沙发吧!