跳到主要内容

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 在各个节点上的凭据存储。

下一步