原理
DDE是一種動態(tài)數(shù)據(jù)交換機制(DynamicDataExchange,DDE。動態(tài)數(shù)據(jù)交換是微軟公司提出的一種數(shù)據(jù)通訊形式,它使用共享的內存在應用程序之間進行數(shù)據(jù)交換。DDE不同于剪切板方法,它能夠及時更新數(shù)據(jù),在兩個應用程序之間自動更新信息,無須用戶參與。
使用DDE通訊需要連個Windows應用程序,其中一個作為服務器處理信息,另外一個作為客戶機從服務器獲得信息?蛻魴C應用程序向當前所激活的服務器應用程序發(fā)送一條消息請求信息,服務器應用程序根據(jù)該信息作出應答,從而實現(xiàn)兩個程序之間的數(shù)據(jù)交換。
通信要素
兩個程序間建立DDE通訊稱作DDE會話,一個會話由服務名與話題來標識。DDE會話中包括很多數(shù)據(jù)項,每個數(shù)據(jù)項對應一個DDE項目名。如果通過網(wǎng)絡與遠程機器的DDE通信,還要提供遠程節(jié)點的名稱。機器名、服務名、話題和項目名構成DDE通信的四要素。
機器名:遠程機器名稱,若為本機可以忽略。
應用名:DDE服務器的名字,軟件程序通常使用自己的名字作為應用名。紫金橋?支持的應用名為DB。
話題名:DDE服務器上數(shù)據(jù)組的名字?赡苁菙(shù)據(jù)的文件名或工作表名。紫金橋?支持的話題名也為DB。
項目名:單個數(shù)據(jù)項。紫金橋?數(shù)據(jù)庫中的點名加參數(shù)名為數(shù)據(jù)項名稱。如:TI101.PV。
您可以通過一個形象的比喻來理解這四要素:把機器名想成某個人居住的“國家”,把應用程序想成“城市”,話題名當作“街道”,項目名當作“門牌號”。假如您要訪問一個朋友,當您知道了他住在哪個國家后,哪個城市、街道和門牌號就能找到這個朋友了。
紫金橋?監(jiān)控組態(tài)軟件提供了DDE客戶和DDE服務器支持。DDE服務器可以使紫金橋?軟件的過程信息傳送到其它應用程序進行分析,例如微軟的Excel軟件。DDE客戶支持可以使來自其它應用程序的信息傳送到紫金橋?的數(shù)據(jù)庫中。
NetDDE配置
要想使DDE客戶端程序通過網(wǎng)絡訪問遠程DDE服務器,客戶端計算機及服務器端計算機必須支持NetDDE(WindowsNT/2000/XP/2003缺省支持,Windows95/98不支持)。下面介紹一下NetDDE的服務器和客戶端的相關配置操作。
服務器端配置
DDE服務器端需要以下四部分設置:
1.建立用戶以供客戶端使用。
2.啟用NetworkDDE和NetworkDDEDSDM
3.配置DDE共享
4.端口設置
下面詳細介紹一下各步驟的具體設置。
1.建立用戶
客戶端通過NetworkDDE訪問服務器時,需要以當前用戶的身份登陸到服務器(系統(tǒng)自動完成登陸過程),所以在服務器端需要提供客戶登陸訪問時使用的用戶。
打開“控制面板”,選擇“管理工具”中的“計算機管理”,在導航樹中選擇“系統(tǒng)工具”下的“本地用戶和組”,展開后在其中的“用戶”上點擊鼠標右鍵選擇“新建用戶”,如下圖:

建立新的用戶,注意口令不能為空。

2.啟用NetworkDDE和NetworkDDEDSDM
利用DDE遠程訪問數(shù)據(jù)需要用到Windows自帶的NetworkDDE和NetworkDDEDSDM。在服務器中需要將NetworkDDE和NetworkDDEDSDM設置為自動啟動。具體設置如下:
打開“控制面板”—“管理工具”下的“服務”一項,或者直接在運行中輸入“services.msc/s”打開“服務”設置。找到NetworkDDEDSDM,雙擊打開屬性對話框,在“常規(guī)”選項中將啟動類型改為“自動”,并啟動該服務,如下圖,NetworkDDE也要進行同樣的修改。


3.配置DDE共享
只有在服務器中需要建立DDE共享,客戶端才能夠通過DDE遠程訪問到服務器中的數(shù)據(jù)。在運行中輸入“DDEshare”打開“DDE共享”設置對話框。如下圖:

配置DDE共享需要三步:選擇計算機,DDE共享,設置信任共享。
(1)選擇計算機
選擇服務器的名稱,設置共享的計算機。打開“共享”菜單下的“選擇計算機”,彈出“選擇計算機”對話框,如下圖:

服務器端所要選擇的計算機為本機,選擇本機名稱即可。
(2) DDE共享
打開“共享”菜單下的“DDE共享”,彈出“DDE共享”對話框,如下圖:

點擊“添加共享”,彈出“DDE共享屬性”對話框。如下圖:

以采集紫金橋監(jiān)控組態(tài)軟件的數(shù)據(jù)為例,共享名自行設置,應用程序和話題名均為DB。
以上操作完成之后,點擊右下方的“權限”按鈕,打開“DDE共享名的權限”對話框。如下圖:

這里有兩種選擇,1.直接選擇everyone,訪問類型為完全控制。2.點擊“添加”,添加新建立的用戶,訪問類型同樣為完全控制,如下圖

選擇“顯示用戶”,找到新建的ddeuser,點擊添加完成添加過程。如果出現(xiàn)“文件名過長”的錯誤提示,可以在通過以下步驟修改計算機名稱
(1)選擇桌面“我的電腦”圖標,點右鍵,選擇“屬性”,如下圖

(2)選擇計算機名,點擊“更改”,如下圖


- 重啟系統(tǒng)后再進入DDE共享設置,重新添加用戶即可。
注意:兩種方式的訪問類型可以根據(jù)實際情況設置,一般為完全控制。
點擊“確定”完成“DDE共享屬性”設置。
(3) 設置信任共享
在“DDE共享”對話框中選中新添加的DDE共享,點擊“信任共享”按鈕,將其添加到受信任的共享中。如下圖:

在彈出的“受信任的共享屬性”對話框中,進行如下設置,如圖:

注意:必須選中允許啟動應用程序、允許初始化應用程序和替代Cmd顯示項,并且替代Cmd顯示,使用“0”值。
可以通過“共享”菜單下的“受信任的共享”,看到當前受信任的共享。
4.端口設置
客戶端通過DDE遠程訪問服務器時,服務器中的端口要進行相應的設置。
(1)網(wǎng)卡端口
為了使客戶端能通過DDE遠程訪問到服務器,服務器中的網(wǎng)卡端口需要全部打開。不允許有封閉的端口。
打開本地連接的屬性對話框,如下圖:

選擇Internet協(xié)議(TCP/IP),點擊屬性,打開“Internet協(xié)議(TCP/IP) 屬性”對話框,如下圖:

點擊“高級”按鈕,打開“高級TCP/IP設置”對話框,如下圖:

選擇“選項”,點擊“屬性”按鈕,打開“TCP/IP 篩選”對話框,如下圖:

選擇“全部允許”,點擊確定,即可打開所有端口,注意:完成設置要重啟計算機。
(2)防火墻端口
這里僅介紹Windows防火墻端口的設置,其它防火墻請參考使用說明作相應的設置。
在Windows2003SP1/XPSP2系統(tǒng)中自帶一個安全防火墻,如果它處于啟動狀態(tài),要對其做相應配置。
1.打開Windows防火墻配置對話框
進入“控制面板”,選擇“安全中心”,打開“Windows安全中心”配置窗口。

在窗口的右下角選擇“Windows 防火墻”,則可打開Windows防火墻配置對話框。Windows防火墻配置對話框包括“常規(guī)”、“例外”和“高級”三個選項卡,在這里只對例外選項卡進行操作。點擊“例外”標簽則可切換到例外屬性,如下圖:

2. 啟用遠程過程調用端口(RPC)
DCOM是基本遠程過程調用(RCP)服務實現(xiàn)的,因此要通過DCOM實現(xiàn)遠程通訊必需啟動RCP服務,并將它使用的端口添加到Windows防火墻的例外中。在例外選項卡中點擊“添加端口”按鈕,打開“添加端口”對話框:

將名稱命名為“RCP”,在端口號中輸入135,協(xié)議類型為TCP,單“確定”完成設置。
注意:1.必須保證NetworkDDE和NetworkDDEDSDM設置為自動。
2.防火墻中的135端口必須打開,并且網(wǎng)卡端口不允許封閉。
客戶端配置
客戶端需要以下四部分設置:
1.建立用戶
2.啟用NetworkDDE和NetworkDDEDSDM
3.配置DDE共享
4.端口設置
1.建立用戶
客戶端需要建立和服務器中新建的相同的用戶,包括用戶名和口令,只有這樣才能登陸到服務器中,實現(xiàn)遠程訪問。具體步驟請參考服務器端新建用戶的步驟。
客戶端在利用DDE遠程訪問時,必須要用這個新建的用戶登錄客戶端,然后才能進行相關的操作。
2.啟用NetworkDDE和NetworkDDEDSDM
客戶端需要將NetworkDDE和NetworkDDEDSDM服務設置為手動,這樣在用DDE遠程訪問時系統(tǒng)就能夠自動將其啟動。具體步驟請參考服務器端的具體設置。
3.配置DDE共享
在運行中輸入“DDEshare”打開“DDE共享”設置對話框?蛻舳酥恍柙谶x擇計算機中選中服務器的名稱即可。即打開“共享”菜單下的“選擇計算機”,在彈出“選擇計算機”對話框中填入服務器的名稱。

4. 端口設置
客戶端同樣需要打開防火墻的端口,具體步驟請參考服務器端的端口設置。
注意:1. 必須要用新建的用戶登陸客戶端才能進行相關的操作。
2. 必須保證Network DDE和Network DDE DSDM設置為自動。
3. 客戶機與服務器的IP地址要處于同一網(wǎng)段。
紫金橋作為DDE 服務器
紫金橋?監(jiān)控組態(tài)軟件可以作為DDE服務器,第三方程序可以通過DDE方式訪問數(shù)據(jù)庫中的實時數(shù)據(jù)。
示例:
客戶端使用Excel,保證用新建的用戶登錄,在本地客戶端的Excel中就可以通過公式對其進行訪問了。如
“=\\[ComputerName]\NDDE$|[DDEShareName]![TagID]”
[ComputerName]為實際的機器名,[DDEShareName]為在遠程計算機上建立DDE共享名[TagID]包括數(shù)據(jù)庫中點名和參數(shù)名,如:A1.PV。
紫金橋作為DDE客戶端
紫金橋?數(shù)據(jù)庫將DDE服務器程序當作一個I/O設備,通過DDE設備驅動程序與DDE服務器通信。例如要與EXCEL通信,需要建一I/O設備,該設備定義時,指定了與EXCEL的哪個文件進行通信,而具體與哪個單元格,則需要通過I/O連接來指明。步驟如下:
[1]添加ExcelI/O設備
在開發(fā)界面的導航器“數(shù)據(jù)庫”選項卡中的“I/O設備驅動”,然后依次展開目錄“DDE協(xié)議”、廠商“Microsoft”,選擇驅動程序“DDE”,雙擊驅動程序名稱“DDE”,或用鼠標右擊后在右鍵菜單中選擇“添加設備驅動”。將出現(xiàn)設備定義框。如下圖:

在設備定義框中填寫設備名如DDE1。

此處的服務名和話題名需要根據(jù)DDE服務器來定訪問遠程時,首先需要完成與DDE遠程訪問相關的設置,此時服務器名為:\\[ComputerName]\NDDE$,話題名為設置好的DDE共享名。
此處采集類型中的變化通知項是指驅動并不直接采集數(shù)據(jù),只有當數(shù)據(jù)發(fā)生了變化時,才進行采集數(shù)據(jù)。周期采集是,簡單的周而復始的采集。推薦使用周期采集,只有服務器中的數(shù)據(jù)變化比較緩慢才建議使用變化通知項。否則由于變化通知選項需要發(fā)送變化消息,在數(shù)據(jù)頻繁變化時,采集速度反而降低。
點擊“高級”按鈕會出現(xiàn)如下圖所示的對話框:

其中,采集到的字符串中去除逗號主要是針對有些DDE服務器的某些特性設置的,比如1234某些DDE服務器會傳遞1,234此時應該把逗號去除方能采集到正確的數(shù)據(jù)。特定字符串轉換數(shù)值主要是為了把采集到的特定字符串轉換為特定值時使用。比如,把ON或Open轉換為1,把OFF或Close轉換為0,注意此處的字符串是不區(qū)分大小寫的。
可以通過添加、修改、刪除按鈕來編輯字符串轉換的設置。
[2]建立連接項
進入數(shù)據(jù)庫組態(tài),選擇一位號,建立數(shù)據(jù)連接,選擇設備DDE1,輸入連接項如A1.pv(所要采集服務器端數(shù)據(jù)的點名),依次建立其他連接項。
建立聯(lián)結的對話框如下圖所示:

其中的子串索引主要是針對某些設備而定的,比如有些設備一個聯(lián)結項就可以返回多個數(shù)據(jù),中間用Tab分割,比如“OpenClose123”,如果此時組態(tài)三個點聯(lián)結,它們的子串索引分別是0、1、2那么采集數(shù)據(jù)之后它們的值分別是Open、Close、123對應的數(shù)據(jù)。
建好所有連接項后,運行紫金橋?監(jiān)控組態(tài)軟件,可以觀察到數(shù)據(jù)庫中相應數(shù)據(jù)與服務器端的相應的數(shù)據(jù)是一致的。
|