《電子技術(shù)應用》
您所在的位置:首頁 > 測試測量 > 業(yè)界動態(tài) > LabVIEW 8.5助力大型應用程序的開發(fā)

LabVIEW 8.5助力大型應用程序的開發(fā)

2008-12-29
作者:周 斌

??? 摘 要: 介紹了LabVIEW 8.5有助于大型程序開發(fā)的新特性,包括狀態(tài)圖" title="狀態(tài)圖">狀態(tài)圖模塊、對多核技術(shù)" title="多核技術(shù)">多核技術(shù)的支持、功能增強的項目管理等。
??? 關(guān)鍵詞: LabVIEW 8.5;狀態(tài)圖模塊;多核;項目管理

?

??? 從1986年誕生至今,NI LabVIEW作為測試測量和控制行業(yè)的標準軟件平臺,一直致力于簡化自動化測試和儀器控制的實現(xiàn)過程,使工程師和科學家們可以專注自己專業(yè)的研究領(lǐng)域,而不是將大量的時間和成本放在系統(tǒng)底層通訊和算法的實現(xiàn)上,從而實現(xiàn)效率的最大化。另一方面,隨著測控系統(tǒng)" title="測控系統(tǒng)">測控系統(tǒng)的日趨大型化和復雜化,很多工程師們開始使用LabVIEW來開發(fā)大型的應用程序" title="應用程序">應用程序。因此,簡化大型或復雜的測控系統(tǒng)的搭建和開發(fā)過程,成為了LabVIEW致力實現(xiàn)的又一個目標。
??? 2年前,LabVIEW 8推出的項目(Project)工具使工程師們能夠從整體項目的角度進行開發(fā),為想要開發(fā)大型應用程序的LabVIEW用戶們提供了強有力的支持:在一個項目中,開發(fā)人員可以將多個程序文件有機地整合在一起,并附帶相關(guān)的文檔及配置文件。此外,由于LabVIEW和硬件的良好的連接性,項目中還可對多個硬件平臺進行集中管理,實現(xiàn)分布式智能控制??梢哉f,當時的LabVIEW已經(jīng)具備了開發(fā)大型應用程序的條件。隨后的LabVIEW 8.2開始支持面向?qū)ο蟮木幊谭绞?。而去?月推出的LabVIEW 8.5更是提供了多個嶄新工具來協(xié)助工程師輕松而高效地實現(xiàn)大型系統(tǒng)的構(gòu)架和開發(fā)。
  因此,本文將深入討論如何使用這些新工具在LabVIEW平臺下實現(xiàn)更高效和快捷的大型程序的開發(fā)。
???????????????????????? 狀態(tài)圖(Statechart)模塊
??? 在開發(fā)大型程序之前,對系統(tǒng)進行整體架構(gòu)設(shè)計是必不可少的過程,而將系統(tǒng)的架構(gòu)轉(zhuǎn)換為實際可運行的代碼的過程看似簡單,其實會花費開發(fā)者不少的精力和時間。此外,在開發(fā)后期,開發(fā)者們還會面臨需要根據(jù)實際情況對程序的結(jié)構(gòu)進行頻繁修改的局面。因此,一個好的系統(tǒng)架構(gòu)" title="系統(tǒng)架構(gòu)">系統(tǒng)架構(gòu)方式或工具可以起到事半功倍的效果。
?? ?LabVIEW 8.5新引入了一個功能強大的全新工具——NI LabVIEW狀態(tài)圖模塊。有了這個基于LabVIEW平臺的新功能,工程師們就能更快捷地設(shè)計出高層抽象的系統(tǒng)架構(gòu),并可以將狀態(tài)圖自動生成LabVIEW代碼,從而直接運行。
??? 例如,要實現(xiàn)一個如圖1所示的簡單的數(shù)據(jù)采集系統(tǒng),需要能夠根據(jù)用戶按下的不同按鈕來進行相應的操作:在配置狀態(tài)下按Acquisition鍵開始采集信號,在采集時按Pause鍵則暫停,在任何時候按Stop鍵停止整個采集系統(tǒng)。
?? ?這樣的要求雖然不算復雜,但是如果純粹進行編程,還是需要花費不少的時間;而相比之下,使用狀態(tài)圖就能夠在很短的時間內(nèi)實現(xiàn)。圖1的右邊部分就是播放器的狀態(tài)圖,通過簡單的幾個狀態(tài)和狀態(tài)間切換的設(shè)置,就能夠既直觀而又輕松地予以實現(xiàn)。

