梁洪方,黃玉彥,喬茜華,王永華,3
(1.廣西工業(yè)職業(yè)技術(shù)學(xué)院,南寧 530001;2.鄭州輕工業(yè)學(xué)院,鄭州 450002;3.紡織服裝產(chǎn)業(yè)河南省協(xié)同創(chuàng)新中心,鄭州 451191)
在基于WinCC的大規(guī)模項(xiàng)目中,多數(shù)采用了分布式系統(tǒng),有多臺(tái)服務(wù)器和現(xiàn)場(chǎng)控制器相連接,項(xiàng)目中擁有數(shù)千幅現(xiàn)場(chǎng)運(yùn)行畫面,超過萬點(diǎn)以上的過程變量,以及數(shù)量巨大的報(bào)警記錄和變量記錄等,在這樣的大型項(xiàng)目中,如何提高項(xiàng)目的組態(tài)時(shí)間,同時(shí)保證組態(tài)的正確率成為日益困擾項(xiàng)目開發(fā)者的問題。
本文以WinCC在紡織行業(yè)數(shù)據(jù)采集與監(jiān)控項(xiàng)目為例,介紹VBA技術(shù)在WinCC項(xiàng)目中的應(yīng)用,討論了如何使用VBA提高WinCC項(xiàng)目組態(tài)的效率,有效降低WinCC項(xiàng)目組態(tài)時(shí)間。
由于SIMATIC WinCC從面世就始終如一的支持Microsoft技術(shù),采用標(biāo)準(zhǔn)的MS SQL Sever數(shù)據(jù)庫(kù)作為存儲(chǔ)數(shù)據(jù)庫(kù),同時(shí)也提供了ANSI-C及VBSCript腳本擴(kuò)展,集成了VBA(Visual Basic for Applications)編輯器,提供了多種OPC服務(wù),因而WinCC在組態(tài)軟件領(lǐng)域代表著開放性的最高水平。一方面,可以將WinCC與市場(chǎng)上眾多的應(yīng)用相組合;另一方面,可以方便地將它集成在自己的應(yīng)用中。
VBA是Microsoft用來拓寬標(biāo)準(zhǔn)應(yīng)用的功能,以及對(duì)標(biāo)準(zhǔn)應(yīng)用進(jìn)行定制化的解決方案。WinCC圖形編輯器中包含了一個(gè)VBA編輯器,可用來自動(dòng)組態(tài)畫面。在圖形編輯器中使用VBA可在組態(tài)期間自動(dòng)執(zhí)行經(jīng)常發(fā)生的步驟。在圖形編輯器中,可以創(chuàng)建用戶定義的菜單和工具欄,以便更加容易地執(zhí)行所創(chuàng)建的VBA宏,也可以創(chuàng)建及編輯標(biāo)準(zhǔn)對(duì)象、智能對(duì)象和Windows對(duì)象,為畫面屬性和對(duì)象屬性添加動(dòng)態(tài),組態(tài)畫面和對(duì)象中的動(dòng)作,并訪問支持VBA的產(chǎn)品(例如MS Office系列產(chǎn)品)。
WinCC畫面編輯器提供VBA接口,基本上可以使用VBA宏來取代其他情況下用鼠標(biāo)執(zhí)行的所有組態(tài)工作。這尤其適用于GUI(層和縮放)以及畫面中對(duì)象的編輯(包括動(dòng)態(tài)化)。VBA在圖形編輯器中的結(jié)構(gòu)模型如圖1所示。圖1中,當(dāng)使用對(duì)象時(shí),需要在對(duì)象前加上“HMI”。

