引言
现代汽车电子技术的发展使汽车的电子化程度越来越高。电控系统虽然提高了汽车的动力性和经济性,但随之增加的复杂电路必然导致车身布线庞大而复杂。因此提高控制单元间通信的可靠性、实时性、安全性已成为需要迫切解决的问题。以研发和生产汽车电子产品著称的德国Bosch公司为此开发了CAN总线协议,并使其成为国际标准。电动助力转向(Electric Power Steering System,EPS)是根据驾驶员意图和车辆的运行工况而进行助力的转向系统。EPS的控制过程是动力转向系统综合控制的过程,所以EPS的电子控制单元与车内其他电子控制单元的通信及协调控制便很重要。在EPS系统中引入CAN总线技术,使EPS电子控制单元与其他车载电子控制单元通信,可以实现数据共享,并且协调EPS与其他系统控制。CAN即控制器局域网,是Bosch公司为解决现代汽车中众多的控制和数据交换问题开发出的一种现场总线通信结构,最高速率可达1 Mbps(40 m内),以多主方式工作。与一般的通信总线相比,CAN总线数据通信具有突出的可靠性、实时性和灵活性,是目前使用最广泛的一种汽车网络。CAN总线具有以下特点:
1 CAN总线简介
① 硬件连接简单,具有良好的性能价格比。
② 具有快速响应能力,非常适合对实时性要求较高的应用场合。
③ 可靠性高。CAN总线的纠错能力非常强,协议中每一帧数据都采用CRC及其他校验措施,数据出错率极低。若某一节点出现严重错误,可自动脱离总线, 总线上其他节点的操作不受影响。
2 系统硬件设计
2.1 LPC2129介绍
LPC2129微控制器是NXP公司32位单片机中的一种,其内部基本结构包括:中央处理器单元(CPU)、2个16C550工业标准UART、高速I2C 接口(400 kHz)、2个SPI 接口、8通道输入捕捉/输出比较定时器,1个8通道脉宽调制模块以及46个独立数字I/O口,片内还有256 KB的Flash ROM、16 KB的RAM,CAN功能块包括2个兼容CAN2.0B协议的CAN控制器。这些丰富的内部资源和外部接口可以满足ECU(电子控制单元)对各种数据的处理及CAN网络数据发送和接收的要求。芯片集成了2个CAN模块,能够实现高低速CAN网络的网关节点功能。
CAN模块遵循CAN2.0B协议,集成了验收滤波器的CAN总线控制器的所有功能。此外它还采用先进的缓冲器布置改善了实时性能,简化了应用软件的设计。
2.2 CAN模块设计
汽车的通信系统由EPS控制系统、ABS系统、发动机系统、电动车窗系统、车灯控制系统等组成。这些电控系统在整个控制系统中对响应实时性的要求有所不同,另外汽车在实际运行过程中众多节点之间需要进行大量的实时数据交换。若整个汽车的所有节点都挂在一个CAN网络上,众多节点通过一条CAN总线进行通信,一旦信息管理配置稍有不妥,就很容易出现总线负荷过大,导致系统实时响应速度下降的情况。这在实时系统中是不允许的,因此根据不同的要求,可将汽车网络分为高速CAN网络和低速CAN网络两个速率等级。ABS、EPS等节点电控单元个数少,实时性和稳定性要求高,组成传输速率为500 kbps的高速CAN网络。众多的车身电机和车灯节点电控单元数量多,传输的数据纷繁复杂,对准确性、稳定性的要求胜于实时性,组成传输速率为125 kbps的低速CAN网络。对于不同速率网络之间的通信,必须有相应的网关进行数据过滤和速率转换,以实现不同速率网络节点之间的数据通信。高低速CAN网关用LPC2129实现,其通信网络如图1所示。
图1 CAN通信网络图
2.3 CAN节点硬件设计
CAN节点硬件电路主要包括带有CAN控制器的微控制器和用于数据收发的CAN收发器。本设计使用的是NXP公司的32位微控制器LPC2129,它带有CAN控制器,主要负责CAN的初始化和数据处理。CAN收发器种类有很多,本设计使用Philips公司的CAN高速收发器TJA1050。CAN基本节点结构如图2所示。
图2 CAN基本节点结构
2.4 高低速CAN网关的硬件电路设计
网关的主要作用是协调各网络之间数据的共享,负责各节点之间的通信。其硬件结构与CAN节点非常相似,由于它负责高速与低速网络之间的数据共享,所以必须同时跨接两个网络。CAN总线网关硬件结构如图3所示。
图3 高低速CAN网关硬件电路
3 高低速CAN网关的软件设计
网关软件设计部分主要实现的功能是各节点的数据收发,特别是网关可以实现高低速网络数据的转换。对实时性要求不高的车灯控制和车窗控制电路采用低速CAN网络,波特率为125 kbps;对实时性要求较高的ABS系统和EPS系统等采用高速CAN网络,波特率为500 kbps。CAN初始化程序如下:
void init_can0(void) {
//初始化CAN0,设置其波特率为500kps
CAN0CTL0=0x01;
CAN0CTL1=0xc1;
CAN0BTR0=0x00;
CAN0BTR1=0xd8;
CAN0IDAC=0x10;
}
void init_can1(void) {
//初始化CAN1,设置其波特率为125 kps
CAN1CTL0=0x01;
CAN1CTL1=0xc1;
CAN1BTR0=0x03;
CAN1BTR1=0xd8;
CAN1IDAC=0x10;
}
为了降低网络资源的占用率,提高网络通信实时性性能,在高低速CAN网络之间除了必要的通信外,各自的报文是相互独立传输的。这就需要使用CAN中的标识符通过验收过滤器进行报文过滤,可以通过对过滤器寄存器的设置实现这一功能。CAN0与CAN4寄存器的验收寄存器与屏蔽寄存器的设置如下:
CAN0CIDAR0=0x51;//CAN0验收寄存器设置
CAN0CIDAR1=0x00;
CAN0CIDAR2=0x51;
CAN0CIDAR3=0x00;
CAN0CIDMR0=0xdf; //CAN0屏蔽寄存器设置
CAN0CIDMR1=0xff;
CAN0CIDMR2=0xdf;
CAN0CIDMR3=0xff;
CAN1CIDAR0=0x61; //CAN1验收寄存器设置
CAN1CIDAR1=0x00;
CAN1CIDAR2=0x61;
CAN1CIDAR3=0x00;
CAN1CIDMR0=0xef; //CAN1屏蔽寄存器设置
CAN1CIDMR1=0xff;
CAN1CIDMR2=0xef;
CAN1CIDMR3=0xff;
由于传输速率不同,高低速CAN网络之间的数据传输是不同的。当高速CAN网络数据向低速CAN传输时,生需要加入软缓存暂时存储;当低速CAN网络数据向
图4 高低速网关通信流程
高速CAN网路数传输时,可直接传输。通信流程如图4所示。
结语
采用CAN总线技术的EPS控制系统不仅可以减少传感器数量、降低成本、实现数据共享,同时还可以提高EPS的性能。本方案是针对国家自然基金资助项目“基于广义集成的汽车底盘系统控制方法与关键技术研究”提出的改进方案,实验证明采用CAN网络的EPS控制系统实时性好、可靠性高,运行情况良好。