跳到主要內容

AI 驅動文件

您想了解什麼?

環境變數

您可以在 System Settings 中為每個攝像頭定義環境變數。這些變數在 Node-RED 中可用,讓您能夠在一個集中位置設定 PLC IP、line number、Modbus IP、timezone、FTP server 等引數。這使得在不同生產線之間複用同一 Node-RED 流程並按攝像頭自定義行為變得輕而易舉。環境變數集還可以匯出到 .txt 檔案或 .txt 檔案匯入,從而簡化部署和備份。

OV10i 出廠時附帶三個內建變數 — Line CodeCamera TimezoneDate Installed — 您還可以根據需要新增任意數量的自定義變數(Custom Variables)

何時使用環境變數

在以下場景下應使用環境變數:

  • 同一個值(PLC IP、MES URL、Modbus host、license key、閾值、line ID)被多個 Node-RED 節點引用。
  • 某個值在不同部署間存在差異,而您希望一個流程在任何地方都能執行 — 在每臺攝像頭上設定一次變數,而不是修改流程。
  • 您希望在多臺攝像頭之間共享流程(匯出/匯入),而不將部署相關配置洩露到 JSON 中。
  • 您需要讓 IT 或操作員更改某個值(例如新的 FTP server),而無需開啟 Node-RED。

在 System Settings 中定義變數

  1. 在攝像頭 UI 的左側邊欄中,單擊 System Settings
  2. 開啟 Environment Variables 選項卡(子導航中的第三個選項卡)。
  3. 填寫任意內建變數:
    • Line Code — 生產線識別符號或程式碼(自由文字)。
    • Camera Timezone — 從下拉選單中選擇一個時區。
    • Date Installed — 日期選擇器。

System Settings 中的 Environment Variables 選項卡 — Line Code、Camera Timezone、Date Installed

  1. 要新增自定義變數,請單擊右上角的 + New Variable。會出現一個新的 Custom Variables 行,其中包含一對 key/value 輸入框。鍵入鍵(不允許空格 — 僅允許字母、數字和下劃線)和值,然後單擊 Apply Changes

已填寫 FTP_SERVER = ftp.factory.local 的自定義變數行

鍵命名

鍵是您在 Node-RED 中讀取該變數時使用的名稱。約定使用大寫蛇形命名(例如 PLC_IPMODBUS_IPFTP_SERVERLINE_NUMBERALERT_THRESHOLD)— UI 不允許包含空格。

  1. 攝像頭會在儲存前提示您確認。應用時 Node-RED 將重新啟動,以便新值立即對流程可用。

Confirm Changes 模態框警告:當 env vars 變更時 Node-RED 將重啟

Apply Changes 會重啟 Node-RED

儲存對環境變數的任何更改 — 新增、編輯或刪除自定義變數,或修改某個內建欄位 — 都會重啟 Node-RED 執行時,使值生效。活動檢測會繼續執行,但任何正在執行的流程將被中斷。請將更改安排在計劃停機期間,而不是在班次中間。

備份與還原

Export .txt 按鈕將當前變數集下載為一個純文字檔案(KEY=VALUE 行)。Import .txt 從之前匯出的檔案中恢復。使用此功能可以將已知良好的配置克隆到同一生產線的多臺攝像頭上,或在重新刷寫之前進行備份。

從 Node-RED 讀取變數

在任意 recipe 上開啟 IO模組 並單擊 Advanced Mode 進入 Node-RED。攝像頭環境變數透過三種方式暴露給流程 — 選擇最符合您用例的方式。

1. 使用 payload 型別為 env 的 Inject 節點(最簡單)

讀取變數最快的方法是配置一個 inject 節點,將其 payload 型別設為 envpayload 設為 <VAR_NAME>。觸發時,inject 節點會向下遊傳送 msg.payload = <env 變數的值> — 無需程式碼,無需函式塊。

Inject 節點配置:msg.payload = $ FTP_SERVER,payload 型別 env

將其連線到一個 debug 節點並觸發 inject — debug 側邊欄將顯示解析後的值。

流程:inject -&gt; &quot;env variable&quot; -&gt; debug 2;debug 側邊欄顯示 &quot;ftp.factory.local&quot;

此模式非常適合檢查變數是否已定義且被正確讀取。當下遊節點(HTTP request、MQTT publish、FTP)只需將原始值作為 payload 時,也應使用此模式。

2. 使用 env.get() 的 Function 節點(程式設計式)

當您需要組合多個變數、構建結構化訊息或基於值進行分支時,請使用 function 節點和標準的 Node-RED env.get() API:

// Read a built-in variable
const lineCode = env.get("LINE_CODE");

// Read custom variables
const plcIp = env.get("PLC_IP");
const ftpServer = env.get("FTP_SERVER");

// Build a structured message for downstream nodes
msg.payload = {
line: lineCode,
plc: plcIp,
ftp: ftpServer,
capturedAt: new Date().toISOString(),
};
return msg;

將其連線到 mqtt outhttp requestftpemail 節點,結構化 payload 即隨之傳遞。

3. 在任意節點屬性中使用 ${VAR_NAME} 替換

大多數節點配置欄位都支援 ${VAR_NAME} 替換。例如,在 http request 節點中,您可以將 URL 設定為:

${MES_ENDPOINT}/api/v1/inspections

……Node-RED 將在執行時替換為該變數的當前值。ftp 伺服器欄位、mqtt broker URL、email 收件人列表等也是如此。這讓您能夠在一個位置(System Settings)設定部署相關配置,而無需修改流程。

常見模式

模式變數名稱讀取方式
PLC 連線PLC_IPPLC_PORTInject + env,或在 PLC 配置中使用 ${PLC_IP}
FTP 影象匯出FTP_SERVERFTP_USERNAMEFTP 節點 host/憑據欄位使用 ${...} 替換,或在 Function 節點中使用 env.get()
MES / data-historian 端點MES_ENDPOINTHTTP request 節點 URL:${MES_ENDPOINT}/api/...
MQTT brokerMQTT_BROKERMQTT broker 配置:${MQTT_BROKER}
Modbus hostMODBUS_IPModbus 節點 IP 欄位
生產線標識(按攝像頭)LINE_NUMBERLINE_CODE(內建)標記到每條釋出的訊息中以便追溯
警報升級閾值ALERT_THRESHOLD用於統計近期失敗次數的 Function 節點
操作員通知列表ALERT_EMAILSEmail 節點的 "to" 欄位
不要在此處釋出金鑰

Environment Variables 頁面是明文形式,對任何擁有 System Settings 訪問許可權的使用者都可見。對於需要更強保護的金鑰(PLC 密碼、簽名令牌、證書),請改用 Node-RED 在各個節點上的 credentials store。

後續步驟