Neuron在工业物联网统一接入系统中的使用

74 阅读6分钟

  什么是neuron

  Neuron 是一款开源的、轻量级工业协议网关软件,支持数十种工业协议的一站式设备连接、数据接入、MQTT 协议转换,为工业设备赋予工业 4.0 时代关键的物联网连接能力。

  

  为什么选择neuron

  1. 开放源码-核心框架和 Modbus 驱动的代码在 LGPL 下授权。

  2. 多种协议-支持访问 20 多种工业协议,包括 Modbus、OPC-UA,以及更多。

  3. 边缘原生-实时运行以利用边缘的超低延迟的工业数据处理。

  4. 高性能-连接数百个工业设备,轻易地处理超过 10,000 个数据点。

  5. 超轻量级-具有较低的内存佔用,小于 10M,在低配置的硬件上运行。

  6. 便携式部署-可在 X86、ARM、RISC-V 和其他架构的边缘硬件上进行部署。

  

  产品架构

  Neuron 是基于现代消息总线架构设计的,具有高性能、可扩展性和可延伸性。

  

图片

  快速上手

  Nruron服务器的部署

  1. 下载

  Neuron: 开源工业协议网关软件 (neugates.io),从官方网站上点击下载

  

图片

  选择符合对应服务器的安装包或选择docker部署

图片

  2. 安装

  此次演示通过二进制安装包安装.

  (1) 首先将下载的安装包上传到服务器上,然后选择合适位置创建文件夹方便统一管理

  (2) 解压压缩包- tar -zxvf neuron-2.6.7-linux-amd64.tar.gz

  

图片

  (3)然后通过./neuron –d 启动neuron.

  (4)启动neuron之后可以通过http://x.x.x.x:7000登录到neuron的管理控制台,初始用户名密码为admin 0000

  

图片

  (5) 登陆进入后可以通过右上角切换中文   

图片

  此次演示选用modbus tcp作为北向设备连接协议,使用Modbus Slave模拟器模拟设备连接

  1. 启动modbus模拟器,配置存储区为4区,可支持读写操作

图片

  2. 选择地址框输入模拟数据

图片

  3. 配置完成后回到管理页面选择南向连接,选择添加设备,插件选择modbus tcp

图片

  4. 然后配置设备连接

图片

  配置完成后在工作状态栏会显示运行中

图片

  5. 点击设备名进入组列表

图片

  6. 点击创建创建分组

图片

  7. 创建完成后点击组名进入点位列表点击创建创建点位

图片

  8. 其中感叹号前面1代表设备id后面40001代表地址位

图片

  

图片

  9. 配置完成之后便可以在主页数据监控除查看设备上报数据

图片

  注意: 需要先选择设备及分组

  建立北向连接

  本次演示通过mqttx客户端来进行建立连接

  1. 选择北向应用菜单,选择添加应用

图片

  2. 然后配置mqtt服务器地址及端口用以建立mqtt连接收发消息

图片

  3. 选择应用添加订阅将设备上报消息发送值emqx服务器,再通过mqttx监听对应topic接收消息

图片

  订阅topic接收消息

图片

  通过mqttx客户端连接emqx消息队列,监听在创建北向应用中创建分组时指定的topic,便可以接收到设备上报的消息

图片

  接收到的消息会在mqttx的页面显示

图片

  可通过查看消息内容确定是否与模拟器上设置的值相同.

  通过mqttx向neuron发送读写请求从而操作设备

  读请求

  通过往固定的topic”/neuron/{node_name}/read/req”发送消息,来读取指定的设备,指定点位的数据

  消息格式:

  {

  "uuid": "bca54fe7-a2b1-43e2-a4b4-1da715d28eab",

  "node": "modbus",

  "group": "grp"

  }

  node: 某个南向节点名字。

  group: 南向节点的某个组的名字。

  uuid: 唯一的标志,会在响应中原样返回用以区分对应的请求。

  注意:

  topic中的node_name是北向应用的名称,消息中的node和group为南向设备的名称和其中的分组,因为可能某些设备不支持读取单个点位,所以neuron优化了读取,每次读取一组点位.

  读响应

  固定的topic

  ”/neuron/{node_name}/read/resp”

  消息格式:

  {

  "uuid": "bca54fe7-a2b1-43e2-a4b4-1da715d28eab",

  "tags": [

  {

  "name": "tag0",

  "value": 4,

  },

  {

  "name": "tag1",

  "error": 2014

  }

  ]

  }

  其中tags便是这一组点位数据的集合,里面包含请求中指定组的所有点位一次完整的读请求响应流程

图片

  写请求

  Topic: 写请求的topic是可以在创建北向应用时自定义设置的

图片

  无固定的topic.

  消息体:

  {

  "uuid": "cd32be1b-c8b1-3257-94af-77f847b1ed3e",

  "node": "modbus",

  "group": "grp",

  "tag": "tag0",

  "value": 1234

  }

  Uuid: 唯一的标志,会在响应中原样返回用以区分对应的请求。

  Node: 某个南向节点名字。

  Group: 南向节点的某个组的名字。

  Tag: 要写入的点位名字。

  Value: 要写入的值

  写响应

  Topic: 与请求topic相同都是自定义

  消息体:

  {

  "uuid": "cd32be1b-c8b1-3257-94af-77f847b1ed3e",

  "error": 0

  }

  uuid:与对应请求的uuid相同,

  error: 错误码,为0则代表,写入成功

  一次完整的流程,再发送完写请求之后可以通过模拟器查看值是否被更改了

图片

  一次写多个

  Topic与写请求相同,只是消息体有所不同

  消息体:

  {

  "uuid": "cd32be1b-c8b1-3257-94af-77f847b1ed3e",

  "node": "modbus",

  "group": "grp",

  "tags": [

  {

  "tag": "tag0",

  "value": 1234

  },

  {

  "tag": "tag1",

  "value": 5678

  }

  ]

  }

  将单独一个tag放入到了一个tags集合从而实现一次请求写多个点位.

  完整流程如下:

图片

  以上便是对于neuron的一些入门操作,如有不足望大家指正.