AI 驅動文件
您想了解什麼?
環境變數
您可以在 System Settings 中為每臺相機定義環境變數。這些變數可在 Node-RED 中使用,讓您可以在一個集中位置設定引數,例如 PLC IP、產線編號、Modbus IP、時區、FTP 伺服器 等。這使得在不同產線之間複用同一個 Node-RED 流程變得簡單,同時可針對每臺相機定製行為。環境變數集還可以匯出到 .txt 檔案或從 .txt 檔案匯入,從而簡化部署和備份。
OV20i 出廠時內建三個變數——Line Code、Camera Timezone 和 Date Installed——並且您可以根據需要新增任意數量的自定義變數。
何時使用環境變數
在以下情況下使用環境變數:
- 同一個值(PLC IP、MES URL、Modbus 主機、許可證金鑰、閾值、產線 ID)被多個 Node-RED 節點引用。
- 某個值在不同部署之間存在差異,而您希望一個流程在任何地方都能工作——只需在每臺相機上設定一次變數,而不必修改流程。
- 您希望在多臺相機之間共享流程(匯出/匯入),而不會將部署相關的特定配置洩露到 JSON 中。
- 您需要讓 IT 人員或操作員在不開啟 Node-RED 的情況下更改某個值(例如新的 FTP 伺服器)。
在 System Settings 中定義變數
- 在相機 UI 的左側邊欄中,點選 System Settings。
- 開啟 Environment Variables 選項卡(子導航中的第三個選項卡)。
- 填寫任何內建變數:
- Line Code —— 生產線識別符號或程式碼(自由文字)。
- Camera Timezone —— 從下拉選單中選擇時區。
- Date Installed —— 日期選擇器。

- 要新增自定義變數,請點選右上角的 + New Variable。會出現一個新的自定義變數行,包含一對鍵/值輸入框。輸入鍵(不允許有空格——只能使用字母、數字和下劃線)和值,然後點選 Apply Changes。

鍵是您在 Node-RED 中讀取變數時所用的名稱。約定使用大寫蛇形命名(例如 PLC_IP、MODBUS_IP、FTP_SERVER、LINE_NUMBER、ALERT_THRESHOLD)——UI 不允許使用空格。
- 相機會在儲存前提示您確認。應用更改時 Node-RED 會重啟,以便新值立即對流程可用。

儲存對環境變數的任何更改——新增、編輯或刪除自定義變數,或更改任何內建欄位——都會重啟 Node-RED 執行時以使值生效。正在執行的檢測會繼續,但任何執行中的流程都會被中斷。請在計劃停機時進行更改,而不是在班次中間。
備份與恢復
Export .txt 按鈕會將當前變數集下載為純文字檔案(KEY=VALUE 行)。Import .txt 會從之前匯出的檔案中恢復。使用此功能可在同一產線的多臺相機之間克隆已知良好的配置,或在重新刷機前進行備份。
從 Node-RED 讀取變數
在任何 recipe 上開啟 IO模組,並點選 Advanced Mode 進入 Node-RED。相機環境變數透過三種方式暴露給流程——選擇最適合您用例的方式。
1. 使用 payload 型別 env 的 inject 節點(最簡單)
讀取變數的最快方式是配置一個 inject 節點,其 payload 型別為 env,payload 為 <VAR_NAME>。觸發時,inject 節點會向下遊傳送 msg.payload = <env 變數的值>——無需程式碼、無需 function 塊。

將其連線到 debug 節點並觸發 inject——debug 側欄會顯示已解析的值。

此模式非常適合用來檢查變數是否已定義並被正確讀取。當下遊節點(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 out、http request、ftp 或 email 節點,結構化的 payload 會隨之傳遞。
3. 在任何節點屬性中使用 ${VAR_NAME} 替換
大多數節點配置欄位都支援 ${VAR_NAME} 替換。例如,在 http request 節點中,您可以將 URL 設定為:
${MES_ENDPOINT}/api/v1/inspections
……Node-RED 會在執行時替換為該變數的當前值。ftp 伺服器欄位、mqtt 代理 URL、email 收件人列表等也是如此。這讓您可以在一個位置(System Settings)設定部署相關的特定配置,而無需觸碰流程。
常見模式
| 模式 | 變數名稱 | 讀取方式 |
|---|---|---|
| PLC 連線 | PLC_IP、PLC_PORT | Inject + env,或在 PLC 配置中使用 ${PLC_IP} |
| FTP 影象匯出 | FTP_SERVER、FTP_USERNAME | FTP 節點的主機/憑證欄位使用 ${...} 替換,或在 Function 節點中使用 env.get() |
| MES / 資料歷史記錄端點 | MES_ENDPOINT | HTTP request 節點 URL:${MES_ENDPOINT}/api/... |
| MQTT 代理 | MQTT_BROKER | MQTT 代理配置:${MQTT_BROKER} |
| Modbus 主機 | MODBUS_IP | Modbus 節點 IP 欄位 |
| 產線識別符號(每臺相機) | LINE_NUMBER、LINE_CODE(內建) | 標記到每條已釋出的訊息上以便追溯 |
| 告警升級閾值 | ALERT_THRESHOLD | 用於統計近期失敗次數的 Function 節點 |
| 操作員通知列表 | ALERT_EMAILS | Email 節點的 "to" 欄位 |
Environment Variables 頁面是明文的,對任何具有 System Settings 訪問許可權的使用者都是可見的。對於需要更強保護的機密(PLC 密碼、簽名令牌、證書),請改用 Node-RED 各節點上的憑證儲存。
下一步
- Node-RED 基礎 —— 如果您是相機上 Node-RED 的新手,可作為入門指南。
- Overview Node-RED 自定義模組 —— 標準 Node-RED 調色盤旁出現的 OV 專用模組的參考資料。
- 設定輸出(步驟 5) —— Node-RED 在更廣泛的 pass/fail 和整合流程中的位置。