隨著工業(yè)控制系統(tǒng)對用戶操作界面越來越高的要求,要求采用性能更強的圖形界面組態(tài)軟件。世界上一些大型控制系統(tǒng)如集散控制系統(tǒng),已開始使用通用性更強的組態(tài)軟件作為其操作站標準軟件。如日本山武株式會社在Harmonas協(xié)調(diào)自動化控制系統(tǒng)的操作站上使用了Intouch組態(tài)軟件作為其過程開發(fā)軟件,美國Honeywell公司在其R150集散控制系統(tǒng)的上位機中采用了FIX組態(tài)軟件,當然他們必須定制適合于本系統(tǒng)的I/O部件驅(qū)動程序。Intouch是工業(yè)過程控制中廣泛使用的組態(tài)軟件,它是美國WONDERWARE公司的產(chǎn)品,曾連續(xù)多年被國際過程控制協(xié)會評為最佳軟件。與Intellution公司公司的FIX組態(tài)軟件,NI公司的LabVIEW 虛擬儀表平臺是當前三大流行工控軟件。這些軟件都支持世界知名廠家的控制設(shè)備,INTOUCH提供了許多類型I/O設(shè)備驅(qū)動程序,并以適合于過程控制而著名。
Intouch作為工業(yè)控制組態(tài)軟件,提供了組態(tài)環(huán)境和運行環(huán)境。在組態(tài)環(huán)境下定制系統(tǒng),進行數(shù)據(jù)庫組態(tài),畫面組態(tài),定義系統(tǒng)的數(shù)據(jù)采集和控制任務。在運行環(huán)境中實施這些任務,并將數(shù)據(jù)實時傳輸給本站的其它任務和網(wǎng)上其它工作站。Intouch組態(tài)軟件適合標準化的大型控制系統(tǒng)。之所以如此,是因為當我們在用Intouch軟件的時候,往往沒有適合于我們自己硬件設(shè)備的I/O驅(qū)動程序。然而Intouch組態(tài)軟件提供了用戶數(shù)據(jù)接口,使用這些接口,我們可以與Intouch交換信息,在用戶程序中完成特殊任務,如通信和與硬件打交道。本文以某電站仿真系統(tǒng)為例,談談這些數(shù)據(jù)接口的使用。
1、火電站仿真系統(tǒng)介紹
1.1 系統(tǒng)組成結(jié)構(gòu)
電站機組仿真環(huán)境的建立是至關(guān)重要的。建立一個良好、實用、可靠、并且易為人們接受的仿真環(huán)境,是首先考慮的目標。其次,還要考慮系統(tǒng)的開放性、維護性、通用性以及今后持續(xù)發(fā)展性。在仿真環(huán)境的設(shè)計中,結(jié)合當前最新技術(shù),選用當前主流開發(fā)平臺,充分考慮用戶的操作要求,對系統(tǒng)的維護和技術(shù)更新都會帶來莫大的好處。
整個電站機組仿真系統(tǒng)的組成結(jié)構(gòu)如圖1所示。
圖1 電站機組仿真系統(tǒng)的組成結(jié)構(gòu)
本系統(tǒng)主要由服務器(兼教員臺)、學員臺、仿真模型機組成,各臺計算機通過局域網(wǎng)連接。系統(tǒng)的數(shù)據(jù)庫采用分布式數(shù)據(jù)庫,服務器上存放中心數(shù)據(jù)庫,在其它計算機上存放本地數(shù)據(jù)庫。服務器是仿真培訓中心,它負責任務調(diào)度、啟動、故障設(shè)置、培訓評分等功能。鍋爐、汽機、發(fā)電機、控制模型機,按相應設(shè)備的數(shù)學模型進行仿真計算,模擬設(shè)備的運行狀態(tài),并將實時計算信息寫入分布式數(shù)據(jù)庫中。學員臺的任務是培訓學員,學員在其上干預系統(tǒng)的運行,進行實時操作。
1.2 系統(tǒng)開發(fā)環(huán)境
操作系統(tǒng)選用微軟公司的Windows NT。由于Windows NT是當前主流操作系統(tǒng),用戶易于接受,熟悉操作,同時NT的實時多任務處理內(nèi)核適合于仿真系統(tǒng)。可實現(xiàn)的功能有:對實時數(shù)據(jù)庫的管理;對模型算法庫的管理;對I/O通訊模塊的管理;對I/O數(shù)據(jù)庫的管理;方便地建立和修改應用模型;多種手段在線控制;調(diào)試模型;教練員站主要控制仿真機實時運行等;任一臺聯(lián)網(wǎng)微機均可運行支撐系統(tǒng)的工作界面及圖形化多窗口人機界面的仿真調(diào)試環(huán)境。
1.3 軟件開發(fā)平臺
作為一個完整的支撐實時仿真軟件開發(fā)、調(diào)試和執(zhí)行的軟件工具,它有數(shù)據(jù)庫管理系統(tǒng)、源程序生成程序、可視化的仿真建模程序編譯系統(tǒng)、連接裝入系統(tǒng)、實時調(diào)試系統(tǒng)、實時執(zhí)行系統(tǒng)、實時控制系統(tǒng)和輸入/輸出管理程序等組成。本系統(tǒng)選用Visual C++6.0 ,采用面向?qū)ο缶幊碳夹g(shù),開發(fā)模型、通信和數(shù)據(jù)庫程序,使用功能強大的MFC類庫來封裝對象,應用程序之間采用通信來交換信息[1]。DCS控制系統(tǒng)的模型生成采用自主開發(fā)的控制系統(tǒng)方案組態(tài)軟件。
1.4 人機交互界面支撐環(huán)境
本系統(tǒng)的人機界面主要有兩類,一類是在教員臺上的教員設(shè)置界面,另一類是在學員臺上提供的仿真DCS操作界面。教員臺上的人機界面主要用于教員設(shè)置工況,觀察仿真運行情況,并對運行結(jié)果進行分析評定。教員臺界面相對比較簡單,采用C++面向?qū)ο缶幊碳夹g(shù)實現(xiàn)。學員臺上選用Intouch7.0人機交互組態(tài)軟件,作為操作界面的支撐環(huán)境。在Intouch環(huán)境下,仿真DCS操作站的界面,建立友好而有逼真的人機交互界面,使用戶能有身臨其境的感覺。由于各電廠選用的DCS產(chǎn)品型號不同,這樣在建立不同類型的學員臺界面時,Intouch有著較好的可重用性和擴展能力。
2、INTOUCH軟件數(shù)據(jù)接口
在仿真系統(tǒng)中,使用了Intouch組態(tài)軟件,利用其方便豐富的圖形組態(tài)功能,建立操作界面,實現(xiàn)用戶與系統(tǒng)的接口。為了實現(xiàn)學員臺與系統(tǒng)其它工作站的信息交換,必須開發(fā)Intouch接口程序,將系統(tǒng)信息傳送給Intouch,同時接收Intouch的操作信息,轉(zhuǎn)發(fā)給系統(tǒng)的其它各個工作站。
Intouch軟件提供了多種數(shù)據(jù)接口,這里我們僅談談其中的兩種即:動態(tài)數(shù)據(jù)交換DDE接口和開放數(shù)據(jù)庫連接ODBC-結(jié)構(gòu)化查詢語言SQL接口。各個接口使用時的驅(qū)動方式不同,根據(jù)系統(tǒng)數(shù)據(jù)交換類別的要求來選擇使用。
2.1 DDE接口
Intouch組態(tài)軟件支持DDE接口,提供DDE動態(tài)數(shù)據(jù)交換(DDEClient)模塊用于與其它應用軟件之間進行實時數(shù)據(jù)和歷史數(shù)據(jù)交換;通過DDEServer實現(xiàn)實時數(shù)據(jù)庫與報表軟件之間的數(shù)據(jù)交換。
下面我們來討論DDE。DDE是Windows環(huán)境下應用程序之間使用的數(shù)據(jù)交換協(xié)議。Windows提供DDE通信管理庫函數(shù),應用程序調(diào)用這些庫函數(shù),請求DDE通信服務。應用程序之間進行數(shù)據(jù)交換叫做“對話”,發(fā)起對話的一端叫做“客戶”,而對客戶做響應的一端叫做“服務器”。在我們的系統(tǒng)中,使用VC++編寫后臺程序TCApp,扮演服務器角色,能夠?qū)崟r接收仿真系統(tǒng)的信息,并將其發(fā)送到Intouch,Intouch扮演客戶角色,接收仿真系統(tǒng)實時信息,并將Intouch界面上的人工操作信息傳送給服務器。
建立DDE對話的三大要素是:
a.應用名(Applications)。DDE對話應用名,如TCApp。Windows的DDEML管理許多DDE對話,用應用名來區(qū)別。
b.對話主題(Topics):服務器所支持的對話話題。一個DDE應用名下可以有多個對話話題,用于區(qū)別對話的類型。
c.項目(Items):對話話題下的數(shù)據(jù)項名。
服務器發(fā)送數(shù)據(jù)到客戶:在數(shù)據(jù)庫的組態(tài)中,定義輸入數(shù)據(jù)點的類型和設(shè)備地址,驅(qū)動類型是DDE,這樣當Intouch軟件轉(zhuǎn)入運行方式時,就會向DDEML申請服務,與服務器TCApp建立連接,一個DDE會話活動開始了。會話連接建立后,每當有數(shù)據(jù)變化,服務器TCApp就會將數(shù)據(jù)發(fā)送給客戶。
客戶發(fā)送數(shù)據(jù)到服務器:在數(shù)據(jù)庫的組態(tài)中,定義輸出數(shù)據(jù)點的類型和設(shè)備地址,驅(qū)動類型是DDE,這樣當Intouch軟件轉(zhuǎn)入運行方式時,就會向DDEML申請服務,與服務器TCApp建立連接。DDE會話活動開始后,每當有輸出點數(shù)據(jù)有變化,Intouch就會將輸出點數(shù)據(jù)的值發(fā)送給服務器。
以上兩種方式都是熱鏈接(HotLink)。在Intouch程序中有一個DDEclientTask,我們可以用它來監(jiān)視和管理DDE客戶任務,查看是否有錯誤發(fā)生。還可以用它來改變與服務器TCApp的連接方式,建立一個冷鏈接,每隔一定時間向服務器發(fā)送一次數(shù)據(jù)請求。
DDE數(shù)據(jù)交換的速度在點數(shù)很多時會受到限制。一般是每秒200個點的交換信息量,當點數(shù)很多又要求更快地交換信息時,會丟失信息,甚至會發(fā)生連接中斷。此時,必須對故障進行恢復或重。
2.2 ODBC的SQL接口
ODBC(Open DataBase Connectivity)開放式數(shù)據(jù)庫連接,是微軟和其它公司共同建立的與不同類型數(shù)據(jù)庫打交道的標準接口。目前,各種流行數(shù)據(jù)庫都提供ODBC接口,支持用戶對數(shù)據(jù)庫的訪問。也許每種ODBC驅(qū)動函數(shù)的內(nèi)部實現(xiàn)細節(jié)不同,但對用戶來說使用的函數(shù)接口卻是相同的,這樣極大方便了用戶對數(shù)據(jù)庫的訪問。
ODBC驅(qū)動程序Intouch軟件提供的SQL模塊,支持使用SQL語言調(diào)用ODBC數(shù)據(jù)接口,訪問商業(yè)數(shù)據(jù)庫。Intouch的SQL模塊作為ODBC的應用客戶,會發(fā)出ODBC調(diào)用給ODBC驅(qū)動程序,ODBC驅(qū)動程序再把這個調(diào)用變成對具體數(shù)據(jù)庫的特殊操作。Windows環(huán)境下有許多種類型的ODBC驅(qū)動程序,Access,Excel,SQL Server,F(xiàn)oxPro等,這些驅(qū)動是在這些軟件安裝時一起安裝在Windows環(huán)境下的。如果你想通過ODBC訪問Access數(shù)據(jù)庫,則Access數(shù)據(jù)庫的驅(qū)動程序必須首先安裝。可以在控制面板的ODBC數(shù)據(jù)源管理中查看已安裝的ODBC驅(qū)動程序。
定義ODBC數(shù)據(jù)源在控制面板的ODBC數(shù)據(jù)源管理中定義一個數(shù)據(jù)服務名,與指定的數(shù)據(jù)庫文件相關(guān)聯(lián),這樣Intouch程序就可以使用這個數(shù)據(jù)服務名,對該數(shù)據(jù)庫文件進行操作。例如我們有一個TCDB.mdb 的Access數(shù)據(jù)庫文件,將其作為數(shù)據(jù)源進行定義,數(shù)據(jù)服務名定義為TCSERVER。
組態(tài)SCU中SQL 為了將Intouch與指定的數(shù)據(jù)庫連接起來,啟動Intouch的組態(tài)任務SCU,選擇組態(tài)菜單中的SQL項,彈出SQL配置對話框,將ACCESS類型的數(shù)據(jù)服務名為TCSERVER服務加入。這樣,在Intouch的數(shù)據(jù)庫組態(tài)中,就可以對TCDB.mdb數(shù)據(jù)庫文件進行讀寫了。
下面的任務就是在Intouch應用的組態(tài)中,編排SQL要實現(xiàn)的工作了。Intouch軟件中的ODBC服務是由SQL task(SQL任務)、SQT(SQL 觸發(fā)模塊)、SQD(SQL 數(shù)據(jù)塊)三部分組成的。其中SQT定義了SQL命令和觸發(fā)條件,SQD定義傳送的點名和方向,而SQL Task則負責讀取SQL命令并執(zhí)行相應的操作。
組態(tài)SQT和SQD為了保證SQL功能的正確執(zhí)行,必須在SCU的任務組態(tài)中加載SQL任務。在Intouch數(shù)據(jù)庫中定義SQT和SQD類型的數(shù)據(jù)塊,SQT模塊與SQD模塊是一個鏈,SQT模塊的后續(xù)模塊是SQD模塊。在SQT中定義的觸發(fā)條件滿足后,就會執(zhí)行SQLLIB表中的SQL命令,將SQD模塊中定義的Intouch 數(shù)據(jù)與外部數(shù)據(jù)庫進行交換,從而實現(xiàn)了Intouch與商業(yè)數(shù)據(jù)庫的信息交換。
3、Intouch軟件與本系統(tǒng)的數(shù)據(jù)交換
在火電機組仿真系統(tǒng)中,為了實現(xiàn)仿真系統(tǒng)與工作站的Intouch軟件信息交換,通過編寫通信應用程序,對于小規(guī)模接口數(shù)據(jù)點,如多媒體站、軟表盤站和就地站等,利用DDE接口即可實現(xiàn)信息與Intouch的交換;而對于數(shù)據(jù)量較大的工作站等,最好是利用Intouch的ODBC驅(qū)動SQL接口。事實證明,這種通信方式的利用是有效而合理的,能夠很好地滿足系統(tǒng)的信息交換要求。
4、結(jié)束語
Intouch組態(tài)軟件是功能強大的工控軟件,充分開發(fā)其數(shù)據(jù)接口,與用戶應用程序有機地結(jié)合,實現(xiàn)優(yōu)勢互補,才能很好地滿足工程實際的需要。從本系統(tǒng)的應用情況來看,Intouch軟件的2個數(shù)據(jù)接口使用起來各有優(yōu)勢,DDE編程比較煩瑣,實時性較好,但容量受到限制;而使用ODBC驅(qū)動的SQL接口,盡管容量不受限制,但實時性較差,只有靈活實用,才能更好地實現(xiàn)Intouch信息與工程應用程序間的數(shù)據(jù)交換。
參考文獻
[1](美)Eugene Olafsen ,Kenn Scribner, K.David White 等,MFC Visual C++ 6 編程技術(shù)內(nèi)幕,機械工業(yè)出版社,2000年2月
[2] 張雨飛等工控組態(tài)軟件FIX與變電站仿真系統(tǒng)地數(shù)據(jù)接口《工業(yè)控制計算機》2001年11月第11期