国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

LabVIEW編程中基于AMC框架的多機(jī)通訊實(shí)現(xiàn)方法*

2016-08-10 03:23納杰斯
艦船電子工程 2016年7期

納杰斯

(昆明船舶設(shè)備研究試驗(yàn)中心 昆明 650051)

?

LabVIEW編程中基于AMC框架的多機(jī)通訊實(shí)現(xiàn)方法*

納杰斯

(昆明船舶設(shè)備研究試驗(yàn)中心昆明650051)

摘要在一個(gè)多臺(tái)計(jì)算機(jī)聯(lián)合工作的大型軟件系統(tǒng)中,系統(tǒng)內(nèi)各計(jì)算機(jī)之間的通訊(以下簡(jiǎn)稱“多機(jī)通訊”)是保證系統(tǒng)正常運(yùn)行的必不可少的一個(gè)重要技術(shù)環(huán)節(jié),多機(jī)通訊的代碼質(zhì)量很大程度上決定了系統(tǒng)的穩(wěn)定性與魯棒性及系統(tǒng)運(yùn)行速度。目前大部分系統(tǒng)的多機(jī)通訊實(shí)現(xiàn)主要是建立在如TCP與UDP等通用網(wǎng)絡(luò)通訊協(xié)議上的,論文提出了多種在LabVIEW編程中基于AMC框架的多機(jī)通訊實(shí)現(xiàn)方法,并比較了它們的優(yōu)缺點(diǎn)。

關(guān)鍵詞LabVIEW; AMC框架; 多機(jī)通訊

Class NumberTB566

1引言

LabVIEW(Laboratory Virtual Instrument Engineering Work bench)程序開發(fā)環(huán)境是由美國(guó)NI(National Instruments)公司開發(fā)的一種圖形化設(shè)計(jì)語(yǔ)言[1],LabVIEW與C語(yǔ)言等文本編程、過(guò)程化程序設(shè)計(jì)語(yǔ)言最大的區(qū)別是[2]:LabVIEW是圖形化、基于數(shù)據(jù)流的程序設(shè)計(jì)語(yǔ)言,使得LabVIEW在測(cè)量與控制系統(tǒng)的開發(fā)中有著得天獨(dú)厚的優(yōu)勢(shì)[3]。

AMC(Asynchronous Message Communication Library)是美國(guó)NI(National Instruments)公司開發(fā),用于在LabVIEW編程中實(shí)現(xiàn)線程通訊、進(jìn)程通訊及多機(jī)通訊的API接口函數(shù)庫(kù),該函數(shù)庫(kù)基于LabVIEW自帶的消息隊(duì)列結(jié)構(gòu)[4],使用通用的UDP通訊協(xié)議,具有極強(qiáng)的移植性與通用性。

LabVIEW程序設(shè)計(jì)語(yǔ)言廣泛運(yùn)用于測(cè)控系統(tǒng)軟件開發(fā),在一個(gè)擁有多臺(tái)計(jì)算機(jī)聯(lián)合工作的大型軟件系統(tǒng)中[5],系統(tǒng)內(nèi)各計(jì)算機(jī)之間的通訊(以下簡(jiǎn)稱“多機(jī)通訊”)是必不可少的一個(gè)重要技術(shù)環(huán)節(jié),多機(jī)通訊技術(shù)是實(shí)現(xiàn)分離的計(jì)算機(jī)協(xié)調(diào)工作的重要手段,是連接整個(gè)系統(tǒng)的橋梁,這些因素使得多機(jī)通訊的代碼質(zhì)量至關(guān)重要。

當(dāng)前大部分系統(tǒng)的多機(jī)通訊主要是建立在TCP與UDP等通用網(wǎng)絡(luò)協(xié)議上[6],采用基于UDP的AMC框架實(shí)現(xiàn)多機(jī)通訊是較為主流且先進(jìn)的程序開發(fā)手段。傳統(tǒng)的多機(jī)通訊方法大多由通訊循環(huán)結(jié)構(gòu)實(shí)現(xiàn),主機(jī)發(fā)送通訊指令后,通過(guò)單獨(dú)線程的通訊循環(huán)實(shí)時(shí)監(jiān)聽從機(jī)反饋指令,或判斷為通訊超時(shí)[7]。本文以傳統(tǒng)多機(jī)通訊方法為基礎(chǔ),提出了兩種優(yōu)化的多機(jī)通訊實(shí)現(xiàn)方法。

2AMC框架的多機(jī)通訊的實(shí)現(xiàn)方法

