眾籌首發(fā)|龍哥手把手教你從零入門LabVIEW機器視覺!
日前,在NIWEEK2018上,NI共同創(chuàng)始人、Fellow、有著LabVIEW之父稱號的Jeff Kodosky做了主題演講,他暢談了未來LabVIEW的軟件架構。
未來,LabVIEW將可通過更高級的抽象,實現(xiàn)在一個程序框架中對上位機和FPGA同時編程,雙方的數(shù)據(jù)交互在統(tǒng)一平臺下執(zhí)行,而不像過去通過隊列形式實現(xiàn)。這會給編程帶來更大的便利性,尤其是面對復雜系統(tǒng),采用更高級的編程語言可加速用戶的開發(fā)周期。
“就好像開車一樣,如果你需要加速,采用自動變速箱直接踩油門的方式比手動換擋便捷很多,這就是通過提高抽象級別讓軟件變得更加簡單高效?!盝eff說道。
NI共同創(chuàng)始人、Fellow、LabVIEW之父Jeff Kodosky
以下是其演講內(nèi)容。
LabVIEW設計初衷只是為科學家和工程師可以快速完成他們的測試測量系統(tǒng),而無需專門的程序員團隊。
正如Dr.T說過的,像電子表格程序可幫助金融分析師編程一樣,我們給工程師和科學家開發(fā)一套屬于他們自己的加速編程工具。
目前來看,LabVIEW已經(jīng)成功地完成了這一任務。
通過LabVIEW,數(shù)以萬計的工程師、科學家、測試人員甚至醫(yī)學研究員等各行業(yè)專家成功完成了他們的自動測試系統(tǒng)。LabVIEW加速了研究開發(fā),減少了測試時間和成本,同時就減少了產(chǎn)品開發(fā)周期。
LabVIEW在持續(xù)改進和創(chuàng)新上有著悠久歷史,每個版本既保持向后兼容性,同時也在不斷引入新功能。
LabVIEW最顯著的進展是引入對實時系統(tǒng)和FPGA支持。用戶無需成為VHDL專家,便可通過構建在FPGA上運行的圖形化程序來滿足性能要求。今天,隨著系統(tǒng)的復雜性不斷增加,需要更多的并行處理,更多的物理I/O,更緊密的時序和同步以及更多的分布式組件。
LabVIEW演進歷史
所以,我們將如何繼續(xù)應對未來的復雜性呢?
一種方法是建立良好的策略和流程,保持測試套件和文檔的全流程管理。現(xiàn)有的軟件工程方式已成功構建了大型測試系統(tǒng)。
另外軟件架構同樣可以通過組織和限制設計遵循幫助認證過的Patterns,例如,LabVIEW中的Project templates和Actor Framework就是這種方法。
當然,工具和開發(fā)環(huán)境的改進也有幫助。例如,通過LabVIEW NXG與DAQmx驅(qū)動程序和DAQ硬件的集成更加緊密,使交互式探索和自動化測量變得更加容易。
此外,專用工具可以通過減少定制開發(fā)的需求來處理整體流程的復雜性。像TestStand這樣的專用工具可以處理應用程序的標準部分,而只開發(fā)您需要的自定義測試步驟。
通過NI提供的專用工具,加速軟件開發(fā)和實施周期
第二種方法則是提高我們用于設計系統(tǒng)的抽象級別。對于目前復雜的系統(tǒng),我們可以利用人工智能等方式提高抽象級別,可以減少人為的復雜性。想象一下你的車,如果您想要加速,使用自動變速箱等更高級別的抽象比標準變速箱更簡單,因為標準變速箱還需要額外的手腳配合進行離合換擋。
兩年前,我們在LabVIEW中引入了Channel Wire,提高了通信并行處理設計的抽象級別。相比低級語言設計起來更容易,更明顯也更易于理解。實際上還有更多的工作可以進一步提高LabVIEW的抽象級別。
采用Channel Wire,上位機與FPGA之間的通信只需要簡單的連線即可實現(xiàn)
從歷史上看,我們的開發(fā)理念都是首先著眼于使難題成為可能,然后再讓它們變得更容易。
NI已經(jīng)創(chuàng)建了跨越處理器和FPGA的測量應用程序,現(xiàn)在是時候考慮提高抽象級別以增加便捷性了。
假設我們可以在LabVIEW中將FPGA表示為一個盒子。內(nèi)部的圖表代表部署到FPGA中,外部的圖表表示在處理器上運行。它們之間的通道表示通信路徑,編譯器使用底層的FIFO和DMA資源來實現(xiàn)連接。
Target軟件體系結構對于簡化cRIO應用和FlexRIO點對點通信應用程序,甚至對于分布式應用程序來說顯示出巨大的前景。
這是我們?yōu)樘岣叱橄蠹墑e而進行的一個例子,如果我們能夠真正實現(xiàn)它,它將成為最先進的技術進步。
如圖所示,未來可在一個軟件系統(tǒng)開發(fā)框架內(nèi),實現(xiàn)上位機與FPGA的共同開發(fā)
讓我來嘗試描述我們一項正在進行的研究工作,它可以通過更加模糊且更高級的處理方式加速我們的設計流程。以一個麥克風測量系統(tǒng)來舉例。
最開始,我們勾勒出設計理念,包括展示要測試的麥克風,提供激勵信號的揚聲器,驅(qū)動揚聲器的波形發(fā)生器,測量響應信號的數(shù)字化儀器以及設置增益與頻率。
這種草圖經(jīng)常需要改進,例如,當我們?yōu)榱双@得更高的精準性,需要測量激勵信號。
如果我們可以在LabVIEW中放置一個抽象設計節(jié)點并編輯它的圖標來表示麥克風,用另一個圖標來表示揚聲器,為聲波添加一些剪貼畫,我們可以快速生成一個草圖。
作為項目的一部分,它需要一些文檔,但同樣提高系統(tǒng)層級的話,我們就可以把它當做實施整個系統(tǒng)的啟動點。
如果我們可以注釋導線以顯示激勵信號,作為連續(xù)步進頻率波形,并且對采集輸出進行注釋以顯示要分析的波形流,這將使抽象算法更為清晰。
我們還可以顯示將采集到的信號流分成時間間隔信息。
我們可以標記這個抽象級別,并通過將生成節(jié)點擴展為波形計算和波形輸出來繼續(xù)改進設計。
并將采集節(jié)點擴展為模擬輸入,將節(jié)點分割成塊。
現(xiàn)在我們意識到,只有當我們有相同的時間參考時,這才會起作用,因此我們引入了一個開始時間,于是開始生成和采集同步。
在這一點上,我們發(fā)現(xiàn)我們忽略了一個重要問題。由于聲傳播,來自麥克風的信號將比刺激信號顯著延遲。于是我們決定通過在波形的開始處生成一個特殊的脈沖并使用它來同步采集的信號來解決這個問題。
當我們語義縮放到更高級別的抽象添加測試項時,我們看到一條線,顯示共同開始時間。
我們認為它足夠重要,可以在此級別展示,因此我們可以實現(xiàn)這一目標。然后,我們添加連接以傳遞同步脈沖,并設置為在波形開始處顯示。這時又會看到需要實施的新連接。
我們繼續(xù)完善波形輸出節(jié)點,并展示如何將同步脈沖發(fā)送到采集點上。
接下來可以改進該節(jié)點以顯示同步脈沖被重新采樣并用于匹配采集的信號的同步。我們繼續(xù)以這種方式工作,一直到一個工作應用程序完成,不斷進行縮放,在一個層面上編輯并在其他層面上進行配合修正,以符合一致性。
最終只通過一個開發(fā)軟件,便可實現(xiàn)測試系統(tǒng)的搭建
這種豐富的設計環(huán)境將使用戶能夠創(chuàng)建易于理解和維護的系統(tǒng)。
在多個抽象層次上工作是解決復雜性的最有效方法,它可以逐步公開和抽象語義細節(jié),以便您可以更好地設計測量系統(tǒng),并根據(jù)需求不斷演變。
正如Alan Kay所說,“預測未來的最好方法就是創(chuàng)造未來?!?/p>
我們構建的環(huán)境變得越來越復雜,這需要更復雜的測試和測量系統(tǒng)與之匹配。需要更復雜的工具來減少人為造成的復雜性并可提供更高級的抽象層設計。通過我們對產(chǎn)品的不斷改進,將進一步實現(xiàn)這一愿景。
我們希望提供不斷創(chuàng)新的工具,構建未來所需的系統(tǒng),NI的愿景一直都是如此。
-
FPGA
+關注
關注
1629文章
21744瀏覽量
603664 -
LabVIEW
+關注
關注
1971文章
3654瀏覽量
323892
發(fā)布評論請先 登錄
相關推薦
評論