jerlong 发表于 2016-9-11 10:56

485多主通信方案

最近用Arduino UNO做485通信的相关项目,芯片MAX485,总线上挂32个终端,考虑到一主多从模式主机负荷过大,且主机故障会导致整个网络瘫痪,所以打算做多主模式,即每个终端都可以监测总线状态后主动请求发送数据,遇到下面一些较痛疼的问题,希望能有大神给予指点。
1、Arduino UNO采用的是软串口(softwareserial),好像没有接收中断,只能用.available()函数监测是否收到数据。用这种方式监听总线状态时,觉得不够准确。
2、发送数据的同时接收数据,与自身发送的数据进行比较已判断是否发送过程中有总线冲突,试验过程中发现无法接收到自身发送的数据,所以也无法进行对比,RO引脚上是没有上拉电阻的,Arduino引脚的上拉电阻也没有激活。比较纠结的是后来在论坛上看到,用这种方式比较并不能判断总线是否冲突,何解?
3、如果2中的这种方式不能检测总线冲突,那这种多主通信方式的方案又该如何设计呢?

玄德 发表于 2016-9-11 16:44


这可行吗?
即使多主,仍然需要一个更高的主机来管理,等同于单主机。
串口是很慢的通信方式,会增加多少负担?!
根本不用中断,设置一个不大的缓冲器,查询就轻松搞定。

一定要多主,还是用CAN吧,
它的协议、PHY芯片可以自动监测总线的忙与闲。

jerlong 发表于 2016-9-11 22:18

玄德 发表于 2016-9-11 16:44
这可行吗?
即使多主,仍然需要一个更高的主机来管理,等同于单主机。
串口是很慢的通信方式,会增加多少 ...

目前是打算用一个带以太网卡的Arduino专门接收32个终端发来的数据,然后数据通过以太网卡接入互联网,不知这样是否可行?

如果用CAN的话,开发难度如何?成本如何呢?

icecut 发表于 2016-9-12 08:58

485本来就不是多主总线.你这么主管臆断乱设计,并且还自己掌握不了最底层的软硬件,唉.木法说....can 肯定可以的.

icecut 发表于 2016-9-12 16:02

jerlong 发表于 2016-9-12 15:22
呵呵!不是我自己这么设计的,是参考了一篇论文,觉得比较靠谱,但现在感觉这些论文也缺乏验证。有兴趣可 ...

我没说不能搞定.但是你的方案不能搞定.论文用的硬件比如485芯片,以及软件.也不是你封装好的玩具级的软件.
不要企图用玩具实现专业级的设计....

jerlong 发表于 2016-9-12 17:06

icecut 发表于 2016-9-12 16:02
我没说不能搞定.但是你的方案不能搞定.论文用的硬件比如485芯片,以及软件.也不是你封装好的玩具级的软件. ...

说得好像你很专业的样子!刚刚不是说485不是多主总线吗,为什么现在又觉得它可以多主了呢?说得好像arduino很劣的样子,但是人家照样可以用它来开发产品啊,只是国内用的少一点而已。不要各种的鄙视可以吗?

icecut 发表于 2016-9-12 17:14

本帖最后由 icecut 于 2016-9-12 17:15 编辑

jerlong 发表于 2016-9-12 17:06
说得好像你很专业的样子!刚刚不是说485不是多主总线吗,为什么现在又觉得它可以多主了呢?说得好像ardui ...
485不是硬件多主,can 是硬件多主,明白了么,
然后软件多主怎么办????你那 arduino 把软件层给你封死了.我看你怎么做....
不要以为串口简单....大部分平台都是简化串口,而不是完整支持....你看看 pc 的串口接口有多复杂就好了.不要看应用层.要看 驱动层.

ningling_21 发表于 2016-9-14 16:45

485总线不可能发送数据的同时接收数据,一定要同时的话可以改成422接口

chunyang 发表于 2016-9-15 23:53

楼主的方法不对,应该使用单独的一个485接口侦听总线来检查协议的工艺性。另外,楼主的想法可不是什么多主网络,多主网络可以使用令牌协议,令牌传给谁,谁拥有令牌谁就是主机。非令牌下的从机主动发起通讯叫做“突发模式”,关于485的协议,本栏目也有大量的帖子,我都讲过。

玄德天皇 发表于 2016-11-6 21:49

玄德 发表于 2016-9-11 16:44
这可行吗?
即使多主,仍然需要一个更高的主机来管理,等同于单主机。
串口是很慢的通信方式,会增加多少 ...

485多主是可以的
页: [1]
查看完整版本: 485多主通信方案