IO块和Node-RED逻辑
  • 07 Oct 2024
  • PDF

IO块和Node-RED逻辑

  • PDF

Article summary

使用IO块菜单为每个捕获的图像定义合格/不合格规则,并使用内置的Node-RED编辑器自定义数字IO功能、复杂逻辑和基于网络的仪表板和用户界面。

配置IO通常是构建程序过程中的最后一步之一。

Node-RED

Node-RED是一个低代码、基于浏览器的环境,用于编程事件驱动的应用程序。有关该平台的更多信息,请访问其网站 - https://nodered.org/.要学习和探索Node-RED的全部功能,请参考其文档,特别是食谱指南。 在Node-RED之上,OV20i包含特定于Overview的节点,使其易于设置基本检查逻辑而无需编码。这些包括OV20i的默认流程和多个自定义节点。

特定于Overview的节点

我们将使用几个重要的紫色节点从相机获取数据。让我们逐一了解它们。

1. 所有模块输出

描述:“所有模块输出”模块是统一流水线系统中的重要组件。它负责在每次相机捕获后输出数据。汇集和处理所有AI模块数据,确保输出全面且详细。

功能:此模块以JSON对象的形式输出数据。数据包括各种AI流程的信息,例如检查、对齐、分类和分割。每次捕获的输出都经过细致结构化,以提供有关检查过程的有价值见解。

数据字段:

  • 检查数据:

    • 检查ID:每次检查递增的16位整型。

    • 检查时间:每次检查捕获的ISO 8601格式时间戳。

    • 图像URL:指向捕获图像的HTTP URL(jpg)。

  • 对齐数据:

    • 成功:指示部件是否成功对齐。

    • 中心位置X:对齐部件中心的x坐标。

    • 中心位置Y:对齐部件中心的y坐标。

    • 置信度:对齐的置信水平(0-1)。

    • 匹配角度:与模板匹配的角度。

  • 分类数据:

    • 预测:

      • ROI ID:预测的兴趣区(Region of Interest)ID。

      • ROI名称:预测的兴趣区名称。

      • 置信度:预测类别的置信水平(0-1)。

      • 预测类别:预测的类别名称。

  • 分割数据:

    • 置信得分阈值:用于处理分割模型输出的阈值(0-1)。

    • 斑块:

      • 中心X:斑块中心的x坐标。

      • 中心Y:斑块中心的y坐标。

      • 像素计数:斑块的总像素计数(面积)。

      • 主轴长度:主轴的像素长度。

      • 副轴长度:副轴的像素长度。

      • ROI ID:预测的兴趣区ID。

      • ROI名称:预测的兴趣区名称。

      • 预测类别:斑块的预测类别名称。

    • 类别:

      • 预测类别:类别名称。

      • 斑块数量:类别中斑块的数量。

      • 像素计数:类别中所有斑块的总像素计数(面积)。

2. 分类块逻辑

描述:“分类块逻辑”节点设计用于在分类块输出上设置和评估规则。此节点的输出是一个布尔值(真/假),这取决于是否所有规则通过或任一规则通过。

功能:如果没有默认设置的规则,如果所有检查返回“通过”类别,输出将为真。如果有任何类别不是“通过”,输出将为假。通过规则设置,此节点允许自定义,更具体地应用于分类结果。

关键特性:

  • 允许在分类块输出上设置特定规则

  • 基于规则评估的布尔输出(真/假)

  • 默认行为保证如果所有检查返回“通过”则输出为真,如果有任何检查不通过则为假

  • 可配置的置信度阈值以进行更精确的规则设置

  • 没有与其他组件的直接连接,允许灵活的未来集成

使用场景:

  • 通过验证所有检查输出是否符合定义的“通过”标准,确保质量控制的一致性

  • 适应各种检查要求的可自定义规则设置

  • 为自动决策过程提供明确的合格/不合格输出

3. 格式化数据以应用于PLC

描述:“PLC格式节点”旨在将块输出格式化为默认PLC格式。这确保了与各种PLC(可编程逻辑控制器)系统的兼容性,遵循其特定位顺序要求。

