打印

用can驱动器代替485驱动器可行吗?

[复制链接]
9597|35
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
21ele|  楼主 | 2009-11-6 20:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 21ele 于 2009-11-6 20:30 编辑

自己研究了下数据手册,感觉基本可行,只要保证串口通讯的波特率足够高,保证taj1040的TXD长时间为低的超时不超时,就应该是可以直接换的。

虽然现在用can驱动器比485驱动器还是要贵很多,但是CAN驱动器如tja1040/1050也刚3-4元而已,没多贵,所以考虑想用串口+tja1040+软件仲裁来搞通讯,比如多主机通讯,自动地址分配等,不知可不可行?

can总线的物理优势是很明显的,如距离远,速度快,允许多发送器同时发送等。

相关帖子

沙发
ee168| | 2009-11-6 20:34 | 只看该作者
距离行?距离远吧? 这点没有优势

CAN总线不需要软件仲裁,这是和485的区别
自动分配地址? CAN不需要地址,只有ID号,当然你可以软件人为设置地址

使用特权

评论回复
板凳
ejack| | 2009-11-6 20:55 | 只看该作者
窃以为CAN总线的主要优势在链路层。

单就物理收发器而言,其性价比未必适宜。

使用特权

评论回复
地板
21ele|  楼主 | 2009-11-6 21:02 | 只看该作者
本帖最后由 21ele 于 2009-11-6 21:04 编辑

485不是不需要仲裁,而是不可能仲裁,也没法仲裁,因为它根本不允许多个发送器同时发送,接收器也收不到自己发送的数据。

用上can驱动器,这些就都可能实现了,比如借用局域网的仲裁方式。

can总线不需要仲裁,可用多主机发发送,这个当然知道。但是有can的单片机是少数,也贵些,有串口的单片机是大多数,价格很便宜啊。

485通讯距离通常只有1-2km,且波特率已经比较低了。Can在1km时怎么也能有500Kbps吧。can最大通讯距离可达10km啊,距离怎么没有优势呢?

使用特权

评论回复
5
Wxy8030| | 2009-11-6 22:05 | 只看该作者
CAN通信距离长是建立在链路层可靠的协议基础上的,跟收发器没关系!离开了CAN芯片(或带CAN的单片机)光一个收发器,不能叫CAN!

使用特权

评论回复
6
ee168| | 2009-11-7 20:48 | 只看该作者
CAN和485的收发器类似,差分信号,甚至电压都差不多
以上这话也可以说不对,因为CAN没有规定传输介质

还有仲裁的问题 CAN规定了部分链路层 和....

....

为什么CAN传输数量大,是因为它提高了数据的利用率

...

485需要防止数据冲突,所以采用主从方式,由主机控制数据传输节奏, 该怎么去理解这个需要仲裁不仲裁?

使用特权

评论回复
7
desert_hawk| | 2009-11-7 22:01 | 只看该作者
用485驱动器同样可以实现软件仲裁,把RE接低电平,DE接TX的反逻辑,构造了一个“单稳态”485。

使用特权

评论回复
8
孤欲化境| | 2009-11-7 22:12 | 只看该作者
  个人认为可以用CAN收发器。但使用时要注意一些细节,比如:

1)系统中所有的收发器都要是CAN收发器,而不能CAN收发器和RS485收发器混用;
2)像LZ所提到的,很多新的CAN收发器都有超时控制,这对于RS485的应用有点麻烦。较老的CAN收发器没有超时控制,但是特性又不佳。

使用特权

评论回复
9
21ele|  楼主 | 2009-11-8 15:43 | 只看该作者
不能混用时肯定的,应为物理电平上差别是很大的。

超时控制,其实就是要限制最低波特率,波特率足够,就没有问题了。

传输介质,其实都是双绞线,但是CAN明显的在同等条件下有更好的速率和距离优势。这个仅从物理上比较,因为没Can控制器,所以丧失了Can的很多优势,但是,这些可以利用软件来弥补,比如做数据校验,检测通讯超时。

485通常是主从机模式的,但是如果能突发传送数据,多主机传送数据肯定是最好的,但是这样有可能多个节点同时发送数据而冲突,必须能检测到冲突,合理避让,重新传输数据,这个以太网的广播送数据和冲突检测机制是个很好的例子,但是物理上必须能实时监测自己发送的数据,从而可以检测到冲突,采用合理的机制,重新传输。

485芯片上看,同时打开发送器和接收器是可以的,就是发送的同时接收自己发送的数据是可以的,但是关键是,多个485芯片,同时发送是原则上时不允许的,即使允许,两个发送器同时发送的一个0,一个是1,接收器也应该确切的只能识别为其中之一,就是有一个中电平要为显性,一个要为隐性。

使用特权

