陳在平 楊雅靜
(天津理工大學自動化學院,天津 300384)
組態王是一種工業監控軟件,目前已被廣泛應用于工業自動化控制系統中。用戶通過實時分析在線數據,將企業內部的各種生產信息交流匯集在一起,對控制過程進行優化。但實際對采集到的數據進行分析時,存在報表輸出方式不夠靈活和實時性差的問題,因此筆者利用組態王SQL 數據庫技術,通過編程語言將組態王所采集到的數據寫入SQL Server數據庫中,這樣用戶可在脫離控制系統的情況下隨時利用數據庫來處理實時數據[1]。筆者采用組態王6.55版實現對SQL Server2005數據庫中數據的各種操作,并運用組態王提供的動態鏈接庫,使用Visual C++編程語言自行開發客戶端界面,實現對組態王采集入庫的數據進行查看和處理功能[2]。
為實現組態王和外部數據庫之間的數據傳輸,組態王提供了SQL訪問功能,它包括SQL訪問管理器和SQL函數兩部分。組態王SQL訪問管理器主要有創建表格模板和創建記錄體兩部分功能:利用表格模板在數據庫中創建表格;利用記錄體建立SQL Server數據庫中字段與組態王之間的聯系。SQL函數是組態王標準函數的擴充,其使組態王可與數據庫進行信息交換,利用SQL函數可進行創建表格、編輯已有表格、插入記錄、查詢已有記錄及刪除記錄等操作。
首先利用SQL Server2005創建一個數據庫,命名為DataBase;然后利用ODBC數據源管理器中的系統DSN新建一個SQL Sever驅動的數據源,命名為SQL Conn;最后對SQL Conn數據源進行配置,使其指向DataBase數據庫。
在創建表格模板之前,應先定義數據詞典,數據詞典中存放的是工程中定義的變量和一些系統變量。數據詞典中定義的變量如下:
DeviceID 內存整型
氧含量2 內存實型
氧含量3 內存實型
一氧化碳2 內存實型
一氧化碳3 內存實型
排煙溫度2 內存實型
排煙溫度3 內存實型
熱效率2 內存實型
熱效率3 內存實型
酸露點2 內存實型
這些變量可用來實現組態王與SQL Server數據庫的聯系。
然后在組態王的工程目錄顯示區中選擇SQL訪問管理器的表格模板新建表格模板table(圖 1)。后面在創建數據庫表格中會用到SQLCreatTable()函數,此函數可以在DataBase數據庫中自動建立表格。

圖1 新建表格模板table
在組態王的工程目錄顯示區中選擇SQL 訪問管理器的記錄體選項以新建記錄體 Test(圖 2)。在新建的Test記錄體中,表格模板中字段對應的數據類型和名稱必須與此字段對應的變量數據類型保持一致,但字段的排列順序可以不一致。

圖2 新建記錄體Test
連接數據庫的命令語言為:
SQLConnect(DeviceID,"dsn=SQL_Conn;uid=sa;pwd=")
上述命令語言實現了組態王與SQL Conn數據源的連接,即與DataBase數據庫建立了連接。將此命令寫入組態王工程瀏覽器中應用程序命令語言的啟動中,以實現系統開始運行時就可以連接到數據庫上。
創建數據庫表格的命令語言為:
SQLCreateTable(DeviceID,"KingTable","table")
上述命令語言實現了以表格模板table的格式在數據庫中建立名為KingTable的表格。也將此命令寫入組態王應用程序命令語言的啟動中,以實現系統開始運行時就可以自動創建數據庫表格。
插入記錄的命令語言為:
SQLInsert(DeviceID,"KingTable","Test")
組態王將記錄體中相關聯的變量當前值插入到DataBase數據庫表格中,從而生成一條新的記錄,達到將組態王中的數據寫到外部數據庫的目的。
查詢記錄的命令語言為:
SQLSelect(DeviceID," KingTable ","Test","","")
當需要將數據庫中的數據調入組態王來顯示時,需將此命令寫入組態王應用程序命令語言中的運行,并且添加查詢下一條記錄的命令:
SQLNext(DeviceID)
斷開連接的命令語言為:
SQLDisconnect(DeviceID)
將此命令寫入組態王應用程序命令語言中的退出,系統在退出后將自動斷開與DataBase數據庫的連接。至此,通過組態王SQL數據庫技術已經成功連接上SQL Server數據庫,并通過上述SQL命令語言實現了寫入及查詢數據等操作。
對動態鏈接庫的訪問分為隱式鏈接加載和動態加載兩種方式,筆者采用動態加載方式訪問組態王提供的鏈接庫KingvewCliend.dll。動態庫提供的接口函數主要有7個,在整個調用過程中有相應的次序和功能,主程序流程如圖3所示,根據主程序流程,利用Visual C++基于對話框模式設計客戶端界面,編寫應用程序。

圖3 主程序流程
系統測試主要完成對數據傳輸的測試。圖4為應用Visual C++基于對話框模式開發的加熱爐數據監測界面,將組態王采集到的實時數據顯示到客戶端。

圖4 加熱爐數據監測界面
進入系統測試時,首先系統自動連接組態王,進入圖4所示的監測界面后,可選取需要查看的加熱爐運行參數,圖中顯示了排煙溫度、熱效率、氧含量和一氧化碳的當前值。圖5為組態王的信息窗口,系統自動連接組態王時就會彈出此信息窗口,從圖5也可以看出,系統顯示的是最后記錄,即顯示的是運行參數的當前值,實現了數據的實時傳輸。

圖5 組態王信息窗口
系統測試表明:該系統基本實現了將加熱爐現場運行的實時數據傳輸到客戶端界面,工作人員無需到控制現場,在客戶端就可以實時查看加熱爐運行的狀態參數。
闡述了組態王 SQL 數據庫技術在加熱爐狀態參數監測方面的應用,實現了組態王與SQL Sever數據庫的連接,并結合組態王提供的動態鏈接庫,完成了加熱爐狀態參數客戶端界面的開發,使操作人員可以實時掌握加熱爐的運行狀態信息,方便了對設備的管理和控制。
[1] 孟秀玉,曹巨江,田海濱. 組態王SQL數據庫技術在滴丸罐裝控制系統中的應用[J]. 機械設計與制造,2009,14(8):84~86.
[2] 張永,李其申,李鎳嵐. 基于VC++的動態鏈接庫的創建與調用方法[J].南昌航空工業學院學報(自然科學版),2005,19(3):81~84.