功能:此节点格式化从块输出的数据,根据目标PLC系统将其转换为适当的字节顺序。主要使用的两种字节顺序是:

  • 小端字节序:通常由Allen-Bradley PLC使用

  • 大端字节序:通常由Siemens PLC使用

通过正确格式化数据,该节点确保与相应PLC系统的无缝集成和通信,促进准确可靠的数据处理。

关键特点:

  • 将块输出格式化为默认PLC格式

  • 支持Allen-Bradley PLC的小端字节序

  • 支持Siemens PLC的大端字节序

  • 确保与各种PLC系统的兼容性和可靠数据交换

  • 提升自动控制过程的效率和准确性。

使用场景:

  • 将AI和自动化系统的数据输出集成到Allen-Bradley和Siemens PLC中

  • 确保正确的字节序转换以便PLC准确地解释数据

  • 在工业自动化设置中简化块输出与PLC之间的通信

4. 检查通过/失败

描述:“最终通过/失败输出节点”旨在设置和存储检查的最终通过/失败状态。该节点确保检查结果被清晰地定义、沟通并存档为一个布尔值。

功能:该节点处理检查结果,并输出指示总体状态的布尔值:

  • True:表示检查已通过。

  • False:表示检查未通过。

此节点输出通过/失败状态,并存储结果以供今后参考和分析。该节点通过提供清晰和记录的通过/失败输出来简化自动检查系统中的决策过程。它还确保所有结果被存档以进行可追溯性和质量控制。

关键特点:

  • 设置并存储检查的最终通过/失败状态

  • 输出一个布尔值:失败为false,通过为true

  • 确保检查结果的清晰和明确的沟通

  • 归档检查结果以供未来参考和分析

  • 提升自动化质量控制流程的效率

  • 与检查系统中的其他节点和组件无缝集成

使用场景:

  • 确定并存储制造中的质量控制检查结果

  • 基于检查结果自动化决策过程

  • 为集成下游系统和流程提供简单明了的通过/失败输出

  • 通过存档检查结果确保可追溯性和质量控制

5. 保存到库

描述:“捕获保存决策节点”决定是否将捕获的图像保存到库中。该节点输出布尔值以指示相同的决策。

功能:该节点处理捕获数据,并输出指示是否应保存捕获的布尔值:

  • True:表示捕获应保存到库中。

  • False:表示捕获不应保存。

通过提供明确的保存/不保存决策,该节点有助于有效地管理存储资源,并确保只有相关捕获被存档以供今后使用。

关键特点:

  • 决定捕获是否保存到库中

  • 输出布尔值:不保存为false,保存为true

  • 确保高效管理存储资源

  • 帮助存档相关捕获以供未来参考和分析

  • 与捕获和存储系统中的其他节点和组件无缝集成

使用场景:

  • 在自动化检查过程中决定是否保存捕获图像

  • 通过仅保存相关捕获来管理存储资源

  • 为集成下游系统和流程提供简单明了的保存/不保存输出

  • 确保重要的捕获被存档以供追溯和质量控制

6. 捕捉元数据

描述:"元数据分配节点"用于设置与每次捕捉相关联的元数据。这些元数据可以包括序列号、部件号或其他相关细节。分配的元数据将在库中显示于捕获数据旁边。

功能:此节点允许为每次捕捉添加元数据。元数据被构建为一个对象,带有字符串键和可为字符串或数字的值。这确保了每次捕捉都有重要的背景信息,便于以后的识别和参考。

关键特点:

  • 为每次捕捉分配元数据

  • 元数据可以包括序列号、部件号或其他相关信息

  • 结构为具有字符串键和字符串或数字值的对象

  • 确保库中的捕捉信息具备背景信息

  • 增强捕捉数据的可追溯性和识别性

使用场景:

  • 将序列号、部件号或其他标识符添加到捕捉的图像中

  • 为存储在库中的捕捉提供附加的上下文和信息

  • 促进捕捉物在分析和复查中的识别和参考

  • 将元数据与捕捉和存储系统中的其他节点和组件集成

7. 输出

描述:"数字输出节点" 用于控制OV20i的M12连接器上的输出引脚。节点根据布尔值打开或关闭引脚。