2.1AMC框架的網(wǎng)絡(luò)通訊機(jī)制

AMC基于UDP協(xié)議實(shí)現(xiàn)網(wǎng)絡(luò)中計(jì)算機(jī)的通訊管理,AMC庫(kù)中的Dispatcher函數(shù)庫(kù)提供了底層的UDP通訊支持,只要在計(jì)算中調(diào)用、配置Dispatcher函數(shù)即可使網(wǎng)絡(luò)中的計(jì)算機(jī)如同本地計(jì)算機(jī)一樣使用消息隊(duì)列通訊。圖1所示為AMC函數(shù)庫(kù)中用于實(shí)現(xiàn)網(wǎng)絡(luò)通訊的Dispatcher函數(shù)庫(kù)。

圖1 AMC中用于通訊的Dispatcher函數(shù)庫(kù)

2.2傳統(tǒng)的通訊循環(huán)結(jié)構(gòu)

多機(jī)通訊機(jī)制一般是主機(jī)發(fā)送消息到從機(jī),主機(jī)等待從機(jī)的反饋指令,如果接受不到反饋指令,則判定為通訊超時(shí)。從主機(jī)角度來(lái)看,因?yàn)閺臋C(jī)反饋指令的時(shí)間不定,為了不錯(cuò)過(guò)從機(jī)的反饋指令,主機(jī)需要監(jiān)聽從機(jī)的反饋指令,監(jiān)聽期間不能影響其他軟件功能的正常運(yùn)行,一般需要一個(gè)單獨(dú)的循環(huán)結(jié)構(gòu)來(lái)實(shí)時(shí)監(jiān)聽從機(jī)的反饋指令。

如圖2所示代碼是一個(gè)典型的生產(chǎn)者消費(fèi)者編程框架,其中紅色框內(nèi)的代碼既是為了實(shí)現(xiàn)多機(jī)通訊加入的通訊循環(huán)結(jié)構(gòu)(以下簡(jiǎn)稱Communication Loop),Communication Loop從程序啟動(dòng)時(shí)便一直存在于內(nèi)存中,對(duì)于程序而言是一個(gè)單獨(dú)的線程,隨時(shí)監(jiān)聽從機(jī)的反饋指令。當(dāng)主機(jī)發(fā)出通訊指令后,可從Communication Loop中監(jiān)聽接收從機(jī)的反饋指令并做下一步處理,即實(shí)現(xiàn)了多機(jī)通訊。

2.3融合的Wait循環(huán)結(jié)構(gòu)

在LabVIEW測(cè)控軟件設(shè)計(jì)中,通常是基于一個(gè)消息生產(chǎn)者和一個(gè)消息消費(fèi)者的編程框架,為了提高代碼的聚合性,不宜因多機(jī)通訊的需求而添加一個(gè)獨(dú)立的循環(huán)線程來(lái)處理從機(jī)的反饋指令,如圖2所示的代碼結(jié)構(gòu)顯得松散繁復(fù),所以有必要將多機(jī)通訊所需的循環(huán)結(jié)構(gòu)嵌入到消費(fèi)者隊(duì)列的循環(huán)結(jié)構(gòu)中。

圖2 傳統(tǒng)的通訊循環(huán)結(jié)構(gòu)實(shí)現(xiàn)多機(jī)通訊

圖3所示為AMC構(gòu)架下,一個(gè)典型的消息消費(fèi)者循環(huán)中處理各個(gè)消息(Message Name)的分支,圖中打勾選中的分支可實(shí)現(xiàn)循環(huán)結(jié)構(gòu)(以下簡(jiǎn)稱Wait分支)。Wait分支的進(jìn)入條件為:當(dāng)消息出隊(duì)列超時(shí),即隊(duì)列中沒(méi)有任何Message Name,此時(shí)Message Name為空字符串(即是“”),該Message Name會(huì)進(jìn)入Wait分支,默認(rèn)超時(shí)為百毫秒級(jí),消息生產(chǎn)者生產(chǎn)指令的時(shí)間間隔通常超過(guò)這個(gè)時(shí)間量級(jí),這便使Wait分支形成了一種不定時(shí)的循環(huán)結(jié)構(gòu),程序會(huì)在消息生產(chǎn)者任務(wù)不繁忙時(shí)進(jìn)入Wait分支。當(dāng)Message Name為“Wait”時(shí),也可進(jìn)入Wait分支。

