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