使用 Neuron 接入 Modbus TCP 及 Modbus RTU 协议设备

简介: 作为一款支持数十种工业协议转换的物联网边缘工业协议网关软件,Neuron也已经实现了基于Modbus RTU协议TCP传输的功能。本文将在Ubuntu 20.04.3、X86_64的环境下,介绍如何使用Neuron接入Modbus TCP及Modbus RTU协议设备。

Modbus 是一种通用的工业标准,不同厂商生产的控制设备可以通过 Modbus 连成工业网络,进行集中监控。

Modbus TCP 与 Modbus RTU 是 Modbus 两种常用的传输方式, Modbus RTU 是串口通信,Modbus TCP 是 TCP 通信,两者在协议上非常相似,但是由于 TCP 协议的可靠性,Modbus TCP 协议中不需要校验,并且比 Modbus RTU 协议多一个应用报文头。

作为一款支持数十种工业协议转换的物联网边缘工业协议网关软件,Neuron 也已经实现了基于 Modbus RTU 协议 TCP 传输的功能。同时,在 Modbus 协议里,Neuron 根据配置的点位进行了策略优化,可实现自动批量采集设备数据的功能。

本文将在 Ubuntu 20.04.3、X86_64 的环境下,介绍如何使用 Neuron 接入 Modbus TCP 及 Modbus RTU。

Neuron 简介

Neuron 是可运行在各类物联网边缘网关硬件上的工业协议网关软件,旨在解决工业 4.0 背景下设备数据统一接入难的问题。通过将来自繁杂多样工业设备的不同协议类型数据转换为统一标准的物联网 MQTT 消息,实现设备与工业物联网系统之间、设备彼此之间的互联互通,进行远程的直接控制和信息获取,为智能生产制造提供数据支撑。

Neuron 支持同时为多个不同通讯协议设备、数十种工业协议进行一站式接入及 MQTT 协议转换,仅占用超低资源,即可以原生或容器的方式部署在 X86、ARM、RISC-V 等架构的各类边缘硬件中。同时,用户可以通过基于 Web 的管理控制台实现在线的网关配置管理。

配置环境说明

  • 请在官网 https://neugates.io/zh/downloads 下载 Neuron 软件并执行以下指令安装 Neuron 软件。

     sudo apt install ./neuron-2.0.1-linux-amd64.deb

    然后使用以下指令检查 Neuron 状态

     sudo systemctl status neuron
  • 请在 PeakHMI 官网 中下载 Modbus 模拟器并进行安装,之后打开 Modbus TCP slave Ex。

操作流程

在 Neuron 中将使用到 modbus-plus-tcp 和 modbus-rtu 两个插件,下面将介绍如何连接 Modbus TCP。

连接 Modbus TCP 示例

第一步,创建节点卡片

添加 Modbus TCP 设备.png

  1. 点击 添加设备
  2. 填写设备名称,例如 modbus-plus-tcp-1;
  3. 下拉框选择 modbus-plus-tcp 插件。

第二步,设备配置

在节点卡片中点击设备配置 按键,进入设备配置界面。

  1. 填写启动 Modbus 模拟器 所在的 IP 地址;

    1. 启动的 neuron 与 modbus 模拟器要在同一网段下;
    2. Modbus 模拟器所在的 windows 尽量关闭防火墙,否则有可能连不上 Neuron。
  2. 填写 Modbus 模拟器的端口号,一般默认是 502;
  3. 设置 Neuron 连接设备超时时间;
  4. 选择连接方式,Neuron 现在支持作为 Client 和 Server 两种连接模式,默认选择 Client 连接方式;
  5. 点击提交 完成设备配置,将卡片工作状态打开。

配置 Modbus TCP 1.png

配置 Modbus TCP 2.png

第三步,创建 Group 组

点击节点卡片任意空白处进入 Group* 列表界面。

  1. 点击创建
  2. 在弹框中填写 Group 名称,例如 group-1;
  3. 在弹窗中填写 Neuron 从设备读取数据和上传数据的时间间隔,例如,3000;
  4. 点击 创建 完成创建 Group;