评论回复
10
desert_hawk| | 2009-11-8 16:29 | 只看该作者
DE接TX的反逻辑,构造了一个“单稳态”485,就是说发送器在发送0位的时候是真的发送0位,在发送1的时候实际是不发送的。就可以做到楼上所说的两个发送器一个是0一个是1,接收器能识别到的是0. 前提是在总线上没有发送器发送的时候逻辑值为1,这可以通过上拉和下拉电阻实现,有的485芯片在总线浮空的情况下RX端始终为1,用这样的485芯片连上拉下拉都省了。不过这种单稳态的485总线可能会影响节点数量。

使用特权

评论回复
11
21ele|  楼主 | 2009-11-8 17:02 | 只看该作者
本帖最后由 21ele 于 2009-11-8 17:08 编辑

通过上拉和下拉电阻实现的方法实现自动切换的方法我知道的,现在很多廉价的232转485模块都是用的这个办法。但是这个办法不是正规办法,确实可能会影响节点数量。

刚才我也注意到有的485芯片里提到的故障保护“SP481、SP483和SP485的接收器都有故障自动保护(fail-safe)特性,该特性可以使得驱动器输出在输入悬空时为高电平状态。”利用这个特性:发送0时,真发送0,发送1时,假发送,即不发送1,而是切换到接收状态,而不发送。只是这样不知道会不会影响通讯速率。因只要发送的数据里有01的切换,就要进行收发切换。

这样做的第一个好处是可以实现硬件收发自动切换,不用软件控制。

第二个好处是,即使发生冲突,因为所以的1的都是假发送的,总线上不会出现物理的1和0的冲突,而最多只是多个发送器在同时发送0,这个样的话,损害应该是比较小的。

使用特权

评论回复
12
desert_hawk| | 2009-11-8 17:27 | 只看该作者
使能发送和禁止发送的切换确实需要时间,有的芯片是几十nS,看波特率大小了,这个时间对于40K以下的波特率影响不会很大。

使用特权

评论回复
13
21ele|  楼主 | 2009-11-8 19:23 | 只看该作者
本帖最后由 21ele 于 2009-11-8 19:40 编辑

CSMA/CD与CSMA/CA的比较
有线局域网在MAC层的标准协议是CSMA/CD,即载波侦听多点接入/冲突检测。但由于无线产品的适配器不易检测信道是否存在冲突,因此IEEE802.11全新定义了一种新的协议,即载波侦听多点接入/冲突避免(CSMA/CA)。一方面,载波侦听查看介质是否空闲;另一方面,通过随机的时间等待,使信号冲突发生的概率减到最小,当介质被侦听到空闲时,则优先发送。不仅如此,为了使系统更加稳固,IEEE802.11还提供了带确认帧ACK的CSMA/CA协议。

传输介质不同,CSMA/CD与CSMA/CA的检测方式也不同。CSMA/CD通过电缆中电压的变化来检测,当数据发生碰撞时,电缆中的电压就会随着发生变化;而CSMA/CA采用能量检测(ED)、载波检测(CS)和能量载波混合检测三种检测信道空闲的方式。
CSMA/CD(Carrier Sense Multiple Access/Collision Derect),即载波监听多路访问/冲突检测方法是一种争用型的介质访问控制协议。它起源于美国夏威夷大学开发的ALOHA网所采用的争用型协议,并进行了改进,使之具有比ALOHA协议更高的介质利用率 .
CSMA/CD是一种分布式介质访问控制协议,网中的各个站(节点)都能独立地决定数据帧的发送与接收。每个站在发送数据帧之前,首先要进行载波监听,只有介质空闲时,才允许发送帧。这时,如果两个以上的站同时监听到介质空闲并发送帧,则会产生冲突现象,这使发送的帧都成为无效帧,发送随即宣告失败。每个站必须有能力随时检测冲突是否发生,一旦发生冲突,则应停止发送,以免介质带宽因传送无效帧而被白白浪费,然后随机延时一段时间后,再重新争用介质,重发送帧。CSMA/CD协议简单、可靠,其网络系统(如Ethernet)被广泛使用。


CSMA/CA

我们知道总线型局域网在MAC层的标准协议是CSMA/CD,即载波侦听多点接入/冲突检测(Carrier Sense Multiple Access with Collision Detection)。但由于无线产品的适配器不易检测信道是否存在冲突,因此802.11全新定义了一种新的协议,即载波侦听多点接入/避免冲撞CSMA/CA(with Collision Avoidance)。一方面,载波侦听----查看介质是否空闲;另一方面,避免冲撞----通过随机的时间等待,使信号冲突发生的概率减到最小,当介质被侦听到空闲时,优先发送。不仅如此,为了系统更加稳固,802.11还提供了带确认帧ACK的CSMA/CA。在一旦遭受其他噪声干扰,或者由于侦听失败时,信号冲突就有可能发生,而这种工作于MAC层的ACK此时能够提供快速的恢复能力。

