一站式工业边缘数据采集处理与设备反控实践

简介: 本文将详细介绍如何在Neuron中利用eKuiper将采集的设备端生产数据进行计算后发送到云端,以及eKuiper接收云端指令后通过Neuron反控设备的流程。

对接繁杂多样的工业协议、对海量设备产生的生产数据进行采集和处理一直是工业领域智能化推进的难点。EMQ 通过提供边缘工业协议网关软件 Neuron 和边缘流式处理引擎 eKuiper,分别解决了边缘侧设备数据的采集与处理。

之前,要想实现两个产品的协同工作,需要额外部署 MQTT broker 进行中转,对于用户来说步骤较为繁琐。自 eKuiper 1.5.0 和 Neuron 2.0 版本开始,两者实现了集成整合,用户可在 Neuron 中直接添加对应的北向应用节点与 eKuiper 进行通信。此前我们曾介绍过如何在 eKuiper 1.5.0 中借助 Neuron source 和 sink,在无需配置的情况下接入 Neuron 采集到的数据并进行计算

随着 Neuron 2.1 和 2.2 版本的相继发布,用户体验变得更加便捷:通过内置的 data-stream-processing 节点,用户甚至无需手动添加 eKuiper 节点,直接订阅 group 即可实现通信;通过代理 eKuiper 的 API,Docker 运行 Neuron 2.2 时不再需要映射 9081 端口。这些都将帮助大家更快速轻松地享受 Neuron+eKuiper 的工业协议接入与流式数据分析处理能力,实现生产数据的互联互通,挖掘边缘数据价值。

本文将以最新的 2.2 版本为例,详细介绍如何在 Neuron 中利用 eKuiper 将采集的设备端生产数据进行计算后发送到云端,以及 eKuiper 接收云端指令后通过 Neuron 反控设备的流程。

Neuron 与 eKuiper 通信机制

当前 Neuron 的 ekuiper 插件的实现使用了 NNG 库的 pair0 协议,通过 IPC 传输层与 eKuiper 通信,其中data-stream-processing北向节点作为服务器,eKuiper 作为客户端。由于 NNG 的 pair0 协议是一种点对点的协议,ekuiper 插件只允许实例化单个北向节点,并且因为使用的是 NNG 的 IPC 传输层,所以 eKuiper 需要与 Neuron 部署在同一机器中。

Neuron 上报数据到 eKuiper

在 Neuron 中通过data-stream-processing北向节点订阅南向设备节点,被订阅设备的点位数据经 NNG 的 IPC 传输层上报给 eKuiper。上报的数据为固定的 JSON 格式,如下所示:

{
  "timestamp": 1646125996000,
  "node_name": "node1", 
  "group_name": "group1",
  "values": {
    "tag_name1": 11.22,
    "tag_name2": "string"
  },
  "errors": {
    "tag_name3": 122
  }
}

其中,"node_name"域和"group_name"域分别是数据所属的节点名和组名。读取成功的点位数据以字典形式放在"values"域,点位名为键,点位数据为值。读取失败的点位数据以字典形式放在"errors"域中,点位名为键,错误码为值。

eKuiper 反控 Neuron

eKuiper 可以在数据处理后对 Neuron 进行反控。Neuron data-stream-processing北向节点收到数据后将其写入南向节点。

eKuiper 发往 Neuron 的数据需为符合以下格式的 JSON 数据:

{
    "node_name": "node1",
    "group_name": "group1",
    "tag_name": "tag_name1",
    "value": 1234
}

其中,"node_name"域和"group_name"域分别是数据所属的节点名和组名,"tag_name"域为点位名,"value"域为要写入的点位数据。

使用 eKuiper 对 Neuron 采集的数据进行处理

本节将通过一个简单的例子介绍如何使用 eKuiper 对 Neuron 采集的数据进行处理。

在这个例子中,我们会通过 Neuron 界面配置两个点位tag1tag2,配置一条 eKuiper 规则:当tag1的值超过42时,将tag2的值置 1。对应到实际场景中,tag1可以是对应着一个传感器(如温度传感器),tag2可以是对应着一个驱动器(如开关)。

部署 Neuron

Neuron 2.1 出于便利性考虑,在所支持的二进制安装包和 Docker 镜像中集成了 eKuiper 并为其添加了一个默认流neuronStream。Neuron 前端界面也增加了相应功能以支持和 eKuiper 交互,进行规则的添加、更新、删除等常规操作。因此用户无需另外安装 eKuiper,并且可以直接使用流neuronStream。Neuron 2.2 版本代理了 eKuiper 的 API,因此 Docker 运行时无需再映射 9081 端口。本节样例采用 Docker 容器部署方案。

运行如下命令启动 Neuron:

$ docker run -d                \
             -p 7000:7000      \
             -p 7001:7001      \
             --name neuron     \
             --privileged=true \
             emqx/neuron:2.2.8

以上命令暴露了几个端口,70007001是 Neuron 的 RESTFul API 端口。

添加南向节点

Neuron 启动之后,我们需要为 Neuron 添加一个 Modbus 南向设备,然后启动模拟器进行模拟数据采集。

南向设备和模拟器配置,请参考 Neuron 快速教程 ,完成到《运行和使用》中的“第九步,管理组的数据标签”之后,便可获得本例使用的两个点位配置,如下图所示:

添加南向节点 图1.png

启动数据流处理应用节点

北向应用管理界面中将有一个默认的data-stream-processing节点卡片,如下图所示。

北向应用管理 图2.png

点击 data-stream-processing 应用节点开始按钮,启动该节点。

订阅南向标签组

点击 data-stream-processing 应用节点任意空白处,进入订阅 Group 的界面,如下图所示。

订阅南向标签组 图3.png

