技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > LabVIEW數(shù)據(jù)流控制方法研究

LabVIEW數(shù)據(jù)流控制方法研究

時(shí)間:2008-11-19 10:47:00來(lái)源:ronggang

導(dǎo)語(yǔ):?本文剖析了LabVIEW數(shù)據(jù)流語(yǔ)言的特點(diǎn),提供了其若干有效控制方法,指出LabVIEW本身即可解決數(shù)據(jù)流控制上的變量沖突、響應(yīng)時(shí)序控制、初始狀態(tài)自適應(yīng)調(diào)整等問題并保證其通用性

摘 要:本文剖析了LabVIEW數(shù)據(jù)流語(yǔ)言的特點(diǎn),提供了其若干有效控制方法,指出LabVIEW本身即可解決數(shù)據(jù)流控制上的變量沖突、響應(yīng)時(shí)序控制、初始狀態(tài)自適應(yīng)調(diào)整等問題并保證其通用性,而不必求助于其它代碼語(yǔ)言(如C語(yǔ)言),這樣,既減輕了程序的復(fù)雜性,提高了效率,還豐富了LabVIEW的應(yīng)用。文中以單選功能按鈕設(shè)計(jì)實(shí)例詳述了變量沖突、響應(yīng)時(shí)序控制、初始狀態(tài)自適應(yīng)調(diào)整等問題的具體解決方案,在某型裝備測(cè)試系統(tǒng)的實(shí)際運(yùn)行中驗(yàn)證了該方法可行有效。

關(guān)鍵詞:數(shù)據(jù)流;LabVIEW;變量沖突;時(shí)序控制

Abstract: The character of LabVIEW dataflow programming is analyzed and some methods on the control of dataflow in LabVIEW are given. Problems such as variable conflict, time responding sequence control and initial status self-adjustment are able to be settled out without using other codes (e.g. C language),so that the programming complexity is less and the efficiency is higher and the application of LabVIEW is more extensive. The example of the design of single-activated buttons is detailed showing how to solute the problems above concretely and the experiment result running on some measurement systems proves the solution is feasible and reliable.

Keywords: dataflow;LabVIEW;variable conflict;time responding sequence control;initial status self-adjustment

0 引言

LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是虛擬儀器概念的首創(chuàng)者,是世界上最優(yōu)秀的虛擬儀器軟件開發(fā)平臺(tái)[1][2]。它使用圖形化數(shù)據(jù)流編程語(yǔ)言,這種新興的編程方式給編程人員帶來(lái)了新的困難,主要體現(xiàn)于對(duì)數(shù)據(jù)流的控制上。LabVIEW編程人員遇到困難往往求助于C語(yǔ)言[3]。隨著虛擬儀器的廣泛應(yīng)用,為提高編程效率,真正理解并靈活掌握LabVIEW數(shù)據(jù)流語(yǔ)言是必要的。

1 數(shù)據(jù)流編程的特點(diǎn)

數(shù)據(jù)流語(yǔ)言的每個(gè)節(jié)點(diǎn)在執(zhí)行之前需要提供其所有輸入端口的有效數(shù)據(jù),LabVIEW允許用戶在一個(gè)圖表上擁有任意數(shù)量的不同節(jié)點(diǎn),所有的節(jié)點(diǎn)可以并行執(zhí)行。LabVIEW環(huán)境還支持多個(gè)VI并行執(zhí)行,而不管操作系統(tǒng)或者計(jì)算機(jī)的功能如何。這些功能使得用戶無(wú)須做任何特殊編程工作就可以非常自由地同步執(zhí)行各種不同的任務(wù)。

