2019年12月28日 星期六

使用 LabVIEW 連接常用的嵌入式平台{Arduino篇}00 - LabVIEW(2019) + LINX 安裝與 Arduino 程式編譯上傳

 網頁最後修改時間:2020/01/25
上方 LINX 圖示來源:NI, MakerHub
LabVIEW 是種圖形化程式設計語言(或稱圖控式程式語言),設計操作介面的同時,也能同時間設計介面元件間的邏輯運算,大多數只需要在圖形之間拉一拉線就能完成所有的工作,主要應用於:
  • 自動化製造測試;
  • 自動化產品設計驗證;
  • 機械、工業設備和工業程序的控制與監控;
  • 機械、工業設備的狀態監控;
  • ...
早前這圖形化程式設計語言,需要配合 NI 的介面卡或是裝置才能一窺究竟,現在透過隨處可買的嵌入式平台或微控制器就能與其互動。

「那有什麼呢?」
  • Raspberry Pi(樹莓派);
  • Beagle Bone;
  • Arduino ATMega328 系列開發板(Uno/Nano/ProMicro);
  • Arduino ATmega32u4 為核心的 Leonard 開發板;
  • ESP8266 系列模組或開發板;
  • ChipKIT 開發板;
  • ...
因為取得容易且價格相比於 NI 介面卡或裝置低廉許多,所以呢?走過路過不要錯過,找機會來學學這個堪稱獨一無二的圖形化程式設計軟體:LabVIEW。

** 維基百科:LabVIEW

*********************************************************************************
{開發板} Arduino{開發板} Arduino PLC 露天賣場

*********************************************************************************


【作業系統與軟體環境】

下面是網頁撰寫當下的作業系統以及展示安裝的軟體版本:
  • Windows 10(64位元)
  • NI-VISA, V19.5
  • LabVIEW 2019
    • MakerHub Toolbox, V2.0.0.35
    • LabVIEW Interface for Arduino, V2.2.0.79
    • Digilent LINX, V3.0.1.192
** 版本或多或少隨時間會有所變化,但基本上的說明都適用,有問題可以留言!

【LabVIEW 2019 安裝】

LabVIEW 是一套付費軟體,但是它有提供試用版下載,試用期限大概 30 天左右,有線上安裝與離線安裝兩種選擇。

** 下載網頁

不管使用何種安裝方式,下載網頁左方是安裝軟體的選項,請依照自己的作業系統類型和需求進行選擇。

選定後,使用線上安裝方式則按下藍色 "下載" 按鈕,此時會另外出現一個要求註冊新帳號或登入的網頁,註冊一個新帳號或是以舊帳號登入後就能繼續下載。


但是使用離線安裝方式則不用,點擊網頁右下方注意區塊中的藍色連結就可進行下載,只不過檔案真的出乎意料的大多了,請自行斟酌!


安裝的步驟很簡單,大多就是下一步、下一步地就完成。若真的不懂或是有疑問的話,下面有參考連結或上 YouTube 和 Google 自行搜尋一下,會有很多安裝步驟影片和資料可以參考,所以接下來就不再贅述這些東西!

** PHYS 318, Download and Install LabVIEW

但是有一點要特別注意!就是在選擇安裝的產品的選項裡,要確定把 JKI VI Package Manager 這個項目勾選中,否則下一小節就無法進行。

若需要自行安裝 JKI VI Package Manager,方法如下所提供的連結網址:

【安裝 NI-VISA】

什麼是 NI-VISA?直接引用自 NI-VISA 下載網頁裡面的說明。
NI-​VISA 是​一​款 NI 儀器​驅動​程式,​符合 Virtual Instrument Software Architecture (VISA) I/​O 標準。​VISA 是​針對​內含 GPIB、​VXI、​PXI、​序列 (RS232/​RS485)、​乙太網路/​LXI 與/​或 USB 介面​的​儀​控​系統,​進行​設定、​程式設計​與​故障​排除​的​標準。​NI-​VISA 內含​各種​公用​程式、​低階​控制​功能​與​範例,​可​協助​您​建立​專屬​應用。
下載的方式跟下載 LabVIEW 2019 一樣,分為兩種方式;下載後直接進行安裝即可。

** NI-VISA 的介紹
** NI-VISA 下載

【安裝連接常用的嵌入式平台外掛程式 LINX】

LabVIEW Interface for Arduino (LIFA) 是 LINX 的前身,但現在已停止開發,NI 官網上面強烈建議移轉到 LINX。個人卻是建議兩個都安裝,但以 LINX 撰寫為主,將 LIFA 作為資料參考之用。

LIFA 和 LINX 程式都是同一個作者撰寫,但 LINX 支援更多的嵌入式平台,程式架構上對於新增嵌入式平台和擴充功能方面更好,而且幾乎都是使用 Arduino 撰寫(應該說,都是 C/C++ 語言寫的),有功能需求時甚至可以自行擴充或修改,深入並不難!

