郝向東+謝仕武+曾小棉+劉霄楓
摘要:針對(duì)河源某玻璃廠項(xiàng)目,我們運(yùn)用EXCLE,通過(guò)VBScript腳本編程,自行研究和開(kāi)發(fā)EXCLE腳本,將excle中變量導(dǎo)入到wincc中,方便快捷。
Abstract: On the project of ChengDu Glass Coat project, we write programme to send the tags form excel to wincc ,by using VBScript , conveniently and efficiently.
關(guān)鍵詞:Wincc,腳本,VBScript
1前言
Wincc是西門子公司開(kāi)發(fā)的監(jiān)控及數(shù)據(jù)采集軟件,wincc7.0是目前全球最領(lǐng)先的HMI/SCADA自動(dòng)化監(jiān)控組態(tài)軟件。Wincc處理能力雖然很強(qiáng)大,但是它與excle的連接功能有限。通過(guò)wincc自己集成的附加控件功能,雖能將wincc變量導(dǎo)入導(dǎo)出,但是其轉(zhuǎn)化操作繁瑣,批量修改或批量增加變量的操作不直觀且耗時(shí)長(zhǎng),難自檢,易出錯(cuò),難以滿足大項(xiàng)目上大數(shù)據(jù)變量的修改和新建需求。本文介紹了在某玻璃鍍膜項(xiàng)目上,自行開(kāi)發(fā)EXCLE宏程序,通過(guò)VBScript編程,將在EXCLE批量處理好的變量導(dǎo)入到wincc項(xiàng)目中。通過(guò)EXCLE靈活編輯,修改和查詢功能結(jié)合起來(lái),完成了對(duì)wincc變量的修改記錄和新建,特別在批處理中,方便快鍵,修改新建等操作簡(jiǎn)單,一鍵完成,優(yōu)勢(shì)明顯,并且可以方便運(yùn)用到所有wincc項(xiàng)目上。
2工程簡(jiǎn)介
河源某玻璃鍍膜項(xiàng)目,完成對(duì)玻璃鍍膜的整個(gè)控制過(guò)程。整個(gè)控制系統(tǒng)按功能可分為上位計(jì)算機(jī)監(jiān)控、PLC控制、系統(tǒng)傳動(dòng)控制、工藝氣體配氣控制、磁控濺射控制、真空抽氣系統(tǒng)控制、系統(tǒng)的安全聯(lián)鎖控制、與冷卻水循環(huán)系統(tǒng)及前清洗機(jī)、裝卸片臺(tái)的控制聯(lián)絡(luò)部份、配電系統(tǒng)、遠(yuǎn)程監(jiān)控系統(tǒng)等?,F(xiàn)場(chǎng)I/O變量5000多點(diǎn),程序設(shè)計(jì)中使用的DB及M存儲(chǔ)區(qū)的數(shù)據(jù)變量和wincc數(shù)據(jù)結(jié)構(gòu)新建變量工4000多點(diǎn),因此在整個(gè)項(xiàng)目實(shí)施過(guò)程中設(shè)計(jì)到wincc變量處理數(shù)量將近10000點(diǎn)。Wincc變量不僅多,而且根據(jù)現(xiàn)場(chǎng)設(shè)備分區(qū)和程序設(shè)計(jì)的需要,變量需進(jìn)行歸類處理,數(shù)據(jù)處理量大。針對(duì)本項(xiàng)目特點(diǎn)我們自行開(kāi)發(fā)了wincc宏程序,通過(guò)EXCLE強(qiáng)大的數(shù)據(jù)處理能力,將在EXCLE批量處理好的變量導(dǎo)入到wincc項(xiàng)目中。大大簡(jiǎn)化了工程師開(kāi)發(fā)工作和時(shí)間,并提高了工作效率。通過(guò)修改宏程序的EXCLE源路徑,可以方便的運(yùn)用到任何其他WINCC開(kāi)發(fā)的項(xiàng)目上,具有可拷貝可移植性。
3 wincc宏程序
Wincc是一款功能強(qiáng)大的工業(yè)控制軟件,它集成了監(jiān)控和數(shù)據(jù)采集、組態(tài)、腳本(Script)語(yǔ)言和OPC等技術(shù)。這為在Wincc中引進(jìn)滿足實(shí)際需要的各種算法提供了基礎(chǔ)的編輯平臺(tái)。通過(guò)Wincc的宏開(kāi)發(fā)環(huán)境中運(yùn)用VBScript腳本功能,進(jìn)行深層次的二次開(kāi)發(fā),實(shí)現(xiàn)和EXCLE的連接。
Wincc提供了嵌入式C-Script和VBScript,用戶可以通過(guò)腳本編程實(shí)現(xiàn)特殊的功能。此宏程序中我們開(kāi)放了excle源路徑,方便根據(jù)不同項(xiàng)目的實(shí)際情況選擇相應(yīng)編輯好的EXCLE文件,將此excle中的變量信息導(dǎo)入到wincc項(xiàng)目中。宏腳本程序如下所示。
Sub CreateAddNewTag()
Dim sFile As String
Dim xlApp, xlBook, xlSheet
Dim i As Integer
Dim j As Integer
Dim sngBTime As Single: Dim sngETime As Single
Dim vName As String: Dim vType As Integer: Dim vConName As String: Dim vAddress As String: Dim vGroupName As String
Dim objHMIGO As HMIGO
On Error GoTo errHandler
Set objHMIGO = New HMIGO
sFile = "E:\desktop\SCADA_Create_TAG.xls" '對(duì)應(yīng)excle源文件
Set xlApp = CreateObject("Excel.Application") '創(chuàng)建EXCEL對(duì)象
Set xlBook = xlApp.Workbooks.Open(sFile) '打開(kāi)已經(jīng)存在的EXCEL工件簿文件
xlApp.Visible = False '設(shè)置EXCEL對(duì)象可見(jiàn)(或不可見(jiàn)False)
sngBTime = Timer
For j = 1 To 2 '要導(dǎo)入的excle的sheet2中變量
Set xlSheet = xlBook.Worksheets(j) '設(shè)置活動(dòng)工作表1
For i = 2 To 1000'此次要導(dǎo)入的變量從第2行到1000行的999個(gè)變量
vName = Trim(xlSheet.Cells(i, 2))
vType = GetTagType(Trim(xlSheet.Cells(i, 3)))
vConName = Trim(xlSheet.Cells(i, 4))
vAddress = IIf(Trim(xlSheet.Cells(i, 6)) = "", "", Trim(xlSheet.Cells(i, 6)))
vGroupName = Trim(xlSheet.Cells(i, 5))
If vName = "" Then GoTo Outj
If i > 170 Then Debug.Assert False
objHMIGO.CreateTag vName, vType, vConName, vAddress, vGroupName
Outi:
Next i
Outj:
Next j
xlBook.Close (True) '關(guān)閉工作簿
xlApp.Quit '結(jié)束EXCEL對(duì)象
Set xlApp = Nothing '釋放xlApp對(duì)象
sngETime = Timer
MsgBox "Excel數(shù)據(jù)導(dǎo)入到 WinCC 完畢 共花時(shí)間:" & sngETime - sngBTime & "秒!"Exit Sub
errHandler:
xlBook.Close (True) '關(guān)閉工作簿
xlApp.Quit '結(jié)束EXCEL對(duì)象
Set xlApp = Nothing '釋放xlApp對(duì)象
Debug.Assert False
MsgBox "Error " & Err.Number & ": " & Err.Description, vbDefaultButton2, Err.Number
End Sub
Function GetTagType(strT As String) As Integer
Dim Val As Integer
Select Case strT
Case "TAG_BINARY_TAG"
Val = 1
Case "TAG_SIGNED_8BIT_VALUE"
Val = 2
Case "TAG_UNSIGNED_8BIT_VALUE"
Val = 3
Case "TAG_SIGNED_16BIT_VALUE"
Val = 4
Case "TAG_UNSIGNED_16BIT_VALUE"
Val = 5
Case "TAG_SIGNED_32BIT_VALUE"
Val = 6
End Select
GetTagType = Val
End Function
4 EXCLE建立
在西門子組態(tài)軟件中進(jìn)行Wincc的變量的建立修改和批量處理是相當(dāng)繁瑣的,工作量大且很容易出錯(cuò)。運(yùn)用EXCLE的強(qiáng)大功能,可以方便快捷的進(jìn)行數(shù)據(jù)處理。特別是數(shù)據(jù)量大,批量處理時(shí),優(yōu)勢(shì)更明顯。通過(guò)自行研究開(kāi)發(fā),將wincc和excle連接起來(lái),快速處理數(shù)據(jù),減輕程序員的工作強(qiáng)度,減少出錯(cuò)率,大大提高工作效率。
在EXCLE中要建立起與wincc對(duì)應(yīng)的變量的wincc中位置路徑,數(shù)據(jù)格式,變量名稱和地址。如圖1所示,為本項(xiàng)目中的部分變量在excle中編輯,有對(duì)應(yīng)wincc中變量名“TagName”,數(shù)據(jù)類型“Data type”,鏈接路徑”Connection”,”Group”,地址“Address”。
5 EXCLE向Wincc的導(dǎo)入
在Wincc宏Visual Basic的環(huán)境中編輯運(yùn)行開(kāi)發(fā)的源程序,在程序中開(kāi)放出來(lái)的路徑中選擇項(xiàng)目EXCLE文檔的路徑和格式,如本項(xiàng)目的文檔名為CADA_Create_TAG,放置在E下,則屬于相應(yīng)信息:sFile = "E:\SCADA_Create_TAG.xls"。并且根據(jù)本次要導(dǎo)入變量所在excle的sheet位置,填入相應(yīng)值。如本項(xiàng)目此次需要導(dǎo)入Wincc的變量為sheet1和sheet2中變量,則在程序段的第17行中輸入2,如:For j =1To 2。再執(zhí)行運(yùn)行按鈕,程序執(zhí)行,相應(yīng)excle編輯好的變量快速導(dǎo)入Wincc中,如圖2所示:
6 總結(jié)
Wincc自帶的變量導(dǎo)入導(dǎo)出格式單一,有很大的局限性,不能很好滿足客戶特殊需求。本項(xiàng)目運(yùn)用VB編程,結(jié)合wincc強(qiáng)大的腳本功能,開(kāi)發(fā)出的變量處理有以下優(yōu)點(diǎn):1.變量數(shù)據(jù)在excle中建立和修改,利用excle強(qiáng)大數(shù)據(jù)處理功能方便批處理,并歸來(lái)放置和保存,方便后期調(diào)試的整改和完善處理。2.數(shù)據(jù)從excle導(dǎo)入wincc項(xiàng)目中,速度快,更直接,可靠,穩(wěn)定性好。3.依據(jù)項(xiàng)目需求制作多種類表格,加以歸類,查詢更方便,界面更友好。本項(xiàng)目二次開(kāi)發(fā)的報(bào)表最大程度地減輕了程序員的工作,極大提高了工作效率。
參考文獻(xiàn):
1)一種基于關(guān)系數(shù)據(jù)庫(kù)的FIX工控系統(tǒng)報(bào)表生成方法.王志琪,方康玲.計(jì)算機(jī)工程與科學(xué) 2002年第24卷第6期
2)腳本在Wincc中的應(yīng)用 劉劍,奚邦慶,楊杰傳.中國(guó)高新技術(shù)企業(yè) 2010年第27期
3)用wincc腳本實(shí)現(xiàn)對(duì)SQL_SERVER數(shù)據(jù)庫(kù)管理及產(chǎn)品報(bào)表 叢雪松 工程科技 NO.3 2012