?

?

圖1 使用LabVIEW狀態(tài)圖實現(xiàn)數(shù)據(jù)采集


??? 測控系統(tǒng)日益復雜,有時就需要在傳統(tǒng)的有限狀態(tài)機基礎(chǔ)上再添加層次性、并發(fā)性以及狀態(tài)間轉(zhuǎn)換的全面行為定義。在1980年,以色列魏茲曼科學研究所的David Harel在設(shè)計一個復雜的航空系統(tǒng)時發(fā)明了狀態(tài)圖。在90年代,狀態(tài)圖被引入UML規(guī)范,從而被廣泛地用于嵌入式系統(tǒng)的建模。
??? 狀態(tài)圖的層次性允許編程人員可以定義所謂的“超狀態(tài)”,即將一個子狀態(tài)嵌套在另一個狀態(tài)中。超狀態(tài)同時封裝了出、入動作和過渡。舉例來說,從超狀態(tài)的單個過渡,代表了從每個超狀態(tài)所包含的子狀態(tài)的過渡。這一特點極大地簡化了框圖的設(shè)計和開發(fā)。在圖2中,標有“Error”的過渡轉(zhuǎn)換,可以在系統(tǒng)處于液罐控制的四個狀態(tài)中的任一狀態(tài)時發(fā)生。

?

?

圖2 LabVIEW狀態(tài)圖模塊支持層次性、并發(fā)性和全面動作


??? 并發(fā)性也是狀態(tài)圖所具有的特點之一,它是指兩個甚至多個狀態(tài)都能在同一時刻被激活,即處于“與狀態(tài)”。當描述同一框圖所表示的系統(tǒng)中的獨立函數(shù)時,與狀態(tài)是非常有用的。圖2中描述的系統(tǒng)可以同時處于灌注(Filling)和采集(Acquire)的狀態(tài)。由于LabVIEW軟件固有的并行處理特點,狀態(tài)圖的并發(fā)性特點在LabVIEW 環(huán)境下非常適合。
?? ?除此之外,狀態(tài)圖第三個重要的特點就是可以用動作和轉(zhuǎn)換來定義全面行為。每個狀態(tài)除定義了編程人員為響應特殊事件所配置的動作外,還定義了進入和退出動作。用戶可以為每個已定義的行為編寫LabVIEW 數(shù)據(jù)流代碼。而過渡轉(zhuǎn)換也是以同樣的方式工作,在已配置的觸發(fā)信號產(chǎn)生時或者LabVIEW 保護碼值為“真”時被執(zhí)行。
?? ?開發(fā)LabVIEW狀態(tài)圖非常簡單,只需要4個步驟,如圖3所示。首先在LabVIEW 狀態(tài)圖模塊中創(chuàng)建系統(tǒng)相應的狀態(tài)和狀態(tài)間的轉(zhuǎn)移;然后再定義狀態(tài)中的動作,包括何時進入、退出、警戒等,也可以自己開發(fā)LabVIEW代碼來設(shè)計自定義觸發(fā)來確定什么時候發(fā)生狀態(tài)轉(zhuǎn)移;接下來只需要按下“生成”鍵即可自動生成包含狀態(tài)圖邏輯的子VI;最后將這些子VI嵌入到LabVIEW程序中就完成了整個開發(fā)的過程。

?

?

????????? 設(shè)計狀態(tài)的轉(zhuǎn)換???????????? 設(shè)計轉(zhuǎn)換動作?????????生成狀態(tài)圖子VI????????? 嵌入到LabVIEW程序框圖

?

圖3 四步驟輕松開發(fā)LabVIEW狀態(tài)圖