** LabVIEW Interface for Arduino Source Code
** LabVIEW Hacker LINX Source Code

/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 使用 VIPM 安裝 LabVIEW Interface for Arduino 和 Digilent LINX 外掛程式:

開始功能表中選擇 "JKI VI Package Manager" 開啟。在其視窗右上角的搜尋欄位中,輸入下方部分外掛程式名稱,按下 Enter 即能進行搜尋。

選擇安裝下面三個外掛程式:
  • MakeHub Toolbox
  • LabVIEW Interface for Arduino
  • Digilent LINX (Control Arduino, Raspberry Pi, BeagleBone and more)


/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 驗證 LabVIEW Interface for Arduino 和 Digilent LINX 外掛程式的安裝:

完成安裝後,開始功能表中選擇 "NI LabVIEW 2019 (64-bit)" 開啟。功能選單選擇 "File/New VI" 打開一個空白檔案,此時會出現兩個視窗:Front Panel 和 Block Diagram。

Front Panel 視窗下,點擊滑鼠右鍵(或 "View/Control Palette" )叫出 Controls 功能板,然後在它的左上角圖釘圖示按一下,固定它。這個視窗裡面其中一個叫做 Arduino 的頁籤,就是安裝 Labview Interface for Arduino 所產生的;不過在 Front Panel 視窗下的 Controls 功能板是看不到 LINX 頁籤的!


接著,同樣的滑鼠動作在 Block Diagram 視窗再作一次,只不過這次叫出的是("View/Functions Palette") Functions 功能板。

Functions 功能板中會看到 Arduino 和 MakeHub 兩個頁籤,其中 MakeHub 裡的 LINX 是安裝 Digilent LINX 產生的,所以 LINX 只有 Block Diagram 視窗下有,在 Front Panel 視窗下沒有,設計時要把 Front Panel 視窗上的元件用來輸出資料給 Block Diagram 視窗中的 LINX 元件用。


到此就完成電腦端連結常用的嵌入式平台外掛程式的安裝以及確認。

【嵌入式平台 LINX 韌體編譯與燒錄】

安裝好電腦端所需要的軟體之後,LINX 提供了多個嵌入式平台的程式碼,只要選定目標開發板進行燒錄就可以;由於兩塊多功能 Arduino 入門學習開發板都是以 Arduino Uno 為基礎作設計的,因此 Device Type 就是選擇 Arduino Uno

選擇 "Tools/MakerHub/LINX/LINX Firmware Wizard..." 開啟設定精靈後,有兩種上傳韌體的方法:

/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 1. Pre-Built Firmware:

使用 LINX 預先編譯完成的韌體程式(Pre-Built Firmware)進行燒錄,步驟如下畫面所示。


/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 2. Build with Arduino IDE:

要使用這個選項,請先安裝需要的函式庫。

選擇 "Tools/MakeHub/LINX/Generate Firmware Libraries..." 開啟視窗


Libraries Destination Directory 要輸入 Arduino IDE 函式庫的路徑。

這裡必須要注意的是!不同的 Arduino IDE 版本,儲存使用者函式庫的預設路徑式是不一樣的(此路徑可自行變更),想要知道真正的路徑位置,可開啟 Arduino IDE 選擇 "File/Preferences" 開啟偏好設定視窗,在 "Settings" 頁面 Sketchbook location: 欄位所填寫的路徑值後面,再補上 \libraries 就是函式庫的路徑。

完成後,按下 "Generate" 按鈕,就會開始建立需要的函式庫({Arduino}\Libraries\Linx*)到指定的路徑目錄下,同時也包含了不同嵌入式平台的範例程式碼({Arduino}\Libraries\LINX\examples)。


完成後會出現提示視窗,按下 "OK" 關閉視窗,再按下 "Done" 關閉主視窗


/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* 不要使用 Build with Arduino IDE 上傳程式:

「什麼!」「這是什麼邏輯?」

反正就是不要用!

** LVMH Forum, Firmware Wizard

因為程式碼與函式庫都已經有了,熟悉 Arduino IDE 的用戶,接著只要載入對應的開發板的 LINX 範例程式碼到 Arduino IDE、再插上開發板到電腦、選好開發板名稱和 COM Port,最後按下 "Upload" 編譯和上傳程式碼,就搞定了!在作為一個 LabVIEW 初學者來說,這樣的方式會覺得 LabVIEW 平易近人許多 ^__^


** 這個選項在 LabVIEW 執行的時候一直過不去,函式庫路經也改了很多不同的預設路徑來試,但不知道是不是我使用可攜式 Arduino IDE 版本的緣故,導致從 LabVIEW 重新編譯再上傳的方法始終沒成功過;或許改用直接安裝 Arduino IDE 會有不同的結果,但我沒試過!就留給各位試試看吧。

