CAN总线与RS485的比较最近一个项目总体方案设计为分布式系统,于是在通讯上纠结于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的两个输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态。
这就保证不会出现象在RS-485网络中,当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象。
而且CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现象在网络中,因个别节点出现问题,使得总线处于“死锁”状态。
6.CAN具有完善的通信协议,可由CAN控制器芯片及其接口芯片来实现,从而大大降低了系统的开发难度,缩短了开发周期,这些是只仅仅有电气协议的RS-485所无法比拟的。
特性 RS-485 CAN-bus单点成本 低廉 稍高系统成本 高 较低总线利用率 低 高网络特性 单主网络 多主网络数据传输率 低 高容错机制 无 可靠的错误处理和检错机制通讯失败率 高 极低节点错误的影响 导致整个网络的瘫痪 无任何影响通讯距离 <1.5km 可达10km(5kbps)网络调试 困难 非常容易开发难度 标准Modbus协议 标准CAN-bus协议后期维护成本 高 低485总线布线规范及常见故障调试485总线由于其布线简单,稳定可靠从而广泛的应用于视频监控,门禁对讲,楼宇报警等各个领域中。
但是,在485总线布线过程中,由于很多模糊不清的概念导致出现很多问题。
现在将一些容易出错的地方总结一下。
1.485信号线避免和强电电源线一同走线。
在实际施工当中,由于走线都是通过管线走的,施工方有的时候为了图方便,直接将485信号线和电源线绑在一起,由于强电具有强烈的电磁信号对弱电进行干扰,导致485信号不稳定,从而导致通信不稳定。
2.485信号线最好用双绞线或屏蔽线作为布线.485信号线也可以使用平行线或非屏蔽线作为布线,但外界对其干扰影响较大,传输效果较差,所以不建议使用平行线或非屏蔽线。
这是因为485信号是利用差模传输的,即由485+与485-的电压差来作为信号传输。
如果外部有一个干扰源对其进行干扰,使用双绞线进行485信号传输的时候,由于其双绞,干扰对于485+,485-的干扰效果都是一样的,那电压差依然是不变的,对于485信号的干扰缩到了最小。
同样的道理,如果有屏蔽线起到屏蔽作用的话,外部干扰源对于其的干扰影响也可以尽可能的缩小。
.选择使用普通的超五类屏蔽双绞线即网线就可以。
由于原材料价格上涨,导致现在市场上的线材鱼龙混杂,有不良商人利用某种合金来顶替铜丝来做网线,在外面镀铜以蒙混客户。
具体区别方法:看网线截面,如果是黄色的话,就是铜丝,如为白色,则是用合金以次充好。
合金一般比较脆,容易断,而且导电性远不如铜丝,很容易在工程施工中造成问题。
线材一般建议选择标准的485线,其为屏蔽双绞线,传输线不是像网线那样为单股的铜丝,而是多股铜丝绞在一起形成一根线,这样即使某根小铜丝断掉,也不会影响整个传输线的使用。
3. 485布线规范是必须要手牵手的布线。
一旦没有借助485集线器和485中继器直接布设成星型连接和树形连接,很容易造成信号反射导致总线不稳定。
很多施工方在485布线过程中,使用了星型接线和树形接线,有的时候整个系统非常稳定,但是有的时候则总是出现问题,又很难查找原因,一般都是由于不规范布线所引起的。
4.485总线必须要接地。
在很多技术文档中,都提到485总线必须要接地,但是没有详细的提出如何接地。
严格的说,485总线必须要单点可靠接地。
单点就是整个485总线上只能是有一个点接地,不能多点接地,因为将其接地是因为要将地线(一般都是屏蔽线作地线)上的电压保持一致,防止共模干扰,如果多点接地适得其反。
可靠接地时整个485线路的地线必须要有良好的接触,从而保证电压一致,因为在实际施工中,为了接线方便,将线剪成多段再连接,但是没有将屏蔽线作良好的连接,从而使得其地线分成了多段,电压不能保持一致,导致共模干扰。
485总线容易出现故障的情况及排除这些故障的方法:1.由于485信号使用的是一对非平衡差分信号,意味485网络中的每一个设备都必须通过一个信号回路连接到地,以减少数据线上的噪音,所以数据线最好由双绞线组成,并且在外面加上屏蔽层作为地线,将485网络中485设备连接起来,并且在一个点可靠接地。
2.在工业现场当中,现场情况非常复杂,各个节点之间存在很高的共模电压,485接口使用的是差分传输方式,有抗共模干扰能力,但是当共模电压大于+12V或者小于-9V时,超过485接收器的极限接收电压。
接收器就无法工作,甚至可能会烧毁芯片和一起设备。
3.485总线随着传输距离的延长,会产生回波反射信号,如果485总线的传输距离如果超过100米,建议施工时在485通讯的开始端和结束端120欧姆的终端电阻。
4.485总线中485节点要尽量减少与主干之间的距离,一般建议485总线采用手牵手的总线拓扑结构。
星型结构会产生反射信号,影响485通信质量。
5.影响485总线的负载能力的因素:通讯距离,线材的品质,波特率,转换器供电能力,485设备的防雷保护,485芯片的选择。
如果485总线上的485设备比较多的话,建议使用带有电源的485转换器,无源型的485转换器由于时从串口窃电,供电能力不是很足,负载能力不够。
选用好的线材,如有可能使用尽可能低的波特率,选择高负载能力的485芯片,都可以提高485总线的负载能力。
485设备的防雷保护中的防雷管会吸收电压,导致485总线负载能力降低,去掉防雷保护可以提高485总线负载能力。