??? 當狀態(tài)圖設(shè)計完成后,LabVIEW可以在一系列的硬件平臺中部署狀態(tài)圖代碼,包括臺式機、人機界面(HMI)、可編程自動化控制器(PAC)如NI CompactRIO及PXI、NI硬件中的FPGA以及任何32位單片機。這個能部署到多種硬件的特性使得LabVIEW狀態(tài)圖模塊成為設(shè)計和部署嵌入式系統(tǒng)的最佳工具。
??? 目前的測控系統(tǒng)規(guī)模和復雜程度已遠超過幾年前,系統(tǒng)架構(gòu)代碼量以及后期的調(diào)試成本都呈指數(shù)增長,這給予了開發(fā)人員持續(xù)的壓力。LabVIEW 8.5這一全新的模塊則為架構(gòu)復雜的大型程序提供了有利的工具,協(xié)助工程師輕松應對挑戰(zhàn)。
????????????????????????????? 對多核技術(shù)的支持
??? 可以想象,應用程序規(guī)模的日益增大導致開發(fā)人員對于CPU處理器的運算速度的要求也越來越高。由于能量消耗和熱量發(fā)散的限制,處理器速度的發(fā)展近年來遇到了瓶頸,通過增加時鐘速度來提高性能已經(jīng)不再可行,芯片制造商開始轉(zhuǎn)向全新的芯片結(jié)構(gòu),即多核技術(shù)。
??? 以往,當電腦升級到一個更快速的CPU后,也就意味著每一條獨立指令的運行速度都會加快。如今使用多核之后,如果想繼續(xù)提高性能,開發(fā)者就需要設(shè)計應用程序,為每個核分配工作——本質(zhì)上就是開發(fā)一個并行應用程序來取代順序應用程序。
??? 然而,這對于許多習慣于開發(fā)單線程應用的開發(fā)者來說是一個極大的挑戰(zhàn)。如果工程師使用的是串行的編程語言,如C語言,那么在進行多線程應用軟件的編寫時,需要專門的語義創(chuàng)建和管理線程,并且在線程安全方式下進行數(shù)據(jù)的傳送。
??? 相比之下,NI LabVIEW就非常適合于創(chuàng)建并行的多線程應用。首先,相比文本編程語言的自上而下的順序結(jié)構(gòu),由于LabVIEW是基于數(shù)據(jù)流的編程方式,其本身就是一種并行的編程結(jié)構(gòu);早在LabVIEW? 5.0時LabVIEW就支持多線程:在程序編寫完畢后,LabVIEW編譯器可以自動識別線程并創(chuàng)建線程到不同的任務(wù)和循環(huán)上,再由操作系統(tǒng)分配到不同的核上運行。
??? LabVIEW的未來版本還將針對多核技術(shù)提供更多特性:如可以將嵌入式實時應用自動地劃分為多個線程,并將它們映射到多個處理核之中,這也被稱為對稱多線程處理技術(shù),從而使設(shè)計人員可以自動將均衡的任務(wù)量分配到各個核上;同時,工程師也可以根據(jù)自身需求手動設(shè)置線程運行在特定的核上,例如將那些對時間確定性要求苛刻的采集與控制任務(wù)放在單獨的核上運行,而將對確定性要求不高的界面響應、數(shù)據(jù)錄入等任務(wù)放在另外一個核上運行。
?? ?綜上所述,使用多核技術(shù)已經(jīng)成為工程師開發(fā)大型復雜的測控系統(tǒng)的必要條件,而LabVIEW 8.5則可以讓用戶更方便和更直接地享受到多核給系統(tǒng)性能帶來的直線提升。
????????????????????????????? 功能增強的項目管理
??? 系統(tǒng)架構(gòu)和程序設(shè)計是開發(fā)大型應用程序的核心,但是開發(fā)人員也需要一個載體能夠全面管理項目中的所有資源。前文已經(jīng)提到,LabVIEW 8中首次引入的LabVIEW項目極大地幫助了編程人員進行大型應用程序的開發(fā),但是經(jīng)驗豐富的LabVIEW程序員依然渴望更多更強的新功能以解決他們在開發(fā)過程中所遇到的挑戰(zhàn)。
?? ?以前,工程師在開發(fā)過程中會遇到下面兩個挑戰(zhàn):首先,隨著應用程序大小的增長,使得查看和管理硬盤中所有與開發(fā)工程相關(guān)的文件變得愈加困難;其次,在多個程序版本存放在同一個本地硬盤時,在程序員未知的情況下,有時候VI會自動鏈接到不需要的或者舊版本的子VI中,這種情況被稱為交叉連接(cross-linking)。
??? 因此,為了響應開發(fā)者的要求,在LabVIEW8.5中針對項目管理增添了兩大新功能,從而解決了這兩大挑戰(zhàn)。
????????????????????? 同步LabVIEW項目文件夾至本地硬盤
?? ?對于那些熟悉LabVIEW項目的開發(fā)人員而言,當使用LabVIEW 8.5中的項目瀏覽器時會馬上發(fā)現(xiàn)一個明顯的變化:新增加了選項卡視圖(圖4)。開發(fā)者們通過項目選項卡,既可以使用以前版本的LabVIEW已經(jīng)存在和熟悉的LabVIEW項目組件,也可以在新增的文件選項卡中交互式地查看和改變LabVIEW項目中所有文件的位置。