其實一開始我的打算,就是直接使用 Arduino IDE 編譯原始碼的方式上傳程式,原因是:為了網頁開頭圖片上的兩片 Arduino 開發板,因為 LINX 看起來支援 WS2812/SK6812 RGB LED,實際上並沒有!有預留 WS2812 功能板元件,但是(應該全部的)嵌入式平台的 LINX 程式都只預留函式卻沒有實作,所以為了要有 WS2812/SK68122 RGB LED 的控制功能只能後面再自行補上了。

//----------------- WS2812 Functions -----------------------------
int LinxDevice::Ws2812Open(unsigned short numLeds, unsigned char dataChan)
{
 return L_FUNCTION_NOT_SUPPORTED;
}

int LinxDevice::Ws2812WriteOnePixel(unsigned short pixelIndex, unsigned char red, unsigned char green, unsigned char blue, unsigned char refresh)
{
 return L_FUNCTION_NOT_SUPPORTED;
}

int LinxDevice::Ws2812WriteNPixels(unsigned short startPixel, unsigned short numPixels, unsigned char* data, unsigned char refresh)
{
 return L_FUNCTION_NOT_SUPPORTED;
}

int LinxDevice::Ws2812Refresh()
{
 return L_FUNCTION_NOT_SUPPORTED;
}

int LinxDevice::Ws2812Close()
{
 return L_FUNCTION_NOT_SUPPORTED;
}

知道可以用這種方式來上傳 LINX 程式碼到 Arduino 開發板後,程式碼修改的部分則留到之後講到 WS2812/SK6812 的時候再說,現在是時候來測試燒錄了 LINX 程式的多功能 Arduino 入門學習開發板。

【LabVIEW 與 LINX 測試】

選擇 LabVIEW 選單 "Help/Examples..." 開啟範例搜尋的視窗。

切換到 "Search" 頁面,於欄位 Enter keyword(s) 處輸入 LINX,再按 "Search" 進行範例搜尋,找到 LINX - PWM 1 Channel.vi 後滑鼠雙擊它開啟。


範例打開後,插上燒錄了 LINX 程式的 Arduino 開發板(這裡使用的是多功能 Arduino 入門學習開發板(單搖桿型)),設定好 Serial Port (下拉選單後自動更新 Com Port 列表)和 PWM Channel (5 是紅色 LED;6 是綠色 LED;用其它的接腳,請自己另外接 LED),最後按下 "Run" 按鈕開始執行程式。

** Arduino UNO/Nano/Mini PWM Pins: 3、9、10、11 (490Hz)、5、6 (980Hz)
** 若使用雙搖桿型的開發板作測試,LED 請自行外接


程式執行後,只要修改 Duty Cycle (0-1) 欄位中的值介於 0.0 ~ 1.0(表示 0 ~ 100% 的 PWM 佔空比)之間,就可以改變 LED 燈的亮度,如下動畫圖片所示。


【學習資源】

因為 LabVIEW Interface for Arduino (LIFA) 已在市面上出現許久,因此不管是基本的 LabVIEW 程式語法學習或是配合一些嵌入式平台的教學資源,在網路上可找到得非常之多,所以這些部分就請自行研究不再贅述!部落格會以網頁開頭那兩片多功能 Arduino 入門學習開發板為主,來作為後續 LabVIEW 相關網頁的撰寫。

下面列出兩個個人覺得非常不錯的網站,提供給大家學習之用:
  • National Instruments
    下載 LabVIEW 的地方。
  • LabVIEW MakerHub
    "LabVIEW MakerHub is a communiry designed to inspire, enable, challenge, and support makers using LabVIEW." from LabVIEW MakerHub
    這裡有很多學習資源,可由這邊學起。
  • 學生適用的自學課程影片
    "運用一系列的逐步教學、範例專案與簡短影片,了解 NI 工具的使用方式。 學習如何操作 LabVIEW 環境,並且連接至資料擷取 (DAQ) 或可重設 I/O (RIO) 硬體,進一步完成自己的專案。" from NATIONAL INSTRUMENTS
  • NI LabVIEW 技巧指南
    "判斷自己所需的技能並且找到學習資源,進而透過硬體順利開發 LabVIEW 應用。"

【結論】

多學一技以傍身,LabVIEW 絕對稱得上!


<< 部落格相關文章 >>

.
.

2 則留言:

  1. LINX 編寫好的Labview程式,如果Front Panel沒有設定任何Control值,都用Contant寫入Block Daigram中,能否單獨在uno板子上獨立執行,不在透過電腦儀控

    回覆刪除
    回覆
    1. Arduino變成受控的一端,所以需要 labview (上位機)發送命令才會動作。
      如果要獨立執行,就不需要這樣用!

      刪除

留言屬名為"Unknown"或"不明"的用戶,大多這樣的留言都會直接被刪除掉,不會得到任何回覆!

發問問題,請描述清楚你(妳)的問題,別人回答前不會想去 "猜" 問題是什麼?

不知道怎麼發問,請看 [公告] 部落格提問須知 - 如何問問題 !