随着物联网的迅速发展,越来越多的工业自动化设备需要上报数据到云。本文将基于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 servermodbus tcp master转zws云io设备接入mqttesda 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系统下的服务器版压缩包,点击下载。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从设备对应寄存器的值如下图。
项目实施本项目主要分为以下四个部分:
modbus rtu master采集modbus从站设备寄存器的值;将modbus数据转换为mqtt协议消息内容的主体;开发板上搭建的mqtt客户端发送modbus主题消息到mqtt服务器;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协议的项目就已实现。
中关村手机产品关注排行榜:第一既不是OPPO也不是三星,竟然是vivo手机!
华为mate10什么时候上市?华为mate10最新消息:全面屏+金属机身+3D感测镜头,配置残暴,狙击iphone8
华为要推出鸿蒙操作系统的原因分析
浅谈脉冲功率技术的概念和应用
关于不同形式的组件排布的收益研究
【EsDA 应用】Modbus RTU Master 转 MQTT
已有35家供应链厂商跟进台积电赴日本投资
搭载快充技术的数据线,让你的手机充电快如闪电
Civil新闻平台,为什么要采用区块链技术?
莱盛隆植保无人机助力农业发展,专为农业致富而生
人工智能如何保证家庭安全市场?
RFID标签信息读取模块设计 大大减少了隐私被泄露的可能性
增强SoC总线访问安全的防火墙架构方案【基于AXI总线】
科创板西部超导董事、总经理冯勇介绍、履历信息
全项目土壤肥料养分速测仪
新一代NV SRAM技术
iphone14系列配置 价格是多少
干货 | 教你轻松掌握差分放大电路,看完这篇不踩坑
vivo新机vivox20自带王者荣耀外挂,这视野远超iPhone8
chotest5表面粗糙度测量仪器发展与展望