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