接觸LabVIEW 很多年,從碩士班開始就碰了,那個時候我們的指導教授還有找畢業多年的學長回來教LabVIEW,他過去幾年也有教LabVIEW,不過他最近也勸大家多學Python啊。我覺得LabVIEW是一個特定面向的程式工具,就是在PC base上去做快速的儀器控制系統開發。當然因為它的GUI控制以及功能控制相對簡單,是優點也是缺點。如果你的使用目的是用電腦做一個自製的測量系統、儀器控制系統。如果你的硬體是簡單的RS-232、Ethernet TCP/IP、或是IVI的VISA介面,這個在Keithley、Tek的示波器、訊號產生器很常見,這些公司也很佛心的給你這些Sample Code 或是VI Tree,這個就是用下下指令可以控制。如果你的硬體要呼叫印體驅動程式的dll、或是dotnet的、ActiveX的程式,那你真的需要在懂很多LabVIEW以外的程式知識。這個我覺得是LabVIEW 用到後來最困難的部分,與外部程式結合。另外一個困難點是程式的架構如何做模組化以及模組間的溝通。
不過LabVIEW CLD考試的範圍就是純粹LabVIEW 軟體的熟悉程度,以考試來說,你就是展現你知道LabVIEW 如何寫出一個讓人看得懂的架構,而非義大利麵。因為CLD的考試都是考得也不算是儀器控制,因為你遇到的可能是提款機、販賣機、鍋爐、咖啡機、微波爐。比較多的是架構、資料傳輸(展現一下你會用 FGV, functional global variable)、TypeDef使用、流程控制、Config 形式的ini 資料的讀取以及寫入、複合式Cluster Array的資料觸發、以及計時器,(計時器這個千變萬化,我也不知道哪種最好),還有好的程式的註解。
現在考試都是採用線上考試,所以你要準備護照、有一台可以有攝影機的電腦、有乾淨的桌子,桌上要淨空,他會希望你把筆電拿起來看一下桌面。然後考試的時候你的攝影機要打開,會有監考人員一直看你,不過你看不到他,然後你不能摀住嘴巴。我考試的時候如果用手撐住頭,就會擋住嘴巴,他馬上就會傳訊給我要我不能擋住臉。
首先你要先去 NI LabVIEW的網站去,看一下LabVIEW的考試說明,報名這些步驟就依照指示刷信用卡。因為要花錢,所以大家多準備一下再去考吧。
https://education.ni.com/badges/resources/1255/certified-labview-developer-cld
記得要下載 CLD Sample Exams
Sample Exam 有四個
ATM (100928C-01) 提款機
Boiler (100926F-01) 鍋爐溫度控制
Car Wash (100929B-01) 洗車場
Sprinkler Controller (100927F-01) 灑水器
每個都點進去做看看,題目就是可以在前面版放置GUI、你要把後面的block diagram給弄出來。
例如說 ATM的前面版長這樣
例如說 ATM的後面版長這樣
你自己就要把這些線拉出來。
接下來我會把我覺得比較重要的考點給分享出來。
考點一:程式架構
你可以用State Machine, Queue Message Handler, Consumer Producer 去寫,我個人是用State Machine
因為比較簡單,我覺得應該是對考CLD夠用,當然你也可以用其他的設計模板。你的State 就用Type Definition 去設定,如果要增加就再放上去。Type Definition 一定會有的狀態是
Initialize、Idle、Stop。我的Event Structure 放在
增加的State 可以依照說明的功能依序去增加。我的State Machine 模板可以在這裡下載
考點二:資料傳輸
因為官方的說明希望你不要使用local variable 以及global variable,所以如果你有資料一定無法透過data flow 的線去傳輸的話,你可以試著使用functional global variable (FGV),把資料用Set及Get的方式去紀錄。當然這是因為LabVIEW的特性,所以用去把要記錄的資料存起來,它可以是從ini裡面,讀取到的數字,這個數字會隨功能,也許可以提款機的帳戶數字。
考點三:TypeDef使用
可以把State Machine的Enum State用TypeDef 設定,Control 因為考試都已經設定好了,所以你不能改。所以就熟悉就好。
考點三:流程控制
在State Machine中完成每一個步驟再照指示去下一個步驟,然後這個步驟可能會依不同的情況而改變。
考點四:ini 資料的讀取以及寫入
可能這個洗衣機、咖啡機的參數會用存在這個ini檔案裡面,再去考之前要搞懂Key、Section那些是指config file的哪個部分。
考點五:計時器
就像是洗車場跟灑水器一樣,可能做某個步驟會要多少時間,如果中途暫停,就要停止計時。最好在考之前就自己有一個timer 模板。
附上我自己的Timer 模板,Timer_main會呼叫Timer
Timer_Main
Timer_Sub
考點六:複合式Cluster Array的資料觸發
他可能會設計一個Cluster Array 做成前面板的GUI,一般來說這樣可能是一個2D Array,每一個Array Unit裡面有不同的item,使用者可能會按了其中一個,你要能夠知道是按了哪一個項目。
那我去偵測的方式是去比較前後差異產生的Boolean ,或許你還可以用其他方式去偵測,再用迴圈的方式去看是哪一個元素變化了。再把Row、Column、Cluster index給找出來。
我的模板可以從這裡下載。
當然還有本來的範例題目出現的cluster array
灑水機的 Zone Setup Array
ATM 考試的(Left Buttons以及Left Buttons
考點七:註釋
可以把有特殊邏輯的部分寫下一些註解
在 file=> VI Properties 裡面把每一個Sub VI的VI Description 都寫清楚。
當然網路上的資料很清楚也很多,大家也記得多做功課吧。