CSMA/CD和CSMA/CA的主要差别!
CSMA/CD和CSMA/CA的主要差别对比如下:

CSMA/CD:带有冲突检测的载波侦听多路访问,发送包的同时可以检测到信道上有无冲突;

CSMA/CA:带有冲突避免的载波侦听多路访问,发送包的同时不能检测到信道上有无冲突,只能尽量‘避免’;

1.两者的传输介质不同,CSMA/CD用于总线以太,而CSMA/CA则用于无线局域网802.11b;

2.检测方式不同,CSMA/CD通过电缆中电压的变化来检测,当数据发生碰撞时,电缆中的电压就会随着发生变化;而CSMA/CA采用能量检测(ED)、载波检测(CS)和能量载波混合检测三种检测信道空闲的方式;

3.WLAN中,对某个节点来说,其刚刚发出的信号强度要远高于来自其他节点的信号强度,也就是说它自己的信号会把其他的信号给覆盖掉;

4.本节点处有冲突并不意味着在接收节点处就有冲突;

使用特权

评论回复
14
china_fog| | 2009-11-8 19:29 | 只看该作者
把精力花在这个无聊的问题上面,没意思

使用特权

评论回复
15
冷漠| | 2009-11-8 21:28 | 只看该作者
确实没什么意思。别人早研究过了。

网上可以搜索一篇北航《嵌入式系统和单片机...》杂志上的**:好像是“CAN总线驱动器代替RS485总线驱动器...应用实例”。
原理、电路讲得一清二楚。
如果谁想应用,看一天就可以动手了。自己琢磨?花了好多时间,完成了也没老师做的好。

使用特权

评论回复
16
21ele|  楼主 | 2009-11-8 22:31 | 只看该作者
当然是觉得是有意思的事才来研究的,我研究的目的就是为了应用。
别人研究过了,别人搞清楚了,我并不知道,因为没搞明白所以才来提问讨论的。
如果我事先看到了楼上的提到的**,我自然不会无聊到还来发这个帖子。
技术的东西,本来很多东西水平高的经验丰富的人很可能早就搞清楚了,但是同样的东西更多的人还没有搞清楚,因为要用,一时又无法琢磨透,所以才会提问,请教,讨论。
如果因为某个问题,有些人在研究过了,搞清楚了,就认为没有提出的必要了,那这个所有论坛上绝大多数帖子根本就没有存在必要了。

串口+485基本都是主从模式,但是主从机模式真的就都适用所有的通讯场合吗? 串口能不能用载波侦听多路访问/冲突检测来进行通讯? 因为有这些疑问,所以才琢磨总线驱动器,琢磨串口远距离通讯如何才能进行侦听,如何在成本和性能之间取舍组合,才会考虑串口+can驱动器的通讯方法。

以前用AVR,现在用STM32,CAN在设计里也预留了,简单的通过了驱动例程。从来没有否认过can总线的优越性,但是串口再组合一个成本能够接受总线驱动器,再加上合理的通讯机制,实现远距离多主突发传送数据,真的毫无意义? 我不这样认为。

使用特权

评论回复
17
ejack| | 2009-11-9 07:52 | 只看该作者
我支持LZ将自己的想法付诸实际。
仅仅因为别人做过而放弃深究,这是对自己的不负责任。

使用特权

评论回复
18
georgekin203| | 2009-11-9 09:44 | 只看该作者
4楼真强悍,你怎么得出"Can在1km时怎么也能有500Kbps吧。"的结论的?

使用特权

评论回复
19
21ele|  楼主 | 2009-11-9 10:24 | 只看该作者
网上查的,但是应该是太高了,1km用优质合适的线缆也刚能到50K吧。

CAN总线最大传输距离与位速率对照表
位速率 kbps       1000    500    250    125    100       50       20         10         5
最大传输距离 m    40      130    270    530    620     1300    3300    6700    10000
同时必须采用特性阻抗为120Ω的专用双绞屏蔽电缆。

使用特权

评论回复
20
cwei8545| | 2009-11-9 12:04 | 只看该作者
本帖最后由 cwei8545 于 2009-11-9 12:11 编辑
485不是不需要仲裁,而是不可能仲裁,也没法仲裁,因为它根本不允许多个发送器同时发送,接收器也收不到自己发送的数据。

用上can驱动器,这些就都可能实现了,比如借用局域网的仲裁方式。

can总线不需要仲裁,可 ...
21ele 发表于 2009-11-6 21:02


1km 500K,那家的能够这么强

用CAN收发器代替485收发器之后,这个总线是啥总线?改进型485总线?
有点不伦不类的感觉。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

191

帖子

1

粉丝