OpenEdv-开源电子网

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

STMf1如何通过RS485实现一对多的通信

[复制链接]

1

主题

2

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2018-4-29
在线时间
4 小时
发表于 2018-4-29 21:41:23 | 显示全部楼层 |阅读模式
最近在学习STM32,想通过RS485来实现一个简单通信系统,就是一个主机可以向多个下级设备发送消息命令,主机和下级设备都是RS485.
由于是萌新,目前没有头绪,诚信请教
希望大佬们给个思路
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-4-29 22:01:16 | 显示全部楼层
modbus 协议 简单的话自己 定义个协议  比如:从机码+功能码+数据+校验  从机收到是发给自己的命令后做出相应,平时从机不主动发送数据,只能相应主机请求
回复 支持 反对

使用道具 举报

26

主题

355

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
发表于 2018-4-30 08:57:40 | 显示全部楼层
数据格式如楼上所说,从机对从机码(也就是地址码)进行识别,再解析指令。需要注意的是,因为是总线没有仲裁,总线上只能有一个设备信号。
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2018-4-29
在线时间
4 小时
 楼主| 发表于 2018-5-1 20:00:22 | 显示全部楼层
陈皮皮 发表于 2018-4-30 08:57
数据格式如楼上所说,从机对从机码(也就是地址码)进行识别,再解析指令。需要注意的是,因为是总线没有仲 ...

万分感谢,由于刚开始学习,懂得不多,请问有例程吗。
回复 支持 反对

使用道具 举报

26

主题

355

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
发表于 2018-5-2 11:55:27 | 显示全部楼层
wyxie 发表于 2018-5-1 20:00
万分感谢,由于刚开始学习,懂得不多,请问有例程吗。

可以参照战舰开发板例程 485实验 协议自己定就行了
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2019-3-11
在线时间
8 小时
发表于 2019-3-25 19:45:59 | 显示全部楼层
陈皮皮 发表于 2018-5-2 11:55
可以参照战舰开发板例程 485实验 协议自己定就行了

请问从机地址是怎么设定的呢?
回复 支持 反对

使用道具 举报

26

主题

355

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
发表于 2019-3-29 13:11:44 | 显示全部楼层
QZ999 发表于 2019-3-25 19:45
请问从机地址是怎么设定的呢?

自己定,可以写到Flash或者EEPROM中上电读取就可以
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2019-3-11
在线时间
8 小时
发表于 2019-3-30 21:55:13 | 显示全部楼层
陈皮皮 发表于 2019-3-29 13:11
自己定,可以写到Flash或者EEPROM中上电读取就可以

我是在主机和从机中建立mdbus协议,发送数据的前8位为地址,然后用if语句进行判断,相互识别通信
回复 支持 反对

使用道具 举报

26

主题

355

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
发表于 2019-4-3 09:09:18 | 显示全部楼层
QZ999 发表于 2019-3-30 21:55
我是在主机和从机中建立mdbus协议,发送数据的前8位为地址,然后用if语句进行判断,相互识别通信

对的啊
回复 支持 反对

使用道具 举报

16

主题

41

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2018-4-15
在线时间
27 小时
发表于 2019-4-10 21:06:21 | 显示全部楼层
QZ999 发表于 2019-3-30 21:55
我是在主机和从机中建立mdbus协议,发送数据的前8位为地址,然后用if语句进行判断,相互识别通信

请问下 你定的协议能发我看一下吗 我最近也在学习485一对多通信 万分感谢
回复 支持 反对

使用道具 举报

0

主题

295

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
335
金钱
335
注册时间
2019-3-26
在线时间
9 小时
发表于 2019-4-11 09:02:28 | 显示全部楼层
谢谢分享!
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2019-3-11
在线时间
8 小时
发表于 2019-4-14 20:26:45 | 显示全部楼层
山水有相逢 发表于 2019-4-10 21:06
请问下 你定的协议能发我看一下吗 我最近也在学习485一对多通信 万分感谢

