2021年9月21日 星期二

LabVIEW CLD 考試心得

 

接觸LabVIEW 很多年,從碩士班開始就碰了,那個時候我們的指導教授還有找畢業多年的學長回來教LabVIEW,他過去幾年也有教LabVIEW,不過他最近也勸大家多學Python啊。我覺得LabVIEW是一個特定面向的程式工具,就是在PC base上去做快速的儀器控制系統開發。當然因為它的GUI控制以及功能控制相對簡單,是優點也是缺點。如果你的使用目的是用電腦做一個自製的測量系統、儀器控制系統。如果你的硬體是簡單的RS-232Ethernet TCP/IP、或是IVIVISA介面,這個在KeithleyTek的示波器、訊號產生器很常見,這些公司也很佛心的給你這些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 一定會有的狀態是 InitializeIdleStop。我的Event Structure 放在



增加的State 可以依照說明的功能依序去增加。我的State Machine 模板可以在這裡下載

 

考點二:資料傳輸

因為官方的說明希望你不要使用local variable 以及global variable,所以如果你有資料一定無法透過data flow 的線去傳輸的話,你可以試著使用functional global variable (FGV),把資料用SetGet的方式去紀錄。當然這是因為LabVIEW的特性,所以用去把要記錄的資料存起來,它可以是從ini裡面,讀取到的數字,這個數字會隨功能,也許可以提款機的帳戶數字。

 

考點三:TypeDef使用

可以把State MachineEnum StateTypeDef 設定,Control 因為考試都已經設定好了,所以你不能改。所以就熟悉就好。

   



考點三:流程控制

State Machine中完成每一個步驟再照指示去下一個步驟,然後這個步驟可能會依不同的情況而改變。


就是這個state 做完之後要去哪一個 state的判斷式    

考點四:ini 資料的讀取以及寫入

可能這個洗衣機、咖啡機的參數會用存在這個ini檔案裡面,再去考之前要搞懂KeySection那些是指config file的哪個部分。


考點五:計時器

就像是洗車場跟灑水器一樣,可能做某個步驟會要多少時間,如果中途暫停,就要停止計時。最好在考之前就自己有一個timer 模板。

附上我自己的Timer 模板,Timer_main會呼叫Timer

Timer_Main



Timer_Sub



我的Timer模板可以從這裡下載

 

 

考點六:複合式Cluster Array的資料觸發

 

他可能會設計一個Cluster Array 做成前面板的GUI,一般來說這樣可能是一個2D Array,每一個Array Unit裡面有不同的item,使用者可能會按了其中一個,你要能夠知道是按了哪一個項目。


那我去偵測的方式是去比較前後差異產生的Boolean ,或許你還可以用其他方式去偵測,再用迴圈的方式去看是哪一個元素變化了。再把RowColumnCluster index給找出來。

我的模板可以從這裡下載


當然還有本來的範例題目出現的cluster array

 

灑水機的 Zone Setup Array

ATM 考試的(Left Buttons以及Left Buttons



考點七:註釋

可以把有特殊邏輯的部分寫下一些註解


file=> VI Properties 裡面把每一個Sub VIVI Description 都寫清楚。


當然網路上的資料很清楚也很多,大家也記得多做功課吧。