?

?

圖4 全新的選項卡視圖允許用戶自由選擇不同的瀏覽方式


??? 開發(fā)者從LabVIEW 8引入項目管理之后就一直希望能夠定義LabVIEW項目文件夾與硬盤文件夾之間更為明確的關(guān)系。因此,LabVIEW 8.5開始允許開發(fā)者同步LabVIEW項目文件夾至硬盤上的目錄,從而簡化了對同一應用程序的所有文件的管理。這里所說的“同步”是指這些新的LabVIEW項目文件夾將會基于它們相應的物理目錄中的內(nèi)容而不斷地更新。
??? 這些自動同步的LabVIEW項目文件夾可以即時地反映開發(fā)者在硬盤中所進行的任何操作(包括添加、移動或刪除文件等)。但是,在使用自動同步的項目文件夾后,由于文件夾中的內(nèi)容總是精確地匹配其物理目錄的結(jié)構(gòu),從而導致開發(fā)者不能脫離硬盤上的文件層次結(jié)構(gòu)來對文件實現(xiàn)自定義的虛擬的組織活動。但是,在LabVIEW 8.5中,這樣的情況是不會發(fā)生的,因為用戶可以在同一個項目中同時使用自動同步的文件夾和虛擬文件夾,從而結(jié)合兩種方式以實現(xiàn)最大化的靈活性。
???????????????????????????????? 去除交叉連接現(xiàn)象
??? 為了更清晰地說明交叉連接是什么,先舉一個簡單的例子:如果開發(fā)者移動了硬盤上某個VI的路徑,那么在下次需要它時LabVIEW就必須搜索并重新連接倒那個丟失的VI。在某種情況下,LabVIEW可能會錯誤地連接到同一個代碼的早期版本或另一個分支,或者是具有同樣名稱的不同VI,從而導致不可預料的行為發(fā)生,這種情況是很難進行定位和調(diào)試的。LabVIEW 8.5提供了新的工具以幫助開發(fā)者防止交叉連接的發(fā)生。
??? 第一個工具就是新增的文件選項卡,利用文件選項卡,開發(fā)者可以直觀地確認存在于廢棄目錄中不必要的VI并且其他文件不會錯誤地包含在某個特定的LabVIEW項目中。其次,LabVIEW項目還提供了其他的警告和調(diào)試工具來幫助開發(fā)者了解和防止交叉連接。當LabVIEW檢測到一個可能的交叉連接情況時,它將會通過在LabVIEW項目中的VI名稱后面顯示“沖突”(Conflict)來警告開發(fā)人員(圖5)。這一信息意味著LabVIEW已檢測到在同一個LabVIEW項目中多于一個具有相同名稱的VI被調(diào)用。此時開發(fā)者就可以通過工具欄中的一個新對話框來解決這個沖突,它可以幫助開發(fā)者采取一種自上而下的方式來引用正確的文件。

?

?

圖5 LabVIEW 8.5去除交叉連接現(xiàn)象


?? ?LabVIEW一直積極響應使用者的反饋來實現(xiàn)持續(xù)的創(chuàng)新和發(fā)展,從而給予工程師和科學家們更完美的編程體驗。這次新增的項目管理功能則更進一步地使開發(fā)人員管理和組織項目資源變得更加簡便和安全。
??? 縱觀目前測試測控領(lǐng)域的發(fā)展趨勢,產(chǎn)品的功能集成化、協(xié)議的多樣化致使系統(tǒng)開發(fā)人員已經(jīng)無法通過簡單的、單線程的程序來滿足要求,大型的應用系統(tǒng)開發(fā)成為了必然的發(fā)展趨勢。作為圖形化的編程開發(fā)平臺,全新的NI LabVIEW 8.5所提供的多種新特性幫助了工程師更有效地來進行系統(tǒng)的架構(gòu)、開發(fā)以及管理,大大減少了開發(fā)時間和成本,成為測量測試和自動化開發(fā)平臺的不二之選。

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。