跳到主要内容

AI 驱动文档

您想了解什么?

环境变量

您可以在 System Settings 中为每台相机定义环境变量。这些变量可在 Node-RED 中使用,让您可以在一个集中位置设置参数,例如 PLC IP、产线编号、Modbus IP、时区、FTP 服务器 等。这使得在不同产线之间复用同一个 Node-RED 流程变得简单,同时可针对每台相机定制行为。环境变量集还可以导出到 .txt 文件或 .txt 文件导入,从而简化部署和备份。

OV20i 出厂时内置三个变量——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 会重启,以便新值立即对流程可用。

Confirm Changes 模态框,警告环境变量更改时 Node-RED 将重启

Apply Changes 会重启 Node-RED

保存对环境变量的任何更改——添加、编辑或删除自定义变量,或更改任何内置字段——都会重启 Node-RED 运行时以使值生效。正在运行的检测会继续,但任何执行中的流程都会被中断。请在计划停机时进行更改,而不是在班次中间。

备份与恢复

Export .txt 按钮会将当前变量集下载为纯文本文件(KEY=VALUE 行)。Import .txt 会从之前导出的文件中恢复。使用此功能可在同一产线的多台相机之间克隆已知良好的配置,或在重新刷机前进行备份。

从 Node-RED 读取变量

在任何 recipe 上打开 IO模块,并点击 Advanced Mode 进入 Node-RED。相机环境变量通过三种方式暴露给流程——选择最适合您用例的方式。

1. 使用 payload 类型 env 的 inject 节点(最简单)

读取变量的最快方式是配置一个 inject 节点,其 payload 类型为 envpayload 为 <VAR_NAME>。触发时,inject 节点会向下游发送 msg.payload = <env 变量的值>——无需代码、无需 function 块。

Inject 节点配置:msg.payload = $ FTP_SERVER,payload 类型 env

将其连接到 debug 节点并触发 inject——debug 侧栏会显示已解析的值。

流程: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 代理配置:${MQTT_BROKER}
Modbus 主机MODBUS_IPModbus 节点 IP 字段
产线标识符(每台相机)LINE_NUMBERLINE_CODE(内置)标记到每条已发布的消息上以便追溯
告警升级阈值ALERT_THRESHOLD用于统计近期失败次数的 Function 节点
操作员通知列表ALERT_EMAILSEmail 节点的 "to" 字段
不要在此处放置机密信息

Environment Variables 页面是明文的,对任何具有 System Settings 访问权限的用户都是可见的。对于需要更强保护的机密(PLC 密码、签名令牌、证书),请改用 Node-RED 各节点上的凭证存储。

下一步