跳到主要内容

AI 驱动文档

您想了解什么?

环境变量

您可以在 System Settings 中为每个摄像头定义环境变量。这些变量在 Node-RED 中可用,让您能够在一个集中位置设置 PLC IP、line number、Modbus IP、timezone、FTP server 等参数。这使得在不同生产线之间复用同一 Node-RED 流程并按摄像头自定义行为变得轻而易举。环境变量集还可以导出到 .txt 文件或 .txt 文件导入,从而简化部署和备份。

OV10i 出厂时附带三个内置变量 — Line CodeCamera TimezoneDate Installed — 您还可以根据需要添加任意数量的自定义变量(Custom Variables)

何时使用环境变量

在以下场景下应使用环境变量:

  • 同一个值(PLC IP、MES URL、Modbus host、license key、阈值、line ID)被多个 Node-RED 节点引用。
  • 某个值在不同部署间存在差异,而您希望一个流程在任何地方都能运行 — 在每台摄像头上设置一次变量,而不是修改流程。
  • 您希望在多台摄像头之间共享流程(导出/导入),而不将部署相关配置泄露到 JSON 中。
  • 您需要让 IT 或操作员更改某个值(例如新的 FTP server),而无需打开 Node-RED。

在 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。会出现一个新的 Custom Variables 行,其中包含一对 key/value 输入框。键入键(不允许空格 — 仅允许字母、数字和下划线)和值,然后单击 Apply Changes

已填写 FTP_SERVER = ftp.factory.local 的自定义变量行

键命名

键是您在 Node-RED 中读取该变量时使用的名称。约定使用大写蛇形命名(例如 PLC_IPMODBUS_IPFTP_SERVERLINE_NUMBERALERT_THRESHOLD)— UI 不允许包含空格。

  1. 摄像头会在保存前提示您确认。应用时 Node-RED 将重新启动,以便新值立即对流程可用。

Confirm Changes 模态框警告:当 env vars 变更时 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 变量的值> — 无需代码,无需函数块。

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 broker URL、email 收件人列表等也是如此。这让您能够在一个位置(System Settings)设置部署相关配置,而无需修改流程。

常见模式

模式变量名称读取方式
PLC 连接PLC_IPPLC_PORTInject + env,或在 PLC 配置中使用 ${PLC_IP}
FTP 图像导出FTP_SERVERFTP_USERNAMEFTP 节点 host/凭据字段使用 ${...} 替换,或在 Function 节点中使用 env.get()
MES / data-historian 端点MES_ENDPOINTHTTP request 节点 URL:${MES_ENDPOINT}/api/...
MQTT brokerMQTT_BROKERMQTT broker 配置:${MQTT_BROKER}
Modbus hostMODBUS_IPModbus 节点 IP 字段
生产线标识(按摄像头)LINE_NUMBERLINE_CODE(内置)标记到每条发布的消息中以便追溯
警报升级阈值ALERT_THRESHOLD用于统计近期失败次数的 Function 节点
操作员通知列表ALERT_EMAILSEmail 节点的 "to" 字段
不要在此处发布密钥

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

后续步骤