1.1 针对传输距离问题所作的尝试方案
从上面的电路图以及数据分析可以看出:在距离偏远时,总线线电压已经处于临界识别状态,其数据很难正常接收(已经没有可靠性可言)。为此我们尝试采用以下几个方案进行了实验。
1.1.1 在线路中直接加两个发送芯片
该方案就是在总线线路中直接加入两个发送芯片(采用82C250为例)[3],并把发送芯片的管脚TXD和RXD对连。其连接电路如下:
图1 发送芯片连接电路图
整个电路看似很正常,把左边的数据传输到右边,右边的数据传输到左边,实际上此电路是无法使用的。此电路接入总线后,只要在总线上有一个显性电平出现,那么整个电路将永远呈现显性电平。原因在于每个期间都有延迟(虽然是仅仅几个ns延迟),假设从电路左边收到一个显性电平,经过左右两个82C250芯片延迟Tns后传输到右边CAN总线,另外82C250芯片本身具有同时发送、接收功能,那么右边的82C250芯片同时把右边CAN总线的显性电平又传送到左边,这样就形成了一个回路,使得总线永远处于显性状态。
1.1.2 加入逻辑控制电路进行隔离
从上面可以看出,在发送数据时应该防止数据重传形成回路。为此我们做了如下规定:在有显性电平时只能够有一个方向传输(哪个方向先来显性电平开通哪个方向,同时到来则选择任一个方向开通);发送端显性电平结束后,所有方向都停止T1时间(Tns
利用CPLD很容易实现上面的规定逻辑。利用此方案把该电路先连接在总线10Km处,并在10Km不远处连接一个接收设备,实验能够接收正常,并且其接收端总线电压差为1.32V,是单连设备接收电压差的1.55倍。
1.1.3 线路中间加入CAN卡中转实现远距离数据传输(中继器)
在距离达到10Km时,其接收数据不正常的原因是由于总线电压差值较小的缘故。为此,有的采用升压和降压电路是不现实的,因为每个接收器都得加入一个调理电路,造价很明显就上去了。另外,即使升压了,由于CAN总线按照仲裁发送决定了总要遇到方案二中提到的由于延迟总线形成闭合回路的问题。
为了达到远距离传输,可以在中间加入中继器,相当于把总线距离缩短了一倍。中继器的结构如下:
图2 中继器结构示意图
选择使用两个8031单片机目的在于能够及时处理CAN总线上的数据,使得设计也变得比较简单,不需考虑CAN总线两边的数据发送冲突。只要每个单片机有1K的缓存就可以。
具体实现思路:单片机接收CAN总线数据,把数据进行缓存,在空闲阶段把数据传输到另一个单片机(两者之间通过SPI协议实现通信),同时把从另一个单片机传输来的数据发送出去。
1.2CAN总线结构[2]
CAN总线系统一般连接结构如图(以芯片82C250为例)所示,R=120Ω。(注:图中仅画出了一个智能设备,实际中可以多达110个)
图3 CAN总线系统结构示意图
CAN总线一般都是利用在环境比较恶劣,控制室与现场比较远的场合。总线距离达到8Km以上时,其单向线路电阻将达到100Ω,而两端的终端电阻为120Ω(不考虑智能设备本身电阻,认为其电阻为无限大)。其等效电路为图2:
图4 CAN总线电路等效图
对于CAN接收器而言能够识别的电压要大于0.8V,一般为0.9V以上。
在实际的工程中我们是利用此方案实现远距离传输的,主要原因是可以满足数据传输的可靠性,利用此方案的电路我们进行过节点数达到100的测试,其性能正常、可靠,能够满足实际的需要。
CAN总线技术作为一种新型的总线技术由于其具有良好的故障隔离能力、网络的实时响应能力以及CAN具有良好地传输防错设计等,使其已经成为现在有前途的总线之一。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。