*注:Group 可以理解为传感器的一类,例如一台设备下连接多台温度传感器和多台湿度传感器,就可以设置一个「温度」的 Group,将所有的温度传感器统一到一个组中。数据上报以及读取以 Group 为单位,用户可根据业务需求对点位进行分组。

Neuron 创建 Group.png

注:

Neuron 上配置不同站点的 Modbus 点位时,建议同一个 Group 下只包含一个站点的点位,或只包含一个站点下同一个数据区域的点位,以获得更高的配置采集效率。

第四步,创建 Tag

在 Group 中点击 Tag 列表创建 ,手动添加 tags。

  1. 填写 Tag 名称,例如 tag1;
  2. 填写 Tag 地址,例如 1!40001(详细地址配置规则请参考后面的延伸知识);
  3. 下拉选择属性,例如 Read,Write;
  4. 下拉选择数据类型,例如选择 INT16;
  5. 点击创建 ,添加一个 Tag;
  6. 也可以点击 添加 ,一次添加多个 Tags 后 再点击 创建

Neuron Tag 列表.png

Neuron Tag 列表1.png

Neuron 创建 Tag.png

创建完成后,Tag 列表将展示已创建的 Tag 信息,之后返回南向设备管理界面,等待 15s 左右,查看 Modbus 节点卡片的连接状态是否显示已连接 ,如下图所示。

Neuron 已创建 Tag 列表.png

Modbus 连接状态.png

若长时间未连接,请进行以下排查:

  • 对照模拟器,检查设备配置的 host 和 port 是否填写错误,可在运行 Neuron 服务器的终端执行 telnet 指令查看是否能访问远程服务器及端口;
  • 在运行 Neuron 服务器的终端,检查 502 端口是否被占用;
  • 检查模拟器的端口号是否是 502,在 file → settings 中查看 Port Number,如下图所示。

    Modbus 模拟器.png

第五步,数据监控查看数据

成功连接到 Modbus 模拟器之后,可以打开数据监控界面查看 Neuron 从 Modbus 模拟器上采集到的数据。

查看 Modbus 上报数据.png

连接 Modbus RTU 示例

步骤如 Modbus TCP ,但由于 Modbus RTU 是串口通信,所以设备配置 不同于 Modbus TCP。

连接 Modbus RTU 示例.png

  • Device,串口连接的路径;
  • Stop,停止位;
  • Parity,校验位;
  • Baud,比特率;
  • Data,数据位;

Neuron 已经支持基于 Modbus RTU 的 TCP 传输功能,应用配置如下图所示。

基于 Modbus RTU 的 TCP 传输功能.png

知识延伸

Neuron 中 Modbus 点位地址一般的配置格式是 SLAVE!ADDRESS,其中:

  • SLAVE 代表的是 Slave ID;
  • ADDRESS 指的是 PLC 地址:
区块 Modbus 区块编号
线圈 (coils) 0
输入寄存器 (input registers) 3
离散量输 (Input) 1
保持寄存器 (hold registers) 4

在指令中使用的是功能码和寄存器寻址地址,寄存器寻址地址是从 0 开始,不同的功能码对应不同的区块,PLC 地址是区块编号 + 寄存器寻址地址 + 1。例如,用的是 0x03 功能码,寻址地址是 0,对应 neuron 中的 ADDERESS 应为 40001。

结语

