OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3292|回复: 9

新手初次接触modbus,这样算主机发送成功了吗

[复制链接]

10

主题

778

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6731
金钱
6731
注册时间
2017-4-12
在线时间
1257 小时
发表于 2017-8-8 11:51:03 | 显示全部楼层 |阅读模式
但是我用串口1发送回来,用串口助手看其中一个数据,却一直都是0。

如图,用modbus slave和STM32通信,出现这样的界面,算通信成功了吗?

如图,用modbus slave和STM32通信,出现这样的界面,算通信成功了吗?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
发表于 2017-8-8 13:59:47 | 显示全部楼层
电子人生!
回复 支持 反对

使用道具 举报

10

主题

778

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6731
金钱
6731
注册时间
2017-4-12
在线时间
1257 小时
 楼主| 发表于 2017-8-8 14:08:29 | 显示全部楼层

我用串口1传回接收中的第3个数据,可是一直为0,不知道是啥情况
回复 支持 反对

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
发表于 2017-8-8 14:37:25 | 显示全部楼层
245925587 发表于 2017-8-8 14:08
我用串口1传回接收中的第3个数据,可是一直为0,不知道是啥情况

你上面截图中的帧 一直是0啊   数据当然是0
电子人生!
回复 支持 反对

使用道具 举报

10

主题

778

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6731
金钱
6731
注册时间
2017-4-12
在线时间
1257 小时
 楼主| 发表于 2017-8-8 14:55:29 | 显示全部楼层
翱翔云端的鸟 发表于 2017-8-8 14:37
你上面截图中的帧 一直是0啊   数据当然是0

这个软件不是收到一串命令,然后返回一串的吗,就是图中Tx的那些,发回去后我用串口1在发出去,串口助手一直都是00,全部都是,,主机用的串口2
回复 支持 反对

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
发表于 2017-8-8 18:00:08 | 显示全部楼层
你的意思是:  
STM32的串口2当做modbus主机  给PC端的modbus slave发送帧  01 03 00 00 00 01 84 0A
然后PC端的modbus slave会响应这个帧,然后给STM32发送 01 03 02 00 00 B8 44给串口1   然后串口1接收这个响应帧01 03 02 00 00 B8 44  然后通过串口助手打印出来  结果打印的结果一直是00
电子人生!
回复 支持 反对

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
发表于 2017-8-8 18:00:57 | 显示全部楼层
翱翔云端的鸟 发表于 2017-8-8 18:00
你的意思是:  
STM32的串口2当做modbus主机  给PC端的modbus slave发送帧  01 03 00 00 00 01 84 0A
然 ...

上代码吧  我也不知道你错哪了
电子人生!
回复 支持 反对

使用道具 举报

0

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2017-8-1
在线时间
19 小时
发表于 2017-8-8 18:22:30 | 显示全部楼层
你发送的命令:01 03 00 00 00 01 84 0A    其中是01是地址,03是功能码,00 00是寄存器起始地址,00 01是数据字节.84 0A为CRC校验
接收到的命令:01 03 02 00 00 B8 44   共中01是地址,03是功能码,02数据字节, 00 00为返回数据.B8 44为CRC校验.
如果是发送的只是一个模拟命令,而且程序里针对00 00寄存器并没有赋于值的话,返回肯定是00 00 是对的.
回复 支持 反对

使用道具 举报

10

主题

778

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6731
金钱
6731
注册时间
2017-4-12
在线时间
1257 小时
 楼主| 发表于 2017-8-10 17:02:14 | 显示全部楼层
翱翔云端的鸟 发表于 2017-8-8 18:00
上代码吧  我也不知道你错哪了

找到问题了,是我板子的问题,之前换了芯片,虚焊,加焊下就好了,谢谢大家了
回复 支持 反对

使用道具 举报

10

主题

778

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6731
金钱
6731
注册时间
2017-4-12
在线时间
1257 小时
 楼主| 发表于 2017-8-10 18:40:16 | 显示全部楼层
解决问题了,是我板子的问题,换了一块板子就可以了,谢谢大家了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-20 12:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表