LabVIEW數(shù)據(jù)流編程克服了文本語(yǔ)言編程內(nèi)存管理中的許多困難。在LabVIEW中,不必給變量分配內(nèi)存,也不必為變量賦值或者從變量取值,只需創(chuàng)建一個(gè)帶有描述數(shù)據(jù)轉(zhuǎn)換關(guān)系的內(nèi)部聯(lián)系的框圖程序。產(chǎn)生數(shù)據(jù)的函數(shù)可以精心地為數(shù)據(jù)分配內(nèi)存,當(dāng)數(shù)據(jù)不再使用時(shí),相應(yīng)的內(nèi)存被釋放。當(dāng)向數(shù)組或字符串添加新數(shù)據(jù)時(shí),管理新數(shù)據(jù)的足夠內(nèi)存資源會(huì)自動(dòng)進(jìn)行分配,這種自動(dòng)的內(nèi)存分配操作是LabVIEW的主要優(yōu)勢(shì)之一。

2 數(shù)據(jù)流編程的難點(diǎn)及若干解決方案

LabVIEW程序的內(nèi)存管理是自動(dòng)進(jìn)行的,中間狀態(tài)的捕捉和控制十分困難。例如,實(shí)時(shí)顯示現(xiàn)場(chǎng)采集數(shù)據(jù)串的最大值問題、通過(guò)按鈕手動(dòng)控制現(xiàn)場(chǎng)采集數(shù)據(jù)串某一時(shí)刻數(shù)據(jù)作為比較對(duì)象的問題以及單選功能按鈕的實(shí)現(xiàn)問題等等,似簡(jiǎn)實(shí)難。經(jīng)編程實(shí)踐,總結(jié)方案如下:

(1)結(jié)構(gòu)控制

循環(huán)結(jié)構(gòu),如For循環(huán)和while循環(huán)結(jié)構(gòu);順序(Sequence)結(jié)構(gòu),適當(dāng)使用Sequence結(jié)構(gòu)能提高程序可讀性,讓數(shù)據(jù)清晰流動(dòng);分支結(jié)構(gòu)(case Structure);事件結(jié)構(gòu)(Event Structure),允許用戶在前面板的直接干預(yù)或程序不同部分之間的交流影響程序的執(zhí)行;定時(shí)循環(huán)(Timed Loop)結(jié)構(gòu),可創(chuàng)建多采樣率(multi-rate)的、對(duì)時(shí)間要求嚴(yán)格(time-critical)的數(shù)據(jù)采集應(yīng)用程序,并定義不同優(yōu)先級(jí)的循環(huán)。

(2)移位寄存器(Shift Register)控制

移位寄存器與While或For循環(huán)結(jié)合能夠保存各種狀態(tài)信息,未初始化的移位寄存器則保留著以前的內(nèi)容。

(3)變量控制

變量在這里指局部變量和全局變量。局部變量用來(lái)在一個(gè)VI程序內(nèi)部傳遞數(shù)據(jù),它不僅可以解決連線的困難,而且可以對(duì)同一個(gè)控件多次寫入和讀出數(shù)據(jù)。全局變量則可用于在不同程序之間傳遞數(shù)據(jù),全局變量也是用一個(gè)控件的形式存放數(shù)據(jù),但是這個(gè)控件獨(dú)立于調(diào)用它的VI,以一個(gè)特殊的VI作為自己的容器。

(4)通告(Notifier)和隊(duì)列(Queue)控制

通告和隊(duì)列的方式有時(shí)可代替變量方式來(lái)傳遞數(shù)據(jù)。使用通告方式傳遞數(shù)據(jù)時(shí),只有寫入數(shù)據(jù)并告知后才能讀取數(shù)據(jù)。通告以廣播的方式發(fā)布,收到廣播的用戶都可以去讀數(shù)據(jù)。隊(duì)列方式傳遞數(shù)據(jù)是最先去讀數(shù)據(jù)的用戶讀完數(shù)據(jù)就將它擦掉,只有一個(gè)接收數(shù)據(jù)的用戶。   單一使用上述某種方案往往力不從心,綜合靈活運(yùn)用才能在編程中產(chǎn)生較好的效果。

3 實(shí)例分析

