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 和集成流程中的位置。