CAN总线与RS485的比较

原创 2011年01月13日 16:52:00

最近一个项目总体方案设计为分布式系统,于是在通讯上纠结于CAN总线还是RS485。因此在网上搜索一些了一些关于RS485和CAN总线的资料,除进一步认识RS485通讯特点外,认识了CAN总线的特点及其与RS485的比较,总结如下:

 

注:以下是从网上搜索总结的。

 

CAN总线特点:

1、国际标准的工业级现场总线,传输可靠,实时性高;  
2、传输距离远(最远10Km),传输速率快(最高1MHz bps); 
3、单条总线最多可接110个节点,并可方便的扩充节点数;  
4、多主结构,各节点的地位平等,方便区域组网,总线利用率高;  
5、实时性高,非破坏总线仲裁技术,优先级高的节点无延时;  
6、出错的CAN节点会自动关闭并切断和总线的联系,不影响总线的通讯;  
7、报文为短帧结构并有硬件CRC校验,受干扰概率小,数据出错率极低;  
8、自动检测报文发送成功与否,可硬件自动重发,传输可靠性很高;  
9、硬件报文滤波功能,只接收必要信息,减轻cpu负担,简化软件编制;  
10、通讯介质可用普通的双绞线,同轴电缆或光纤等;  
11、CAN总线系统结构简单,有极高的性价比。

 

RS485接口标准特点:

(1) RS-485的电气特性:逻辑"1"以两线间的电压差为+(2-6)V表示;逻辑"0"以两线间的电压差为-(2-6)V表示。接口信号电平比RS-232-C降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL 电路连接。
(2) RS-485的数据最高传输速率为10Mbps
(3) RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干能力增强,即抗噪声干扰性好。
(4) RS-485接口的最大传输距离标准值为4000英尺,实际上可达 3000米,另外RS-232-C接口在总线上只允许连接1个收发器,即单站能力。而RS-485接口在总线上是允许连接多达128个收发器。即具有多站能力,这样用户可以利用单一的RS-485接口方便地建立起设备网络。但RS-485总线上任何时候只能有一发送器发送。
(5) 因RS-485接口具有良好的抗噪声干扰性,长的传输距离和多站能力等上述优点就使其成为首选的串行接口。 
(6) 因为RS485接口组成的半双工网络,一般只需二根连线,所以RS485接口均采用屏蔽双绞线传输。 

 

CAN总线与RS485的比较:

1,速度与距离:CAN与RS485以1Mbit/S的高速率传输的距离都不超过100M,可谓高速上的距离差不多。但是在低速时CAN以5Kbit/S时,距离可达10KM,而485再低的速率也只能到1219米左右(都无中继)。可见CAN在长距离的传输上拥有绝对的优势。

2,总线利用率:RS485是单主从结构,就是一个总线上只能有一台主机,通讯都由它发起的,它没有下命令,下面的节点不能发送,而且要发完即答,受到答复后,主机才向下一个节点询问,这样是为了防止多个节点向总线发送数据,而造成数据错乱。而CAN-bus是多主从结构,每个节点都有CAN控制器,多个节点发送时,以发送的ID号自动进行仲裁,这样就可以实现总线数据不错乱,而且一个节点发完,另一个节点可以探测到总线空闲,而马上发送,这样省去了主机的询问,提高了总线利用率,增强了快速性。所以在汽车等实性要求高的系统,都是用CAN总线,或者其他类似的总线。

3,错误检测机制,RS485只规定了物理层,而没有数据链路层,所以它对错误是无法识别的,除非一些短路等物理错误。这样容易造成一个节点破坏了,拼命向总线发数据(一直发1),这样造成整个总线瘫痪。所以RS485一旦坏一个节点,这个总线网络都挂。而CAN总线有CAN控制器,可以对总线任何错误进行检测,如果自身错误超过128个,就自动闭锁。保护总线。如果检测到其他节点错误或者自身错误,都会向总线发送错误帧,来提示其他节点,这个数据是错误的。大家小心。这样CAN总线一旦有一个节点CPU程序跑飞了,它的控制器自动闭锁。保护总线。所以在安全性要求高的网路,CAN是很强的。