功能:

  • 真:将引脚打开。

  • 假:将引脚关闭。

数字输出节点操作简便且没有可编辑属性,确保一致和可靠的性能。

接线图:

引脚配置:

引脚 #

尾线

描述

10

紫色

输出 1

11

灰色 / 粉色

输出 2

关键功能:

  • 控制 OV20i 的 M12 连接器上的输出引脚

  • 布尔值确定引脚的状态(开/关)

  • 无可编辑属性,确保简便性和可靠性

使用场景:

  • 通过开关特定输出引脚实现控制过程自动化。

  • 与其他控制系统集成进行协调操作。

  • 为 OV20i 提供简便的数字输出控制界面

8. 车载状态 LED

描述:车载状态 LED 节点用于控制 OV20i 顶部的车载状态 LED。该 LED 可以显示多种颜色,包括黄色、橙色和绿色。

功能:

  • True: 打开 LED。

  • False: 关闭 LED。

该节点提供一个简单的接口来控制状态 LED,使其易于指示设备的不同状态或状态。

LED 颜色:

  • 黄色

    橙色

    绿色

关键功能:

  • 控制 OV20i 上的车载状态 LED

  • 布尔值确定 LED 的状态(开/关)

  • 支持多种 LED 颜色:黄色、橙色和绿色

  • 提供设备状态的视觉指示

使用场景:

  • 指示 OV20i 的操作状态

  • 为各种系统状态或警报提供视觉反馈

  • 通过清晰的状态指示器增强用户界面

9. 调试节点

描述:调试节点是显示编辑器内调试侧栏消息的重要工具。它提供了接收消息的结构化视图,方便探索和分析。

功能:

  • 在调试侧栏显示消息。

  • 提供有关每条消息的详细信息,包括接收时间和源调试节点。

  • 允许用户点击源节点 ID 在工作区内显示该节点。

  • 节点上有一个按钮以启用或禁用其输出。

  • 可以配置为将所有消息发送到运行时日志。

  • 您可以将简短消息(32字符)发送到调试节点下的状态文本。

关键功能:

  • 结构化消息视图:调试侧栏组织消息,使其易于探索和分析。

  • 时间戳和源信息:每条消息包含接收时间和源调试节点。

  • 节点显示:点击调试侧栏的源节点 ID 可以在工作区显示该节点。

  • 启用/禁用输出:节点上的按钮允许用户启用或禁用其输出。

  • 运行时日志:可以将节点配置为将所有消息发送到运行时日志以进行持久记录。

  • 状态文本:可以将简短消息(32字符)发送到调试节点下的状态文本以便快速参考。

使用建议:

  • 禁用或移除未使用的调试节点以减少混乱和提高性能。

  • 在开发和测试期间使用调试节点来调试和分析消息流。

使用场景:

  • 在编辑器中监控和调试消息流

  • 分析节点接收的消息的结构和内容。

  • 快速识别和定位源节点在工作区进行进一步检查。

  • 将重要的运行时信息发送到日志以进行持久监控。

  • 在调试节点下直接显示简短状态更新以便快速参考。

Node-RED 基础

  1. 上下文标签

描述:Node-RED 提供了一种存储信息的方法,可以在不同节点之间共享,而无需依赖于流动中传递的消息。

功能:上下文存储允许在 Node-RED 环境中的各种节点和流程之间保存和共享数据。这对于维护状态、共享配置数据或缓存信息非常有用。

上下文范围:特定上下文值的“范围”决定了谁可以访问它。上下文范围有三个级别:

  • 节点上下文:

    • 范围:仅对设置该值的节点可见。

    • 使用案例:这种存储类型适合存储特定于单个节点的数据,例如临时状态信息或本地设置。

  • 流程上下文:

    • 范围:对同一流程(或编辑器中标签)上的所有节点可见。

    • 使用案例:这对于在相同流程内的节点之间共享数据非常有用,例如共享配置数据或中间结果。

  • 全局上下文:

    • 范围:对所有流程的所有节点可见。

    • 使用案例:适用于需要被 Node-RED 实例中的任何节点访问的数据,例如全局配置设置或应用程序范围的状态。