至此,我们完成了使用 Neuron 接入 Modbus TCP 和 Modbus RTU 协议设备的全部流程。作为一个为工业物联网的「连接」而生的边缘工业协议网关软件,Neuron 还支持 OPC UA、Siemens 等其他多种工业协议的接入,助力建设高效的工业物联网平台。

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
传感器 网络协议 Linux
在Linux中使用libmodbus库进行Modbus TCP通信
Modbus TCP是一种常见的工业通信协议,用于在自动化系统中传输数据。libmodbus是一个流行的C库,用于在Linux系统上实现Modbus TCP通信。本文将介绍如何使用libmodbus库在Linux上创建Modbus TCP通信的示例代码。
3847 0
|
传感器 Linux
在Linux中使用libmodbus库进行Modbus RTU主从机通信
Modbus RTU是一种常见的工业通信协议,用于在自动化系统中传输数据。libmodbus是一个流行的C库,用于在Linux系统上实现Modbus通信。本文将介绍如何使用libmodbus库在Linux上创建Modbus RTU主从机通信的示例代码。
6026 0
|
消息中间件 Java 物联网
一文搞懂MQTT,如何在SpringBoot中使用MQTT实现消息的订阅和发布
之前介绍了RabbitMQ以及如何在SpringBoot项目中整合使用RabbitMQ,看过的朋友都说写的比较详细,希望再总结一下目前比较流行的MQTT。所以接下来,就来介绍什么MQTT?它在IoT中有着怎样的作用?如何在项目中使用MQTT?
19140 63
一文搞懂MQTT,如何在SpringBoot中使用MQTT实现消息的订阅和发布
|
前端开发 JavaScript 物联网
JavaScript使用Modbus协议实现RTU设备连云
在阿里云物联网平台下发物模型属性设置数据,HaaS600Kit 接收并解析云端数据后控制 Modbus 继电器设备进行开关动作。
JavaScript使用Modbus协议实现RTU设备连云
|
自然语言处理 算法 机器人
PaddleNLP通用信息抽取技术UIE【一】产业应用实例:信息抽取{实体关系抽取、中文分词、精准实体标。情感分析等}、文本纠错、问答系统、闲聊机器人、定制训练
PaddleNLP通用信息抽取技术UIE【一】产业应用实例:信息抽取{实体关系抽取、中文分词、精准实体标。情感分析等}、文本纠错、问答系统、闲聊机器人、定制训练
PaddleNLP通用信息抽取技术UIE【一】产业应用实例:信息抽取{实体关系抽取、中文分词、精准实体标。情感分析等}、文本纠错、问答系统、闲聊机器人、定制训练
|
8月前
|
存储 安全 数据安全/隐私保护
STM32 Customer BootLoader 刷新项目 (一) STM32CubeMX UART串口通信工程搭建
本文介绍了基于STM32的Customer BootLoader刷新项目的第一部分:使用STM32CubeMX搭建UART串口通信工程。项目采用正点原子探索者v2开发板,通过USB串口与上位机通信,实现固件刷新功能。主要内容包括: 1. 硬件原理图介绍:详细描述了开发板的串口连接方式及电路图。 2. STM32CubeMX工程搭建:从创建新工程、配置系统时钟、USART串口设置到生成代码,一步步详细说明。 3. 代码编写:展示了如何使用HAL库实现串口接收和发送数据,并提供了main.c的完整代码。 4. 工程下载和调试:编译并下载工程到开发板,通过串口调试助手验证通信功能。
STM32 Customer BootLoader 刷新项目 (一) STM32CubeMX UART串口通信工程搭建
|
传感器 监控 网络协议
modbus协议的定义-钡铼技术
Modbus协议是一种广泛应用于工业自动化和控制系统中的开放通信协议,由Modicon公司于1979年发布。该协议定义了消息结构,支持RS232、RS485和TCP/IP等多种电气接口和传输介质,具备开放性、简单性和适应性强等特点。Modbus采用主从通信模式,支持ASCII、RTU和TCP三种传输模式,确保数据传输的可靠性和准确性。其主要作用包括设备通信、监控与控制以及提供标准化接口,简化系统集成并适用于多种应用场景。
|
数据安全/隐私保护
fastadmin中写接口是时Validate规则验证自定义如何用
fastadmin中写接口是时Validate规则验证自定义如何用
470 0
EMQ
|
存储 监控 网络协议
工业物联网数据桥接教程:Modbus 桥接到 MQTT
通过将 Modbus RTU 或 TCP 转换为 MQTT 消息,可以轻松地将设备数据发送到云端,并在需要时进行远程控制和监控。
EMQ
1266 0
工业物联网数据桥接教程:Modbus 桥接到 MQTT
|
存储 消息中间件 Linux
xenomai内核解析--实时IPC概述
本文介绍了在Xenomai实时内核下,实时任务与非实时任务如何进行通讯
352 0
xenomai内核解析--实时IPC概述