使用 EMQ X Neuron 构建基于 Modbus 的 IIoT 应用

使用 EMQ X Neuron 构建基于 Modbus 的 IIoT 应用,第1张

随着物联网、大数据、云计算等新一代信息技术的发展变革,IoT 深入到各种行业与应用场景,整体呈现设备多态化、业务多样化、应用碎片化的趋势。尤其在工业物联场景中,工业设备种类繁多,设计总线、协议复杂多样,业务应用灵活多变,如何顺利实现工业设备上云是亟待解决的问题。 EMQ X 系列产品提供解耦工业设备与应用的能力,构造边缘到云端数据通路,建立智能、网络、轻量的数字化产品与服务模式,并与 5G 相融合,支撑工业行业应用创新

IIoT 即 Industrial Internet of Things 的简称,是指数以亿计的工业设备所形成的工业物联网。广义上来讲,是指在交通、能源、工业等部门的机械、车辆上应用仪器、连接传感器等设备。

随着 工业 40 概念的普及与行业实践的深入,传统的集中式控制模式向分散式增强型控制模式转变。同时,5G 时代的到来,也加速了传统工业改造和工业物联网化的进程。为了实现个性化、数字化的产品与服务的灵活生产,在工业设备智能化、网络化的过程中,需要将新旧工业设备连接到互联网中,实现对工业设备的数据采集、远程控制、配置更新等业务。EMQ X 系列产品可提供从工业网关到平台的整体解决方案,支持在厂区和工业现场等边缘端实现工业设备的数据汇聚并发送到云端。同时,其对边缘计算流数据的处理能力,可在平台端为工业物联网应用提供云端工业设备数据接入、数据存储以及与云端组态和应用的对接,方便工业互联网应用的快速开发。

以下,我们将通过 EMQ X Neuron 、 EMQ X Broker 构建基于 Modbus 的简易 IIoT 应用,并使用 MQTT X 订阅/展示数据。

EMQ 于近日发布了布署在边缘网关上的 工业协议接入软件 Neuron 。作为人与机器之间的桥梁,它可以把 TCP/IP 协议的 0/1 数据,转化重组成通俗易懂的 JSON 格式,并使用 MQTT 协议 输出到云端,更好地处理人与物之间的交互。

EMQ X Neuron 支持包括 Modbus、OPC 等在内的各类工业协议,可以基本满足大部分工业接入的需求,详细协议列表见下图。

1首先解压安装 EMQ X Neuron 软件包。

2在配置文件配置连接到 EMQ X Broker 的地址,配上用户名密码作为认证。

neuronconf 中修改 EMQ X Broker 服务端的 IP/ 端口,用户名/密码信息。

3启动 EMQ X Neuron 软件,无报错即为启动完成。

4登陆 EMQ X Neuron Web 界面,访问 IP:7000,默认用户名密码 admin/0000。

5点击 Edit Driver,编辑 Modbus tcp 地址。

6创建 Object,定义 Object 里面的内容。

在这个 Object 里面创建一个 Attribute,然后配置 Attribute 的信息,

这里模拟定义名称为 Err1@@2D7WS_GAS 的报警点位,点位位置为 1!1!07497。

在 EMQ X Broker 界面上可以查看连接的 EMQ X Neuron 网关,Client ID 为 EMQ X Neuron 网关随机生成一串字符。

配置刚才 1!1!07497 点位值为 1,然后进行数据上报。

点击 EMQ X Neuron 界面中的 Data Monitoring,Attribute 中配置 1!1!07497 点位的数值已经为 1。

打开连接好的 MQTT X,连接到 EMQ X Broker,订阅上面 EMQ X Neuron 发布的主题,在 MQTT X 可以收到 AlarmObj 里 2D7WS 的值为 1。客户端收到这些数据后,可以在应用界面上显示告警,也可以通过业务逻辑实现业务上的其它业务转换

以上我们使用 EMQ X Neuron、EMQ X Broker、MQTT X 等工具完整进行全流程的工业接入模拟测试,对于工业设备上云形成更加清晰与直观的认知。当然,您也可以结合 EMQ X Neuron 强大协议支持与 EMQ X Broker 强大的接入/转发能力,自己开发一套应用展示系统,构建一整套 IIoT 平台。

2020 年 9 月 底,我们将通过集成 Neuron , Edge 和 Kuiper 等软件,实现在边缘端的工业协议解析、数据汇聚和流式处理的一整套边缘解决方案;该方案通过与云端的 EMQ X Broker / Enterprise 等系列产品集成,则可以实现一个端到端的、从边缘到云端的完整工业解决方案。

物联网平台提供的IoT设备影子功能,在云端保存为一个JSON文档,用于存储设备上报状态、应用程序期望状态信息。设备在线时,可以直接获取云端指令;设备离线后,再次上线可以主动拉取云端指令。

应用场景

设备影子是一个JSON文档,用于存储设备上报状态、应用程序期望状态信息。

每个设备有且只有一个设备影子,设备可以通过MQTT获取和设置设备影子来同步状态,该同步可以是影子同步给设备,也可以是设备同步给影子。

场景1:网络不稳定,设备频繁上下线。

由于网络不稳定,设备频繁上下线。应用程序发出需要获取当前的设备状态请求时,设备掉线,无法获取设备状态,但下一秒设备又连接成功,应用程序无法正确发起请求。

