[心得抒發] AI時代,LabVIEW是否值得學習?

先說結論,要,在AI時代,LabVIEW值得學習!

【對初學者來說】這個時代,應該要即早習慣廣學,LabVIEW學習成本低(得益於NI推出LabVIEW社群版,個人學習用途可免費下載使用),而且學習門檻低(易學難精),所以強烈建議掌握幾個學習重點即可。至於是否要深入,就各自判斷了!

【對進階工程師來說】學習Python進階語法時,進階觀念難免有些抽象,但LabVIEW其實也具有這些進階程式觀念,而且幫你用圖形化呈現出來了,此時可藉由LabVIEW的圖像式介面幫助學習,一次把Python及LabVIEW的進階觀念都學起來,未來應用將更具彈性。

第一次聽到LabVIEW

是2000年我大三,在中山大學物理系,周雄教授的課堂上聽到的。身為物理系的學生,為了能從儀器擷取數據,當時使用LabVIEW是最簡單的做法(現在也是)。2000年沒有Python這麼簡單的程式語言,就連互動式網頁也只有Classic ASP(不是現在的ASP.NET唷)與PHP兩種選擇。物理系的學生大一被Fortran搞得七暈八素,對於需要寫程式碼的語言相當懼怕。而LabVIEW是一種圖像式的程式語言,只要會拉流程圖就可以把程式撰寫起來,所以LabVIEW對於不會寫程式的物理系學生來說有莫名的親和力。

LabVIEW的特色:超容易學習

不是資工領域的理工科學生普遍對文字型的程式語言有股懼怕感,而LabVIEW由於是圖像式的程式語言,所以學習起來特別親切而且容易上手。就像是對比操作Linux Server與WIndows一樣,操作Linux Server需要使用終端機軟體透過SSH協定下指令,Linux Server不會有視窗介面,也沒有滑鼠,只能用鍵盤敲指令;反觀Windows視窗作業系統,由於有豐富的視窗介面,即使第一次使用Windows作業系統,也可以用滑鼠點按視窗,查找輔助說明,一邊操作,一邊自我學習。

LabVIEW就是類似Windows作業系統這樣圖形化介面的程式語言,即使不會LabVIEW,只要掌握幾個大原則,就可以一邊操作LabVIEW,一邊學習。所以上手門檻極低

此外,對於初學習程式語言的使用者來說,那些常見的名稱如變數、陣列、迴圈…等名詞就像是外星語一樣難以理解。如果學習text-based的程式語言,需要自行體會理解這些抽象的概念(如:迴圈、陣列…),每個人的理解程度不同,增加了初學者學習程式語言的門檻。

反觀LabVIEW,由於是一個圖像式的程式語言,對於初學者來說,縱使是迴圈,LabVIEW也提供了圖像化的呈現,具象化「迴圈」的概念。另外搭被LabVIEW的「小燈泡 (Hightlight Execution)」,可以把程式執行的過程用動畫的方式來呈現,畫面上會出現一個小光點(即為資料流),隨著程式運行過程跑來跑去,相當生動。對於LabVIEW的程式初學者來說,用圖形化的程式來建立運算思維是再方便不過了的

image

使用Hightlight Execution功能,讓LabVIEW以動畫形式展現程式執行的過程,對初學來建立運算思維相當管用

LabVIEW可以做甚麼?

LabVIEW最主要是用來跟儀器通訊,擷取儀器的數據,或是發送指令給儀器,命令儀器作動(如擷取資料、輸出電壓等等~)。LabVIEW的開發商,National Instruments(國家儀器公司 NASDAQ: NATI)詮釋了VISA架構,VISA是Virtual Instrument Software Architecture的縮寫,中文翻譯為「虛擬儀器軟體架構」,其精神為:

  1. 傳統儀器硬體的功能由製造商決定;虛擬儀器的功能則由使用者透過客製化的軟體來決定。如:基本的示波器僅能擷取電壓訊號,顯示波形;若使用DAQ再透過LabVIEW定義功能,則可以定義為:示波器、頻譜分析儀、或直流電壓計,功能由使用者根據自身需求來決定。
  2. 由軟體定義儀器功能,不受儀器廠商限制 (前提是儀器廠商有開放儀器的控制指令)
  3. 虛擬儀器是一個概念,可以由多台儀器硬體組成,每個儀器硬體各自提供某些功能。就像交響樂,多種樂器在不同時間點發出正確的聲音,組合成一首交響樂。

通常LabVIEW的用途為:

  1. 撰寫一個Windows人機介面視窗介面 (用LabVIEW來拖拉很簡單,就像是在寫PowerPoint一樣)
  2. 跟硬體儀器通訊,用來擷取資料(如:電壓、溫度、壓力、影像…等)

如果你在學生時期做實驗或是畢業後工作,如果需要擷取硬體資訊,不得不說,使用LabVIEW是一個很方便快速的選擇。現在LabVIEW Community Edition允許個人在非營利的情況下安裝並使用LabVIEW。假如你工作上要使用C#控制儀器,或是使用Python控制儀器(想當然爾,C#或Python撰寫的程式可以有更多彈性,這個之後再說)。決定成功通訊有計個要素,如:

  1. 接線要正確,有的儀器接線需要跳線有些則否,或是部分儀器有特殊跳線需求
  2. 接線不能斷掉。如果程式正確,但接線斷掉,測試出來無法連線,首先要確認到底是軟體(程式撰寫)的問題或是硬體(接線、儀器)的問題。
  3. 通訊協定,指令規則正確
  4. 程式撰寫正確

