梁洪方,黃玉彥,喬茜華,王永華,3
(1.廣西工業職業技術學院,南寧 530001;2.鄭州輕工業學院,鄭州 450002;3.紡織服裝產業河南省協同創新中心,鄭州 451191)
在基于WinCC的大規模項目中,多數采用了分布式系統,有多臺服務器和現場控制器相連接,項目中擁有數千幅現場運行畫面,超過萬點以上的過程變量,以及數量巨大的報警記錄和變量記錄等,在這樣的大型項目中,如何提高項目的組態時間,同時保證組態的正確率成為日益困擾項目開發者的問題。
本文以WinCC在紡織行業數據采集與監控項目為例,介紹VBA技術在WinCC項目中的應用,討論了如何使用VBA提高WinCC項目組態的效率,有效降低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系列產品)。
WinCC畫面編輯器提供VBA接口,基本上可以使用VBA宏來取代其他情況下用鼠標執行的所有組態工作。這尤其適用于GUI(層和縮放)以及畫面中對象的編輯(包括動態化)。VBA在圖形編輯器中的結構模型如圖1所示。圖1中,當使用對象時,需要在對象前加上“HMI”。

圖1 WinCC圖形編輯器VBA對象模型
WinCC組件庫包含很多可提供選擇的現成對象,可以使用這些對象有效的設計畫面。VBA提供了對WinCC組件庫的完全訪問權限,通過HMISymbolLibraries對象可以使用VBA擴展組件庫功能。
通過HMIToolbars和HMIMenus對象可以創建用戶定義的菜單和工具欄,以便對圖形編輯器中的某些程序狀況進行響應。以這種方式可擴展圖形編輯器的功能,使之滿足您的特殊要求,如在圖形編輯器中執行VBA宏。
通過HMIDataLanguages對象可以在圖形編輯器中以多種的語言執行組態。這樣就可以訪問圖形編輯器中與語言相關的對象屬性,還可以使用戶定義的菜單和工具欄以不同的語言顯示。以下語句可以將組態語言更改為“英語”:
Application.CurrentDataLanguage = 1033
使用VBA編輯對象時,可以在WinCC畫面編輯器中搜索對象,創建新的對象,復制、刪除現有對象,對現有對象添加或取消分組,顯示或更改對象屬性。
在VBA編輯器中,當前畫面中的所有對象類型都包含在“HMIObjects”列表中。它們不會像在圖形編輯器中那樣按對象類型(標準對象、智能對象、Windows對象和控件對象)進行區分。因此,可以使用VBA循環瀏覽一個或多個畫面中的所有對象。
在選擇了畫面中的對象后,這些對象將包含在“Selection”列表中。如果要更改對象屬性的默認設置,應使用“HMIDefaultObjects”對象。要使用VBA對畫面中的對象進行尋址,可使用對象名稱或索引號:
ActiveDocument.HMIObjects(“Circle1”)”
‘ 按對象名稱尋址
ActiveDocument.HMIObjects(1)
‘指代活動畫面中的第一個對象。
objObject.Properties("FlashBackColor") = True
‘設置對象背景顏色閃爍為真
利用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
為了提高紡織工廠生產管理效率,實現生產信息共享,提高整個企業的信息化水平,目前很多紡織企業都在進行信息化工程建造或改造。某大型紡織企業有兩個車間需要完成信息化升級工程,有清花、梳棉、預并、并條、精梳、粗紗、細紗、絡筒八個工序,生產規模為8萬紗錠。

圖2 紡織行業數據采集與監控項目架構
由于紡織企業設備眾多,型號繁雜,現場電磁環境惡劣,需要組網的底層設備部分是具有以太網接口進口設備,部分采用PROFIBUS DP現場總線技術集成的現場設備。系統采用西門子S7-300作為數據采集主站,采用光纖環網實現現場網絡與中央信息室的互聯,以完成對紡紗車間各設備的信息采集、集成。上層基于工業以太網技術實現對整個信息系統的信息傳輸,并采用WinCC系統來完成終端數據的處理,具體系統的架構如圖2所示。
在這個項目中,WinCC采用了分布式架構,中央信息室有四臺服務器與現場網絡相連,還有一臺服務器用于Web服務發布,以及多臺客戶機。
服務器一和服務器二用于完成兩個生產車間的數據集成與數據處理;兩臺冗余服務器是為增加系統的穩定性而設置的,保障中央信息室數據的完整性和連續性;WEB服務器是為管理層以及移動客戶端而增設,一方面可以減輕主服務器的負擔,另一方面提高了增強WinCC的可訪問性,方便各種用戶瀏覽生產數據。放置在車間中的客戶機可進行生產監控和管理、數據分析。
項目中擁有數千幅現場運行畫面,需要監控的數據變量多達80000點,以及數量巨大的報警記錄和變量記錄等。車間一生產過程數據采集與監控的總覽圖如圖3所示。

圖3 車間一數據采集與監控項目總覽圖
總覽圖用于集中顯示全車間生產設備,方便工藝人員、維修人員、管理層快速了解生產信息、設備狀況。從圖3可以看出,全工序畫面中300多臺紡紗設備,每臺設備包含一個文本對象和一個矩形對象,用于顯示當前設備編號,當前設備狀態,當前品種狀態、當前設備詳細信息。
其中文本對象主要作用是顯示當前設備編號、當前設備品種狀態、當前設備詳細信息(點擊執行腳本動作)。矩形對象主要作用是顯示當前設備運行狀態和網絡狀態。文本對象需要修改文本內容、背景顏色、字體顏色、腳本動作四個屬性。矩形對象需要修改背景顏色和顯示屬性。文本對象中背景顏色、字體顏色分別需要添加兩個外部變量,矩形對象也是需要添加兩個外部變量。具體如圖4所示。

圖4 文本對象與矩形對象的作用與實現方法
在總覽圖中,因為需要集中顯示全車間生產設備信息,使得組態的對象數量多,對象屬性復雜,各個對象動作不同。而且每個生產工序都包含有大量的紡紗設備,特別是在分工序畫面中,顯示的實時數據量更大、更豐富。在這種情況下,如果還是采取以往手動添加對象屬性、增加腳本動作的情況下,項目會出現一定的錯誤,同時枯燥與繁瑣的工作也會極大降低工程人員的組態效率和開發熱情。
在這種情況下,在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
在這個項目中,系統實現了紡織生產過程信息化全集成,實現了兩個車間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.