能否快速批量录入历史数据变量?能否动态增、删历史数据控件里数据?能否动态选择控件的时间区间?
总之,就是想,省时!高效!灵活!
本文以示例方式来介绍这个话题,包括:
- 示例功能介绍
- 示例实现步骤
- 示例源程序下载链接
1.功能介绍
动态控制WinCC在线表格控件
1、选择参数组名称(变量组),向控件中添加多条数据
2-3、设定历史数据显示的时间范围
4、设置数据时间间隔
5、查询历史数据
2.组态步骤
创建变量
在WinCC变量管理中创建不同的变量
本例中,每个变量组下包含的变量如表所示:
创建变量归档
在WinCC变量记录下创建变量归档,并添加变量
变量归档下包含的归档变量同上
3.WinCC查询画面
添加画面对象
本例中需要选择查询的参数以及查询的时间段,然后通过一个按钮来执行数据查询脚本,并把历史数据加载到在线表格控件上。
因此,需要在画面中添加以下对象:- 选项组控件:用来选择所查询的参数,其对应的所有归档变量将会被加载到历史数据控件中- 时间选择控件:用来设定历史数据的开始和结束时间- 历史数据控件:查询- 按钮:执行查询事件
画面中个对象的名称将会在查询脚本中被使用到,因此需要设定各个控件的名称。本例中各控件名称设置如下图所示。
选项组控件
<选项组控件用来选择需要查询的参数,并且为单选控件。本文中介绍两种添加选项组控件的方法:直接拖拽控件、从Excel表格中拖拽。1、直接拖拽控件选项组控件可以直接从“窗口对象”下拖拽到画面中,设定其框数量(属性:“几何”->“框数量”)为4,并为不同的索引设定相应的文本。
2、从表格中拖拽:下面介绍另外一种方法,可以直接从excel(必须是微软的excel不可以是wps)或者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脚本如下:
Sub OnLButtonUp(ByVal Item, ByVal Flags, ByVal x, ByVal y)
Dim OP1,tbl1,col
Dim TableName(26),ValueColumnCount '定义每张表格数值上限为(可以自行增减) 定义变量个数
Set tbl1 = ScreenItems("tbl1") '将在线表格控件名称赋值给tbl1
tbl1.Online=False '停止数据刷新
Dim i
For i=1 To tbl1.ValueColumnCount
tbl1.ValueColumnIndex=i '引用已组态的数值列。使用此属性可以将其它属性的值分配给特定的数值列。
'介于 0 和 (ValueColumnCount - 1) 之间的值为“ValueColumnIndex”的有效值。属性“ValueColumnCount”定义已组态的数值列数。
'通过特性 ValueColumnRepos 可为“ValueColumnIndex”特性分配动态属性。数据类型为 LONG。
tbl1.ValueColumnRemove=tbl1.ValueColumnName '添加数据前先删除所有数据,否则数据没办法替换
Next
Set OP1=ScreenItems("OP1") '数据选择选项组控件名称 (注意设置好多选框名字为OP1)
Select Case OP1.Process '根据选择项设定变量个数及各个归档变量名称
Case 1 '选择第1项
TableName(0)="测试温度1"
TableName(1)="测试温度2"
TableName(2)="测试温度3"
TableName(3)="测试温度4"
valuecolumncount=4 '每个选择的个数赋值给计数变量
Case 2 '选择第2项
TableName(0)="测试湿度1"
TableName(1)="测试湿度2"
TableName(2)="测试湿度3"
TableName(3)="测试湿度4"
TableName(4)="测试湿度5"
valuecolumncount=5
Case 4 '选择第3项
TableName(0)="测试压力1"
TableName(1)="测试压力2"
TableName(2)="测试压力3"
valuecolumncount=3
' Case 8 '选择第4项
'TableName(0)="EMSA区DB_1A-2Q34气锁对1A-2Q30缓冲_相对_显示值"
'TableName(1)="EMSA区DB_1A-2Q43气锁对1A-2Q39缓冲_相对_显示值"
'TableName(2)="EMSA区DB_1A-2Q53微生物检验室对1A-2Q52更衣_相对_显示值"
'TableName(3)="EMSA区DB_1A-2Q52更衣对1A-2Q51缓冲_相对_显示值"
'TableName(4)="EMSA区DB_1A-2Q51缓冲对外走廊_相对_显示值"
'TableName(5)="EMSA区DB_1A-2Q33退更对1A-2Q34气锁_相对_显示值"
'TableName(6)="EMSA区DB_1A-2Q32气锁对1A-2Q31更衣_相对_显示值"
'TableName(7)="EMSA区DB_1A-2Q31更衣对1A-2Q30缓冲_相对_显示值"
'TableName(8)="EMSA区DB_1A-2Q30缓冲对外走廊_相对_显示值"
'TableName(9)="EMSA区DB_1A-2Q49无菌检验室对1A-2Q48更衣_相对_显示值"
'TableName(10)="EMSA区DB_1A-2Q48更衣对1A-2Q47缓冲_相对_显示值"
'TableName(11)="EMSA区DB_1A-2Q47缓冲对外走廊_相对_显示值"
'TableName(12)="EMSA区DB_1A-2Q41气锁对1A-2Q40更衣_相对_显示值"
'TableName(13)="EMSA区DB_1A-2Q40更衣对1A-2Q39缓冲_相对_显示值"
'TableName(14)="EMSA区DB_1A-2Q39缓冲对外走廊_相对_显示值"
需要完整程序可以私信老周获取
运行结果
在WinCC计算机属性的启动列表中启动“变量记录运行系统”,并激活WinCC项目。
激活项目,效果如首图
本文源程序 (软件版本:WinCC V7.5 SP2)