单片机学习小组
登录
直播中
efwedfd
8年用户
1069经验值
擅长:EMC/EMI设计
私信
关注
如何用单片机串口和modbus poll进行通信?
开启该帖子的消息推送
如何用
单片机
串口和modbus poll进行
通信
?
回帖
(1)
万腾龙
2022-2-22 11:10:36
由于程序中我的stm32单片机都是做的从机来和主机进行通信的,都是modbus协议通过串口来实现通信的。
之前为了调通串口,所以用的是单片机的串口和串口助手进行的通信,为了更方便的模拟主机modbus,我决定采用软件modbus poll. modbus poll 和 mo***ud slave 可以配套使用,在同一台电脑运行的时候,需要使用虚拟串口,并且分别连上两个虚拟串口,才能实现通信。但是在这里我们是为了调试单片机的从机功能,因此我们只用modbus poll来模拟主机,单片机来模拟从机设备发送modbus协议数据。
Modbus Poll
:Modbus主机仿真器,用于测试和调试Modbus从设备。该软件支持Modbus RTU、ASCII、TCP/IP。
Modbus Slave
: Modbus从设备仿真器,可以仿真32个从设备/地址域。每个接口都提供了对EXCEL报表的OLE自动化支持。
假设,单片机的串口引脚TX RX通过USB_TTL接到电脑后,电脑会显示当前串口为COM7,那么modbus poll也连接上COM7,不需要再虚拟串口了。关于其配置如下。在Setup里面确定好 从机号,功能号,要读取从机的寄存器地址,要读取从机寄存器的个数,以及每次发送数据间隔的时间。Display发送的数据格式我选的是unsigned 无符号型的,和单片机程序判断接收的格式一致。
接下来,点击connect,连接好 COM口,配置好波特率, 数据位, 校验位, 停止位。
可以点击Display--communication 查看数据的接收和发送,或者之间点击 lol 标志。
可以看到当发送数据 TX :10 04 00 00 00 01 32 8B的时候,
单片机的串口会回复 RX: 10 04 02 00 03 05 32
如此,数据就完美了。
对于mo***us 协议作一点说明:
主机:TX 10(从机地址) 04(功能码) 00 00(访问从机寄存器地址) 00 01(寄存器个数) 32 8B(16bit crc)
从机:RX 10(从机地址) 04(功能码) 02(字节长度) 00 03(返回数据) 05 32(16bit crc)
一个寄存器里面存放16位的数据,一个16位数据2个字节长度。
由于程序中我的stm32单片机都是做的从机来和主机进行通信的,都是modbus协议通过串口来实现通信的。
之前为了调通串口,所以用的是单片机的串口和串口助手进行的通信,为了更方便的模拟主机modbus,我决定采用软件modbus poll. modbus poll 和 mo***ud slave 可以配套使用,在同一台电脑运行的时候,需要使用虚拟串口,并且分别连上两个虚拟串口,才能实现通信。但是在这里我们是为了调试单片机的从机功能,因此我们只用modbus poll来模拟主机,单片机来模拟从机设备发送modbus协议数据。
Modbus Poll
:Modbus主机仿真器,用于测试和调试Modbus从设备。该软件支持Modbus RTU、ASCII、TCP/IP。
Modbus Slave
: Modbus从设备仿真器,可以仿真32个从设备/地址域。每个接口都提供了对EXCEL报表的OLE自动化支持。
假设,单片机的串口引脚TX RX通过USB_TTL接到电脑后,电脑会显示当前串口为COM7,那么modbus poll也连接上COM7,不需要再虚拟串口了。关于其配置如下。在Setup里面确定好 从机号,功能号,要读取从机的寄存器地址,要读取从机寄存器的个数,以及每次发送数据间隔的时间。Display发送的数据格式我选的是unsigned 无符号型的,和单片机程序判断接收的格式一致。
接下来,点击connect,连接好 COM口,配置好波特率, 数据位, 校验位, 停止位。
可以点击Display--communication 查看数据的接收和发送,或者之间点击 lol 标志。
可以看到当发送数据 TX :10 04 00 00 00 01 32 8B的时候,
单片机的串口会回复 RX: 10 04 02 00 03 05 32
如此,数据就完美了。
对于mo***us 协议作一点说明:
主机:TX 10(从机地址) 04(功能码) 00 00(访问从机寄存器地址) 00 01(寄存器个数) 32 8B(16bit crc)
从机:RX 10(从机地址) 04(功能码) 02(字节长度) 00 03(返回数据) 05 32(16bit crc)
一个寄存器里面存放16位的数据,一个16位数据2个字节长度。
举报
更多回帖
rotate(-90deg);
回复
相关问答
如何去实现
ModBUs
Poll
上位
机
和
单片机
之间的
通信
2021-09-18
2785
求大神赐教,51
单片机
的
串口
通信
MODBUS
协议的程序
2013-04-06
4338
stm32作为主站与
ModBus
Slave怎么
进行
调试?
2020-08-18
2172
如何对51
单片机
的
串口
通信
进行
Proteus仿真?
2021-07-19
2672
如何对STM32F103/STM32F107系列
单片机
进行
MODBUS
移植呢
2021-11-01
1489
请教
串口
通信
实现PC和
单片机
通信
的问题
2015-12-28
4663
请问
单片机
之间怎么
进行
通信
?
2019-05-06
3034
请问
MODBUS
通信
单片机
如何识别一帧信息的开始?
2023-10-13
178
labview与
单片机
通信
2016-06-27
5782
如
何用
单片机
串口
读取pc
机
实时时间?
2023-09-27
287
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分