【EsDA应用】ModbusRTUMaster转MQTT

原创 ZLG致远电子 2023-11-22 11:34
随着物联网的迅速发展,越来越多的工业自动化设备需要上报数据到云。本文将基于EsDA开发套件快速实现将Modbus RTU协议的数据转换为MQTT格式,实现更灵活的数据传输和远程控制。


  项目简介
在物联网领域中,Modbus RTU是一种串行通信协议通常用于工业自动化领域,MQTT则是基于发布/订阅模式的消息传递的协议,并广泛应用于物联网设备间的通信。本文将介绍如何使用 EPC6450-AWI开发板 ,以及图形化设计工具AWFlow Designer将Modbus RTU协议转换为MQTT协议,实现物联网设备的数据传输与远程控制。

  项目概述
本项目主要将Modbus RTU数据转换为MQTT消息,然后通过MQTT协议将Modbus采集到的数据以主题消息的形式发送到MQTT服务器(在PC本地自搭建的emqx代理服务器),最后在PC端的MQTTX客户端上显示(MQTTX订阅相关主题的消息后,即可收到由MQTT服务器转发的Modbus数据主题的消息)。具体可以分为以下几个步骤:
  • Modbus RTU数据采集:通过modbus_master_in节点去采集Modbus RTU从站设备的数据;
  • 数据转换:将采集到的Modbus RTU从站设备的数据,通过modbus_parse_in和fscript节点转换为有效且能被mqtt_out节点接收的数据;
  • MQTT发布:mqtt_out节点可发布Modbus主题消息到MQTT云端服务器;
  • MQTT订阅:由MQTTX客户端工具订阅Modbus相关主题,接收并显示发布的Modbus主题消息。

  项目准备

客户可阅读以下相关文章,对Modbus协议和MQTT协议在EsDA上的使用操作上可以有更多的了解:
  • Modbus RTU Master 转 TCP Server
  • Modbus TCP Master转ZWS云
  • IO设备接入MQTT
  • EsDA MPC-ZC1应用——串口服务器(一)

1. 硬件准备

  • 在标有丝印为TF Card 丝印的卡槽处,插入SD卡。
  • 在标有丝印为UTX5和URX5的模块上,将TTL转USB串口模块的TX与板子丝印为RXD连接,TTL转USB串口模块的RX与板子丝印为TXD相连;并将串口模块的USB端口接入电脑。
  • 在标有丝印为Type-C 的接口处,插上Type-C线,并将Type-C的USB端口插入电脑。
  • 在标有丝印为NET0 或 NET1的RJ45网络插座处,插上网线水晶头,另一端的网线水晶头插在PC的网络插座上。

2. 软件准备

2.1 网络搭建
因为MQTT服务器是在PC端本地搭建的,所以与开发板通信的网口网络和PC的以太网网络在同一局域网下即可,不需要接入互联网。
出厂固件的NET0默认网口IP为:192.168.137.251,NET1默认网口IP为:192.168.137.252。所以配置PC上的以太网的IP与开发板的IP地址在同一局域网下如图所示。
PC端的网口配置成功后,执行电脑ping开发板的操作。
在应用开发中,可以使用shell命令行,执行开发板ping电脑的操作。
硬件连接上将丝印为DUART的调试串口上接TTL转USB的串口设备,TTL转USB设备另一端接PC电脑上(TX接RX,RX接TX);软件上打开第三方串口助手工具,在设备管理器中查看调试串口的端口信息,在串口助手工具上配置相对应的端口号和波特率(115200)等串口参数,就可以在输入窗口输入相关的shell命令了,也可在输出框查看打印信息。
输入ping + PC设备的IP地址(本机电脑的IP地址是192.168.137.223),在输出框中可以看到开发板是可以ping通电脑的(若ping不通可以将电脑端的防火墙关闭了再试试)。至此开发板和电脑之间互ping结束,网络搭建完成。

