王紀森,黎 雯,楊洪音
(西北工業大學自動化學院,西安710072)
隨著自動化在過程控制系統中的逐步發展應用,組態軟件為多種本地信息機提供了非常多的開放性接口。WinCC是目前世界上最常用的三大SCADA(數據采集與監視控制)系統之一。它是以計算機為基礎的生產過程與調度自動化系統,可以對現場的運行設備進行監視和控制,以實現數據采集、設備控制、測量、參數調節以及各類信號報警等。為實現將數據存儲至外部數據庫,本文主要討論利用VB語言及VB腳本語言完成數據的傳輸及管理工作。
ADO是Microsoft為OLEDB設計的應用層接口,它為一致的數據訪問接口提供了良好的擴展性而不局限于單一的數據源。OLEDB是基于COM及DCOM技術設計的,可對關聯數據庫及非關聯數據庫進行操作。ADO可以完成數據存儲及通過OLE DB操作數據庫等功能。ADO的核心內容在使可用簡單的COM指令即可對ODBC數據源、微軟表格等進行快速的ActiveX操作。OLE DB同樣還擁有快速、內存少、硬盤痕跡少等優點。
Access是一種基于微軟技術的關聯數據庫管理系統。Access能夠存取 Access/Jet、Microsoft、SQL Sever、Oracle,或者任何 ODBC兼容數據庫內的資料。Access在使用性、兼容性、可操縱性及可編程性上都有其他數據庫無可比擬的優勢。
WinCC是由西門子公司開發的具有很強操作性及開放性的組態軟件。WinCC本身自帶實時數據庫及歷史數據庫,為本地存儲提供方便。同時也提供外部數據庫的存儲途徑。利用VB腳本語言可對ActiveX空間或其他對象進行控制寫入。因此,它可以控制對象的動態行為并建立與其他對象如Access的連接。
根據需要設計可以檢測多種液壓元件的綜合試驗臺。整個液壓試驗系統由7個試驗回路組成。整個液壓綜合試驗臺的試驗回路多,控制層由PLC組成,主要負責試驗過程控制及數據采集任務,如圖1所示。主要完成的試驗科目有往復試驗、保壓試驗以及流量試驗。圖1為上位機所需完成的主要功能,圖形運行系統及數據歸檔系統。

圖1 上位機功能結構圖
特別地,在往復試驗中,往復周期小于10s,試件進口壓力升率大、變化快,為了對進口壓力進行完整記錄,要求數據的記錄和歸檔周期達到100ms。這樣一來,在試驗過程中需要對大量數據進行實時記錄和歸檔。而WinCC自帶數據庫的數據傳輸慢,無法達到快速歸檔的要求。此外,還要求對數據進行靈活的查詢及報表設計。
為實現對大量數據進行查詢等操作,筆者希望借由VB6.0與WinCC的接口以及VB本身強大的面向對象編程語言,將在WinCC中得到的試驗數據以記事本的方式存儲;試驗信息與試驗數據文本存儲路徑存入Access數據庫;利用Excel完成試驗的報表制作及打印工作。圖2表示整個數據管理系統結構圖。PLC每秒傳遞給WinCC的數據傳遞給記事本進行保存,而WinCC通過OLE DB將試驗主要信息及數據記事本路徑寫入外部數據庫中。

圖2 數據存儲結構框圖
ADO數據連接原理圖,如圖3所示。

圖3 ADO數據連接原理圖
1)Access部分:Access數據庫為WinCC建立了一個用戶名及密碼為“example”的數據連接允許方位數據庫。為建立彼此連接,須在Windows下通過管理工具設置ODBC數據源。
2)WinCC部分:首先,需要建立傳輸用變量R1,R2,R3分別代表單元、產品及批架次。其次,VBScript用來編寫標準的數據存儲模塊。通過ADO控件,將試驗信息在試驗開始時存入外部數據庫Access中。
ADO中最重要的參數是ConnectionString,用于建立與數據庫的連接。這個參數中包含了所用存儲數據時所需要的信息。基本設置代碼語句如下:


