OpenEdv-开源电子网

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

基于MODBUS RTU协议,报文的发送和报文的接受问题,希望大家能够给小白一点解释,谢谢!

[复制链接]

7

主题

23

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2019-7-24
在线时间
14 小时
发表于 2019-8-6 16:21:05 | 显示全部楼层 |阅读模式
16金钱
问题一:通过串口发送报文到STM32单片机,单片机应该怎么处理?是不是要把接受到的报文通过485接口发给传感器?然后传感器根据报文返回相应的报文?
问题二:响应报文的接受是不是通过与RS485对应的串口中断函数来接收?然后通过另外一个与PC机相连的串口发生到串口助手?

最佳答案

查看完整内容[请看2#楼]

1、PC端串口下发的协议符合MODBUS协议,哪么MCU通过485接口透传给MODBUS模块,模块接收到数据后,数据通过485返回到和MCU相连接的串口上。 2、PC端串口下发的协议是自定义的协议,哪么MCU接收到数据后需要解析该协议,然后根据协议再选择发送哪条MODBUS协议至MODBUS模块。 3、在物联网中的应用一般是,服务器下发自定义的协议至网关,网关根据协议再选择发送哪条MODBUS协议至下面的MODBUS模块。比如:自定义的协议其中一个字段表示 0 读 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2075
金钱
2075
注册时间
2016-8-15
在线时间
413 小时
发表于 2019-8-6 16:21:06 | 显示全部楼层
1、PC端串口下发的协议符合MODBUS协议,哪么MCU通过485接口透传给MODBUS模块,模块接收到数据后,数据通过485返回到和MCU相连接的串口上。
2、PC端串口下发的协议是自定义的协议,哪么MCU接收到数据后需要解析该协议,然后根据协议再选择发送哪条MODBUS协议至MODBUS模块。
3、在物联网中的应用一般是,服务器下发自定义的协议至网关,网关根据协议再选择发送哪条MODBUS协议至下面的MODBUS模块。比如:自定义的协议其中一个字段表示 0 读数据,1 写数据。另一个字段表示地址。网关收到该协议后,首先判断第一个字段是0还是1,0的话就去指定地址去读数据(即发送读modbus协议至模块),1的话就去指定地址写数据(即发送写modbus协议至模块)。
我的简书:https://www.jianshu.com/u/3e9efbf4a8c2
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14433
金钱
14433
注册时间
2018-8-3
在线时间
1157 小时
发表于 2019-8-6 18:56:01 | 显示全部楼层
帮顶!!!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-8-7 01:52:41 | 显示全部楼层
你应该看传感器数据手册
回复

使用道具 举报

7

主题

23

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2019-7-24
在线时间
14 小时
 楼主| 发表于 2019-8-7 08:39:20 | 显示全部楼层
正点原子 发表于 2019-8-7 01:52
你应该看传感器数据手册

传感器手册上只会说明我要的数据在寄存器中地址。怎么会提到我上面所问的问题?我上面问的问题应该算是和modbus rtu(rs485)通讯过程有关的问题吧?
回复

使用道具 举报

1

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2017-10-21
在线时间
15 小时
发表于 2019-8-7 09:50:28 | 显示全部楼层
本帖最后由 猜不透亻尔心 于 2019-8-7 09:53 编辑

说一点我的理解:(本人是做MODBUS-RTU开发的) 1.485通讯的基础是串口,当上位机发送报文时,通过转换芯片,将串口的TTL电平,转为485的差分电平信号(A,B信号,因为485大多应用于工业自动化,对抗干扰的要求比较高,所以TTL电平就显得不足)。   2.下位机在接收到485的信号后,也需要转换芯片将485差分电平转换为穿串口能够识别的TTL电平。 3.MODBUS—RTU模式的通讯是有行业标准的,报文格式,命令码,请求报文,相应报文,等等,相关的请看MODEBUS协议的官方文档。如果有什么问题可以交流
回复

使用道具 举报

1

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2017-10-21
在线时间
15 小时
发表于 2019-8-7 09:54:58 | 显示全部楼层
还有一个开源的PC端的libmodbus,对于学习MODBUS-RTU和MODBUS-TCP都有帮助
回复

使用道具 举报

7

主题

23

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2019-7-24
在线时间
14 小时
 楼主| 发表于 2019-8-7 10:01:02 | 显示全部楼层
流年丶 发表于 2019-8-7 09:35
1、PC端串口下发的协议符合MODBUS协议,哪么MCU通过485接口透传给MODBUS模块,模块接收到数据后,数据通过485 ...

那么, 我接收传感器数据的时候也是通过rs485接收吗?
回复

使用道具 举报

10

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2075
金钱
2075
注册时间
2016-8-15
在线时间
413 小时
发表于 2019-8-7 10:03:42 | 显示全部楼层
lwx12345 发表于 2019-8-7 10:01
那么, 我接收传感器数据的时候也是通过rs485接收吗?

是的              
我的简书:https://www.jianshu.com/u/3e9efbf4a8c2
回复

使用道具 举报

7

主题

23

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2019-7-24
在线时间
14 小时
 楼主| 发表于 2019-8-7 11:42:40 | 显示全部楼层
猜不透亻尔心 发表于 2019-8-7 09:50
说一点我的理解:(本人是做MODBUS-RTU开发的) 1.485通讯的基础是串口,当上位机发送报文时,通过转换芯片 ...

问题一大堆
回复

使用道具 举报

1

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2017-10-21
在线时间
15 小时
发表于 2019-8-7 11:50:00 | 显示全部楼层

表达欠缺见谅,哈哈
回复

使用道具 举报

1

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2017-10-21
在线时间
15 小时
发表于 2019-8-7 11:52:52 | 显示全部楼层
lwx12345 发表于 2019-8-7 10:01
那么, 我接收传感器数据的时候也是通过rs485接收吗?

如果你的单片机下面总线还接有,很多串行的传感器,需要单片机处理之后传给上位机,单片机跟传感器的通讯就有很多方式了,无线,有线,看需求
回复

使用道具 举报

7

主题

23

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2019-7-24
在线时间
14 小时
 楼主| 发表于 2019-8-7 14:43:12 | 显示全部楼层

没有,我是说我自己问题多
回复

使用道具 举报

7

主题

23

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2019-7-24
在线时间
14 小时
 楼主| 发表于 2019-8-7 14:56:00 | 显示全部楼层
流年丶 发表于 2019-8-7 09:35
1、PC端串口下发的协议符合MODBUS协议,哪么MCU通过485接口透传给MODBUS模块,模块接收到数据后,数据通过485 ...

请问,MCU解析串口发送来的数据,是判断地址码,功能码之类的吗?传感器又是怎样知道我需要什么数据的呢?另外我的目的仅仅只需要实现MCU与传感器的通信就可以了,不用物联网。原谅我这个小白
回复

使用道具 举报

10

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2075
金钱
2075
注册时间
2016-8-15
在线时间
413 小时
发表于 2019-8-7 15:13:57 | 显示全部楼层
lwx12345 发表于 2019-8-7 14:56
请问,MCU解析串口发送来的数据,是判断地址码,功能码之类的吗?传感器又是怎样知道我需要什么数据的呢 ...

MODBUS协议标准你可以去看一下,通讯包含 地址码,功能码等.一般MCU下面带很多MODBUS模块,他们通过地址码区分开来,功能码表示 读,写等
我的简书:https://www.jianshu.com/u/3e9efbf4a8c2
回复

使用道具 举报

1

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2017-10-21
在线时间
15 小时
发表于 2019-8-7 15:53:03 | 显示全部楼层
lwx12345 发表于 2019-8-7 14:56
请问,MCU解析串口发送来的数据,是判断地址码,功能码之类的吗?传感器又是怎样知道我需要什么数据的呢 ...

MCU根据协议请求数据,传感器对不同请求回传不同的数据,MCU接收到响应的数据直接进行相应的处理就行了,因为你请求的是啥你自己是知道的,MCU发出请求后要等待回传,如果规定时间内没有响应则认为此次通讯失败
回复

使用道具 举报

7

主题

23

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2019-7-24
在线时间
14 小时
 楼主| 发表于 2019-8-7 22:05:27 | 显示全部楼层
大哥们,我单片机做主机,传感器做从机。应该用哪个程序呢?单片机应该烧入主机程序还是从机程序?
回复

使用道具 举报

1

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2017-10-21
在线时间
15 小时
发表于 2019-8-8 10:31:05 | 显示全部楼层
lwx12345 发表于 2019-8-7 22:05
大哥们,我单片机做主机,传感器做从机。应该用哪个程序呢?单片机应该烧入主机程序还是从机程序?

发送请求的就是主机/客户端,响应的就是从机/服务器,协议没有主从之分,在于你对其中的数据包的解读不同,协议只是一个载体
回复

使用道具 举报

1

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2017-10-21
在线时间
15 小时
发表于 2019-8-8 10:33:13 | 显示全部楼层
lwx12345 发表于 2019-8-7 22:05
大哥们,我单片机做主机,传感器做从机。应该用哪个程序呢?单片机应该烧入主机程序还是从机程序?

建议你可以看一下PC端的开源框架libmodbus,对开发很有帮助的,能有个全局观
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7581
金钱
7581
注册时间
2016-11-30
在线时间
644 小时
发表于 2019-8-8 10:43:59 | 显示全部楼层
流年丶 发表于 2019-8-7 09:35
1、PC端串口下发的协议符合MODBUS协议,哪么MCU通过485接口透传给MODBUS模块,模块接收到数据后,数据通过485 ...

这哥们解释的不够清楚么?楼主没看到吗?
回复

使用道具 举报

1

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2017-10-21
在线时间
15 小时
发表于 2019-8-8 15:27:16 | 显示全部楼层
流年丶 发表于 2019-8-6 16:21
1、PC端串口下发的协议符合MODBUS协议,哪么MCU通过485接口透传给MODBUS模块,模块接收到数据后,数据通过485 ...

大佬能不能给点MODBUS测试方面的一些建议
回复

使用道具 举报

7

主题

23

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2019-7-24
在线时间
14 小时
 楼主| 发表于 2019-8-8 16:54:19 | 显示全部楼层
猜不透亻尔心 发表于 2019-8-8 10:31
发送请求的就是主机/客户端,响应的就是从机/服务器,协议没有主从之分,在于你对其中的数据包的解读不同 ...

感谢!!!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-26 08:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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