跳到主要內容

AI 驅動文件

您想了解什麼?

環境變數

您可以在 System Settings 中為每個相機定義環境變數。這些變數在 Node-RED 中可用,讓您能夠在一個集中位置設定 PLC IP、產線編號、Modbus IP、時區、FTP 伺服器 等引數。這使得在不同產線之間複用同一個 Node-RED 流變得容易,同時還能針對每個相機定製行為。環境變數集還可以匯出到 .txt 檔案或 .txt 檔案匯入,簡化部署和備份。

OV80i 內建三個變數 — Line CodeCamera TimezoneDate Installed — 您可以根據需要新增任意數量的自定義變數

何時使用環境變數

在以下情況使用環境變數:

  • 同一個值(PLC IP、MES URL、Modbus 主機、許可證金鑰、閾值、產線 ID)被多個 Node-RED 節點引用。
  • 不同部署之間值有所不同,您希望一個流到處都能使用 — 在每個相機上設定一次變數,而不是編輯流。
  • 您希望在多個相機之間共享流(匯出/匯入),而不會將特定部署的配置洩漏到 JSON 中。
  • 您需要 IT 人員或操作員在不開啟 Node-RED 的情況下更改某個值(例如新的 FTP 伺服器)。

在 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。會出現一個新的自定義變數行,包含一對鍵/值輸入框。輸入鍵(不含空格 — 僅限字母、數字和下劃線)和值,然後點選 Apply Changes

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

鍵命名

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

  1. 相機會在儲存前提示您確認。應用時 Node-RED 會重啟,因此新值會立即對流可用。

確認更改的模態框,警告環境變數更改時 Node-RED 將重啟

Apply Changes 會重啟 Node-RED

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

備份和恢復

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

從 Node-RED 中讀取變數

在任何程式上開啟 IO模組,然後點選 Advanced Mode 進入 Node-RED。相機環境變數以三種方式暴露給流 — 選擇最符合您用例的方式。

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

讀取變數最快的方法是使用 inject 節點,配置 payload 型別為 envpayload 為 <VAR_NAME>。觸發時,inject 節點會向下遊傳送 msg.payload = <環境變數的值> — 無需程式碼,無需 function 塊。

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

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

Flow 中 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 代理 URL、email 收件人列表等都是如此。這讓您可以在一個位置(System Settings)設定部署特定的配置,而無需修改流。

常見模式

模式變數名讀取方式
PLC 連線PLC_IPPLC_PORTInject + env,或在 PLC 配置中使用 ${PLC_IP}
FTP 影象匯出FTP_SERVERFTP_USERNAMEFTP 節點的主機/憑據欄位使用 ${...} 替換,或在 Function 節點中使用 env.get()
MES / 資料歷史端點MES_ENDPOINTHTTP request 節點 URL:${MES_ENDPOINT}/api/...
MQTT 代理MQTT_BROKERMQTT broker 配置:${MQTT_BROKER}
Modbus 主機MODBUS_IPModbus 節點 IP 欄位
產線識別符號(每個相機)LINE_NUMBERLINE_CODE(內建)印記到每個釋出的訊息上以便追溯
告警升級閾值ALERT_THRESHOLD用於計算近期失敗次數的 Function 節點
操作員通知列表ALERT_EMAILSEmail 節點的 "to" 欄位
不要在此處放置機密資訊

Environment Variables 頁面是明文的,對任何具有 System Settings 訪問許可權的使用者都可見。對於需要更強保護的機密資訊(PLC 密碼、簽名令牌、證書),請改用 Node-RED 在各個節點上的憑據儲存。

下一步