什么是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的一些入门操作,如有不足望大家指正.