关键特性:

  • 节点上下文:仅限于设置值的节点,确保数据处理的封装性。

  • 流程上下文:可供同一流程内的所有节点使用,方便共享数据。

  • 全局上下文:对所有节点可用,在整个 Node-RED 实例中共享数据。

使用场景:

  • 节点上下文:存储仅与单个节点相关的临时状态信息或本地设置。

  • 流程上下文:在同一流程内的节点之间共享中间结果或配置数据。

  • 全局上下文:维护需供任何节点访问的全局配置设置或应用程序范围的状态信息。

好处:

  • 数据持久性:允许数据不经过消息流就被存储和访问。

  • 范围灵活性:提供从节点特定到全局访问的不同数据共享级别。

  • 状态管理:促进跨节点和流程管理状态和配置数据。

  1. 部署按钮

描述:Node-RED 中的“部署按钮”是一个关键的编辑器组件,允许用户管理、应用和推送配置到他们的 Node-RED 实例。一个正在运行的配置由多个流程对象组成,每个对象对应于编辑器中的一个节点。此外,一个全局流程对象管理全局配置节点和子流程定义。

功能:

  • 流程对象:在 red/runtime/nodes/flows/Flow.js 中定义,流程对象负责创建、启动和停止它包含的所有节点。流程对象创建时,接收其自身配置和对全局流程对象的引用,以便访问全局配置和子流程。

  • 节点对象:在 red/runtime/nodes/Node.js 中定义的基本节点对象,由流程对象实例化。对于子流程实例,创建子流程内每个节点的本地实例。

  • 完整部署:在完整部署期间,流程对象实例化其拥有的所有节点对象。相反,当流程停止时,所有节点都会停止并清理。

    修改节点/流程部署:仅部署修改的节点或流程时,启动/停止功能使用不同的对象识别变更并仅更新必要的组件。

流程对象管理:

  • 流程对象的创建和管理由 red/runtime/nodes/flows/index.js 中的运行时处理。

  • 运行时通过管理 API 提供的流程配置,将节点对象的平面数组转换为结构化格式。

  • 然后将该结构化对象拆分并传递给各个流程对象。

  • 在修改节点/流程部署的情况下,运行时生成配置之间的差异以确定必要的更新。

关键特性:

  • 流程管理:处理每个流程对象内节点的创建、启动和停止。

  • 全局访问:每个流程对象都可以通过对全局流程对象的引用访问全局配置和子流程。

  • 高效部署:支持完整和修改节点/流程部署,确保高效更新和最小化干扰。

  • 运行时集成:由运行时管理,提供与 Node-RED 管理 API 和配置过程的无缝集成。

使用场景:

  • 流程创建:自动处理节点和子流实例的实例化,当创建新流程时。

  • 流程更新:在部署期间仅更新修改的节点或流程,从而减少停机时间并提高性能。

  • 全局配置:确保所有流程都可以访问全局配置和子流,促进一致性和重用。

  1. 导入和导出 Node-RED

描述:Node-RED 页面允许用户导出和导入 JSON 流程配置。此功能可实现不同环境或实例之间的项目共享、备份和传输。

功能:

  • 导出 JSON:

    • 用户可以将当前的流程配置导出为 JSON 文件。

    • 导出的 JSON 包含所选流程中的所有节点、配置和连接。

    • 此 JSON 文件可以本地保存或与他人共享,以进行协作或备份。

  • 导入 JSON:

    • 用户可以将含有流程配置的 JSON 文件导入到他们的 Node-RED 实例。

    • 导入的 JSON 将被解析并集成到现有的 Node-RED 环境中。

    • 这使得快速设置预定义流程或恢复以前保存的配置成为可能。

导出 JSON 步骤:

  1. 打开相机的 Node-RED 编辑器。

  2. 选择流程:根据需要选择要导出的流程,这可以通过选择特定节点或整个选项卡来实现。

  3. 导出选项:单击编辑器右上角的菜单按钮(三条水平线),然后选择“导出”。

  4. 选择格式:在导出对话框中,选择 JSON 格式,并选择是导出所选节点还是整个流程。

  5. 复制/下载 JSON:将生成的 JSON 复制到剪贴板或下载为文件。

