背景:
動態數據交換(Dynamic Data Exchange,DDE)也是一種進程間通信形式。它最早是隨著Windows 3.1由美國微軟公司提出的。
DDE技術通信原理:
兩個同時運行的程序間通過DDE方式交換數據時是客戶/服務器關系,一旦客戶和服務器建立起來連接關系,則當服務器中的數據發生變化后就會馬上通知客戶。通過DDE方式建立的數據連接通道是雙向的,即客戶不但能夠讀取服務器中的數據,而且可以對其進行修改。
DDE有三種數據交換方式,即
(1)冷連接(Cool Link):數據交換是一次性數據傳輸,與剪貼板相同。當服務器中的數據發生變化后不通知客戶,但客戶可以隨時從服務器讀寫數據;
(2)溫連接(Warm Link):當服務器中的數據發生變化后馬上通知客戶,客戶得到通知后將數據取回;
(3)熱連接(Hot Link):當服務器中的數據發生變化后馬上通知客戶,同時將變化的數據直接送給客戶。
DDE 客戶程序向DDE 服務器程序請求數據時,它必須首先知道服務器的名稱(即DDE Service名)、DDE主題名稱(Topics名),還要知道請求哪一個數據項的項目名稱(Items名)。DDE Service名應該具有唯一性,否則容易產生混亂。通常DDE Service就是服務器的程序名稱,但不是絕對的,它是由程序設計人員在程序內部設定好的,并不是通過修改程序名稱就可以改變的。Topics名和 Items名也是由DDE Service在其內部設定好的,所有服務程序的Service名、Topics名都是注冊在系統中,當一個客戶向一個服務器請求數據時,客戶必須向系統 報告服務器的Service名和Topics名。只有當Service名、Topics名與服務器內部設定的名稱一致時,系統才將客戶的請求傳達給服務器。
當服務名和Topics名相符時,服務器馬上判斷Items名是否合法。如果請求的Item名是服務器中的合法數據項,服務器即建立此項連接,建立連接的數據發生數值變化后,服務器會及時通知客戶。一個服務器可以有多個Topics名,Items名的數量也不受限制。
注:需啟動DdeServer.exe 參數:/v/nohold/noconfirm
在使用DDE采集WinCC中的數據時,需要將Ddeserv.exe添加到啟動項中
設置Ddeserv.exe
打開工程中的“計算機屬性”,如下:
點擊“添加”按鈕
填寫完成如上設置。這樣在WinCC工程運行之后就可以使用打開的“DDE服務”對話框中選擇所要共享的數據。
設置iFix DDE服務程序DMDDE.exe
需要將iFix軟件自帶的DMDDE.exe添加到工程啟動項里,才能利用DDE采集iFix工程中的數據。打開iFix系統配置(SCU-FIX)中的任務配置,如下
找到iFix安裝目錄下的DMDDE.exe程序,增加到任務列表里,選擇后臺啟動的方式。
采集組態王工程中的數據時,必須保證該數據允許“DDE訪問”
允許“DDE訪問”設置
選中上圖標示處,即可共享該數據。
結論:
DDE交換可以發生在單機或網絡中不同計算機的應用程序之間。開發者還可以定義定制的DDE數據格式,進行應用程序之間特別目的IPC,它們有更緊密耦合的通信要求。大多數基于Windows的應用程序都支持DDE。但DDE有個明顯的缺點就是,通信效率低下,當通信量較大