AI 驱动文档
您想了解什么?
环境变量
您可以在 System Settings 中为每个相机定义环境变量。这些变量在 Node-RED 中可用,让您能够在一个集中位置设置 PLC IP、产线编号、Modbus IP、时区、FTP 服务器 等参数。这使得在不同产线之间复用同一个 Node-RED 流变得容易,同时还能针对每个相机定制行为。环境变量集还可以导出到 .txt 文件或从 .txt 文件导入,简化部署和备份。
OV80i 内置三个变量 — 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 中读取变量
在任何程序上打开 IO模块,然后点击 Advanced Mode 进入 Node-RED。相机环境变量以三种方式暴露给流 — 选择最符合您用例的方式。
1. 使用 payload 类型为 env 的 inject 节点(最简单)
读取变量最快的方法是使用 inject 节点,配置 payload 类型为 env 和 payload 为 <VAR_NAME>。触发时,inject 节点会向下游发送 msg.payload = <环境变量的值> — 无需代码,无需 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 broker 配置:${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 和集成流程中的位置。