2.2 MQTT服务器搭建
2.2.1 下载EMQX。进入EMQX官网下载EMQX(开源物联网的MQTT消息服务器),选择Windows系统下的服务器版压缩包,点击下载。
EMQX官网:www.emqx.io/zh/downloads
2.2.2 对下载的压缩包解压后,cmd到bin目录下执行 emqx start 指令启动MQTT服务器。
2.2.3 在浏览器上输入 http://localhost:18083 网址登录MQTT服务器的网站,可以在此查看和配置MQTT服务器相关的参数,初始用户名是admin,初始密码是public。
2.3 MQTTX客户端使用

用户可以在【EsDA应用】IO设备接入MQTT 文章中的3.1.1 下载MQTTX章节查看相关内容,在此不再赘述。

2.4 Modbus Slave安装并使用
2.4.1 下载并安装Modbus Slave(Modbus从机模拟工具,软件可以免费试用30天)。

https://www.modbustools.com/modbus_slave.html

2.4.2 配置Modbus Slave工具

打开刚才安装的Modbus Slave软件。点击Connection–>Connection Setup,根据用户实际使用情况配置Modbus串行通信的设备参数,随后点击OK即可保存设置。

点击Setup->Slave Definition,根据用户实际使用情况配置Modbus通信协议的从设备参数,点击OK保存。
配置Modbus从设备对应寄存器的值如下图。

  项目实施
本项目主要分为以下四个部分:
  1. Modbus RTU Master采集Modbus从站设备寄存器的值;
  2. 将Modbus数据转换为MQTT协议消息内容的主体;
  3. 开发板上搭建的MQTT客户端发送Modbus主题消息到MQTT服务器;
  4. MQTT服务器将消息转发给订阅Modbus主题的MQTT客户端。
1. 流图绘制

添加modbus_master_in,modbus_parse_in,fscript和mqtt_out节点到画布中并连线如下图。

2. 节点配置

双击modbus_master_in节点,配置需要读取的Modbus从机ID和寄存器的参数,该节点的相关属性需要与前面配置的Modbus Slave模拟从机工具的参数一致。点击完成即可保存配置。

双击modbus_master_in节点的主机参数配置属性旁边的铅笔图标配置Modbus主机的参数配置,根据用户实际需要选择相关参数。本项目主要是使用rtu传输数据,EPC6450-AWI开发板用丝印为UTX/RX5的串口设备与从站进行Modbus通信。点击更新即可保存配置。
双击modbus_parse_in节点,根据用户实际需要选择进行数据转换的方式,该节点接收modbus输入形节点的原始数据,支持将不同数量的寄存器地址的值按序向其消费者节点进行输出。点击完成即可保存配置。

双击fscript节点,将读到的Modbus从站寄存器的值转换为mqtt_out节点可以接收的数据类型的值。点击完成即可保存配置。

var a = "modbus data is "
for(var i=0; i1) {    a = join(",",a,array_get(msg.payload, i))}

wb = wbuffer_create()wbuffer_write_string(wb,a)output.payload = wbuffer_get_data(wb)output.payloadLength = len(a)
双击mqtt_out节点,填写需要发布的主题名。点击完成即可保存配置。
双击mqtt_out节点的配置属性旁边的铅笔图标,相关参数根据用户实际使用情况填写,需注意的是主机地址填写与开发板网口进行MQTT通信的以太网IP地址,若使用emqx服务器则端口号通用为1883。点击更新按钮即可保存配置。

3. 下载验证

下载AWFlow流图到核心板中。

用户在MQTTX上位机上创建一个随机的MQTT客户端如下所示,点击连接按钮。

打开EMQX服务器网址,可以看到所有客户端的连接情况。由下图可知EPC6450-AWI开发板上的MQTT客户端和MQTTX上位机创建的MQTT客户端都已连接到EMQX服务器上了。
在MQTTX上创建的客户端上订阅开发板上发布的Modbus主题名,就可以收到来自MQTT服务器转发的Modbus主题消息如下图所示。至此,Modbus Master RTU转MQTT协议的项目就已实现。

  关联产品

  技术交流群