圖1 WinCC圖形編輯器VBA對(duì)象模型
WinCC組件庫(kù)包含很多可提供選擇的現(xiàn)成對(duì)象,可以使用這些對(duì)象有效的設(shè)計(jì)畫面。VBA提供了對(duì)WinCC組件庫(kù)的完全訪問權(quán)限,通過HMISymbolLibraries對(duì)象可以使用VBA擴(kuò)展組件庫(kù)功能。
通過HMIToolbars和HMIMenus對(duì)象可以創(chuàng)建用戶定義的菜單和工具欄,以便對(duì)圖形編輯器中的某些程序狀況進(jìn)行響應(yīng)。以這種方式可擴(kuò)展圖形編輯器的功能,使之滿足您的特殊要求,如在圖形編輯器中執(zhí)行VBA宏。
通過HMIDataLanguages對(duì)象可以在圖形編輯器中以多種的語言執(zhí)行組態(tài)。這樣就可以訪問圖形編輯器中與語言相關(guān)的對(duì)象屬性,還可以使用戶定義的菜單和工具欄以不同的語言顯示。以下語句可以將組態(tài)語言更改為“英語”:
Application.CurrentDataLanguage = 1033
使用VBA編輯對(duì)象時(shí),可以在WinCC畫面編輯器中搜索對(duì)象,創(chuàng)建新的對(duì)象,復(fù)制、刪除現(xiàn)有對(duì)象,對(duì)現(xiàn)有對(duì)象添加或取消分組,顯示或更改對(duì)象屬性。
在VBA編輯器中,當(dāng)前畫面中的所有對(duì)象類型都包含在“HMIObjects”列表中。它們不會(huì)像在圖形編輯器中那樣按對(duì)象類型(標(biāo)準(zhǔn)對(duì)象、智能對(duì)象、Windows對(duì)象和控件對(duì)象)進(jìn)行區(qū)分。因此,可以使用VBA循環(huán)瀏覽一個(gè)或多個(gè)畫面中的所有對(duì)象。
在選擇了畫面中的對(duì)象后,這些對(duì)象將包含在“Selection”列表中。如果要更改對(duì)象屬性的默認(rèn)設(shè)置,應(yīng)使用“HMIDefaultObjects”對(duì)象。要使用VBA對(duì)畫面中的對(duì)象進(jìn)行尋址,可使用對(duì)象名稱或索引號(hào):
ActiveDocument.HMIObjects(“Circle1”)”
‘ 按對(duì)象名稱尋址
ActiveDocument.HMIObjects(1)
‘指代活動(dòng)畫面中的第一個(gè)對(duì)象。
objObject.Properties("FlashBackColor") = True
‘設(shè)置對(duì)象背景顏色閃爍為真
利用VBA可將動(dòng)態(tài)添加到畫面和對(duì)象的屬性中,并可組態(tài)事件控制的動(dòng)作。為此,VBA提供了ActionDynamic對(duì)象。
利用VBA可以將動(dòng)態(tài)添加到畫面和對(duì)象的屬性中??梢允褂米兞?、腳本或“動(dòng)態(tài)”對(duì)話框添加動(dòng)態(tài)。例如,使用動(dòng)態(tài)可以在變量值更改時(shí)組態(tài)運(yùn)行系統(tǒng)中對(duì)象的顏色變化。
可以使用VBA組態(tài)事件控制的動(dòng)作。將觸發(fā)某個(gè)動(dòng)作(腳本或直接連接),然后所定義的事件即會(huì)在運(yùn)行系統(tǒng)中發(fā)生。例如,事件可以是更改對(duì)象屬性,或單擊按鈕。
可以使用VBA編輯觸發(fā)器。在使用動(dòng)態(tài)時(shí),需要用到觸發(fā)器,它們確定何時(shí)在運(yùn)行系統(tǒng)中更新動(dòng)態(tài)值。例如,此情況可能會(huì)定期發(fā)生,或在畫面更改時(shí)發(fā)生。在組態(tài)事件控制的動(dòng)作時(shí),該事件就是觸發(fā)器。以下代碼用于將借助變量var1對(duì)圓對(duì)象的屬性“Top”進(jìn)行動(dòng)態(tài)化:
Set objCircle = ActiveDocument.HMIObjects.AddHMIObject(“Circle1”, “HMICircle”)
‘為圓對(duì)象Top屬性添加動(dòng)態(tài)特性,所連接變化變量為“var1”
Set objVariableTrigger = objCircle.Top.CreateDynami c(hmiDynamicCreationTypeVariableDirect, "var1")
With objVariableTrigger
.CycleType = hmiVariableCycleType_2s ‘動(dòng)態(tài)周期為2秒
End With
為了提高紡織工廠生產(chǎn)管理效率,實(shí)現(xiàn)生產(chǎn)信息共享,提高整個(gè)企業(yè)的信息化水平,目前很多紡織企業(yè)都在進(jìn)行信息化工程建造或改造。某大型紡織企業(yè)有兩個(gè)車間需要完成信息化升級(jí)工程,有清花、梳棉、預(yù)并、并條、精梳、粗紗、細(xì)紗、絡(luò)筒八個(gè)工序,生產(chǎn)規(guī)模為8萬紗錠。

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

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

