发新帖本帖赏金 3.00元(功能说明)我要提问
12
返回列表
打印

论RS485总线如何实现多主通信

[复制链接]
楼主: 幸福至上
手机看帖
扫描二维码
随时随地手机跟帖
21
515192147 发表于 2018-4-13 17:11
有啥 好 讨论的,直接 用 CAN 就可了,CAN的成本 比485 低

详细见:

你這個表已經過時了,RS485 現在也有專門的控制器了,可以對等通訊,CAN 沒什麼優勢了。
RS485 經典才是王道,永遠不會過時。

使用特权

评论回复
22
z_no1| | 2018-4-15 17:30 | 只看该作者
dukedz 发表于 2018-4-15 11:58
你這個表已經過時了,RS485 現在也有專門的控制器了,可以對等通訊,CAN 沒什麼優勢了。
RS485 經典才是 ...

给个PDF链接看看?
多少钱一个?

使用特权

评论回复
23
z_no1| | 2018-4-15 17:37 | 只看该作者
是那个DB485吗?自己流的片?真是有钱,这个和CAN没有什么本质区别啊.

使用特权

评论回复
24
dukedz| | 2018-4-16 13:40 | 只看该作者
本帖最后由 dukedz 于 2018-4-16 13:57 编辑
z_no1 发表于 2018-4-15 17:37
是那个DB485吗?自己流的片?真是有钱,这个和CAN没有什么本质区别啊.

本质区别就是:RS485 是最经典的串口总线通讯,不会像其它总线一样会面临过时的风险。
而且 RS485 的串口协议更简单、通用易理解,潜力也很大,很早之前就有大厂出 100Mbps 的接口芯片了。

最常用的支持 CDBUS 对等通讯协议的控制器型号是:CDCTL-Bx, 支持到 10Mbps, #10 楼 GitHub 网址最下面的资料连接部分有 PDF Datasheet 下载连接。而且控制器内部的 CDBUS IP 核是开源的,可以自己在 FPGA 里面跑,如果是 MCU 用,那还是用现成的方便。片子据说还在流,现在的成品是 FPGA 做的,零售格价 3 刀,量大可以做到一半以下。



使用特权

评论回复
25
z_no1| | 2018-4-16 14:01 | 只看该作者
dukedz 发表于 2018-4-16 13:40
本质区别就是:RS485 是最经典的串口总线通讯,不会像其它总线一样会面临过时的风险。
而且 RS485 的串口 ...

和CAN比,真心不觉得有什么优势.

你要用当然是可以的,我是不感兴趣.

使用特权

评论回复
26
dukedz| | 2018-4-16 14:47 | 只看该作者
z_no1 发表于 2018-4-16 14:01
和CAN比,真心不觉得有什么优势.

你要用当然是可以的,我是不感兴趣.

CAN 性能差、易用性差,什么都想做,却又没法做好。

CAN 2.0 最快 1Mbps, 最多一次传输 8 字节用户数据,跑上层协议只剩下 4 字节用户数据,一个命令要拆 N 多个包发送,万一中间再丢一个包,那就 hehe 了。试想一下,现在的 IoT 时代,如果用 CAN 传输 1500 字节的 IPv6 数据包会是怎样的一种壮观场景,即使是机械臂内部关节控制,由位置、速度、加速度组成的单个命令都没法一次过传输。。。

CAN 的命令空间是共享的,每为系统添加一个设备就要全盘验证以保证不会干涉,要调整的话就会牵一发而动全身,而且 CAN 曾经引以为豪的无站点的通讯方式几乎没有人用,都是想方设法的在 ID 段塞入节点地址。

CAN 包最后有个 ACK 位,但是如果多个节点同时回复,没法保证大家都准确收到。

CAN 的错误帧的存在就注定了 CAN 不可以支持推挽输出,譬如对于想用低速仲裁、高速通讯的 CAN FD 来说就很尴尬了,因为高速部分没有推挽,速度很难上的去,而且 CAN FD 易用性更差,数据长度不够还要额外填补,对性能有要求的很多场合都被迫用工业以太网了,这也是我说 CAN 有过时风险的原因,它已然在走下坡路了。。。

使用特权

评论回复
27
zyj9490| | 2018-4-16 22:07 | 只看该作者
不过现埸总线都在发展。

使用特权

评论回复
28
lvroubaozi| | 2018-4-17 13:58 | 只看该作者
本帖最后由 lvroubaozi 于 2018-4-17 14:00 编辑

轮寻方式,
1发完数据以后,或者说发送以及接收完数据以后,发指令把主控权交给2,
2再发自己的数据,如果没有要发的数据,再通过指令把主控权交给3
3。。 。。。最后回到1继续循环




使用特权

评论回复
评论
dukedz 2018-4-18 23:13 回复TA
@lvroubaozi :还没弄复杂就已经很低效了,还不如轮询不是吗?所以呢,要听话,用 #10 楼的方法 (•‾̑⌣‾̑•)✧˖° 
lvroubaozi 2018-4-18 14:30 回复TA
@dukedz :热插拔吗? o(╥﹏╥)o 我觉得把协议弄得稍微复杂一点,这个问题是可以解决的,就是动态组网的问题 
dukedz 2018-4-18 12:08 回复TA
@lvroubaozi :那稍后 2 又恢复正常了呢? 
lvroubaozi 2018-4-18 08:56 回复TA
@dukedz :,3长时间收不到2的信息,自动把2去掉,1直接到3, 如果2死机把信号线拉低,那就没办法了 
dukedz 2018-4-17 17:48 回复TA
如果 2 死機了呢? 
29
xuexidz| | 2018-6-26 12:29 | 只看该作者
dukedz 发表于 2017-6-17 12:03
对于 RS485 多主冲突的问题,开源的 CDBUS 协议就可以完美解决,使用配套的控制器模组/芯片,很简单的就实 ...

10楼只用单对单,没有验证多对多,不知道几个同时发送会出现什么情况?

使用特权

评论回复
30
dukedz| | 2018-6-26 14:48 | 只看该作者
xuexidz 发表于 2018-6-26 12:29
10楼只用单对单,没有验证多对多,不知道几个同时发送会出现什么情况?

多台也是一样,按优先级依次发送,不会出现冲突。
具体可以来这个帖子讨论。。。
https://bbs.21ic.com/icview-2518586-1-1.html

使用特权

评论回复
31
幸福至上|  楼主 | 2018-8-6 17:35 | 只看该作者
fxw0535 发表于 2018-7-24 08:29
不知道对不对。小白一枚。

需要区分主从机就说明实现的不是多主通信。区分为接收端和发送端可能更不容易混淆吧。

使用特权

评论回复
发新帖 本帖赏金 3.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则