分享

动态控制WinCC趋势控件

 AllenLI123 2021-09-26

原创作者:张占领 - 西门子工业技术支持中心


经常遇到客户问:

能否动态增、删趋势控件里曲线?

能否动态设定曲线的属性,如颜色?

能否动态选择控件的时间区间?

总之,就是想,灵活!灵活!再灵活!

本文以示例方式来介绍这个话题,包括:

  • 示例功能介绍

  • 示例实现步骤

  • 示例源程序下载链接


  • 功能介绍

动态控制WinCC在线趋势控件

图片

  • 选择参数组名称(变量组),添加多条曲线

  • 设定各曲线的颜色

  • 设定曲线显示的时间范围

  • 组态步骤

  •  创建变量

在WinCC变量管理中创建不同的变量组,并在变量组下创建相应的变量           

图片

本例中,每个变量组下包含的变量如表所示:

图片

  • 创建变量归档

    在WinCC变量记录下创建变量归档,并添加变量

图片

每个变量归档下包含的归档变量如下。这些归档变量将会以曲线的形式显示在WinCC画面中。

图片

  • WinCC查询画面

添加画面对象

本例中需要选择查询的参数以及查询的时间段,然后通过一个按钮来执行数据查询脚本,并把历史数据加载到在线表格控件上。

因此,需要在画面中添加以下对象:
- 选项组控件:用来选择所查询的参数,其对应的所有归档变量将会被加载到在线趋势控件中
- 时间选择控件:用来设定曲线的开始和结束时间
- 在线趋势控件:显示参数曲线
- 按钮:执行查询事件

图片

画面中个对象的名称将会在查询脚本中被使用到,因此需要设定各个控件的名称。本例中各控件名称设置如表所示。
图片

 选项组控件 

<选项组控件用来选择需要查询的参数,并且为单选控件。本文中介绍两种添加选项组控件的方法:直接拖拽控件、从Excel表格中拖拽。
1、直接拖拽控件
选项组控件可以直接从“窗口对象”下拖拽到画面中,设定其框数量(属性:“几何”->“框数量”)为5,并为不同的索引设定相应的文本。

图片

2、从表格中拖拽
下面介绍另外一种方法,可以直接从excel或者WinCC Configuration Studio中拖拽文本到WinCC画面自动创建选项组控件。
首先,在excel中输入需要的文本。
然后,在excel中选择所有文本,移动鼠标到选中区域的右下角,直到鼠标变成十字光标形状。按着鼠标右键拖拽文本到WinCC画面,松开鼠标,在弹出对话框中选择“插入选项组”。
最后,选项组控件被插入到WinCC画面。

图片

另外,也可以直接从WinCCConfiguration Studio中拖拽文本到WinCC画面自动创建选项组控件。

图片

时间选择控件

按如下步骤添加MicrosoftDate and Timer Picker Control控件到画面中。

首先,在ActiveX控件上右键,选择“添加/删除”,然后在OCX控件列表中选择Microsoft Date andTimer Picker Control。

图片

然后,添加控件到画面,拖拽MicrosoftDate and Timer Picker Control控件到画面中。

图片

最后,设置控件的“Format”属性为“3-dptCustom”,“CustomFormat”属性为”yyyy-MM-dd hh:mm”。

图片

在线趋势控件

添加在线趋势控件到画面中,所有属性保持默认值即可。但是需要查看在线趋势控件中的“趋势窗口”名称、“时间轴”名称和“数值轴”名称。这些属性在设置曲线属性的脚本中需要用到。 

图片

查询脚本
根据选项组所选定的参数加载相应的多个归档变量到在线趋势控件,根据设定的查询时间范围设定控件时间轴的开始时间及结束时间。
注意:
设定在线趋势控件的时间范围之前,需要取消在线趋势控件的“刷新”(Online)属性,否则设定的时间范围不起作用。本例中将通过脚本来设置在线趋势控件的“刷新”(Online)属性。
画面中“数据查询”按钮的脚本

图片

具体的VBS脚本如下:
Dim OP1,myTrend
Dim TrendName(9),TrendCount
Set myTrend =ScreenItems('myTrend') '在线趋势控件名称
Dim i
For i=1 To myTrend.TrendCount
  myTrend.TrendIndex=i
  myTrend.TrendRemove=myTrend.TrendName'添加曲线前先删除所有曲线
Next
Set OP1=ScreenItems('OP1')'曲线选择选项组控件名称
Select Case OP1.Process'根据选择项设定曲线条数及各个归档变量名称
  Case 1'选择第1项
  TrendName(0)='flow\flow1'
  ......

  TrendName(7)='flow\flow8'
  TrendCount=8
  Case 2'选择第2项
  TrendName(0)='level\level1'
  TrendName(1)='level\level2'
  TrendName(2)='level\level3'
  TrendCount=3
  Case 4'选择第3项
  TrendName(0)='press\press1'
  ......
  TrendName(5)='press\press6'
  TrendCount=6
  Case 8'选择第4项
  TrendName(0)='quality\quality1'
  ......
  TrendName(6)='quality\quality7'
  TrendCount=7
  Case 16'选择第5项
  TrendName(0)='temp\temp1'
  ......
  TrendName(5)='temp\temp6'
  TrendCount=6
End Select
For i=1 To TrendCount'添加趋势并设定曲线的属性
  myTrend.TrendAdd= TrendName(i-1)
  myTrend.TrendTagName= TrendName(i-1)'曲线名称
  myTrend.TrendTrendWindow= 'Trend window 1''曲线窗口名称
  myTrend.TrendTimeAxis= 'Time axis 1''时间轴
  myTrend.TrendValueAxis= 'Value axis 1''数值轴
  Select Casei '设定各曲线颜色
         Case1
         myTrend.TrendColor= RGb(0,0,0)'黑色
         Case2
         myTrend.TrendColor= RGb(255,0,0)'红色
         Case3
         myTrend.TrendColor= RGb(0,255,0)'绿色
         Case4
         myTrend.TrendColor= RGb(0,0,255)'蓝色
         Case5
         myTrend.TrendColor= RGb(255,255,0)'黄色
         Case6
         myTrend.TrendColor= RGb(0,255,255)'青色
         Case7
         myTrend.TrendColor= RGb(120,36,36)'棕色
         Case8
         myTrend.TrendColor= RGb(255,0,255)'深红
  End Select
Next
'设置曲线开始时间和结束时间
Dim BeginTime,endTime
Set BeginTime=ScreenItems('BeginTime')
Set endTime=ScreenItems('endTime')
myTrend.TimeAxisIndex =0  '时间轴索引
myTrend.Online =0
myTrend.TimeAxisRangeType =1 '时间轴类型-时间范围
myTrend.TimeAxisBeginTime  = BeginTime.value   '起始时间
myTrend.TimeAxisEndTime =endtime.value     '结束时间
  • 运行结果

    在WinCC计算机属性的启动列表中启动“变量记录运行系统”,并激活WinCC项目。

图片

打开WinCC变量模拟器,选择需要需要仿真的变量并设置仿真函数,启动变量模拟器,效果如文中首图

图片

  • 本文源程序 (软件版本:WinCC V7.5 SP1)



(完)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多