ADO連 接 主 要 包 含 Connection、Command、Recordset以及Parameter等,完成了傳輸模塊中的主要部分。Connection用來指向特定的數據庫;Command用以對數據源完成插入、刪除、修改或查詢等操作;Recordset用以返回查詢結果。程序代碼如下:


通過改變WinCC中VB_Trigger的值,來完成觸發以上代碼的啟動。
將大量的試驗數據存儲在記事本中,記事本本身為純文本文件,操作簡單方便,無操作平臺限制。由于試驗開始時間是不可重復且唯一的,記事本保存在以試驗開始時間命名的文件夾中。如圖4所示,在以試驗時間命名的文件夾中保存了試驗數據文件及試驗信息文件。

圖4 數據文件存儲示意圖
試驗數據的存儲采用C語言編寫,在試驗開始時,通過調用Windows API函數來得到系統時間完成文件夾的命名。以下為程序代碼。



將試驗信息與試驗數據分開存放的目的即為縮短查詢時間。為實現導入功能,要在excel中利用VBA構建操作界面。在VB中引用Excel Application 12.0控件,使VB6.0可以對Excel內部控件進行調用和編輯。Visual Basic是微軟公司開發的面向對象型的可視化編程軟件。由于易于使用、擁有良好的GUI系統及可在Windows下完成大部分的編程工作,使得VB成為使用人數最多的編程軟件。在數據檢索方面,利用VB6.0編寫一個查詢模塊作為WinCC的擴展功能模塊,緊密嵌入WinCC運行環境。在WinCC內部對該模塊進行調用。在此,借用VB6.0與Windows良好的接口,完成數據檢索功能。
由VB6.0設計的查詢界面如圖5,查詢方法主要分為試驗信息查詢及試驗日期查詢。為使界面簡潔,采用控件SSTab完成兩個查詢界面的轉換。數據檢索語句代碼如下:


圖5 查詢程序界面
查詢完成后,最終目的需要得到記事本中存儲的試驗數據,以完成查看及生成報表的功能。完成打開試驗數據的程序代碼如下:

工控組態軟件WinCC有著較強的檢測與控制功能,但在歷史數據處理方面,只是提供了一些比較簡單的查詢、顯示、打印函數供編程使用,如果要對歷史數據進行復雜的處理就顯得力不從心。如果能將組態軟件的歷史數據導入Excel,利用Excel在數據處理方面的優勢就可以彌補組態軟件的不足。
使用VBA可以在Excel中導入歷史數據。VBA是Visual Basic for Application的簡稱,是Office辦公軟件的內置編程語言,它采用事件驅動機制。利用VBA可以在Excel中自定義工具欄、菜單、界面,并能通過腳本語言對數據進行復雜分析和操作。
程序代碼如下:



本文討論了將WinCC中的歷史數據導入到外部進行存儲的方法與細節。結合VB與VC,按照實際工程需要通過關聯試驗信息與試驗數據達到對試驗數據的快速歸檔、查詢及報表生成等功能。該方法已在實際工程中應用,并獲得較好的性能。
[1] Guangbo Zhou,Zhencai Zhu,Guangzhu Chen,Aijun Zhang.Technique of WinCC Long-distance Accessing Exterior SQL Server Database[J].Education Technology and Computer Science,2009.
[2] Weng Yifang,Duan Zhengang,Lian Xiaoqin,et al.Application of configuration software WinCC in logistics automatic control system[C].Sixth International Symposium on Instrumentation and Control Technology:Sensors,Automatics Measurement,Control,and Computer Simulation.2006.
[3] 明日科技,高春艷,李艷,谷偉東.數據庫開發關鍵技術與實例應用[M].北京:人民郵電出版社,2004.