Wait分支的循環(huán)結(jié)構(gòu)可實(shí)現(xiàn)通訊中的監(jiān)聽功能,為了能用Wait分支的循環(huán)結(jié)構(gòu)監(jiān)聽從機(jī)的反饋指令,所有的從機(jī)反饋指令的Message Name都必須是“Wait”,為了區(qū)分不同的指令,需要使用附加的消息屬性(Message Attributes)變量。

如圖4所示,箭頭所指框內(nèi)的vi即為多機(jī)通訊的代碼,并標(biāo)出了用于區(qū)別不同反饋指令的“Message Attributes”變量,如圖4中的“即時(shí)幫助”欄顯示了“Message Attributes”變量的類型,是一個(gè)簇2的元素包含了兩個(gè)一維的字符串?dāng)?shù)組,不同的字符串可表示不同的反饋指令。

圖3 典型AMC消費(fèi)者循環(huán)處理的消息分支

圖4 Wait分支循環(huán)結(jié)構(gòu)實(shí)現(xiàn)多機(jī)通訊

2.4改進(jìn)的融合循環(huán)結(jié)構(gòu)

如圖4所示,可以看出Wait分支循環(huán)結(jié)構(gòu)的特殊性,許多需要定時(shí)、循環(huán)類型的代碼都要在Wait分支內(nèi)執(zhí)行,越是復(fù)雜的控制流程,Wait分支越是臃腫。同時(shí),為了監(jiān)聽從機(jī)的反饋指令,所有從機(jī)的反饋指令Message Name必須為“Wait”,這樣人為的規(guī)定顯得代碼邏輯牽強(qiáng)。所以有理由將多機(jī)通訊的實(shí)現(xiàn)代碼從Wait分支中剝離出來(lái),便于代碼管理與閱讀。

如圖5所示,為了將處理從機(jī)反饋指令的代碼從Wait分支中分割出來(lái),單獨(dú)添加了一個(gè)消息處理分支(以下簡(jiǎn)稱Response Analyses分支),并設(shè)置該分支為“默認(rèn)”分支。

當(dāng)主機(jī)發(fā)出通訊指令后,如果收到任何反饋指令,此時(shí)從機(jī)的反饋指令Message Name表示了該通訊指令本身的含義(例如Message Name=“SubMachine1_Sate”),不等于“Wait”,也不等于消費(fèi)者隊(duì)列消息處理表中的任何Message Name,該條消息將進(jìn)入設(shè)置為“默認(rèn)”的Response Analyses分支,在Response Analyses分支中,根據(jù)接收到的Message Name可區(qū)分不同的反饋指令并進(jìn)行下一步處理。同時(shí),從機(jī)可以設(shè)置反饋消息的Priority屬性為真,此時(shí)該條反饋消息將插入消息隊(duì)列的頭部?jī)?yōu)先處理。

圖5 Response Analyses分支實(shí)現(xiàn)多機(jī)通訊

3各實(shí)現(xiàn)方法比較

傳統(tǒng)的多機(jī)通訊實(shí)現(xiàn)方法將多機(jī)通訊所用的代碼模塊化做成單獨(dú)的一個(gè)循環(huán)線程,單獨(dú)的循環(huán)線程與其他線程互不影響,循環(huán)周期穩(wěn)定,響應(yīng)速度快,但是單獨(dú)的線程也帶來(lái)了更多的硬件資源消耗[8]。

融合的Wait循環(huán)結(jié)構(gòu)從代碼風(fēng)格上來(lái)說(shuō)更符合LabVIEW主流測(cè)控軟件的一個(gè)生產(chǎn)者一個(gè)消費(fèi)者的編程框架,將多機(jī)通訊的實(shí)現(xiàn)代碼融合到消費(fèi)者循環(huán)中,提高了代碼的聚合性[9],避免了單獨(dú)的通訊線程與消費(fèi)者線程之間的通訊,程序效率更高。但是Wait分支本身的不定時(shí)循環(huán)可能造成通訊延遲,響應(yīng)速度慢等問(wèn)題。

改進(jìn)的融合循環(huán)結(jié)構(gòu)將多機(jī)通訊實(shí)現(xiàn)代碼從不定時(shí)的Wait分支中剝離出來(lái),從機(jī)可通過(guò)設(shè)置Priority屬性將反饋指令優(yōu)先插入消息隊(duì)列頭部?jī)?yōu)先處理,改善了通訊延遲的弊端,同時(shí)減輕了Wait分支中的代碼臃腫程度,同時(shí)提高了代碼的可讀性,保持了代碼的聚合性。如表1所示描述了各實(shí)現(xiàn)方法的優(yōu)缺點(diǎn)。

