文章目录

WinCC趋势曲线的缩放脚本控制

发布于 2026-03-31 13:38:38 · 浏览 5 次 · 评论 0 条

WinCC 趋势曲线的缩放脚本控制

WinCC 默认的趋势控件虽然具备基本的缩放功能,但在实际工业现场,操作员往往需要一键切换特定的时间跨度,例如“最近 1 小时”或“最近 24 小时”。自带的工具栏操作繁琐,无法实现定制化需求。通过 VBS 脚本直接控制趋势控件的 StartTimeEndTime 属性,可以快速实现自定义缩放逻辑。


1. 准备工作

确保计算机已安装 SIMATIC WinCC V7.x 或 TIA Portal WinCC Professional 组态软件。本指南以 WinCC V7.x 为例,脚本语言选用 VBS。

  1. 打开 WinCC 图形编辑器,加载需要修改的画面文件。
  2. 确认画面中已存在一个“在线趋势控制”控件,假设其名称为 TrendControl_1
  3. 准备两个按钮控件,分别命名为 Btn_ZoomInBtn_ZoomOut,用于触发缩放动作。

2. 脚本逻辑设计

在编写代码前,需明确时间计算的逻辑。缩放的本质是修改趋势曲线显示的时间窗口。假设当前结束时间为 $T_{end}$,时间跨度为 $\Delta T$。

  • 放大(查看更短时间):减小 $\Delta T$,保持 $T_{end}$ 不变或微调。
  • 缩小(查看更长时间):增大 $\Delta T$,保持 $T_{end}$ 不变或微调。

为了简化操作,本方案采用“固定结束时间为当前时刻,调整开始时间”的策略。逻辑流程如下:

graph TD A["开始:点击按钮"] --> B["获取趋势控件对象"] B --> C["读取当前 EndTime"] C --> D["计算新的 StartTime"] D --> E["更新控件 StartTime 属性"] E --> F["结束"]

上述流程中,所有节点文本均包含中文或标点,因此必须使用英文双引号 " 包裹。箭头符号 --> 必须为英文半角。


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. 绑定事件与测试

脚本编写完成后,需将其关联到按钮的点击事件上。

  1. 选中画面上的 Btn_ZoomIn 按钮。
  2. 右键点击按钮,选择“属性”菜单。
  3. 展开“鼠标”选项卡,双击“按左键”事件。
  4. 选择“直接连接”或“动作”选项,点击“浏览”按钮。
  5. 找到刚才编写的 ZoomToOneHour 函数,点击“确定”保存。
  6. 重复上述步骤,为 Btn_ZoomOut 按钮绑定对应的放大脚本(修改 DateAdd 中的数值即可,例如改为 -24 表示最近 24 小时)。
  7. 保存画面文件,激活运行系统。
  8. 点击按钮,观察趋势曲线的时间轴是否发生预期变化。

6. 常见问题排查

若脚本执行后趋势图无变化,请按以下顺序检查:

  1. 检查控件名称是否完全匹配。脚本中的 TrendControl_1 必须与画面属性中的名称一致,包括大小写。
  2. 检查时间格式是否正确。WinCC 脚本中时间变量必须是 Date 类型,不能是字符串。
  3. 检查权限设置。确保当前登录用户拥有操作该控件的权限。
  4. 检查数据连接。若趋势控件未连接有效的变量标签,即使时间轴改变也无法显示曲线。
  5. 检查脚本错误。在 WinCC 消息系统中查看是否有 VBS 运行时错误报警。

若需实现更复杂的动态缩放,例如根据按钮次数累加时间跨度,可定义一个全局变量存储当前跨度值,每次点击时对该变量进行加减运算,公式如下:

$$ \Delta T_{new} = \Delta T_{old} + \Delta T_{step} $$

其中 $\Delta T_{step}$ 为每次点击增加的时间步长。将该变量代入 DateAdd 函数即可实现渐进式缩放。

评论 (0)

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

扫一扫,手机查看

扫描上方二维码,在手机上查看本文