技術(shù)頻道

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

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

時(shí)間:2009-01-19 11:03:24來源:zhangting

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

標(biāo)簽:

點(diǎn)贊

分享到:

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

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

中國傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動(dòng)網(wǎng)(www.treenowplaneincome.com)獨(dú)家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

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

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

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

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號(hào) | 營業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)