封面
作者:Pan Hongliang
仅供个人学习
随着现代汽车的快速发展,汽车电子设备不断增加,传统的接线方式已远远不能满足汽车愈加复杂的控制系统要求,汽车控制局域网CAN总线应运而生,它广泛应甩于汽车电子控制系统中,也是唯一一个成为国际标准的汽车局域网。
目前,由于环境污染和能源危机问题日益严重,电动汽车的发展开始得到各国的高度重视,成为未来汽车发展的主流方向。电动汽车主要具有三大关键技术:驱动控制系统、电池
电源、整车电子控制系统。整车电子控制系统必须满足纯电动汽车的设计理念,使之既节能又简单可靠。在目前电池技术水平下,解决两大关键技术,有助于电动汽车在中国首先市场化,其经济意义不言而喻。电动汽车动力系统结构复杂多样,部件类型繁多。先进高效的控制体系结构,可以使电动汽车各动力系统之间的数据交换满足简单迅速、可靠性高、抗干扰能力强、实时性好、系统错误检测和隔离能力强等要求。
本文设计了一种基于CAN总线的电动汽车整车电子控制系统,本系统采用短帧的报文结构,数据传输时间
短,具有很强的抗干扰性,具有高效的非破坏总线仲裁,出错检测和故障自动关闭等优点。
1 控制系统整体结构
电动车控制系统由电池管理、充电机、电动机和整车控制等模块组成。本系统总体结构如图1所示。
由图1知,CAN通信网络上共有4个通信节点。整车控制器接收BMS、CCS、电机控制器的报文提供的各种参数;充电机接收BMS发送的控制信息并根据报文数据的电压电流设置来工作;电机控制器接收BMS发送的电池状态信息设置来工作,同时电机控制器接收由整车控制器发送的控制信息并根据报文数据的转矩设置来工作。
2 CAN总线节点的硬件电路设计
电动汽车网
CAN是ControllerAreaNetwork的缩写,是ISO国际标准化的串行通信协议。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应"减少线束的数量"、"通过多个LAN,进行大量数据的高速通信"的需要,1986年德国电气商博世公司开发出面向汽车的CAN通信协议。此后,CAN通过ISO11898及ISO11519进行了标准化,现在在欧洲已是汽车网络的标准协议。现在,CAN的高性能和可靠性已被认同,并被广泛地应用于
工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。
整车控制节点是基于STM32F103VE设计的。ARMCortex TM-M3是一款高性能、低成本、低功耗的32位BISC处理器,可在高达72 MHz的频率下运行,拥有512 KB的片内Flash程序存储器,具有64 KB的RAM数据存储器,可进行高性能的CPU访问。该徽控制器包含1个USB2.0全速(12 Mb/s)设备、1路CAN2.0B通道、1个通用DMA控制器、3个16位的A/D转换器和1个16位的D/A转换器。同时该微控制器具有4个16位捕获/比较定时器和1个看门狗定时器,因此ARM cortexTM-M3可以满足电动车控制的需要,减少了系统硬件设计的复杂度。STM32F103VE支持J-Link实时仿真和跟踪,内部搭载有1通道的支持CAN20.B规格的CAN控
制器,使得CAN通信模块的设计更加方便。整车控制节点硬件电路图如图2所示,由徽控制器STM32F103VE、CAN总线收发器82C250、2个高速光耦16N137等组成。
STM32F103VE采用单电源供电,时钟由8 MHz外部晶振产生。对Flash存储器的编程通过J-Link进行编程(IAR)实现。STM32F103VE内部集成一路CAN控制器,简化了传统单片机外接CAN控制器和CAN收发器的复杂外围电路。收发器82C250是CAN控镧器和物理总线之问的驱动器接口,它可以提供对总
线的差动发送能力和对CAN控制器的差动接收能力,其位速度高达1Mb/s,与ISO11898标准兼容。它的斜率控制功能使电磁兼容性能增强,准备模式可以减少网络的功耗,准备模式中,网络一旦检测到总线上有报文就会被立即激活。同时,它可提供更强抗干扰能力,以及有热保护、短路保护、支持多达110个节点等好处。
在微控制器和CAN总线收发器之间,采用了2个高速光电耦合器6N137进行电气隔离,防止将总线干扰引入系统,提高了系统的可靠性。同时,在节点端部接有1个120 Ω终端匹配电阻,提高了数据通信的抗干扰性。
3 CAN通信协议的设计
根据ISO/OSI模型,CAN总线规范了只制定了数据链路层中的媒体访问子层和一小部分的逻辑链路控制子层,CAN的ISO标准规定了总线及驱动器的电气特性。因此需要根据自己的需求设计通信协议。
CAN协议标准2.0B的数据帧的ID长度为29位,为扩展格式数据帧结构,如图3所示。
数据帧由帧起始、仲裁段、控制段、数据段、CRC段、ACK段、帧结束组成。协议的设计是对标识符和数据位的定义。
本系统协议的设计参照SAEJ1939协议标准,标识符分配为优先级(P)、保留位(R)、数据页(DP)
、代码域(PF)、目标域(PS)、源地址(SA)和数据域(DF)7个部分。根据需求定义了5个报文,报文标识符定义如表1所示。
整车控制器的节点地址为OxA7;BMS节点地址为OxE4;CCS节点地址为OxE5;电机控制器节点地址为OxE6.
根据实际需求,设计了5个报文,分别为:BMS发给CCS和电机控制器的2个报文,CCS 和电机控制器发给整车控制器的2个报文,整车控制器发给电机的报文。根据信息的重要程度,将电机控制器和整车控制器间的报文设计为最高优先级3,其他报文优先级设计为6.
4 CAN总线节点的软件设计
系统采用基于C语言的程序设计。在IAB开发环境下进行调试和仿真。整车控制节点的软件设计主要包括4个部分:CAN控制器的初始化、报文发送、报文接收和错误处理。
4.1 CAN控制器的初始化
在启动CAN通信前必需进行CAN模块的初始化,包括硬件使能、CAN工作模式设置、总线波特率设置、设置中断、验收过滤器设置等。初始化操作在CAN模块复位的模式下进行。初始化程序流程图如图4所示。
本设计中采用的是29位扩展标示符,符合CAN2.0B的标准,所以在验收屏蔽过滤器设置中进行相应的设定。同时,本设计的CAN波特率设置为250 Kb/s,与总线上其他节点的波特率相同,才能进行正常的通信。
4.2 数据的发送
对CAN数据的发送采用查询方式,提高处理器的效率,STM32F103VE的CAN模块有3个发送邮箱,发送报文的流程为:应用程序选择一个空发送邮箱;设置标识符,数据长度和待发送数据;对CAN+TixR寄存器的TXRQ位置1,请求发送;一旦CAN总线进入空闲状态,发送邮箱中的报文则立即发送,成功发送后,邮箱为空;通过查询CAN_TSR寄存器的TXOK位来查询报文是否发送成功。数据发送程序的流程图如图5所示。
4.3 数据的接收
对CAN报文的接收采用中断方式,提高通信的实时性。接收报文的流程如图6所示。当CAN总线发来一个报文,根据屏蔽过滤器设置的标识符进行过滤,如果是要接收的报文,则CAN控制器将总线上的报文按顺序存入接收FIFO,并进入接收中断,在中断中对接收FIFO 中的报文进行存储,然后释放FIFO邮箱。如果不释放邮箱,当总线上再发送过来报文时,会直接覆盖上一个报文,从而导致报文丢失。数据接收程序流程如图6所示。
4.4 错误处理
电动车的整车控制器需要接收BMS、CCS和电机控制器这3个节点发来的报文,如果超过1 s未接收到例如BMS的报文,则通信链路超时,此时需要进行故障处理。所以在软件设计时,定义一个全局变量,在每个定时周期中加1,在接收BMS报文中断中,对此变量清零,则可以实现通信超时检测。当总线发生严重故障时,CAN节点错误寄存器累积到一定次数时,