很多人在問LabVIEW該怎麼學才能速成或該怎麼寫出大程式?除了多練習外沒有速成的方法。但是想要靠寫LabVIEW討生活?哪有那麼簡單。除非找到的公司是分工很細的,只負責寫程式其他不管,大部分應該是像我的的公司一樣什麼都得做。就算是在分工很細的公司,對其他相關知識仍必需了解,否則只會做的很難過。
以下不多廢話只是心得而已不是什麼密技:
1.事前準備:
a.了解LabVIEW常用基本元件特性:所謂"工欲善其事,必先利其器",不管你是買書或是網路找資料,學習前最起碼先把LabVIEW內最基本常用元件的特性搞清楚。很多人留言或來信問問題,往往回覆了還是不知道該怎麼做或為什麼那樣做
b.搞清楚資料格式:LabVIEW是資料導向的程式,資料格式不一樣就有可能出現不同的結果。我的文章在需要注意的地方大多有提醒,但仍有人沒有注意到以致做出不同的結果
c.雜學知識:有用到時多少要先了解一下,至少要有一定的概念。已有很多人完全不知道我問題回覆的內容是什麼,那些內容只是很基本的相關概念而已,例如:
其他程式語言(C或VB…等):不要求精,但最起碼要看的懂程式碼。除非你不做儀器控制,否則多少都會接觸到。就目前接觸過的儀器設備,其儀器設備的函數手冊或通訊手冊範例很多是用VB等其他程式語言寫的,若看不懂那要如何去改寫成LabVIEW程式
另外很多學術單位喜歡用Matlab,雖然我也不太會,但程式碼多少還是看的懂一些
PLC:對被控制的對象總要有一定程度的了解,如PLC的階梯圖程式,硬體的IO接點、內部接點和外接模組,還有通訊格式之類的資料。沒有一定的基礎往往出了問題卻不知道要從哪裡下手
工業配電:有相關的知識才不會被客戶唬的一愣一愣的 另外有些開關燈號及光電開關…等感測元件多少還是要了解其特性,某些客戶一開始就想要指定一些奇怪規格的零件,也不管是否合用。若對這些零件不了解,只是白白浪費時間金錢在測試修改上
影像處理:影像處理的基本原理和色彩轉換…等知識
資料庫:不管用的是哪種資料庫,SQL的語法是一定要會的。記不起那麼多內容?那就學我手邊放一本語法手冊吧
Word和Excel:幾乎許多學術單位的案子都會用到,多少還是了解一下
網路:現在流行遠端控制,網路通訊是免不了會用到的
2.資料流的觀念:
上面說過的"LabVIEW是資料導向的程式",資料跑到哪裡程式就執行到哪裡。程式是可以同時跑多條資料流程,但若是多條資料流程會用到同一個變數,就有必要把執行的先後順序釐清,確定資料的流向。打個比喻來說:資料流就像單行道,可以有多條單行道通向某處,但出口只有一個,那會是哪台車先通過出口呢?這時當然是設定紅綠燈來控制先後順序
3.畫流程圖: 畫流程圖可以幫助思考程式的動作流程,釐清一些程式的細節是否合理,以後要找BUG也比較好找。基本上流程圖能畫出來的,程式就一定能完成 至於流程圖要怎麼畫?有什麼標準格式?不管你是用筆、用電腦或是在腦海裡畫都可以,標準格式?除非你是要給別人看,否則自己看的懂就好。基本要求只有流程順序清楚,沒有不合常理之處即可
在這個階段就要先決定程式大概需求的功能和要呈現的結果,大致確認主要輸入端和輸出端的分配,再依需求確認所需相關硬體。有用到相關硬體時,還要先確認硬體對LabVIEW的支援程度
流程圖在實際邊寫程式時可能還會針對細節再做修改,理想的狀態是在流程有疑問的部分預留可修改的位置,將來需要抓BUG或追加功能修改程式才不會要從頭改寫
之前曾有某前輩批評認為畫流程圖是浪費時間,這浪費的時間少賺很多錢。我要說不是每個人都是天才,能在腦海中產生清晰的流程,可以清楚了解程式該怎麼寫來達到需求
4.程式註解:
程式註解是有必要的,因為大一點的程式往往是分給幾個人去寫,加上程式註解比較好溝通,同時了解這段程式在整個程式中的作用。最主要也是避免一段時間後,自己也看不懂當初寫的程式
5.畫面整理:
很多人寄程式來問問題,說實在看到畫面重疊和那一團左右交錯的線條就很頭大。乾淨的畫面有助於了解程式,在監看模式時更容易了解資料的流向
程式面板部分我是習慣把同一組動作區塊元件放在一起,或塗成同一顏色,集中管理顯式
程式部分我是習慣依順序由左到右拉線,在監看模式時可以清楚程式是卡在哪個點上。順序結構我都用平鋪式的,摺疊式的雖然不佔畫面,但順序很多又有很多變數要傳遞時,畫面的線可是非常的亂,要找BUG不容易
6.寫作重點:
a.能拉直線的就儘量不要轉彎,線條的轉折越少越好
b.線能拉的到的就不要使用local之類的變數,沒必要時儘量不要使用local之類的變數
c.太多資料要傳遞又不想拉太多線,那就把資料用Array或cluster打包成一條線
d.有中途停止需求的程式就儘量不要使用For Loop
e.同步執行的平行迴圈不要使用同一變數,若要使用同一變數就定出迴圈的執行順序。同一個SubVI在同一程式區塊內儘量不要設定成同步執行,要設定成有先後順序執行
f.順序結構要謹慎使用,執行順序不固定時就不要用。有要隨時停止的程式也儘量不要用順序結構,順序結構往往是不能立即停止的元凶,必需使用時一定要安排好能跳過順序的條件,例如改用Case取代順序結構
g.一個迴圈內只放一個事件元件,有多個觸發事件時儘量整合到同一事件元件內
h.不會隨迴圈執行變化的常數或狀態儘量放到迴圈外,可以增進程式執行效率
i.先求功能再求精簡:複雜一點的程式不可能一次搞定都沒有問題,這時是把需求功能先做出來,測試到沒問題後,再研究程式哪邊可以再精簡
j.善用錯誤代碼除錯:較複雜的程式幾乎都不可能一次搞定,在測試時會跳出各式的錯誤訊息,可以從錯誤訊息去找出問題的所在。若是覺得錯誤訊息不夠詳細,可以用錯誤代碼的數字查詢詳細內容。方法是:點選下拉式功能表Help底下的Explain Error那一項,在Code輸入錯誤代碼並且點選Status按鈕將其變為紅色的X,這樣一來錯誤代碼的描述就會出現在Explanation裡了
7.程式分段書寫測試:
一個大程式不可能一次搞定,一些片段或重複部份可以先分開寫,測試到沒有問題後再打包成SubVI整合進去,後續也可以叫出來重複使用 許多儀器控制適用這種方法,先測試和儀器通訊到沒有問題,在將測試程式打包成SubVI整合到主程式內
8.程式存檔:
程式中如果有用到SubVI,儘量存成llb檔案,以免遺漏程式。很多人寄程式來時就有這個問題,只寄主程式來卻少了一堆SubVI,這樣要叫人從何幫起?
做SubVI有幾個要項:
1.SubVI輸入加輸出資料合計能用的接點有限,考慮到未來要擴充功能的需要,輸出輸入點數的總和儘量控制在12~16點之內,若要超出這個限制有些接點就需使用叢集或陣列,我用過這種方法做出輸入64點輸出42點資料的SubVI。有大量資料要在幾個SubVI之間傳遞時,以打包成陣列或叢集為主,叢集類型資料最好為每筆資料取個容易分辨用途的名稱,方便後續程式的處理
2.SubVI之中還可以包含其他的SubVI,數量不限
3.輸入點儘量安排在左邊,輸出點儘量安排在右邊。資料輸出入有相關連的SubVI,同類型的資料接點要安排在相對應位置
4.若考慮到要在其他電腦安裝的程式,通訊埠這類會隨電腦不同而改變的項目就一定要做成SubVI的輸入點
5.沒有必要儘量不要在SubVI內使用while loop迴圈,許多程式當機的原因是出在SubVI的while loop迴圈無法停止。另外有即時輸出需求的資料,更不能放在SubVI的迴圈內
6.跳出式視窗這一型的SubVI一定要把VI的屬性設定好,最好能在屬性加上說明文件。使用跳出式視窗型的SubVI一定要注意程式呼叫條件的處理,已遇過幾位同學程式因為不斷呼叫跳出式視窗而停不了
9.和PLC的程式配合重點:
a.PLC控制的優先權:在正常狀態下的優先權是硬體輸入接點 > PLC程式 > 電腦控制命令。所以直接控制硬體輸入接點是無意義的,除非你用的是優先權最大的強制指令。同樣除非PLC內是沒有程式的空機,否則直接控制輸出接點也是無意義的,除非用的也是優先權最大的強制指令。因此對PLC的控制主要是以PLC的輔助接點為主,來做間接控制
b.以最少的命令控制最多的接點:用意是減少不必要的通訊控制次數,通訊次數太頻繁會影響到程式執行效能。要達到這樣的目的PLC的程式接點規劃就很重要,最理想的狀態是要控制的接點是連號編排的
c.電腦程式為控制介面,PLC程式才是控制主體:不管通訊速度有多快,都不會比PLC的程式反應還快。因此重要的控制項目一定要在PLC那邊,如緊急停止或是故障警報這一類的一定要由PLC處理才能即時反應
d.需要手、自動控制切換的要功能互鎖:也就是手動模式時不會誤觸自動模式的程式,自動模式時手動控制沒有作用
e.通訊埠的開閉程式要寫到程式的迴圈外:許多人常犯的毛病就是把整個通訊程式包在迴圈內,造成迴圈每執行一次通訊埠就開閉一次,頻繁的開閉通訊埠是程式當機的主因
f.善用Error訊息:以Error訊息來控制通訊流程,當有通訊錯誤時就可直接跳過後面正常流程,進行除錯流程或是警報流程
10.推薦參考資料:這是實際看過覺得具有參考價值的資料
a.入門書籍
全華科技圖書股份有限公司出版,惠汝生寫的那幾本
高立圖書有線公司出版,LabVIEW 201X 虛擬儀控程式設計
b.進階書籍(都是簡體書)
清華大學出版社出版,LabVIEW高級程序設計
北京航空航天大學出版社出版,我和LabVIEW 一個NI工程師的十年編程經驗
電子工業出版社出版,LabVIEW寶典
電子工業出版社出版,LabVIEW實用工具詳解
電子工業出版社出版,LabVIEW編程樣式
電子工業出版社出版,LVIEW入門與實戰開發100例
機械工業出版社出版,LabVIEW.MATLAB及其混合編程技術
中國鐵道出版社,LabVIEW高級編程與虛擬儀器工程應用
c.儀器通訊
全華科技圖書股份有限公司出版,介面設計與實習 使用LabVIEW
全華科技圖書股份有限公司出版,介面設計與實習 使用LabVIEW (NI-VISA)第二版
高立圖書有限公司出版,圖形系統設計之硬體介面專題製作
高立圖書有限公司出版,PLC_LabVIEW 圖形監控
d.資料存取
高立圖書有限公司出版,LabVIEW & Microsoft的整合實例(Ⅰ)(VC. DLL. ActiveX. ADO)
e.圖形圖表
高立圖書有限公司出版,LabVIEW 圖形篇
f.訊號處理
國立交通大學出版社出版,訊號與系統概論
g.機器人控制
碁峰資訊股份有限公司出版,LabVIEW高階機器人教戰手冊
h.其他相關應用書籍
歐萊禮出版,SQL語法手冊
五南出版社出版,OMRON PLC程式編輯與軟體教學
五南出版社出版,OMRON PLC網路通訊與NS人機介面
文笙書局出版,電機自動控制工業配線實務
文笙書局出版,可程式控制設計寶典
文笙書局出版,最新圖解電工法規
文笙書局出版,三菱可程式控制器FX2N中文使用手冊
文笙書局出版,三菱可程式控制器單軸NC模組 FX2N-1PG
文笙書局出版,三菱可程式控制器FX3U伺服定位篇
文笙書局出版,三菱可程式控制器 FX3U左側模組MODBUS通信篇
全華科技圖書股份有限公司出版,PLC-VB圖形監控(這一本是講永宏PLC通訊)
i.電子書(網路上就可以找到)
FX系列通訊篇簡体手冊
永宏標準通訊協定格式說明
j.影像處理(日文書,這是目前看過的書中專門在寫用LabVIEW做影像處理的)
LabVIEW画像計測入門,講談社出版
k.程式面板設計
機械工業出版社出版,GUI設計禁忌2.0(專門探討程式面板設計的問題,非常有參考價值的書,目前這本書大概只剩淘寶網可買到電子版或影版)
l.微積分工程運算
松崗出版,LabVIEW圖形化程式設計
最後大力推薦以下五本書
悅知文化出版,大話設計模式
悅知文化出版,大話資料結構
這兩本書和LabVIEW沒有任何直接關係,但其中的程式設計概念和演算法...等是很棒的參考資料,有助於突破寫程式的瓶頸解決問題
電子工業出版社出版,LabVIEW編程樣式
電子工業出版社出版,LabVIEW寶典
電子工業出版社出版,LabVIEW實用工具詳解
這三本若能看完搞懂就能從菜鳥變成高手
留言列表