22A-A1P4N103
DDE(Dynamic Data Exchange,動態(tài)數(shù)據(jù)交換)是進程間通訊(InterProcess Communication,IPC)的方法。進程間通訊(IPC)包括進程之間和同步事件之間的數(shù)據(jù)傳遞。DDE使用共享內存來實現(xiàn)進程之間的數(shù)據(jù)交換以及使用DDE協(xié)議獲得傳遞數(shù)據(jù)的同步。DDE協(xié)議是一組所有的DDE應用程序都必須遵循的規(guī)則集。DDE協(xié)議可以應用于兩類DDE應用程序:類是基于消息的DDE,第二類是動態(tài)數(shù)據(jù)交換管理庫(DDEML)應用程序(使用動態(tài)連接庫(DLL),該庫隨Windows系統(tǒng)一起發(fā)行)。 DDE應用程序可以分為四種類型:客戶、服務器、客戶/服務器和監(jiān)視器。DDE會話發(fā)生在客戶應用程序和服務器應用程序之間。客戶應用程序從服務器應用程序請求數(shù)據(jù)或服務,服務器應用程序響應客戶應用程序的數(shù)據(jù)或服務請求??蛻?服務器應用程序既是客戶應用程序又是服務器應用程序,它既可發(fā)出請求又可提供信息。監(jiān)視器應用程序用于調試目的。DDE應用程序可擁有多重迸發(fā)會話。DDE協(xié)議規(guī)定會話中的消息必須同步控制,但應用程序可以在不同的會話之間異步切換。 DDE應用程序采用三層識別系統(tǒng):應用程序名(Application)、主題名(Topic)和項目名(Item)。應用程序名位于層次結構的頂層,用于指出特定的DDE服務器應用程序名。主題名更深刻地定義了服務器應用程序會話的主題內容,服務器應用程序可支持一個或多個主題名。項目名更進一步確定了會話的詳細內容,每個主題名可擁有一個或多個項目名。
其他推薦產品
首頁| 關于我們| 聯(lián)系我們| 友情鏈接| 廣告服務| 會員服務| 付款方式| 意見反饋| 法律聲明| 服務條款
22A-A1P4N103
22A-A1P4N103
22A-A1P4N103
DDE(Dynamic Data Exchange,動態(tài)數(shù)據(jù)交換)是進程間通訊(InterProcess Communication,IPC)的方法。進程間通訊(IPC)包括進程之間和同步事件之間的數(shù)據(jù)傳遞。DDE使用共享內存來實現(xiàn)進程之間的數(shù)據(jù)交換以及使用DDE協(xié)議獲得傳遞數(shù)據(jù)的同步。DDE協(xié)議是一組所有的DDE應用程序都必須遵循的規(guī)則集。DDE協(xié)議可以應用于兩類DDE應用程序:類是基于消息的DDE,第二類是動態(tài)數(shù)據(jù)交換管理庫(DDEML)應用程序(使用動態(tài)連接庫(DLL),該庫隨Windows系統(tǒng)一起發(fā)行)。
DDE應用程序可以分為四種類型:客戶、服務器、客戶/服務器和監(jiān)視器。DDE會話發(fā)生在客戶應用程序和服務器應用程序之間。客戶應用程序從服務器應用程序請求數(shù)據(jù)或服務,服務器應用程序響應客戶應用程序的數(shù)據(jù)或服務請求??蛻?服務器應用程序既是客戶應用程序又是服務器應用程序,它既可發(fā)出請求又可提供信息。監(jiān)視器應用程序用于調試目的。DDE應用程序可擁有多重迸發(fā)會話。DDE協(xié)議規(guī)定會話中的消息必須同步控制,但應用程序可以在不同的會話之間異步切換。
DDE應用程序采用三層識別系統(tǒng):應用程序名(Application)、主題名(Topic)和項目名(Item)。應用程序名位于層次結構的頂層,用于指出特定的DDE服務器應用程序名。主題名更深刻地定義了服務器應用程序會話的主題內容,服務器應用程序可支持一個或多個主題名。項目名更進一步確定了會話的詳細內容,每個主題名可擁有一個或多個項目名。
DDE會話的初始化是由客戶應用程序發(fā)送WM_DDE_INITIATE消息開始,它傳遞窗口句柄并為會話應用程序名和主題名,當然需要有服務器應用程序來響應該消息。一旦沒有服務器響應或同時有多個服務器響應,則客戶應用程序不得不發(fā)送WM_DDE_TERMINATE消息來終止所有不需要的會話。
建立DDE會話后,客戶應用程序和服務器應用程序可通過三種鏈接方式進行數(shù)據(jù)交換。三種鏈接方式為:冷鏈接(Cold Link)、溫鏈接(Warm Link)和熱鏈接(Hot Link)。冷鏈接(Cold Link):客戶應用程序申請數(shù)據(jù),服務器應用程序立刻給客戶應用程序發(fā)送數(shù)據(jù),服務器應用程序處于主動地位;溫鏈接(Warm Link):服務器應用程序通知客戶應用程序數(shù)據(jù)項發(fā)生了變化,但并沒有將已變化的值發(fā)送給用戶應用程序;熱鏈接(Hot Link):當數(shù)據(jù)項發(fā)生變化時,服務器應用程序立即把變化后的值發(fā)送給客戶應用程序,服務器應用程序處于主動地位。
三、 FIX軟件的DDE支持
FIX軟件提供了強有力的DDE客戶和服務器支持。DDE客戶支持允許把來自其他應用程序的信息傳遞到FIX軟件中,用于數(shù)據(jù)庫和畫面;服務器支持允許把FIX軟件的過程信息傳送到其他應用程序中去處理。
a) DDE客戶支持
FIX軟件DDE客戶支持允許讀寫DDE地址,利用DDE I/O驅動器和塊配置的DDE地址,可以在過程數(shù)據(jù)庫中插入來自其他應用程序、DDE設備驅動程序或另一個SCADA節(jié)點的數(shù)據(jù)信息。
數(shù)據(jù)庫中的這些數(shù)據(jù)可以按照以下方式使用:在鏈中傳送數(shù)據(jù)、對DDE數(shù)據(jù)進行報警和用DDE數(shù)據(jù)制作趨勢曲線。
DDE客戶支持允許在FIX畫面中直接使用DDE,而不使用數(shù)據(jù)庫中的點。即DDE可以直接應用于數(shù)據(jù)鏈接、動態(tài)特性(前景顏色、邊界顏色、X和Y坐標、水平或垂直填充、可見性等)設置、X/Y繪圖、棒狀圖和命令語言。
Fix作為客戶的DDE地址語法為:= Appliaction|Topic!Item.
例如: 點A1的I/O地址 = VBSrvApp|Form1!Text1, 其中VBSrvApp為VB開發(fā)的應用程序名、Form1為主題名和 Text1為項目名。
b) DDE服務器支持
FIX軟件作為服務器允許將它的實時數(shù)據(jù)或歷史數(shù)據(jù)傳送到其他DDE客戶應用程序中。使用FIX DDE服務器功能,需要首先啟動DDE服務器程序,即FIX軟件的安裝目錄Fix32下的DMDDE.exe。Fix作為服務器提供的DDE編址語法如表1。
表1 DDE編址語法
例如:實時數(shù)據(jù)語法 =DDMDDE|DATA!NODE1:AI1.A_CV
歷史數(shù)據(jù)語法 =DDMDDE|HTR!Group1.time1.Y.Y.Y.Y.25
四、 VB的DDE支持
VB作為Windows環(huán)境下非常流行的快速開發(fā)工具,與Windows操作系統(tǒng)同出于微軟一家,它理所當然地支持Windows下的DDE技術。用VB可以方便快捷地開發(fā)出DDE客戶或服務器。
a) VB的DDE屬性、DDE事件和DDE方法
VB中支持DDE的對象有4類:Form(窗體)、Label(標簽)、TextBox(文本框)和PictureBox(圖片框)。其中,F(xiàn)orm對象扮演(即數(shù)據(jù)的提供者)Label、TextBox和PictureBox等對象扮演接受端(即數(shù)據(jù)的接收者)。VB為支持DDE給發(fā)送端對象提供了2種DDE屬性和4種DDE事件(見表2), 給接受端對象提供了4種DDE屬性、4種DDE事件和4種DDE方法 (見表3) 。
表2 發(fā)送端對象的屬性、事件
表3 接收端對象的屬性、事件及方法
b) 利用VB開發(fā)DDE客戶/服務器應用程序
在利用VB開發(fā)DDE客戶/服務器應用程序中,欲建立DDE鏈接,完全依賴對象的DDE屬性設置。VB分別作為DDE客戶和DDE服務器時,DDE屬性的不同設置(見表4)。
表4 VB作為DDE客戶/服務器的DDE屬性設置
五、 應用實例
現(xiàn)以某油田的“油井注氮遠程監(jiān)測系統(tǒng)”開發(fā)為例,具體說明FIX與VB之間DDE的實現(xiàn)方法。在該系統(tǒng)開發(fā)中,根據(jù)參數(shù)的不同,F(xiàn)IX和VB分別需要在DDE客戶與DDE服務器兩種角色之間進行相應的變化。
a)VB作為DDE服務器,F(xiàn)IX作為DDE客戶
有些參數(shù)需要VB開發(fā)的應用程序VBSrvApp把從遠程現(xiàn)場采集的實時數(shù)據(jù)傳輸?shù)紽ix實現(xiàn)顯示或制作趨勢圖,如膜組的實測溫度、膜組的進出口壓力、四級過濾器壓力、氮氣的實測純度、渦輪增壓機的轉速和三級實測溫度、渦輪增壓機的進出口壓力等參數(shù)。
在VBSrvApp中,把采集到的實時數(shù)據(jù)賦給TextBox(文本框),并把Fix中個點的DDE地址的項目名設為對應TextBox(文本框)。如膜組的實測溫度,在FIX中點名為AI_Membrane_Tem,其DDE地址=VBSrvApp|frmMain!txtMembraneTem(其中,VBSrvApp是應用程序名,frmMain是作為主題的窗體名稱,txtMembraneTem是作為項目的文本框名稱)。此時,F(xiàn)ix為客戶,VB應用程序為服務器。
b) FIX作為DDE服務器, VB作為DDE客戶
有些參數(shù)需要從FIX傳輸?shù)絍B開發(fā)的應用程序VBSrvAp,再由VBSrvAp以命令的形式下達給遠程現(xiàn)場的智能儀表或PLC等遠程的現(xiàn)場設備,如膜組的設定溫度、氮氣的設定純度、渦輪增壓機的進口設定壓力等參數(shù)。
在VBSrvApp中,把各個設定參數(shù)相應的TextBox(文本框)的LinkItem屬性設置為對應FIX的點,然后把從FIX的點傳輸?shù)綄猅extBox(文本框)中的內容下達給遠程現(xiàn)場設備。如膜組的設定溫度,在FIX中點名為AO_Membrane_Tem_Set,在在VBSrvApp中相應的TextBox(文本框)名為txtMembraneTemSet,其LinkTopic屬性為DMDDE|Data, LinkItem屬性為FIX: AO_Membrane_Tem_Set.A_CV。此時,VB應用程序為客戶,F(xiàn)ix為服務器。