用Edge IO和Node-RED管理机器状态和零件数
  • 20 Dec 2022
  • 1 分钟阅读
  • 贡献者

用Edge IO和Node-RED管理机器状态和零件数


Article Summary

用Edge IO和Node-RED管理机器状态和零件数

了解如何使用机器可见性Node-RED流程与你的Edge IO

本文介绍了将断梁传感器和电流传感器连接到Edge IO的工作流程,以便在Tulip中管理状态和计数零件。这利用了Tulip的Node-RED库流程,可以导入到客户的边缘设备上。

在本文结束时,你将在Node-RED中拥有以下流程,将数据从你连接的传感器发送至Tulip中的机器。

你将需要完成以下步骤。

  1. 硬件设置。为边缘IO布线
  2. 机器设置。在Tulip中创建一个机器
  3. Node-RED设置。从Tulip库中导入、编辑和部署Node-RED流程

你需要的是什么?

  • 一个注册到你的郁金香账户的Edge IO

  • 当前的传感器。CR3111-3000或类似的电流互感器

    • 一个尺寸正确的电流互感器的负担电阻,如果是CR3111-3000,建议使用100欧姆(见硬件设置的尺寸)。
    • 断路梁
    • 3.5毫米平头螺丝刀

1.硬件设置--为边缘IO布线

这个工作流程假定你将使用一个电流互感器和一个连接到Edge IO的断线梁。

**计算负载电阻的大小。**如果使用CR3111-3000,我们建议使用100欧姆的电阻。如果使用不同的电流钳,你可以根据有效匝数比(T_e)和测量的最大电流(I_max)计算出允许的最大电阻尺寸(R_burden),如下所示。R_burden = 3.12 * T_e / I_max。你的电阻可以小于允许的最大电阻尺寸;这将降低你的传感器分辨率。

将你的电流钳(CR3111-3000)和断桥梁连接到你的Edge IO,如下所示。

  • 电流钳

    • 测量通过电源线进入你的机器的交流电流
    • 如图所示,在两根电流钳线之间安装电阻
    • 将一条线连接到差分ADC[+]端,另一条线连接到差分ADC[-]端。
    • 断开光束
    • 捕获部分的创建
    • 将棕线(+24V)连接到SAR ADC的+24V端子上
    • 将蓝线(gnd)连接到数字输入组的接地端子上
    • 将黑线(out)连接到数字输入组的第1针。

此外,确保你已经给设备供电,并通过将以太网电缆插入WAN端口将设备连接到你的网络。

2.机器设置 - 在郁金香中创建一个机器

为了将断裂梁和电流传感器的数据发送到郁金香,让我们首先使用郁金香API作为其数据源设置一个机器。请参考《如何使用机器属性API》一文中的设置新机器部分,以获得深入的概述。

在这个例子中,我们已经创建了一个具有两个属性的机器。

  1. 电流(float)--代表由传感器返回的电流。
  2. 零件计数(int)--来自断裂梁的信号,表示一个零件的完成。

你要注意你的attributeId和 machineId值,以传递给Node-RED流程。

如果你打算使用当前的传感器来改变诸如机器的状态等方面,或者根据传感器的输出来执行任何计数,你也可以设置一个机器类型来分配给该机器。如果对此感兴趣,请参考《如何设置机器类型》。

3.Node-RED设置

在连接到断梁和电流传感器的Edge IO上打开Edge Device Portal。使用以下凭证启动Node-RED编辑器。

  • 用户名:admin
  • 密码:你的Edge IO密码

查看更多信息,Edge IO上开始使用Node-RED。

3a.导入库流程

要导入库流程,请遵循我们的导入郁金香Node-RED流程文件中的步骤。要导入的流程是machine_visibility.json,导入后在编辑器中创建带有当前夹钳和Breakbeam标签的机器可见性

3b.流程概述

这个流程由两个独立的工作流组成。

零件计数器

第一个路径是通过断梁传感器监测零件计数。这个流程由四个功能节点组成。

  1. 监控引脚

    • 目的:定义 Edge IO 上的 GPIO 引脚,以便通过启用的引脚属性进行监控。
    • 过滤引脚向上
    • 目的:从消息的有效载荷中,确定是否要对其进行过滤。根据消息的有效载荷,确定被监控引脚上的事件是否为真。
    • 递增部件计数
    • 目的:在引脚事件为真时增加流量变量的部件数。
    • 郁金香机器属性。部件数
    • 目的:通过 API 将有效载荷(partCount)发送给 Tulip。

监测有效值电流

第二条路径是监测连接到ADC(模数转换器)输入的电流传感器。这个流程由六个功能节点组成。

  1. 差分ADC读数

    • 目的:将模拟配置文件分配给ADC输入。
    • 过滤1/5读数
    • 目的:提取每五个测量值(5秒)传递给Tulip。
    • 传递信息
    • 目的是:重新设置每一个读数的计数。将每五条信息的读数计数重置为零。
    • 删除信息和增量
    • 目的:对于所有其他读数,将读数增加到零。对于所有其他读数,将读数的数量增加1。
    • CR-3111 缩放
    • 目的:根据制造商的规格,对传感器的测量进行缩放。
    • 郁金香机器属性。RMS 电流
    • 目的:通过 API 将有效载荷(partCount)发送给 Tulip。

