徐志杰
(國電南自新能源科技有限公司,江蘇南京210032)
WINCC(WindowsControlCenter)作為西門子公司開發(fā)的上位機(jī)組態(tài)軟件,功能強(qiáng)大、應(yīng)用靈活,為現(xiàn)場控制提供了一個(gè)高可靠性的監(jiān)控平臺(tái),它廣泛應(yīng)用于工控領(lǐng)域,尤其在電力系統(tǒng)的輔機(jī)控制方面,有許多采用WINCC+S7300(或400)方案來實(shí)現(xiàn)穩(wěn)定可靠控制的成功案例。隨著WINCC多年應(yīng)用經(jīng)驗(yàn)的積累,該版本進(jìn)行了多次升級(jí),WINCCV6.2 SP3由于具有智能新選件、可擴(kuò)展菜單(工具欄)、報(bào)警可隱藏,自定義數(shù)據(jù)庫等諸多新特征,使其應(yīng)用越來越廣泛。WINCCV6.2的歸檔方式與以前的版本有所不同,它的運(yùn)行數(shù)據(jù)存放在數(shù)據(jù)片段當(dāng)中。當(dāng)控制系統(tǒng)數(shù)據(jù)采集比較多時(shí),需要對(duì)數(shù)據(jù)關(guān)系進(jìn)行二次梳理,而WINCC自帶的報(bào)表編輯器有其局限性,用戶要實(shí)現(xiàn)復(fù)雜報(bào)表存在很大難度。針對(duì)上述情況,結(jié)合數(shù)據(jù)片段無法直接用高級(jí)編程語言VB(VisualBasic)讀取的問題,采用自定義數(shù)據(jù)庫來存放過程運(yùn)行數(shù)據(jù),然后采用VB技巧通過字符串訪問方式讀取數(shù)據(jù),可實(shí)現(xiàn)分析處理及復(fù)雜報(bào)表的查詢打印等功能。
WINCC軟件幾乎集成了微軟所有開放性技術(shù),大量采用了標(biāo)準(zhǔn)化技術(shù)(OPC,DDE,ODBC,OLEDB,ActiveX等),可方便地與其他應(yīng)用程序交換數(shù)據(jù)。
WINCC6.2軟件還提供C腳本和VBScript腳本語言支持,可通過連接字符串的方式實(shí)現(xiàn)數(shù)據(jù)庫的連接和操作。以某電廠減排控制系統(tǒng)的上位機(jī)監(jiān)控系統(tǒng)為例,實(shí)時(shí)數(shù)據(jù)直接采用WINCC歸檔數(shù)據(jù)通過WINCC控件進(jìn)行調(diào)閱查詢。而過程運(yùn)行特殊設(shè)置數(shù)據(jù)和歷史數(shù)據(jù)通過字符串連接方式訪問自定義數(shù)據(jù)庫來實(shí)現(xiàn)。
打開SQLServerManagementStudio,以Sa用戶登錄SQLServer數(shù)據(jù)庫,如圖1所示。在SQLServer數(shù)據(jù)庫中建立名為“userdata”數(shù)據(jù)庫和“process_value”數(shù)據(jù)表,如圖2所示。
圖1 自定義數(shù)據(jù)庫連接
在WINCC軟件全局腳本建立一動(dòng)作周期觸發(fā)執(zhí)行實(shí)現(xiàn)與自定義數(shù)據(jù)庫連接后把過程值寫入到自定義數(shù)據(jù)庫中,詳細(xì)情況見參考文獻(xiàn)[1]。具體實(shí)現(xiàn)代碼如下:
圖2 自定義數(shù)據(jù)庫表
通過以上代碼,每隔1min執(zhí)行一次寫入操作,將過程值寫入到自定義數(shù)據(jù)庫,便于下一步用VB編寫的程序進(jìn)行讀取。
由于WINCC軟件提供了開放的標(biāo)準(zhǔn)數(shù)據(jù)訪問接口,VB可通過多種方式進(jìn)行數(shù)據(jù)庫連接。
方法1。建立ODBC數(shù)據(jù)源,通過ODBC數(shù)據(jù)源進(jìn)行連接,該方法簡單易用,但需要在上位機(jī)上手動(dòng)建立ODBC數(shù)據(jù)源。
方法2。采用連接字符串方式進(jìn)行連接,直接調(diào)用OLE-DB驅(qū)動(dòng),以字符串方式進(jìn)行連接,該方法不需要手動(dòng)建立連接數(shù)據(jù)源,便于在不同工程間進(jìn)行程序的移植。
本文考慮到程序的通用性和可移植性,采用了字符串連接方式實(shí)現(xiàn)VB與數(shù)據(jù)庫之間的連接,具體實(shí)現(xiàn)代碼如下:
上面介紹了用VB和VBScript腳本分別操作SQL數(shù)據(jù)庫的方法,通過執(zhí)行SQL語言的insertinto或者update等命令(更多命令參見參考文獻(xiàn)[2])即可實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的插入、更新等操作。
通過上面介紹的VB連接SQL數(shù)據(jù)庫的方法,從數(shù)據(jù)庫獲取數(shù)據(jù)后,可利用廣泛使用的第3方Active控件來實(shí)現(xiàn)靈活的報(bào)表查詢、打印、輸出。查詢數(shù)據(jù)源與控件的綁定方法如下:
pri_title=Left(Now(),10)&"12月份運(yùn)行記錄"
sbStatusBar.Panels.Item(1).text=″當(dāng)前顯示的數(shù)據(jù)是:″&pri_title
通過以上代碼就可實(shí)現(xiàn)控件與數(shù)據(jù)源的綁定,圖3為應(yīng)用于某電廠的煙塵減排控制系統(tǒng)數(shù)據(jù)管理界面。
圖3 應(yīng)用實(shí)例
將VB編寫的數(shù)據(jù)管理程序編譯成完整的EXE文件,然后在WINCC下通過以下C腳本來調(diào)用。
通過以上介紹的方法和步驟即可實(shí)現(xiàn)WINCC下復(fù)雜報(bào)表管理功能。
本文在應(yīng)用WINCC作為上位機(jī)監(jiān)控軟件開發(fā)平臺(tái)的工程中,由于WINCC系統(tǒng)自帶的報(bào)表功能所限,而過程數(shù)據(jù)又需要二次分析且要求實(shí)現(xiàn)復(fù)雜報(bào)表管理,通過本文描述的方法即可簡單方便地實(shí)現(xiàn)對(duì)WINCC軟件過程數(shù)據(jù)和需要特殊處理的數(shù)據(jù)的存取操作和數(shù)據(jù)管理。該方法充分利用了WINCC軟件的優(yōu)點(diǎn),大大降低了操作人員使用監(jiān)控軟件的復(fù)雜性和難度。此外,在WINCC軟件中將過程數(shù)據(jù)存入自定義數(shù)據(jù)庫,為以B/S方式獲取數(shù)據(jù)預(yù)留了方便的接口,該方法具有較好的擴(kuò)展性和可移植性。
[1]蘇昆哲.深入淺出西門子WINCCV6[M].北京:北京航空航天大學(xué)出版社,2008.
[2]“653”工程編委會(huì).SQLServer2005實(shí)例教程M].北京:中國電力出版社,2008.