以程式方式關閉 NI Linux Real-Time 裝置

更新 Jan 27, 2026

環境

硬件

  • CompactRIO Controller
  • PXI Controller

操作系統

  • LabVIEW Real-Time (NI Linux Real-Time)

其他

  • NI Linux Real-Time targets

本教學提供兩種方法,可從 LabVIEW 以程式方式關閉 NI Linux Real-Time(RT)目標裝置。

System Exec VI 方法

System Exec VI 可在 LabVIEW 中呼叫 Linux 的 shutdown 指令來關機。然而,預設情況下,LabVIEW 沒有執行此指令的權限,因此必須先將 lvuser 新增到 Linux 中名為 shutdown 的使用者群組,授予其執行 shutdown 的權限。

以下步驟將授予 LabVIEW 關機權限,並示範在 LabVIEW 中的關機程式碼:

  1. 透過 SSH 連線至 RT 目標裝置(例如使用 PuTTY)。

  2. 執行以下指令:

     
    usermod -a -G shutdown lvuser
  3. 執行以下指令確認 lvuser 是否已正確新增至 shutdown 群組:

     
    groups lvuser

verify.png 

    1. 重新啟動目標裝置以套用變更。

    2. 從 LabVIEW VI 執行 shutdown 指令。
      LV code.png

    在此案例中,使用了 -r 參數在關機後重新啟動;若要立即關機,則不加 -r
    如果之後需要將 lvusershutdown 群組移除,請依下列步驟進行:

    1. 執行以下指令:gpasswd -d lvuser shutdown
    2. 重新啟動目標裝置以套用變更。

    透過執行 groups lvuser 指令,確認 lvusershutdown 指令權限已正確移除。 

    verify2.png

    呼叫函式庫功能

    您可以使用 Call Library Function 節點,在 Linux Real-Time 裝置上呼叫已安裝的標準函式庫 glibc
    libc.so.6 是標準的 Linux 函式庫工具,存在於一般的 Linux 系統中。lvuser 預設已具備執行此函式的權限。

    有兩種方式可引用此函式庫:

    • libc.so.6 為函式庫的 soname,可以直接在 Call Library Function 節點的路徑元素中使用 libc.so.6 來載入函式庫,而不必指定完整路徑。這可在未來 glibc 版本變動時維持相容性。

    • 或者,您也可以選擇透過指定完整路徑呼叫特定版本,例如 libc.X.XX.so

    文件中也附有範例 VI,說明如何結構化您的關機 VI,外觀如下圖所示。

    LabVIEW_4ioRApFY7U.png 

    • 這段程式會呼叫名為 reboot 的函式,並傳入一個 cmd 型別為 I32 的參數。

    • 指令 4321FEDC 代表關閉裝置。

    如果您使用完整檔案路徑,可以透過存取裝置上的以下路徑來確認 libc-x.xx.so 檔案:

    • ARM 架構files > lib

    • Intel 架構files > lib64

    在這些路徑中可找到對應的 libc-x.xx.so 檔案,如下圖所示。

    附加資訊

    由於 NI Linux Real-Time 裝置採用快閃記憶體硬體,強烈建議在電池電力耗盡前先將裝置關機。您可以參考 Under the Hood of NI Linux Real-Time 以取得更多關於如何透過 LabVIEW 存取 Linux Real-Time 命令列的資訊。

    如果您希望遠端關閉 Linux Real-Time 目標裝置(非程式化方式),也可以透過 SSH 手動完成:

    1. 啟用 Secure Shell Server 並登入您的目標裝置。

    2. 輸入以下指令以關閉裝置:

       
      shutdown -r now
    remote.png