表1 多機(jī)通訊各實(shí)現(xiàn)方法比較

4結(jié)論

多機(jī)通訊的代碼質(zhì)量是保證大型系統(tǒng)穩(wěn)定運(yùn)行的前提條件,當(dāng)前越來(lái)越多的測(cè)控系統(tǒng)有著大型化、復(fù)雜化的趨勢(shì),多機(jī)通訊的機(jī)制與實(shí)現(xiàn)在系統(tǒng)軟件開發(fā)中也愈發(fā)重要[10]。本文提出的多種多機(jī)通訊實(shí)現(xiàn)方法各有優(yōu)缺點(diǎn),可根據(jù)實(shí)際工程選擇應(yīng)用,各實(shí)現(xiàn)方法均能在數(shù)臺(tái)工控機(jī)聯(lián)合工作的測(cè)控系統(tǒng)中穩(wěn)定運(yùn)行。

參 考 文 獻(xiàn)

[1] 王鷂芝,屈薔,趙陽(yáng).基于LabVIEW的庫(kù)房監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].電子測(cè)量技術(shù),2015(9):78-82.

[2] 王樹東,何明.LabVIEW在數(shù)據(jù)采集系統(tǒng)中的應(yīng)用研究[J].國(guó)外電子測(cè)量技術(shù),2014(6):103-107.

[3] 李婧,張永祥,石炳寅. 基于LabVIEW遠(yuǎn)程校準(zhǔn)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電子測(cè)量與儀器學(xué)報(bào),2012(S1):41-44.

[4] 馮國(guó)彥,石林鎖,岳增平. 基于LabVIEW的一種新型過(guò)程控制方法及實(shí)現(xiàn)[J].電子測(cè)量與儀器學(xué)報(bào),2007(4)68-72.

[5] 元云飛,張麗芳,楊鳳龍. Vb與LabVIEW混合編程的實(shí)現(xiàn)[J].儀器儀表標(biāo)準(zhǔn)化與計(jì)量,2006(4):16-20.

[6] 王樹東,何明. 基于LabVIEW高速采集系統(tǒng)方法的研究[J].電子測(cè)量技術(shù),2014(7):84-88.

[7] 王戈. 程序設(shè)計(jì)語(yǔ)言統(tǒng)一性研究及其在UVPL實(shí)現(xiàn)中的應(yīng)用[D].開封:河南大學(xué),2009.

[8] 劉龍啟;李銀. 基于LabVIEW的以太網(wǎng)數(shù)據(jù)監(jiān)聽與通信[J].國(guó)外電子測(cè)量技術(shù),2012(7):92-96.

[9] 鄭杰. 基于虛擬儀器的繼電器性能測(cè)試系統(tǒng)[D].天津:河北工業(yè)大學(xué),2007.

[10] 韓穎. 集群系統(tǒng)中組通信優(yōu)化方法的研究[D].大連:遼寧師范大學(xué),2010.

收稿日期:2016年1月15日,修回日期:2016年2月21日

作者簡(jiǎn)介:納杰斯,男,碩士,助理工程師,研究方向:水聲信號(hào)處理、Labview程序設(shè)計(jì)。

中圖分類號(hào)TB566

DOI:10.3969/j.issn.1672-9730.2016.07.018

Multi Computer Communication in LabVIEW Based on AMC Frame

NA Jiesi

(Kunming Shipborne Equipment Research and Test Center, Kunming650051)

AbstractIn a large saftware system which many computers working together, the communication between computers within the system (hereinafter referred to as the “multi computer communication”) is essential to ensure the normal operation of the system, the code quality of multi computer communication largely determines the stability and robustness of the system and system running speed. Most multi computer communication of the system is mainly based on general network such as TCP and UDP communication protocol. A variety of in LabVIEW programming is put for ward based on AMC framework of multi computer communication realization method, and the advantages and disadvantages of them are compared.

Key WordsLabVIEW, AMC frame, multi computer communication

四子王旗| 武山县| 宁蒗| 哈巴河县| 青铜峡市| 筠连县| 五峰| 会昌县| 曲靖市| 历史| 丰县| 雷州市| 日土县| 教育| 丹凤县| 丰原市| 吉木乃县| 安国市| 道真| 康马县| 麟游县| 江油市| 溧水县| 斗六市| 南昌市| 吴桥县| 达州市| 潍坊市| 陈巴尔虎旗| 师宗县| 怀来县| 临邑县| 天水市| 浮山县| 东山县| 古丈县| 乌兰县| 阿瓦提县| 天祝| 博罗县| 柘荣县|