4,价格与培训成本:CAN器件的价格大约是485的2倍这样,485的通讯从软件上是很方便的,只要懂串行通讯,就可以编程,而CAN需要底层工程师了解CAN复杂的层,编写上位机软件也要了解CAN的协议。可谓培训成本较高。

5,CAN总线通过CAN控制器接口芯片82C250的两个输出端CANHCANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态。这就保证不会出现象在RS-485网络中,当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象。而且CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现象在网络中,因个别节点出现问题,使得总线处于死锁状态。

6,CAN具有完善的通信协议,可由CAN控制器芯片及其接口芯片来实现,从而大大降低了系统的开发难度,缩短了开发周期,这些是只仅仅有电气协议的RS-485所无法比拟的。

 

   特性

RS-485

CAN-bus

单点成本

低廉

稍高

系统成本

较低

总线利用率

网络特性

单主网络

多主网络

数据传输率

容错机制

可靠的错误处理和检错机制

通讯失败率

极低

节点错误的影响

导致整个网络的瘫痪

无任何影响

通讯距离

<1.5km

可达10km5kbps

网络调试

困难

非常容易

开发难度

标准Modbus协议

标准CAN-bus协议

后期维护成本

 

相关文章推荐

can总线与485总线有什么区别?

以往,PC与智能设备通讯多借助RS232、RS485、以太网等方式,主要取决于设备的接口规范。但RS232、RS485只能代表通讯的物理介质层和链路层,如果要实现数据的双向访问,就必须自己编写通讯应用...
  • yunhaiC
  • yunhaiC
  • 2014年03月11日 13:38
  • 7472

RS-485和CAN网络总线的比较

摘 要:本文主要对RS-485和CAN两种网络总线性能进行了比较。通过比较分析之后,介绍了RS-485 总线网络与CAN-bus 总线网络的互联,并且预测CAN-bus总线网络完全替代RS-485总线...
  • zhjmyx
  • zhjmyx
  • 2016年09月09日 11:05
  • 1103

CAN总线基础知识(一)

1.CAN总线是什么?     CAN(Controller Area Network)是ISO国际标准化的串行通信协议。广泛应用于汽车、船舶等。具有已经被大家认可的高性能和可靠性。     CAN控...

CAN总线基础知识(三)

1.CAN协议 1.1 帧类型 通讯时使用下面5个类型的帧:     数据帧     遥控帧     错误帧     过载帧     帧间空隙     在所有这些帧中,数据帧和遥控帧由用户设置,而其它...

CAN总线开发实例

下面通过实例来说明CAN总线接口的使用方法。在本例中,有两个进程,其中一个进程负责报文的发送(标识符为0x11和0x22),另一个进程负责报文的接收和过滤(只接收标识符为0x11的报文)。 /* 1...

周立功 CAN PCI接口卡C#语言示例

周立功CAN pci接口卡提供的示例代码都是VC,VB和Delphi的,没有C#.net的例子。但是,由于这些api对数据类型的校验非常严格,所以不太容易调用。本文提供C# 2.0 VS.2008调用...
  • zztfj
  • zztfj
  • 2010年11月19日 10:49
  • 11007

浅谈CAN总线

在前面的《浅谈I2C总线》和《浅谈SPI总线》 中我们介绍的 I2C、SPI 总线多用于传输距离短、协议简单、数据量小、主要面向 IC(集成电路)间通信的“轻量级”场合。而 CAN 总线则不同,CAN...

STM32之CAN ---CAN ID过滤器分析

1 前言         在CAN协议里,报文的标识符不代表节点的地址,而是跟报文的内容相关的。因此,发送者以广播的形式把报文发送给所有的接收者。节点在接收报文时,根据标识符(CAN ID)的值决定软...

CAN总线发送与接收函数

初始化CAN模块 void INIT_CAN0(void) { if(CAN0CTL0_INITRQ==0) // 查询是否进入初始化状态 CAN0CTL0_INIT...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CAN总线与RS485的比较
举报原因:
原因补充:

(最多只允许输入30个字)