使用设备影子机制存储设备最新状态,一旦设备状态产生变化,设备会将状态同步到设备影子。应用程序在请求设备当前状态时,只需要获取影子中的状态即可,不需要关心设备是否在线。

场景2:多程序同时请求获取设备状态。

如果设备网络稳定,很多应用程序请求获取设备状态,设备需要根据请求响应多次,即使响应的结果是一样的,设备本身处理能力有限,无法负载被请求多次的情况。

使用设备影子机制,设备只需要主动同步状态给设备影子一次,多个应用程序请求设备影子获取设备状态,即可获取设备最新状态,做到应用程序和设备的解耦。

场景3:设备掉线,控制指令下发。

设备网络不稳定,导致设备频繁上下线,应用程序发送控制指令给设备时,设备掉线,指令无法下达到设备。

使用设备影子机制,应用程序发送控制指令,指令携带时间戳保存在设备影子中。当设备掉线重连时,获取指令并根据时间戳确定是否执行。

设备真实掉线,指令发送失败。设备再上线时,设备影子功能通过指令加时间戳的模式,保证设备不会执行过期指令。

物模型是云平台为物联网产品定义的数据模型,用于描述产品的功能。将产品抽象成数据的集合,方便云端进行控制。

物模型从 属性 服务 事件 三个维度,分别描述了该实体是什么、能做什么、可以对外提供哪些信息。定义了物模型的这三个维度,即完成了产品功能的定义。

TSL 格式是一个 JSON 格式的文件,完整的 TSL 格式可以参考: 阿里云物模型 。

嵌入式端开发固件往往只需要关注少数几个参数,可以在产品的 功能定义 页面,单击 物模型TSL 精简物模型 里面查看。

需要关注的有 "properties","events","services",在 JSON 格式里,这三者都是数组,分别存储了该物模型的数据,事件和服务,在 C-SDK 里也就分别是 IOT_Linkkit_Report() 上报属性, IOT_Linkkit_TriggerEvent() 触发事件和注册为 ITE_SERVICE_REQUEST 的回调函数。

在上报属性时,只需要关注 "identifier" 名称对应的值(字符串),此时表示该属性在产品下的唯一标识。例如一个精简物模型属性为:

则上报的数据只需要为 {"count":10} 即可,需满足 JSON 字符串的格式,字符串内有一个名称/值对,名称为 "count"(物模型里 "identifier" 的值),值对为 10(满足物模型里数据类型为 int 的要求)。

触发事件需要关注 "identifier" 名称对应的值(字符串),表示该事件在产品下的唯一标识;还需要关注 "outputData",表示上报事件的输出值。一个精简物模型例子如下:

"outputData" 数组的使用与属性上报一致,这里就不介绍了。

服务调用需要同时关注 "identifier","inputData" 和 "outputData" 这三个名称,分别表示该服务在产品下的唯一标识,服务的输入参数,服务的输出参数。与函数调用有输入值和输出值类似,服务调用也有这些特征。

物模型数据校验方式目前有两种, 弱校验 免校验

也就是说,弱校验针对产品设备的上报数据,只要 idetifier 是一致的,且 dataType 字段满足要求,就接收该数据,并且在其他云端产品流转。

为什么云端可以设置和获取接入设备的属性呢?为什么接入设备可以上报事件给云端呢?又为什么云端可以调用接入设备提供的服务呢?这就是这一小节解释的内容。

物模型基于 MQTT 协议,MQTT 协议的介绍不在此处展开。

云端定义了一系列的 Topic,在设备接入云端时,C-SDK 向 MQTT broker 订阅了一些的 Topic,而云端需要与设备交互时,就向 MQTT broker 发布相应的 Topic,这样就完成了交互过程。同理,云端也会订阅一些 Topic,设备可以向这些 Topic 发布消息。

接入设备端订阅发布的 Topic 列表如下:

其中 ${productKey} 会替换为实际的产品名,${deviceName} 会替换为实际的设备名,${tsleventidentifier} 是事件的标识符,${tslserviceidentifier} 是服务的标识符,最大限度地保证了 Topic 的唯一性。

这些 Topic 的作用在后面用时序来描述。

无线通信技术:物联网设备可以通过蜂窝网络、Wi-Fi、蓝牙等无线通信技术与移动通信网络进行通信。例如,一个智能家居设备可以通过Wi-Fi连接到家庭路由器,然后通过互联网与用户的手机或平板电脑进行通信。
物联网平台:物联网平台是一个软件系统,用于管理和监控物联网设备,并将设备数据发送到其他系统。移动通信运营商可以提供物联网平台,让物联网设备和移动通信网络进行交互。例如,物联网设备可以将数据发送到移动通信运营商的物联网平台,然后由运营商将数据转发给用户的手机。

应用程序编程接口(API):移动通信运营商可以提供API,使开发人员能够将移动通信网络与物联网设备进行集成。例如,一个智能城市应用程序可以使用移动通信运营商的API获取城市中的交通传感器数据,以便实时更新交通情况。

5G技术:5G技术提供更高的带宽和更低的延迟,可以更好地支持物联网设备和移动通信网络之间的交互。例如,一个自动驾驶汽车可以使用5G技术与移动通信网络进行通信,以便实时获取路况和交通信号数据。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/13123513.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-04
下一篇 2023-06-04

发表评论

登录后才能评论

评论列表(0条)

保存