摘 要:简单介绍了CAN总线的来源、现状及存在的问题;针对CAN总线传输距离存在的问题提出了两个解决方案,并进行了实验和比较,试验结果证明本文的方法提高了传输距离的可靠性。
关键词:现场总线、CAN总线、单片机
Two Solutions Deal With The Problem Of CAN Bus Transport Distance
FAN Rui-xia LI We-ixing
Abstract:In this paper, the origin, actuality and problems still exist are introduced briefly. Two solutions are proposed to deal with the problem of CAN bus transport distance. Some experiments are carried out and the results are compared. The results demonstrate that the proposed method enhance the reliability the transport distance
Keywords:Field bus, CAN bus,chip microcomputer
1、 CAN总线简介
1.1 CAN总线发展概况[1]
CAN网络原本是德国Bosch公司为欧洲汽车市场所开发的,希望此项技术取代原本昂贵的汽车配线。CAN网络具有反映可靠度高的特性,使用于实时处理的场合,例如汽车防锁死系统、安全气囊等。今天此项通讯协议已得到广泛应用,其特色不仅在汽车工业,在工业控制的其他领域也发挥了其强大的能力。CAN 总线在国内发展已经二三十年了,很多关于CAN的产品也已经开发和广泛使用,如:变电厂、机场、污水处理厂等。
1.2 CAN总线存在的问题
尽管CAN总线有很多优点,但是下面两点却制约着其发展,即:CAN总线的瓶颈问题。
(1) 传输距离最大只能达到10Km,而且并不是真正的可靠传输;
(2) 节点数量最多只能有110个。
下面将针对CAN总线瓶颈问题(1)做详细的讨论。
2、 针对CAN总线传输距离问题提出的方案
2.1 CAN总线结构[2]
CAN总线系统一般连接结构如图(以芯片82C250为例)所示,R=120Ω。(注:图中仅画出了一个智能设备,实际中可以最多达110个)
图1 CAN总线系统结构示意图
CAN总线一般都是利用在环境比较恶劣,控制室与现场比较远的场合。总线距离达到8Km以上时,其单向线路电阻将达到100Ω,而两端的终端电阻为120Ω(不考虑智能设备本身电阻,认为其电阻为无限大)。其等效电路为图2:
图2 CAN总线电路等效图
对于CAN接收器而言能够识别的电压要大于0.8V,一般为0.9V以上。
2.2 针对传输距离问题所作的尝试方案
从上面的电路图以及数据分析可以看出:在距离偏远时,总线线电压已经处于临界识别状态,其数据很难正常接收(已经没有可靠性可言)。为此我们尝试采用以下几个方案进行了实验。
2.2.1 在线路中直接加两个发送芯片
该方案就是在总线线路中直接加入两个发送芯片(采用82C250为例)[3],并把发送芯片的管脚TXD和RXD对连。其连接电路如下:
图3 发送芯片连接电路图
整个电路看似很正常,把左边的数据传输到右边,右边的数据传输到左边,实际上此电路是无法使用的。此电路接入总线后,只要在总线上有一个显性电平出现,那么整个电路将永远呈现显性电平。原因在于每个期间都有延迟(虽然是仅仅几个ns延迟),假设从电路左边收到一个显性电平,经过左右两个82C250 芯片延迟Tns后传输到右边CAN总线,另外82C250芯片本身具有同时发送、接收功能,那么右边的82C250芯片同时把右边CAN总线的显性电平又传送到左边,这样就形成了一个回路,使得总线永远处于显性状态。
2.2.2 加入逻辑控制电路进行隔离
从上面可以看出,在发送数据时应该防止数据重传形成回路。为此我们做了如下规定:在有显性电平时只能够有一个方向传输(哪个方向先来显性电平开通哪个方向,同时到来则选择任一个方向开通);发送端显性电平结束后,所有方向都停止T1时间(Tns
利用CPLD很容易实现上面的规定逻辑。利用此方案把该电路先连接在总线10Km处,并在10Km不远处连接一个接收设备,实验能够接收正常,并且其接收端总线电压差为1.32V,是单连设备接收电压差的1.55倍。
2.2.3 线路中间加入CAN卡中转实现远距离数据传输(中继器)
在距离达到10Km时,其接收数据不正常的原因是由于总线电压差值较小的缘故。为此,有的采用升压和降压电路是不现实的,因为每个接收器都得加入一个调理电路,造价很明显就上去了。另外,即使升压了,由于CAN总线按照仲裁发送决定了总要遇到方案二中提到的由于延迟总线形成闭合回路的问题。
为了达到远距离传输,可以在中间加入中继器,相当于把总线距离缩短了一倍。中继器的结构如下:
图4 中继器结构示意图
选择使用两个8031单片机目的在于能够及时处理CAN总线上的数据,使得设计也变得比较简单,不需考虑CAN总线两边的数据发送冲突。只要每个单片机有1K的缓存就可以。
具体实现思路:单片机接收CAN总线数据,把数据进行缓存,在空闲阶段把数据传输到另一个单片机(两者之间通过SPI协议实现通信),同时把从另一个单片机传输来的数据发送出去。
在实际的工程中我们是利用此方案实现远距离传输的,主要原因是可以满足数据传输的可靠性,利用此方案的电路我们进行过节点数达到100的测试,其性能正常、可靠,能够满足实际的需要。
3、 总结
本文的创新点提出了解决CAN总线传输远距离问题的可实施方案,第一个(加入逻辑电路)比较简单,而且不用考虑数据存储,仅仅是一个硬件实现;而第二种(中继器)要考虑数据存储、判断何时发送等情况,相对比较复杂,但可靠性要好些。两个方案在承受负载方面能力差不多。
CAN总线技术作为一种新型的总线技术由于其具有良好的故障隔离能力、网络的实时响应能力以及CAN具有良好地传输防错设计等,使其已经成为现在最有前途的总线之一。
参考文献
[1] 阳宪惠. 现场总线技术及其应用. 北京: 清华大学出版社, 1999.
[2] 邬宽明. CAN总线原理和应用系统设计. 北京: 北京航空航天大学出版社, 1996.
[3] 郭湛,宋存义,李海 基于CAN总线的火电厂贮煤筒仓安全监测系统 微计算机信息,2005.9(2)P5~7
作者简介:范瑞霞(1951-),研究员,本科,毕业于北京理工大学,主要研究方向:智能控制,计算机视觉;李位星(1976-),助工,硕士,毕业于北京理工大学,主要研究方向:计算机控制,图像处理。
通讯地址:北京理工大学自动控制系206教研室 邮编:100081