單選功能按鈕的設(shè)計(jì)是許多綜合測(cè)試系統(tǒng)設(shè)計(jì)中的一部分。它要求完成的功能是:

⑴ 某一個(gè)按鈕按下去時(shí),其余按鈕全部處于無(wú)效的工作狀態(tài)。

⑵ 按下去的按鈕要求能無(wú)誤地啟動(dòng)系統(tǒng)的該項(xiàng)功能。

設(shè)計(jì)中需要解決以下問題:

⑴ 變量沖突。程序包含按鈕間的相互控制,其控件及局部變量間的沖突問題十分突出;

⑵ 響應(yīng)時(shí)序控制。按鈕操作和讀按鈕狀態(tài)的先后次序需進(jìn)行適應(yīng)控制,否則容易產(chǎn)生空檔(按鈕按下卻不啟動(dòng)系統(tǒng)的功能)和幾個(gè)按鈕同時(shí)被按下等異常情況,導(dǎo)致程序紊亂;

⑶ 初始狀態(tài)自適應(yīng)調(diào)整問題。

用LabVIEW設(shè)計(jì)流程圖及流程圖示說(shuō)明如下所示:

BUTTON ARRAY :按鈕合在一起的數(shù)組;

SEARCH 1D ARRAY:比較兩數(shù)組的不同,返回不同元素的序號(hào);

INDEX ARRAY(INDEX,ELEM):數(shù)組ARRAY, INDEX是序號(hào),ELEM是元素。此函數(shù)是找出數(shù)組ARRAY中序號(hào)為INDEX的元素;

NULL:空操作;

DIFFERENCES:差異信息;

D.B.:Digital buttons數(shù)字化按鈕,即用編號(hào)表示不同按鈕。

總流程為將框圖1所示流程循環(huán)兩次!再進(jìn)行框圖2所示流程,具體步驟詳述如下:

針對(duì)問題⑴,程序遵循“對(duì)操作的按鈕不操作”的原則。如框圖1,用SEARCH 1D ARRAY分辨出被操作的按鈕,對(duì)其它按鈕置“假”。這樣,按鈕間就可不發(fā)生沖突。

框圖1

框圖2

針對(duì)問題⑵,則必須充分考慮程序的數(shù)據(jù)“流”運(yùn)行過(guò)程。分述如下:

① 每次讀BUTTON布爾值時(shí),都要考慮外界面是否有對(duì)按鈕的操作輸入,這在框圖1、2中都體現(xiàn)得很明顯;

② 框圖1要循環(huán)2次很關(guān)鍵??紤]這樣一種情況:外界面對(duì)按鈕的操作在BUTTON ARRAY(1)與BUTTON ARRAY(2)之間,則在循環(huán)的第一次對(duì)按鈕的操作沒有起作用,但它以反饋機(jī)制把按鈕信息傳給了始端,由于程序運(yùn)行的速度遠(yuǎn)在人工界面上的手動(dòng)操作速度之上,所以循環(huán)的第二次無(wú)外界輸入,這樣對(duì)按鈕的操作在循環(huán)二次后便響應(yīng)了,沒有掛空。同理,當(dāng)外界面對(duì)按鈕的操作介于BUTTON ARRAY(2)與框圖2的read BUTTONs之間時(shí),外界面對(duì)按鈕的操作會(huì)在下一循環(huán)(對(duì)實(shí)際測(cè)試系統(tǒng)肯定是大范圍循環(huán)操作的)產(chǎn)生作用,由于程序運(yùn)行得很快,操作者看到的是“實(shí)時(shí)”的操作。如果在read BUTTONs之后,那就回到框圖1的始端了。因此,任何時(shí)候按下按鈕,程序皆運(yùn)行正常。

針對(duì)問題⑶,未初始化的移位寄存器能保留原有的狀態(tài)。在程序運(yùn)行前,若出現(xiàn)按鈕異?,F(xiàn)象,由于程序默認(rèn)一個(gè)按鈕按下,異常按鈕會(huì)立即得以糾正。

