OpenEdv-开源电子网

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

如何确保485通讯中同时只有1个节点在发送数据?

[复制链接]

24

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2012-8-29
在线时间
3 小时
发表于 2013-4-23 10:56:04 | 显示全部楼层 |阅读模式
485通讯的电气特性决定了在485多个节点中同时只能有1个节点处于发送状态。
若同时多个节点发送数据将有可能导致节点损坏。

如何确保485通讯中同时只有1个节点在发送数据?

目前想到的一个方法是:
1  默认处于接收状态;
2 所有节点在发送数据前,先进行接收判断,看是否有数据接收。
若无数据接收,再发送使能。若有数据接收,先接收后,延时再发。

但是,这个机制有缺陷:若多个节点在同一时刻判断无数据接收,然后又同时发送数据,将造成通讯混乱。


大家还有什么其它更好的机制来保证485节点中只能同时有1个节点处于发送状态么?



我白天是个程序员,晚上就是个有抱负的演员。住在天朝的魔都,有条同名的狗......
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

96

主题

762

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1228
金钱
1228
注册时间
2012-10-19
在线时间
15 小时
发表于 2013-4-23 11:26:43 | 显示全部楼层
485是一主多从形式,主机问,从机答。
回复 支持 反对

使用道具 举报

24

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2012-8-29
在线时间
3 小时
 楼主| 发表于 2013-4-23 12:18:38 | 显示全部楼层
感谢您的建议。这个是一种典型的单向通信应用模式。
我白天是个程序员,晚上就是个有抱负的演员。住在天朝的魔都,有条同名的狗......
回复 支持 反对

使用道具 举报

96

主题

762

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1228
金钱
1228
注册时间
2012-10-19
在线时间
15 小时
发表于 2013-4-23 15:16:13 | 显示全部楼层
参考参考 modbus ,对你写485通信程序很有帮助
回复 支持 反对

使用道具 举报

24

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2012-8-29
在线时间
3 小时
 楼主| 发表于 2013-4-24 08:39:55 | 显示全部楼层
非常感谢您提供的参考信息。MODBUS的确很好,但仍然是主从配置。主机轮询查询每个从机,地址对应的从机应答;主机不问询,从机不得主动发送数据,避免了多机发送数据的冲突。

这样,MODBUS的从机要发数据只有等主机来问询。所以主机必须周期性地轮询所有从机,从机发送数据的及时性会差。此外,从机之间无法相互发送数据,只能通过主机中转。

大家还有什么高见来解决高效的从主通讯、从从通讯?
我白天是个程序员,晚上就是个有抱负的演员。住在天朝的魔都,有条同名的狗......
回复 支持 反对

使用道具 举报

25

主题

683

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1351
金钱
1351
注册时间
2012-4-25
在线时间
195 小时
发表于 2013-4-24 09:33:53 | 显示全部楼层
曾经 也遇到过,当时用的算法,每个485发送数据前都 有一个 相对应的常数,要发时候 常数减为0的延迟
1-1
回复 支持 反对

使用道具 举报

2

主题

1446

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2256
金钱
2256
注册时间
2010-12-16
在线时间
206 小时
发表于 2013-4-24 10:50:57 | 显示全部楼层
追求物理仲裁,就用CAN总线吧,或者LIN,或者做到类似的特性.
技术讨论请发帖 , 需要我回复请点左下的 < 回复 > 让系统通知我 . 本人不通过其他方式返回任何参数.
回复 支持 反对

使用道具 举报

24

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2012-8-29
在线时间
3 小时
 楼主| 发表于 2013-4-24 14:01:35 | 显示全部楼层
嗯,CAN协议太复杂了,成本也不低,485利用好了可以当做经济适用房用。
我白天是个程序员,晚上就是个有抱负的演员。住在天朝的魔都,有条同名的狗......
回复 支持 反对

使用道具 举报

96

主题

762

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1228
金钱
1228
注册时间
2012-10-19
在线时间
15 小时
发表于 2013-4-24 15:32:09 | 显示全部楼层
从从通信也不是不可以。我这项目就是从从与主从之间切换着交流!程序是死的,人是活的,只要保证一个发送就行了!
回复 支持 反对

使用道具 举报

96

主题

762

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1228
金钱
1228
注册时间
2012-10-19
在线时间
15 小时
发表于 2013-4-24 15:37:41 | 显示全部楼层
你要经济嘛?我这两片光耦做的仿485,将电压提高到了12V,抗干扰强多了,距离也大大增加,联机台数也突破了32台的限制!百度上么有,嘿嘿!
回复 支持 反对

使用道具 举报

9

主题

83

帖子

0

精华

高级会员

Rank: 4

积分
647
金钱
647
注册时间
2013-3-28
在线时间
64 小时
发表于 2013-4-24 16:20:51 | 显示全部楼层
我做485一直都是一个主机多个从机的结构 轮讯方式,就是慢,点少。 以前看过别人做过多个主机一个从机的结构,系统总是通讯容易挂。楼主想做的应该是总线仲裁, 估计有很多人都想过,估计都是改CAN了
回复 支持 反对

使用道具 举报

24

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2012-8-29
在线时间
3 小时
 楼主| 发表于 2013-4-24 18:19:43 | 显示全部楼层
CAN肯定可以实现的了,但成本较高。数据量不大,节点不多,实时性不强的还是可以用485来实现的。
我白天是个程序员,晚上就是个有抱负的演员。住在天朝的魔都,有条同名的狗......
回复 支持 反对

使用道具 举报

5

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
158
金钱
158
注册时间
2012-8-31
在线时间
15 小时
发表于 2013-4-26 10:47:44 | 显示全部楼层
只能是一主多从了,错误了要有处理机制。再者,两个同时发也不一定坏。
回复 支持 反对

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2013-4-26 11:11:56 | 显示全部楼层
485总线 物理层决定了 总线仲裁是不可行的,

可用422总线 改制成 485总线, 即同时收发,  A-Y , B-Z, 

在你发送的时候,判断总线不忙后, 先发一串固定起始侦测数据,这个数据要根据自己地址大小设定[即每台机器要不一样],长度最好长些,并同时收取这段数据,如果完全无误,说明没有总线冲突<不能100%确保,跟驱动能力及其他点的距离长短有关>, 这样 在3个字节周期之内 发送你要发送的内容。

然后 每个端点接收可用 超时检测 判断接收帧, 至少>4个字节

这样就可用于 多主机模式, 不过可靠性没有CAN, 
对于多主机应用 建议最好改成CAN
回复 支持 反对

使用道具 举报

24

主题

89

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2012-8-29
在线时间
3 小时
 楼主| 发表于 2013-4-26 19:18:07 | 显示全部楼层
很实用,不错。高手在民间哈!
我白天是个程序员,晚上就是个有抱负的演员。住在天朝的魔都,有条同名的狗......
回复 支持 反对

使用道具 举报

349

主题

522

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1629
金钱
1629
注册时间
2014-7-11
在线时间
285 小时
发表于 2015-5-24 17:23:08 | 显示全部楼层
那谁有modbus协议,主机协议
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2015-5-24 17:37:22 | 显示全部楼层
回复【10楼】tian123chi:
---------------------------------
485的抗干扰靠的是差分信号传输吧,232不也是12伏的,抗干扰也没听说比485好。
业余程序玩家。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 04:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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