长按识别如下二维码可加入“EsDA嵌入式系统设计自动化交流群”,与志同道合的朋友交流,并有专业技术人员为您答疑解惑,如有问题可以咨询小致微信zlgmcu-888。

更多往期文章,请点击“ 阅读原文 ”。

评论
  • PLC组态方式主要有三种,每种都有其独特的特点和适用场景。下面来简单说说: 1. 硬件组态   定义:硬件组态指的是选择适合的PLC型号、I/O模块、通信模块等硬件组件,并按照实际需求进行连接和配置。    灵活性:这种方式允许用户根据项目需求自由搭配硬件组件,具有较高的灵活性。    成本:可能需要额外的硬件购买成本,适用于对系统性能和扩展性有较高要求的场合。 2. 软件组态   定义:软件组态主要是通过PLC
    丙丁先生 2025-01-06 09:23 82浏览
  •     为控制片内设备并且查询其工作状态,MCU内部总是有一组特殊功能寄存器(SFR,Special Function Register)。    使用Eclipse环境调试MCU程序时,可以利用 Peripheral Registers Viewer来查看SFR。这个小工具是怎样知道某个型号的MCU有怎样的寄存器定义呢?它使用一种描述性的文本文件——SVD文件。这个文件存储在下面红色字体的路径下。    例:南京沁恒  &n
    电子知识打边炉 2025-01-04 20:04 96浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 25浏览
  • 随着市场需求不断的变化,各行各业对CPU的要求越来越高,特别是近几年流行的 AIOT,为了有更好的用户体验,CPU的算力就要求更高了。今天为大家推荐由米尔基于瑞芯微RK3576处理器推出的MYC-LR3576核心板及开发板。关于RK3576处理器国产CPU,是这些年的骄傲,华为手机全国产化,国人一片呼声,再也不用卡脖子了。RK3576处理器,就是一款由国产是厂商瑞芯微,今年第二季推出的全新通用型的高性能SOC芯片,这款CPU到底有多么的高性能,下面看看它的几个特性:8核心6 TOPS超强算力双千
    米尔电子嵌入式 2025-01-03 17:04 55浏览
  • 自动化已成为现代制造业的基石,而驱动隔离器作为关键组件,在提升效率、精度和可靠性方面起到了不可或缺的作用。随着工业技术不断革新,驱动隔离器正助力自动化生产设备适应新兴趋势,并推动行业未来的发展。本文将探讨自动化的核心趋势及驱动隔离器在其中的重要角色。自动化领域的新兴趋势智能工厂的崛起智能工厂已成为自动化生产的新标杆。通过结合物联网(IoT)、人工智能(AI)和机器学习(ML),智能工厂实现了实时监控和动态决策。驱动隔离器在其中至关重要,它确保了传感器、执行器和控制单元之间的信号完整性,同时提供高
    腾恩科技-彭工 2025-01-03 16:28 170浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 107浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 87浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 138浏览
  • 光耦合器,也称为光隔离器,是一种利用光在两个隔离电路之间传输电信号的组件。在医疗领域,确保患者安全和设备可靠性至关重要。在众多有助于医疗设备安全性和效率的组件中,光耦合器起着至关重要的作用。这些紧凑型设备经常被忽视,但对于隔离高压和防止敏感医疗设备中的电气危害却是必不可少的。本文深入探讨了光耦合器的功能、其在医疗应用中的重要性以及其实际使用示例。什么是光耦合器?它通常由以下部分组成:LED(发光二极管):将电信号转换为光。光电探测器(例如光电晶体管):检测光并将其转换回电信号。这种布置确保输入和
    腾恩科技-彭工 2025-01-03 16:27 178浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 40浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 51浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 155浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 102浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 120浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 71浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