圖4 文本對(duì)象與矩形對(duì)象的作用與實(shí)現(xiàn)方法
在總覽圖中,因?yàn)樾枰酗@示全車間生產(chǎn)設(shè)備信息,使得組態(tài)的對(duì)象數(shù)量多,對(duì)象屬性復(fù)雜,各個(gè)對(duì)象動(dòng)作不同。而且每個(gè)生產(chǎn)工序都包含有大量的紡紗設(shè)備,特別是在分工序畫面中,顯示的實(shí)時(shí)數(shù)據(jù)量更大、更豐富。在這種情況下,如果還是采取以往手動(dòng)添加對(duì)象屬性、增加腳本動(dòng)作的情況下,項(xiàng)目會(huì)出現(xiàn)一定的錯(cuò)誤,同時(shí)枯燥與繁瑣的工作也會(huì)極大降低工程人員的組態(tài)效率和開發(fā)熱情。
在這種情況下,在WinCC畫面組態(tài)的過程中,使用VBA技術(shù),可以自動(dòng)化完成畫面添加對(duì)象屬性,修改對(duì)象屬性,增加對(duì)象動(dòng)作等,極大提供了畫面組態(tài)工作效率。具體代碼如下所示:
Option Explicit
Sub 畫面參數(shù)設(shè)置()
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
'設(shè)置機(jī)臺(tái)號(hào)以及品種顏色
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 '機(jī)臺(tái)號(hào)為1~148
'1設(shè)置機(jī)臺(tái)號(hào)
objMember.Text = "細(xì)紗" & Format(strName,"00")
'2 設(shè)置品種背景顏色變量,周期為窗口周期
Set objVariableTrigger= objMember.BackColor.CreateDynamic(
hmiDynamicCreationTypeVariableDirect, “XS_PZ_BackColor1_” & strName)
With objVariableTrigger
.CycleType = hmiVariableCycleTypePicture
第37卷 第3期 2015-03(下) 【75】
End With
‘3 設(shè)置品種字體顏色變量,周期為窗口周期
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
在這個(gè)項(xiàng)目中,系統(tǒng)實(shí)現(xiàn)了紡織生產(chǎn)過程信息化全集成,實(shí)現(xiàn)了兩個(gè)車間700多臺(tái)紡織設(shè)備80000多點(diǎn)底層數(shù)據(jù)的實(shí)時(shí)采集,擁有數(shù)千幅現(xiàn)場(chǎng)運(yùn)行畫面等,實(shí)現(xiàn)了對(duì)整個(gè)紡織生產(chǎn)過程的集中監(jiān)控和管理以及遠(yuǎn)程瀏覽功能。
在項(xiàng)目組態(tài)過程中,通過充分使用VBA技術(shù),擴(kuò)展了WinCC畫面編輯器功能,極大提高了WinCC組態(tài)的效率,有效降低WinCC項(xiàng)目組態(tài)時(shí)間。在與未使用VBA技術(shù)相比,畫面組態(tài)節(jié)省了70%的時(shí)間,很大程度上縮短了項(xiàng)目周期,保證了工程進(jìn)度。
[1]王永華,常潔.基于PROFIBUS的紡織工業(yè)網(wǎng)絡(luò)架構(gòu)規(guī)劃[J].鄭州輕工業(yè)學(xué)院學(xué)報(bào)(自然科學(xué)版),2013,04.
[2]王永華,何勝科.紡織生產(chǎn)過程數(shù)據(jù)集成與處理系統(tǒng)的開發(fā)[J].棉紡織技術(shù),2010,11.
[3]邵景峰,李永剛,等.紡織廠生產(chǎn)信息監(jiān)控系統(tǒng)設(shè)計(jì)[J].毛紡科技,2010,03.
[4]魏雪梅,劉承晉,董傳民.紡織概論-第二版[M].化學(xué)工業(yè)出版社,2014.
[5]王永華.現(xiàn)場(chǎng)總線技術(shù)及其控制技術(shù)[M].北京機(jī)械工業(yè)出版社,2012.
[6]王永華.現(xiàn)代電氣控制及PLC應(yīng)用技術(shù)[M].北京機(jī)械工業(yè)出版社,2013.
[7]方承遠(yuǎn).工廠電氣控制技術(shù)[M].北京機(jī)械工業(yè)出版社,2000.
[8]廖常初.S7-300/400PL應(yīng)用技術(shù)[M].北京機(jī)械工業(yè)出版社,2006.
[9]西門子(中國(guó))有限公司自動(dòng)化與驅(qū)動(dòng)集團(tuán).深入淺出西門子WinCC V6[M].北京航空航天大學(xué)工業(yè)出版社,2004.