订阅南向设备的数据组:

  1. 点击右上角添加订阅
  2. 点击下拉框,选择南向设备,本例中选择上一步构建的modbus-tcp-1
  3. 点击下拉框,选择要订阅的 Group,本例中选择上一步构建的 group-1
  4. 点击提交按键完成订阅。

完成这一步后,data-stream-processing 北向节点就能采集到modbus-tcp-1 南向节点的数据,并将其转发到 eKuiper 进行处理。

添加规则

点击新建规则,如下图所示。

新建规则 图4.png

在规则编辑界面,填写规则信息,如下图所示。

填写规则信息 图5.png

  1. 填写 Rule ID
  2. 填写SQLSELECT node_name, group_name, 1 as tag2 FROM neuronStream WHERE values->tag1 > 42
  3. 点击添加 ,为规则添加 sink 动作,每条规则可添加多条 sink 动作,详见下一步;
  4. 点击提交 完成规则的定义。

在添加动作的弹窗里设置 sink 的详细信息, 如下图所示。

设置 sink 的详细信息 图6.png

  1. 下拉选择 Sink;
  2. 填写节点名称;
  3. 填写分组名称;
  4. 填写标签字段;
  5. 选择 提交 完成 sink 动作的添加

启动规则

启动规则,如下图所示。

启动规则 图7.png

触发规则

打开 Neuron 数据监控页面,可以看到从模拟器读到的tag1tag2的初始值均为 0。

触发规则 图8.png

在模拟器中将tag1的值写为43, Neuron 读取到更新的点位值后,data-stream-processing节点将其上报给 eKuiper,而这就会触发之前设置的规则,继而使 eKuiper 发送一条写指令将tag2的值写为1。如下图数据监控页面所示,tag1的值为43tag2的值为1

触发规则 图9.png

结语

本文演示了使用 Neuron 与 eKuiper 进行边缘数据采集与处理的详细流程。通过两者的整合使用,工业领域用户可以实现一站式云边协同的数据采集、清理和反控,为打造工业物联网数据中心奠定基础。

版权声明: 本文为 EMQ 原创,转载请注明出处。

原文链接:https://www.emqx.com/zh/blog/industrial-edge-data-collection-and-processing

目录
相关文章
|
边缘计算 人工智能 负载均衡
什么是SD-WAN?
【4月更文挑战第15天】
7636 5
|
1月前
|
数据采集 传感器 监控
Modbus 与 MQTT 协议兼容:MyEMS 的泛在能源数据采集技术实现
MyEMS深度融合Modbus与MQTT协议,破解能源数据采集中协议碎片化、网络异构、数据孤岛等难题。通过Modbus接入95%以上工业设备,实现现场数据精准“拉取”;依托MQTT构建高效物联网传输通道,支持多源数据主动“推送”与云端集成。边缘侧采集规整,中心侧汇聚分析,形成统一、可靠、低延迟的数据流。该架构兼具高兼容性、强扩展性与低运维成本,广泛应用于工业园区、商业楼宇及集团型企业,支撑实时监控、AI分析与跨系统融合,打造泛在互联的能源数据底座,助力企业实现全面智慧能源管理。
152 6
|
4月前
|
人工智能 调度 芯片
《大模型背后的隐形战场:异构计算调度全解析》
在大模型训练中,CPU、GPU和AI芯片各司其职:CPU擅长逻辑控制,GPU专攻并行计算,AI芯片则针对特定AI任务优化。然而,实现三者的高效协同面临诸多挑战,如任务分配、通信延迟及资源管理等问题。通过动态任务分配、通信优化与资源调整等策略,可提升训练效率。未来,随着硬件进步和算法智能化,异构计算协同调度将更加高效,并结合云计算、边缘计算等技术拓展应用范围,推动人工智能技术发展。
236 15
|
前端开发 JavaScript 网络架构
实现动态路由与状态管理的SPA——使用React Router与Redux
【10月更文挑战第1天】实现动态路由与状态管理的SPA——使用React Router与Redux
340 95
|
Ubuntu Shell Go
Hi3519DV500 学习摘录
Hi3519DV500 学习摘录
191 3
|
SQL 数据可视化 关系型数据库
【MySql】MySQL排序分页查询数据顺序错乱的原因和解决办法
【MySql】MySQL排序分页查询数据顺序错乱的原因和解决办法
1045 0
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能】常用的人工智能框架、模型、使用方法、应用场景以及代码实例的概述
人工智能(AI)领域涉及众多框架和模型,这些框架和模型为开发人员提供了强大的工具,以构建和训练各种AI应用。以下是一些常用的人工智能框架、模型、使用方法、应用场景以及代码实例的概述。
1217 1
|
运维 API Apache
《Saltstack:自动化运维的瑞士军刀,让IT管理变得简单而强大》
【8月更文挑战第13天】面对服务器数量激增和网络复杂化,传统手动运维已难以应对。自动化运维工具Saltstack(简称Salt),基于Python开源,采用C/S架构,由Master和Minion构成,实现任务分发与执行。Salt具备配置管理、远程执行及云管理等功能。通过声明式状态文件,可确保系统符合预期配置;远程执行简化批量任务处理;集成云服务API实现资源动态管理。Salt以高效灵活的方式助力IT基础设施管理,成为现代运维不可或缺的利器。
307 1
|
存储 Linux Windows
LabVIEW 使用VISA Close真的关闭COM口了吗
LabVIEW 使用VISA Close真的关闭COM口了吗
244 1
|
供应链 区块链 数据安全/隐私保护
探索区块链技术在金融领域的应用与前景分析
本文将深入探讨区块链技术在金融领域的具体应用场景,分析其优势与挑战,并展望未来发展趋势。通过案例分析和技术解析,揭示区块链技术在金融行业中的革新意义及前景。
2172 15