现在还需要吗?,不知道怎么发给你
回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2018-10-18
在线时间
15 小时
发表于 2019-4-15 10:01:17 | 显示全部楼层
QZ999 发表于 2019-4-14 20:26
现在还需要吗?,不知道怎么发给你

请教下,简单的一对多通信可以不用modbus吗?还有就是那个片子的地址该怎么设置啊
回复 支持 反对

使用道具 举报

0

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2018-2-28
在线时间
21 小时
发表于 2019-4-15 11:07:57 | 显示全部楼层
Slogan 发表于 2019-4-15 10:01
请教下,简单的一对多通信可以不用modbus吗?还有就是那个片子的地址该怎么设置啊

地址是你自己定义的,你随便定多少,简单的很
回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2018-10-18
在线时间
15 小时
发表于 2019-4-15 15:00:16 | 显示全部楼层
li88owert 发表于 2019-4-15 11:07
地址是你自己定义的,你随便定多少,简单的很

就是随便定义一个,然后用if判断下这样子就可以了吗?
回复 支持 反对

使用道具 举报

0

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2018-2-28
在线时间
21 小时
发表于 2019-4-15 16:24:36 | 显示全部楼层
Slogan 发表于 2019-4-15 15:00
就是随便定义一个,然后用if判断下这样子就可以了吗?

当然,你随便定的一个就是 协议了,和你通信就得按着你定的ID走
回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2018-10-18
在线时间
15 小时
发表于 2019-4-16 17:24:59 | 显示全部楼层
li88owert 发表于 2019-4-15 16:24
当然,你随便定的一个就是 协议了,和你通信就得按着你定的ID走

大哥,我试了一下,现在出现一个问题,主机发送指令从机可以接收到并且发出数据,但是主机接收不到数据,这可能是啥原因啊?
回复 支持 反对

使用道具 举报

16

主题

41

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2018-4-15
在线时间
27 小时
发表于 2019-4-25 14:58:20 | 显示全部楼层
QZ999 发表于 2019-4-14 20:26
现在还需要吗?,不知道怎么发给你

需要 我私聊你了 3Q
回复 支持 反对

使用道具 举报

13

主题

271

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5387
金钱
5387
注册时间
2017-8-14
在线时间
248 小时
发表于 2019-5-16 22:11:32 | 显示全部楼层
本帖最后由 zml13917492379 于 2021-8-9 11:42 编辑

1对多通信  建议 用  CAN,由于485 modbus 通信方式是 主站排队轮询的方式,如:主站问从站1,从站1应答,主站收到从站1应答,主站问从站2,从站2应答,主站收到从站2应答….,如果从站设备很多,RS485的实时性就会很差
建议 用 CAN 总线,价格 差不多,性能 就天壤之别了,我们可以提供开发板  及源程序的
详细见:

http://www.openedv.com/forum.php ... d=283040&extra=
详细资料扣扣群204408503自行下载
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2020-3-29
在线时间
13 小时
发表于 2020-4-10 11:17:44 | 显示全部楼层
老哥,你的做的怎么样了呀。我现在也遇到了差不多的问题,能不能把你做的程序给我看一下呀。感谢。
回复 支持 反对

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2020-2-13
在线时间
22 小时
发表于 2020-7-10 18:20:45 | 显示全部楼层
learsh 发表于 2020-4-10 11:17
老哥,你的做的怎么样了呀。我现在也遇到了差不多的问题,能不能把你做的程序给我看一下呀。感谢。

+1+1
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2021-3-3
在线时间
2 小时
发表于 2021-4-14 15:31:16 | 显示全部楼层
时间过了这么久,LZ可以发我一份吗,学习学习!
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2021-3-3
在线时间
2 小时
发表于 2021-4-14 15:32:30 | 显示全部楼层
QZ999 发表于 2019-3-30 21:55
我是在主机和从机中建立mdbus协议,发送数据的前8位为地址,然后用if语句进行判断,相互识别通信

大佬,源码可以发我一份吗,我最近也在学习485设备这一块
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2021-4-30
在线时间
4 小时
发表于 2021-4-30 11:34:50 | 显示全部楼层
可以发一份代码嘛 402446891@qq.com
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 19:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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