还有四个可选的节点,默认情况下是禁用的,但可以启用由Node-RED决定的机器状态。请注意,也可以在Tulip内部使用机器触发器来执行这个相同的逻辑。

  1. 电流是否 > 100mA?

    • 目的:检查电流值是否大于 100mA。
    • 状态 = ON
    • 目的:如果电流大于 100mA,则将有效载荷设置为 ON。
    • 状态 = 关闭
    • 目的:如果电流小于或等于 100 mA,则将有效载荷设置为 OFF。
    • 郁金香机器属性。状态
    • 目的:通过 API 向 Tulip 发送有效载荷(状态)。

3c.编辑流程

为了完成这个流程的设置,郁金香机器属性的设备信息**。部件数和郁金香机器属性。RMS电流**节点必须包括在前面设置的机器的属性Id和 机器Id字段中。

根据你使用的传感器,你可以另外编辑CR-3111缩放节点以反映你的电流变压器的匝数比。

3d.部署流程

随着Node-RED流程的建立和必要参数的添加,你可以部署你的流程并开始看到来自断裂梁和电流传感器的数据输出到Tulip。

通过选择Node-RED编辑器右侧的调试信息选项,你应该能够看到来自Tulip API的响应和相应的状态代码。

为了获得更多关于状态代码的信息,请浏览你的Tulip实例中的API文档(即.tulip.co/apidocs)。具体来说,请参考POST /attributes/report端点文档。

现在,你也可以通过浏览机器的配置选项卡,在Tulip中看到这些数据。

Node-RED流程的技术细节

下面是节点的详细摘要,以及与machine_visibility.json文件一起导入的它们的默认配置参数。

部件计数器

  1. 监控引脚

    • 目的:定义边缘 IO 上的 GPIO 引脚,以便通过启用的引脚属性进行监控。

    • 节点类型。数字输入

    • 默认属性。

      • 运行模式 -连续
      • 刷新率 -1 秒
      • 启用的引脚 -1
      • 引脚向上的过滤器
    • 目的。根据消息的有效载荷,确定被监控引脚上的事件是否为真。

    • 节点类型。开关

    • 默认属性:

      • 属性 -msg.payload
      • 规则 -是否为真
      • 递增部件计数
    • 目的:在引脚事件为真时增加流量变量的部分计数。

    • 节点类型。改变

    • 默认属性。

      • 规则。

        • flow.partCount设置为表达式$flowContext('partCount') + 1
        • msg.payload设置为flow.partCount
        • 郁金香机器属性。零件计数
    • 目的:通过API将有效载荷(partCount)发送到Tulip。

    • 节点类型。机器属性

    • 默认属性。

      • 设备信息* -{"attributeId":"", "machineId":"" }
      • 属性来源 -msg.payload

监测有效值电流

  1. 差分 ADC 读数

    • 目的:将模拟配置配置文件分配给 ADC 输入。

    • 节点类型。高速模拟

    • 默认属性。

      • 模拟配置 -差分ADC RMS @ 1kHZ

        • 选择要配置的 ADC -差分 ADC
        • 启用的输出 -RMS
        • 缓冲区大小 -1000
        • 采样频率(Hz) -1000+ 数据类型 -RMS+ 输出模式 -连续+ 刷新率(秒) -1
        • 过滤1/5读数
    • 目的:提取每五个测量值(5秒)传递给Tulip。

    • 节点类型。开关

    • 默认属性。

      • 属性 -flow.numReadings

      • 规则。

        • == 4
        • 否则
        • 传递信息
    • 目的。将每五条信息的读数计数重设为零。

    • 节点类型。改变

    • 默认属性。

      • 规则。

        • 设置flow.numReadings0
        • 丢弃信息和增量
    • 目的。对于所有其他读数,将读数的数量递增1。

    • 节点类型。改变

    • 默认属性。

      • 规则。

        • flow.numReadings设置为表达式$flowContext('numReadings') + 1
        • CR-3111 缩放
    • 目的:根据制造商的规格,对传感器的测量进行缩放。

    • 节点类型。子流程模板

    • 默认属性。

      • 属性 -数据
      • 规模* -3000
      • 偏移 -0
      • 郁金香机器属性。RMS电流
    • 目的:通过API将有效载荷(partCount)发送给Tulip。

    • 节点类型。机器属性

    • 默认属性。

      • 设备信息* -{"attributeId":"", "machineId":"" }
      • 属性来源 -msg.data[0]

计算机器状态的子流程

  1. 电流是否 > 100mA?

    • 目的:检查电流值是否大于 100mA。

    • 节点类型。开关

    • 默认属性。

      • 属性 -msg.data[0]

      • 规则。

        • > 0.1
        • 否则
        • 状态 = ON
    • 目的:如果电流大于 100 mA,将有效载荷设置为 ON。

    • 节点类型。改变

    • 默认属性。

      • 规则。

        • msg.payload设置为ON
        • 状态 = 关闭
    • 目的:如果电流小于或等于 100 mA,将有效载荷设置为 OFF。

    • 节点类型。改变

    • 默认属性。

      • 规则。

        • msg.payload设置为OFF
        • 郁金香机器属性。状态
    • 目的:通过API向Tulip发送有效载荷(状态)。

    • 节点类型。机器属性

    • 默认属性。

      • 设备信息* -{"attributeId":"", "machineId":"" }
      • 属性来源 -msg.payload

* 必须更新参数以使流程适当地工作。应根据制造商的建议修改当前传感器的刻度值。

进一步阅读


你找到你要找的东西了吗?

你也可以到community.tulip.co去发表你的问题,或者看看其他人是否遇到过类似的问题!


本文对您有帮助吗?