玖玖玖麻豆视频,久久久久黄色录像,另类专区激情视频,无码精品人妻一区二三,精品 久久 91,超碰大香蕉,大香蕉999大伊,国产黑丝少妇在线,人妻巨乳av一区二区

技術頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網 > 技術頻道 > 技術百科 > 組態(tài)軟件實現(xiàn)組件間通信的一種典型技術

組態(tài)軟件實現(xiàn)組件間通信的一種典型技術

時間:2009-01-19 11:03:24來源:zhangting

導語:?組態(tài)軟件作為用戶可定制功能的軟件平臺工具,目前已經在各個行業(yè)和領域得到了廣泛應用。
1 引言 組態(tài)軟件作為用戶可定制功能的軟件平臺工具,目前已經在各個行業(yè)和領域得到了廣泛應用。組態(tài)軟件伴隨著dcs及計算機控制技術的發(fā)展而逐漸成熟進來,組件化、分布式已經成為組態(tài)軟件的基本特征。優(yōu)秀的組態(tài)軟件大多將它的實時數(shù)據(jù)庫、hmi、i/o服務器、數(shù)據(jù)服務器等幾個主要部分設計成分別可獨立運行的組件。這些組件可以同時運行在一臺計算機內,也可以分布式地運行在不同的計算機內,通過網絡等方式實現(xiàn)組件間的通信。這種體系結構可以讓用戶靈活地配置自己的系統(tǒng),合理地分配各個服務器的運算負荷。 但實現(xiàn)組件化同時也帶來了軟件設計上的復雜性。特別是如何實現(xiàn)組件間的高效、實時、可靠地通信成為一個關鍵問題。 2 組件間通信技術 組件間在實現(xiàn)通信過程時,包括兩種方式:本地方式和遠程方式。在設計時,可以考慮將本地方式作為遠程方式的基礎?;蛘哒f,實現(xiàn)了本地通信,也就實現(xiàn)了遠程通信。因為可以將組件間交換的數(shù)據(jù)通過遠程方式,傳送到目的機后,再通過本地方式與遠程組件通信。下面我們分別討論如何實現(xiàn)組件間的本地通信和遠程通信。 3 本地通信 組件間實現(xiàn)本地通信時,在底層上要解決的本質問題上是進程間通信問題。進程間通信是一種與os密切相關的技術。本文所介紹的方法是以微軟的windows操作系統(tǒng)為基礎的。windows各個版本的操作系統(tǒng)都提供了豐富的進程間通信手段。從早期版本提供的管道、郵件槽、dde技術,到后來推出的com技術,以及目前最新的“.net”中提供的全新方法等。本文介紹的技術屬于“傳統(tǒng)”技術,它的基礎是windows的消息傳遞功能,同時輔助內存文件映射和信號量技術。筆者認為這種方法有以下幾個優(yōu)點: (1) 實現(xiàn)簡便 因為涉及的技術都不很復雜,因此實現(xiàn)起來比較容易。 (2) 實時性高 這種方法使用的都是os的底層技術,中間環(huán)節(jié)少,運行效率高,可以實現(xiàn)快速數(shù)據(jù)通信。 (3) 移植性好 因為采用的是os底層技術,這種方法受os版本升級的影響很小,也很容易移植到非windows操作系統(tǒng)上。而某些進程間通信技術,如dde,在新版的windows操作系統(tǒng)上已經不再被支持。其它一些技術也因os升級在接口形式和實現(xiàn)方法上發(fā)生了很大變化,使應用程序受到影響。 (4) 功能可控性好 這里的可控性是指開發(fā)人員在使用一種技術時,能否有效地控制這種技術的運用。例如,開發(fā)人員在選用一種技術時,如果這種技術作了過多的封裝,雖然應用簡單,但要實現(xiàn)自己的靈活控制時就會處處受縛。 (5) 可靠性易控 這一點與上面提到的可控性是相關的。操作系統(tǒng)越是底層的技術,可靠性就越強。封裝得越多的技術,其可靠性就越無法控制。 (6) 對系統(tǒng)環(huán)境的適應能力強 這個問題可以用一個簡單的例子說明:用過基于com/dcom技術開發(fā)的軟件產品(如:opc類軟件)的用戶,很多人都經歷過因不同系統(tǒng)環(huán)境而必須面對com/dcom復雜配置的困惑。 本地通信在計算模式上仍然屬于c/s結構。主要問題是如何實現(xiàn)多個client與server之間快速、并發(fā)式的數(shù)據(jù)交換實例。下面結合實例進行說明。 3.1 多個client與server通信實例 假設client和server是采用這種技術的客戶端和服務器端程序,它們都是基于窗口的獨立進程。每次進行數(shù)據(jù)交換時client向server發(fā)送一個請求報文,server收到請求報文后,再向client回復一個應答報文,如此不斷往復。 因為可能有多個client與同一server同時進行快速數(shù)據(jù)交換,因此上述交互過程必須采用異步方式方能保證可靠性和并發(fā)性。為了實現(xiàn)方便,需要抽象一個專用于進程通信的中間件icom以供各個client同時調用。 (1) 提供3個最基本的接口 a) open() 在這個接口里icom實現(xiàn)的功能包括:初始化用于數(shù)據(jù)交換的內存映射文件、創(chuàng)建上行(client到server)和下行(server到client)事件通知的信號量對象、創(chuàng)建用于防止共享沖突的信號量對象,啟動服務線程,同時client向server發(fā)送消息進行身份認證和注冊。 b) close() client在關閉進程或斷開與server的通信時調用該接口。這個接口icom要釋放在執(zhí)行open()方法時創(chuàng)建的對象資源,同時client向server發(fā)送消息執(zhí)行注銷操作。 c) sendmessage() client向server發(fā)送報文時調用該接口。 (2) 報文的傳遞過程 當client調用icom的sendmessage()方法向server發(fā)送報文時,需要使用信號量控制時序。當用sdk函數(shù)sendmessagetimeout()將報文發(fā)送給server后,通過信號量等待server的回復,一旦等到回復信號,便知道server已經將回復報文放到內存映射文件中,就可以取得該報文并以參數(shù)的形式傳遞給client。 為了接收對方發(fā)送的消息,server程序的主窗口類上要增加消息“wm_copydata”的映射函數(shù)。當client調用icom的sendmessage()方法向server發(fā)送報文時,server會立刻接收到wm_copydata消息,并通過消息參數(shù)獲取報文信息。但是server在接收到請求報文后并不立即處理、回復,要首先用replymessage()方法對wm_copydata消息進行應答,以免對方進程發(fā)生無謂等待,然后將報文放到內部緩沖隊列中,再向自身的主窗口用postmessage()發(fā)送一個通知消息,在另外一個消息映射函數(shù)中處理緩沖隊列中的請求報文。server的這種處理機制是保證交互過程為異步方式的關鍵。這種異步機制非常重要,它可以在多個client程序與server之間進行頻繁的大數(shù)據(jù)量交換時合理地分配cpu資源,避免發(fā)生“死鎖”現(xiàn)象。 server解析請求報文的內容,將回復報文放至icom中分配的內存映射文件中,并通過信號量通知icom接收回復報文。一次完整信息交互過程完成。報文的格式由報頭和數(shù)據(jù)尾兩部分組成。報頭為固定結構,其中要包含消息號、數(shù)據(jù)長度、client的id等信息。數(shù)據(jù)尾部分為不定長的任何內容。 4 遠程通信 遠程通信完全建立在本地通信的基礎之上。但要增加兩個專用于網絡通信服務的組件:netclient和netserver。netclient和netserver也是兩個完全獨立的進程。以采用tcp/ip網絡為例,netclient和netserver分別相當于socket client和socket server端。netclient和netserver并不關心傳送的報文的內容,它們只負責網絡連接的建立、報文的傳輸、網絡通信故障時的數(shù)據(jù)緩存與恢復等。 仍結合上一節(jié)中的實例。當client程序與server進行遠程數(shù)據(jù)交換時,client將與netclient運行在同一計算機內,而server與netserver運行在同一計算機內。此時icom將client的請求報文首先通過本地通信方式發(fā)送給netclient,再由netclient通過網絡發(fā)送給遠程的netserver,然后由netserver通過本地通信方式傳送給server。而server的回復報文的傳送過程正好相反。 在實際開發(fā)產品時,netclient和netserver可以設計成為更具廣泛意義上的網絡服務組件。除了支持tcp/ip網絡,還可以支持udp/ip、串行通信、gprs等任何一種通信形式。而無論使用哪一種通信方式對于client和server來說都是完全透明的,這也正是產品實現(xiàn)組件化的優(yōu)勢所在。 5 結束語 組件間通信技術是設計組態(tài)軟件、數(shù)據(jù)通信類軟件的關鍵技術之一。如何能夠在實現(xiàn)快速、高效、多用戶并發(fā)處理的前提下,保證可靠性、靈活性和廣泛適應性,值得設計人員思考。本文介紹的技術在筆者設計的組態(tài)軟件產品中多處得到運用,經過逾千應用案例的證明是成熟可靠的。 參考文獻 [1] 馬國華. 監(jiān)控組態(tài)軟件及其應用[m]. 北京:清華大學出版社,2001. [2] brian myers,eric hamer. mastering windows nt programming,1994.

