1 引 言
在20世纪80年代初,德国的BOSCH公司提出了用CAN总线(Controller Area Network,控制器局域网)来解决汽车内部的复杂硬件信号接线。CAN总线以其低成本、高可靠性、实时性、抗干扰能力强等特点得到了广泛的应用,1993年ISO正式颁布了ISO11898CAN高速应用标准和ISO11519CAN低速应用标准,这为CAN总线的标准化、规范化铺平了道路。 CAN总线主要具有以下特性:
(1)CAN采用多主方式工作,网络上任意节点均可以在任意时刻主动地向网络上的其他节点发送信息而不分主从,通讯方式灵活且无需站地址等节点信息。
(2)CAN网络上的信息可分成不同的优先级,满足不同的实时性要求;高优先级的数据最多可在134μm内得到传输。
(3)CAN的直接通信距离最远可达10 km(速率5 kb/s以下);通讯速率最高可达1 Mb/s(此时通信距离为40 m)。
(4)CAN只需通过报文滤波即可以实现点对点、一点对多点及全局广播等几种方式传送接收数据,无需专门的“调度”。
(5)CAN采用非破坏性总线裁决技术(CSMA/CD),在多个节点对总线发送信息出现冲突时,低优先级的节点会主动退出发送而保证高优先级的节点的信息传输,因此大大节省了总线冲突裁决时间,最重要的是在网络负载很重的情况下也不会出现网络瘫痪情况(以太网则可能)。
(6)CAN协议废除了传统的站地址编码,而对通讯数据块进行编码,使网络中的节点个数在理论上不受限制。
(7)CAN总线具有极好的检错效果,CAN的每帧信息都具有CRC校验和其他检错措施,保证了错误的输出率极低。
(8)CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线以上其他节点的操作不受影响。
2 基本硬件介绍
本文所涉及的通信系统相关工业控制系统框图如图1所示。
其中,CAN总线通过PC适配卡与上位机相连,各CAN节点都可与上位机通信,同时互相之间也可以通信。考虑到系统的可靠性与安全性,建议上位机采用工控机,当然在要求可靠性与安全性相对较低的场合也可以考虑采用PC机。CAN总线控制器是以在一块可编程芯片上的逻辑电路的组合来提供与微处理器的物理线路的接口。通过对他的编程,CPU可以设置他的工作方式,控制他的工作状态,进行数据的发送和接收,把网络应用层建立在他的基础之上。CAN控制器目前主要有两大类:一类是独立控制器,如PHILIPS公司的PCA82C200,SJA1000,INTEL公司的82526,82527等;另外一类是内部带有CAN控制器的微处理器,如P8XC591等。我们采用的是PHILIPS公司的SJA1000控制器以及TJA1050总线驱动器。
2.1 SJA1000特性及内部结构
SJA1000是一种独立控制器,是PHILIPS公司的PCA82C200的替代产品。他增加了一种新的工作模式(PeliCAN),这种模式支持具有很多新特点的CAN 2.0B协议。SJA1000主要具有如下特点:
(1)与PCA82C200独立CAN控制引脚和电气兼容;
(2)仍然具有PCA82C200模式(即默认的BasicCAN模式);
(3)扩展的接收缓冲器(64 B FIFO);
(4)同时支持11位和29位标识符且与CAN 2.0B兼容;
(5)位速率可达1 Mb/s;
(6)具有详细位号(bit position)的仲裁丢失中断;
(7)只听模式(无确认、无激活的出错标志);
(8)可编程的CAN输出驱动器配置;
(9)可以和不同处理器接口。
2.2 TJA1050特性
TJA1050是PHILIPS公司生产的,用以替代PCA82C250的高速总线收发器。该器件提供了CAN控制器与物理总线之间的接口以及对CAN总线的差动发送和接收功能。TJA1050的主要特性如下:
(1)与ISO11898标准完全兼容;
(2)总线与电源及地之间的短路保护;
(3)优化了输出信号CANH和CANL之间的耦合,大大降低了信号的电磁辐射;
(4)具有强电磁干扰下,宽工模范围的差动接收能力;
(5)未上电节点不会干扰总线(对此类节点性能做了优化);
(6)总线至少可连接110个节点。
3 CAN节点硬件电路设计
3.1 CAN节点硬件电路设计的原理