VBA技术在WinCC工程组态中的应用
2015-07-07梁洪方黄玉彦乔茜华王永华
梁洪方,黄玉彦,乔茜华,王永华,3
(1.广西工业职业技术学院,南宁 530001;2.郑州轻工业学院,郑州 450002;3.纺织服装产业河南省协同创新中心,郑州 451191)
0 引言
在基于WinCC的大规模项目中,多数采用了分布式系统,有多台服务器和现场控制器相连接,项目中拥有数千幅现场运行画面,超过万点以上的过程变量,以及数量巨大的报警记录和变量记录等,在这样的大型项目中,如何提高项目的组态时间,同时保证组态的正确率成为日益困扰项目开发者的问题。
本文以WinCC在纺织行业数据采集与监控项目为例,介绍VBA技术在WinCC项目中的应用,讨论了如何使用VBA提高WinCC项目组态的效率,有效降低WinCC项目组态时间。
1 VBA在WinCC中的作用
由于SIMATIC WinCC从面世就始终如一的支持Microsoft技术,采用标准的MS SQL Sever数据库作为存储数据库,同时也提供了ANSI-C及VBSCript脚本扩展,集成了VBA(Visual Basic for Applications)编辑器,提供了多种OPC服务,因而WinCC在组态软件领域代表着开放性的最高水平。一方面,可以将WinCC与市场上众多的应用相组合;另一方面,可以方便地将它集成在自己的应用中。
VBA是Microsoft用来拓宽标准应用的功能,以及对标准应用进行定制化的解决方案。WinCC图形编辑器中包含了一个VBA编辑器,可用来自动组态画面。在图形编辑器中使用VBA可在组态期间自动执行经常发生的步骤。在图形编辑器中,可以创建用户定义的菜单和工具栏,以便更加容易地执行所创建的VBA宏,也可以创建及编辑标准对象、智能对象和Windows对象,为画面属性和对象属性添加动态,组态画面和对象中的动作,并访问支持VBA的产品(例如MS Office系列产品)。
2 WinCC图形编辑器的VBA对象模型
WinCC画面编辑器提供VBA接口,基本上可以使用VBA宏来取代其他情况下用鼠标执行的所有组态工作。这尤其适用于GUI(层和缩放)以及画面中对象的编辑(包括动态化)。VBA在图形编辑器中的结构模型如图1所示。图1中,当使用对象时,需要在对象前加上“HMI”。
图1 WinCC图形编辑器VBA对象模型
2.1 使用VBA修改图形编辑器
WinCC组件库包含很多可提供选择的现成对象,可以使用这些对象有效的设计画面。VBA提供了对WinCC组件库的完全访问权限,通过HMISymbolLibraries对象可以使用VBA扩展组件库功能。
通过HMIToolbars和HMIMenus对象可以创建用户定义的菜单和工具栏,以便对图形编辑器中的某些程序状况进行响应。以这种方式可扩展图形编辑器的功能,使之满足您的特殊要求,如在图形编辑器中执行VBA宏。
通过HMIDataLanguages对象可以在图形编辑器中以多种的语言执行组态。这样就可以访问图形编辑器中与语言相关的对象属性,还可以使用户定义的菜单和工具栏以不同的语言显示。以下语句可以将组态语言更改为“英语”:
Application.CurrentDataLanguage = 1033
2.2 使用VBA编辑图形对象
使用VBA编辑对象时,可以在WinCC画面编辑器中搜索对象,创建新的对象,复制、删除现有对象,对现有对象添加或取消分组,显示或更改对象属性。
在VBA编辑器中,当前画面中的所有对象类型都包含在“HMIObjects”列表中。它们不会像在图形编辑器中那样按对象类型(标准对象、智能对象、Windows对象和控件对象)进行区分。因此,可以使用VBA循环浏览一个或多个画面中的所有对象。
在选择了画面中的对象后,这些对象将包含在“Selection”列表中。如果要更改对象属性的默认设置,应使用“HMIDefaultObjects”对象。要使用VBA对画面中的对象进行寻址,可使用对象名称或索引号:
ActiveDocument.HMIObjects(“Circle1”)”
‘ 按对象名称寻址
ActiveDocument.HMIObjects(1)
‘指代活动画面中的第一个对象。
objObject.Properties("FlashBackColor") = True
‘设置对象背景颜色闪烁为真
2.3 使用VBA创建动态特性
利用VBA可将动态添加到画面和对象的属性中,并可组态事件控制的动作。为此,VBA提供了ActionDynamic对象。
利用VBA可以将动态添加到画面和对象的属性中。可以使用变量、脚本或“动态”对话框添加动态。例如,使用动态可以在变量值更改时组态运行系统中对象的颜色变化。
可以使用VBA组态事件控制的动作。将触发某个动作(脚本或直接连接),然后所定义的事件即会在运行系统中发生。例如,事件可以是更改对象属性,或单击按钮。
可以使用VBA编辑触发器。在使用动态时,需要用到触发器,它们确定何时在运行系统中更新动态值。例如,此情况可能会定期发生,或在画面更改时发生。在组态事件控制的动作时,该事件就是触发器。以下代码用于将借助变量var1对圆对象的属性“Top”进行动态化:
Set objCircle = ActiveDocument.HMIObjects.AddHMIObject(“Circle1”, “HMICircle”)
‘为圆对象Top属性添加动态特性,所连接变化变量为“var1”
Set objVariableTrigger = objCircle.Top.CreateDynami c(hmiDynamicCreationTypeVariableDirect, "var1")
With objVariableTrigger
.CycleType = hmiVariableCycleType_2s ‘动态周期为2秒
End With
3 纺织行业数据采集与监控项目实例
为了提高纺织工厂生产管理效率,实现生产信息共享,提高整个企业的信息化水平,目前很多纺织企业都在进行信息化工程建造或改造。某大型纺织企业有两个车间需要完成信息化升级工程,有清花、梳棉、预并、并条、精梳、粗纱、细纱、络筒八个工序,生产规模为8万纱锭。
图2 纺织行业数据采集与监控项目架构
3.1 系统架构
由于纺织企业设备众多,型号繁杂,现场电磁环境恶劣,需要组网的底层设备部分是具有以太网接口进口设备,部分采用PROFIBUS DP现场总线技术集成的现场设备。系统采用西门子S7-300作为数据采集主站,采用光纤环网实现现场网络与中央信息室的互联,以完成对纺纱车间各设备的信息采集、集成。上层基于工业以太网技术实现对整个信息系统的信息传输,并采用WinCC系统来完成终端数据的处理,具体系统的架构如图2所示。
3.2 VBA 技术的应用
在这个项目中,WinCC采用了分布式架构,中央信息室有四台服务器与现场网络相连,还有一台服务器用于Web服务发布,以及多台客户机。
服务器一和服务器二用于完成两个生产车间的数据集成与数据处理;两台冗余服务器是为增加系统的稳定性而设置的,保障中央信息室数据的完整性和连续性;WEB服务器是为管理层以及移动客户端而增设,一方面可以减轻主服务器的负担,另一方面提高了增强WinCC的可访问性,方便各种用户浏览生产数据。放置在车间中的客户机可进行生产监控和管理、数据分析。
项目中拥有数千幅现场运行画面,需要监控的数据变量多达80000点,以及数量巨大的报警记录和变量记录等。车间一生产过程数据采集与监控的总览图如图3所示。
图3 车间一数据采集与监控项目总览图
总览图用于集中显示全车间生产设备,方便工艺人员、维修人员、管理层快速了解生产信息、设备状况。从图3可以看出,全工序画面中300多台纺纱设备,每台设备包含一个文本对象和一个矩形对象,用于显示当前设备编号,当前设备状态,当前品种状态、当前设备详细信息。
其中文本对象主要作用是显示当前设备编号、当前设备品种状态、当前设备详细信息(点击执行脚本动作)。矩形对象主要作用是显示当前设备运行状态和网络状态。文本对象需要修改文本内容、背景颜色、字体颜色、脚本动作四个属性。矩形对象需要修改背景颜色和显示属性。文本对象中背景颜色、字体颜色分别需要添加两个外部变量,矩形对象也是需要添加两个外部变量。具体如图4所示。
图4 文本对象与矩形对象的作用与实现方法
3.3 实现方法
在总览图中,因为需要集中显示全车间生产设备信息,使得组态的对象数量多,对象属性复杂,各个对象动作不同。而且每个生产工序都包含有大量的纺纱设备,特别是在分工序画面中,显示的实时数据量更大、更丰富。在这种情况下,如果还是采取以往手动添加对象属性、增加脚本动作的情况下,项目会出现一定的错误,同时枯燥与繁琐的工作也会极大降低工程人员的组态效率和开发热情。
在这种情况下,在WinCC画面组态的过程中,使用VBA技术,可以自动化完成画面添加对象属性,修改对象属性,增加对象动作等,极大提供了画面组态工作效率。具体代码如下所示:
Option Explicit
Sub 画面参数设置()
Dim colSearchResults As HMICollection
Dim objMember As HMIObject
Dim iTemp As Integer
Dim iResult As Integer
Dim strtemp As String
Dim objObject As HMIObject
Dim objEvent As HMIEvent
Dim objCScript As HMIScriptInfo
Dim strCode As String
Dim objVariableTrigger As HMIVariableTrigger
Dim objDynDialog As HMIDynamicDialog
Dim strName As String
Dim objVBScript As HMIScriptInfo
Dim iNum As Integer
'设置机台号以及品种颜色
Set colSearchResults = ActiveDocument.HMIObjects.Find(ObjectName:="JTH_*")
For Each objMember In colSearchResults
iResult = colSearchResults.Count
strName = Mid(objMember.ObjectName, 5, 3)+0
iTemp = strName
If iTemp > 0 And iTemp < 150 Then '机台号为1~148
'1设置机台号
objMember.Text = "细纱" & Format(strName,"00")
'2 设置品种背景颜色变量,周期为窗口周期
Set objVariableTrigger= objMember.BackColor.CreateDynamic(
hmiDynamicCreationTypeVariableDirect, “XS_PZ_BackColor1_” & strName)
With objVariableTrigger
.CycleType = hmiVariableCycleTypePicture
第37卷 第3期 2015-03(下) 【75】
End With
‘3 设置品种字体颜色变量,周期为窗口周期
Set objVariableTrigger = objMember.ForeColor.CreateDynamic(
hmiDynamicCreationTypeVariableDirect, "XS_PZ_WordColor1_" & strName)
With objVariableTrigger
.CycleType = hmiVariableCycleTypePicture
End With
'4添加脚本
strCode = while(SetText(""" & "JK_XiSha_CanShu_BeiJing.PDL""" & ",""" & "JTH""" & ",""" &Format(strName+1000, "0000")& """)==0); "
Set objEvent = objMember.Events(2)
Set objCScript = objEvent.Actions.AddAction(h miActionCreationTypeCScript)
objCScript.SourceCode = strCode
End If
Next objMember
End Sub
4 结束语
在这个项目中,系统实现了纺织生产过程信息化全集成,实现了两个车间700多台纺织设备80000多点底层数据的实时采集,拥有数千幅现场运行画面等,实现了对整个纺织生产过程的集中监控和管理以及远程浏览功能。
在项目组态过程中,通过充分使用VBA技术,扩展了WinCC画面编辑器功能,极大提高了WinCC组态的效率,有效降低WinCC项目组态时间。在与未使用VBA技术相比,画面组态节省了70%的时间,很大程度上缩短了项目周期,保证了工程进度。
[1]王永华,常洁.基于PROFIBUS的纺织工业网络架构规划[J].郑州轻工业学院学报(自然科学版),2013,04.
[2]王永华,何胜科.纺织生产过程数据集成与处理系统的开发[J].棉纺织技术,2010,11.
[3]邵景峰,李永刚,等.纺织厂生产信息监控系统设计[J].毛纺科技,2010,03.
[4]魏雪梅,刘承晋,董传民.纺织概论-第二版[M].化学工业出版社,2014.
[5]王永华.现场总线技术及其控制技术[M].北京机械工业出版社,2012.
[6]王永华.现代电气控制及PLC应用技术[M].北京机械工业出版社,2013.
[7]方承远.工厂电气控制技术[M].北京机械工业出版社,2000.
[8]廖常初.S7-300/400PL应用技术[M].北京机械工业出版社,2006.
[9]西门子(中国)有限公司自动化与驱动集团.深入浅出西门子WinCC V6[M].北京航空航天大学工业出版社,2004.