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