對(duì)于數(shù)字化按鈕(見流程圖框圖2)的實(shí)現(xiàn),將按鈕狀態(tài)轉(zhuǎn)化為0、1,用一個(gè)連加運(yùn)算根據(jù)其和的大小便可知道是否同時(shí)有多按鈕或單按鈕或無(wú)按鈕按下,從而將按鈕信號(hào)引出。

部分LabVIEW程序示例

圖2 部分LabVIEW程序示例

4 結(jié)束語(yǔ)

我們之所以廣泛調(diào)用C及其他文本語(yǔ)言來(lái)解決LabVIEW難題,正是我們對(duì)這種數(shù)據(jù)流控制的編程方式認(rèn)識(shí)不深的緣故。本文提供若干LabVIEW數(shù)據(jù)流控制方法,強(qiáng)調(diào)靈活運(yùn)用便能解決實(shí)際編程中遇到的難題。單選功能按鈕的設(shè)計(jì)是個(gè)很典型的數(shù)據(jù)流控制實(shí)例,文中給出的用LabVIEW本身解決變量沖突、響應(yīng)時(shí)序控制、初始狀態(tài)自適應(yīng)調(diào)整等問題的方法,沒有使用事件驅(qū)動(dòng)結(jié)構(gòu),避免了在測(cè)試系統(tǒng)中并行使用事件驅(qū)動(dòng)結(jié)構(gòu)產(chǎn)生的沖突,具有程序和版本的通用性,在實(shí)際操作運(yùn)行中證明確實(shí)可行有效。

本文作者創(chuàng)新點(diǎn): 本文剖析了LabVIEW數(shù)據(jù)流語(yǔ)言的特點(diǎn),提供了其若干有效控制方法,文中給出的用LabVIEW本身解決變量沖突、響應(yīng)時(shí)序控制、初始狀態(tài)自適應(yīng)調(diào)整等問題的方法,沒有使用事件驅(qū)動(dòng)結(jié)構(gòu),避免了在測(cè)試系統(tǒng)中并行使用事件驅(qū)動(dòng)結(jié)構(gòu)產(chǎn)生的沖突,具有程序和版本的通用性,而不必求助于其它代碼語(yǔ)言(如C語(yǔ)言),這樣,既減輕了程序的復(fù)雜性,提高了效率,還豐富了LabVIEW的應(yīng)用。

參考文獻(xiàn)

[1] 楊樂平,李海濤,趙勇等.LabVIEW高級(jí)程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2003

[2] Gary W.Johnson,Richard Jennings. LabVIEW圖形編程[M].北京:北京大學(xué)出版社,2002

[3] 周廣清,陳光杰. LabVIEW環(huán)境下單選功能鍵的設(shè)計(jì)[J].醫(yī)療衛(wèi)生裝備,2003(5):9-11

[4] 雷振山. LabVIEW7 EXPRESS 實(shí)用技術(shù)教程[M].中國(guó)鐵道出版社,2004

[5] Mike Trimborn.跨越鴻溝,游刃有余— LabVIEW 7 Express 兼具易用性和強(qiáng)大的編程功能[J].今日電子,2003(8):58

[6] 馮勁梅,連之偉.對(duì)LabVIEW使用中若干問題的探討[J].中國(guó)制造業(yè)信息化,2003(9):121-124

[7] 李揚(yáng),鄭瑩娜,朱錚濤.圖形化編程語(yǔ)言LabVIEW環(huán)境及其開放性[J].計(jì)算機(jī)工程,1999(4):63-65

[8] 蔡繼軍,張彥斌,秘曉元,,姚世鋒.基于事件驅(qū)動(dòng)編程的虛擬儀器人機(jī)界面設(shè)計(jì).微計(jì)算機(jī)信息,2005年第31期:119-121

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:基于IEEE 1451.2的智能傳感...

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

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

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

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

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

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

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