完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
由于程序中我的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个字节长度。 |
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2955 浏览 16 评论
3455 浏览 1 评论
8987 浏览 16 评论
4050 浏览 18 评论
1102浏览 3评论
570浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
568浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2301浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1857浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 01:58 , Processed in 0.942643 second(s), Total 49, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号