標簽:

點贊

分享到:

上一篇:污水處理廠遠程監(jiān)控系統(tǒng)開發(fā)...

下一篇:微能WIN-V63矢量控制變頻器在...

傳動網版權與免責聲明:凡本網注明[來源:傳動網]的所有文字、圖片、音視和視頻文件,版權均為傳動網(www.qiuhekeji.cn)獨家所有。如需轉載請與0755-82949061聯(lián)系。任何媒體、網站或個人轉載使用時須注明來源“傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯(lián)網或業(yè)內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網站簡介|會員服務|聯(lián)系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業(yè)自動化與智能制造的全媒體“互聯(lián)網+”創(chuàng)新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2026 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

黄浦区| 东明县| 望奎县| 海南省| 龙里县| 罗山县| 泰顺县| 昌都县| 珠海市| 石林| 建阳市| 阿拉尔市| 和平区| 周宁县| 长海县| 威海市| 天峨县| 清水县| 遂平县| 新兴县| 永定县| 徐水县| 潞西市| 双城市| 万荣县| 卫辉市| 石景山区| 淄博市| 平武县| 宜良县| 邵阳市| 聊城市| 绍兴市| 政和县| 宁安市| 上栗县| 罗城| 涞水县| 桐乡市| 洛扎县| 广饶县|