由於ni.com已經有許多儀器的通訊範例程式(均用LabVIEW寫成),所以我們可以假設,由ni.com下載的通訊範例程式都是正確的,如果硬體接線也正確,就可以順利跟儀器通訊。我們先確定軟體正確後,再施以正確的接線,期待能夠成功通訊。確認成功通訊後,再使用C#或Python替換掉程式的部分,由於已經確認接線是正常的,所以接下來只要確認C#或Python程式撰寫正確即可。

這樣我們就可以在LabVIEW的輔助下,開發以C#或Python為基礎的虛擬儀器了。

LabVIEW的缺點

LabVIEW的優點之一為可以用來開發Windows視窗程式人機介面,而且過程相當快速簡單。然而,卻難以更進一步把人機介面與Web整合。有些人可能要說,不對阿,LabVIEW的人機介面可以publish成IE可以開啟的人機介面!! 對,沒錯,但是這是要付license fee給NI的。使用者付費的觀念是天經地義,絕對沒有問題的。但是現今2021年,IOT需求與應用場景快速膨脹,傳統LabVIEW的web publish工具難以與現在的前端框架(Vue, React, Angular)整合,從而限制了Visualization的多樣性~

使用LabVIEW撰寫出來的程式往往限於單機版,難以擴展到網路上面,我認為這是LabVIEW目前面臨的最大挑戰。

另外其他缺點,或許為:

  1. 貴 (使用者付費觀念我絕不反對,但是對於營利公司來說,如果有免費的python,為什麼不用?)
  2. 硬體效能需求較高。似乎是LabVIEW 2019沒有寫好,即使用上了i7 CPU,操作LabVIEW過程中也還是會有卡頓現象。
  3. 難精。這是原罪,因為NI標榜LabVIEW易學,但其實NI沒說的是,LabVIEW其實是易學難精。今天要使用LabVIEW撰寫一個頻譜分析儀的程式相當簡單,只要拿LabVIEW的2個Express VI即可輕鬆完成。但一個完整的使用者介面還須包含資料存取寫入、資料匯入匯出…等等功能,等你把這些功能加上去,除非你是很有經驗的LabVIEW開發者,否則你的程式將變成難以維護的義大利麵。

對複雜的LabVIEW程式來說,其維護成本比複雜的text-based code(C#, Python)還高

LabVIEW對有經驗程式開發者的幫助為何?

你可能已經知道LabVIEW怎麼使用了,對於迴圈、陣列…等觀念相當熟悉。基於各種原因而需要學習Python,有哪些可能的原因呢? 如:

  1. Python具有較多了liberary可以使用;
  2. 我需要整合AI、大數據功能,或是需要在工控專案中使用AI推論;
  3. 學會Python後,除了可以用Python開發單機版程式,也可以開發後端網站;
  4. 我的工控專案需要結合雲端IOT(AWS或Azure),所以我需要補充Python或C#程式語言技能。

學了Python之後,你發現原本的變數、迴圈、運算子通通難不倒你,因為你已經在LabVIEW學得這些基本觀念了。於是你想要學習更進一步的Python知識技巧,開始學習Python中的類別、物件等觀念。在學習Python的類別時,對你來說,似乎又回到了程式的初學者階段,對於第一次接觸的類別觀念相當陌生,必須把抽象的觀念內化成知識。

但有趣的是…

Python的類別對照於LabVIEW,其實LabVIEW也有相同的類別觀念阿~ 同樣的觀念,在Python只能用想辦法體會抽象的文字語言,但在LabVIEW,哈哈,已經變成圖像化的具體呈現了。所以你學會了Python的類別後,可以在回到LabVIEW學習一下LabVIEW是如何處理類別這個觀念的,用來加深記憶;如此一來,你一下子就學到兩種程式語言在處理類別的方式,未來使用類別來開發物件導向程式時將更能活用知識喔。

LabVIEW的圖形化介面不是原罪

LabVIEW乍看之下是一個很簡單的程式語言,因為他是圖像化的介面呈現,因此降低了學習門檻。我常跟人說,「學習LabVIEW就像是在玩樂高積木一樣簡單,你只要向是疊積木一樣,把LabVIEW的程式方塊逐漸堆疊,就可以開發一個程式專案。」由於坊間LabVIEW進階程式開發的資源很少,所以許多人對LabVIEW的誤解就是「LabVIEW只能做基本的程式邏輯,沒有進階的開發框架。」

此時不妨跳脫一下環境,來學習一下Python吧! 坊間有很多Python相關書籍,也有許多書籍深入介紹Python進階知識。在學習Python盡些知識的同時,養成與LabVIEW反覆對照的習慣,你將會發現:

  1. 原來許多Python的進階觀念,LabVIEW也有;
  2. 在Python抽象的進階觀念,可以在LabVIEW用圖形化具象化呈現,幫助學習;

結論

  1. 由於LabVIEW學習成本低(易學難精),而且LabVIEW Community允許個人非商業免費使用,所以建議還是學一下LabVIEW吧,反正很快就學會了
  2. 為了讓你開發的程式具有低成本、易擴充、易維護 > 建議使用text-based程式語言(如Python)
  3. LabVIEW提供了圖形化的介面,在學習Python進階程式觀念的同時,順便到LabVIEW圖形化環境把相同觀念一併學起來,將可以加深學習印象,未來不管事Python或LabVIEW都可隨選交互使用,增加未來開發的彈性
1個讚