导入 JSON 步骤:

  1. 打开相机的 Node-RED 编辑器。

  2. 导入选项:单击编辑器右上角的菜单按钮(三条水平线),然后选择“导入”。

  3. 粘贴 JSON:将 JSON 数据粘贴到导入对话框或上传 JSON 文件。

  4. 导入流程:点击“导入”以将 JSON 数据集成到您的 Node-RED 实例中。

  5. 部署:导入后单击“部署”按钮以应用新流程。

关键特性:

  • 数据可移植性:轻松在不同的 Node-RED 实例之间传输流程配置。

  • 协作:与团队成员或更广泛的社区分享流程设置。

  • 备份:创建您的 Node-RED 配置备份以备安全之用。

  • 快速设置:使用预定义的 JSON 配置快速设置新环境。

使用场景:

  • 协作开发:与同事共享流程配置进行协作开发和故障排除。

  • 迁移:将 Node-RED 设置从一个服务器或环境迁移到另一个。

  • 备份和恢复:创建流程配置的备份以防止数据丢失,并轻松恢复。

  • 模板共享:在 Node-RED 社区内分发通用的流程模板或最佳实践。

Node-RED 仪表板

描述: Node-RED 仪表板为 Node-RED 提供基于网页的界面,使用户能够创建和显示实时数据可视化、控制界面和仪表板。这一功能对于实时监控和与 Node-RED 流程的交互至关重要。

功能:

  • 用户界面创建:

    • 它允许用户使用各种 UI 组件设计自定义仪表板,如图表、仪表、文本、滑块、按钮等。

    • 可以排列和样式化组件以创建直观和功能化界面。

  • 实时数据可视化:

    • 显示来自 Node-RED 流程的实时数据,提供对系统性能和指标的即时洞察。

    • 支持动态更新,确保仪表板反映最新数据。

  • 控制界面:

    • 包括交互元素,如按钮和滑块,以直接从仪表板控制流程和过程。

    • 使用户能够发送命令和调整设置,而无需访问 Node-RED 编辑器。

  • 响应式设计:

    • 仪表板可以从任何带有网络浏览器的设备访问,包括桌面电脑、平板电脑和智能手机。

    • 确保仪表板布局能够适应不同屏幕尺寸和方向。

关键组件:

  • 布局管理器:

    • 提供拖放界面,用于在仪表板上安排 UI 组件。

    • 允许用户创建结构化和有组织的布局。

  • UI 节点:

    • 各种节点可用于将功能添加到仪表板,包括:

    • ui_button: 添加用于触发操作的按钮。

    • ui_chart: 显示用于可视化数据趋势的线条、条形图和饼图。

    • ui_gauge: 显示用于监控值范围的仪表。

    • ui_text: 显示静态或动态文本值。

    • ui_slider: 允许用户使用滑块控件调整值。

  • 主题定制:

    • 用户可以定制仪表板的外观,包括颜色、字体和样式,以匹配他们的偏好或企业品牌。

创建仪表板的步骤:

  • 将 UI 节点添加到流程中:

    • 可以从调色板中拖放 UI 节点到您的流程中,以定义您希望在仪表板中包含的数据和控制。

  • 配置 UI 节点:

    • 配置每个 UI 节点的属性,如标签、范围和数据源。

  • 排列组件:

    • 使用布局管理器排列仪表板上的 UI 组件,创建逻辑和用户友好的布局。

  • 部署并访问仪表板:

使用场景:

  • 控制界面:

    为用户提供交互控制,以管理和调整过程,如打开或关闭设备、设置门限或根据相机的输出调整配置。

  • 数据可视化:

    创建数据趋势的可视化表示,帮助用户快速分析和解析复杂信息。

  • 用户交互:

    使最终用户能够与 Node-RED 应用程序交互,而无需了解底层流程的技术知识。

此处可找到更深入的解释和示例。


Was this article helpful?

What's Next
ESC

Eddy AI, facilitating knowledge discovery through conversational intelligence