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