引 言
汽车防抱死制动系统(Antilock Braking System, ABS)是在传统的制动系统的基础上采用电子控制技术,在制动时防止车轮抱死的一种机电一体化系统。它主要利用制动过程中车轮路面的动力学特性来改善汽车的制动性能,是改善汽车主动安全性的重要装置。随车辆运行时状态、道路状况、车载荷、刹车部件的变化以及车轮路面的动力学的非线性时变特性使ABS系统具有强非线性时变特性和很强的不确定性,这使在汽车防抱死制动系统的开发中,控制算法的开发成为整个开发过程的核心和关键[1]。
目前,快速控制原型方法[2]已经广泛地应用在系统设计初期阶段,由于开发方便,很容易验证开发方向的正确性,可以将控制算法开发中的错误及不当之处消除于设计初期,使设计修改费用减至最小。但随着系统开发,不可避免的要将控制算法移植到真实控制器中。
本文在前期使用dSPACE实现快速控制原型并研究控制算法的基础上,充分利用基于Matlab Simulink构建的控制算法[3],将其移植到基于Motorola MC9S12DP256B单片机的ABS控制器中,与dSPACE实现快速控制原型的实验结果相对比,基本达到快速控制原型的效果。
1 ABS控制器ECU快速控制原型系统结构
1.1 硬件结构
本设计使用的是dSPACE进行快速控制原型,即使用dSPACE代替ABS的ECU进行在线的车上测试,ABS控制器的阀体和泵电机使用的是国外某公司成熟ABS产品的阀体和泵电机。将控制算法下载到dSPACE后,对于ABS控制器的输入量,使用dSPACE的I/O接口板进行采集。其中四路轮速信号为轮速传感器的方波信号,使用dSPACE的四个用户中断进行采集。制动信号为一开关量,使用A/D进行采集。控制算法根据轮速信号做出判断,输出量为电磁阀的开关量和电机开关量,通过dSPACE的I/O输出控制信号。控制信号通过电磁阀和电机驱动电路作用到ABS控制器的电磁阀和泵电机,从而对汽车的液压制动系统进行控制。对于下载到dSPACE上的控制算法,可以使用dSPACE的专用实验工具软件ControlDesk创建仪表等工具,对控制过程中的数据进行采集,同时也可以对控制算法的参数进行在线修改和调整。总体设计如图1所示:
图1 快速原型系统硬件结构图
1.2软件结构
使用dSPACE进行快速控制原型的优势是,dSPACE提供了Simulink工具箱,一些底层接口模块可以很方便地进行应用,同时dSPACE还允许反复修改设计模型,进行离线及实时仿真。由于dSPACE与MATLAB是无缝连接的,在算法的构建中可以应用MATLAB中的C语言编写的S函数、State-Flow等用户自由性较高的模块,使算法的实现过程更灵活、更高效。
本设计采用了三通道的ABS控制方法,即两个前轮独立控制,两个后轮统一控制,使用MATLAB/Simulink对控制算法的接口进行构建。
四路轮速方波信号经由dSPACE 1103工具箱中提供的四个用户中断进行采集,控制算法采用定时中断处理,使用1103工具箱提供的定时中断作为系统时钟。系统软件结构如图2所示:
采集到的轮速方波信号,首先经轮速处理子程序计算出车轮的轮速值和加速度值,其中轮速处理子程序是一个由C语言编写的S函数interval,通过计算方波信号的周期得到车轮速度。
针对ABS控制的非线性强和时变性高的特点,采用了三通道的基于滑移率的模糊控制方法[4]。控制输出为制动过程中对应的液压状态,即增压、保压或减压,根据液压状态得到与状态对应的电磁阀和泵电机的控制信号,通过dSPACE的I/O板输出。
图2 快速原型系统软件结构图
2 ABS控制器的软硬件结构
2.1 硬件结构
ABS控制器的硬件结构和快速原型系统硬件结构图相同,只是将dSPACE部分替换为Motorola MC9S12DP256B单片机。轮速信号采集使用单片机的输入捕捉IC0~3,刹车信号使用A/D进行采集。输出部分使用PORTA和PORTB口控制驱动部分的电路。数据采集的通讯接口由1103的网口改为CAN通讯来接收ABS控制器的实时数据信息。
2.2软件结构
ABS控制器软件结构示意图如图3所示。
图3 ABS控制器软件结构示意图
ABS控制器软件主要分轮速采集和计算、控制算法以及诊断部分。其中输入捕捉IC0~3中断负责对轮速方波信号进行采集,计算出轮速信息。定时中断根据轮速信号以及刹车信号计算控制量,驱动阀和泵电机。控制算法使用快速原型中使用的控制算法。诊断部分负责诊断ABS控制器阀、泵电机、电源等的工作状态。
3 算法移植方法
由于前期使用dSPACE快速控制原型进行了控制算法的开发,为避免重复工作和加快开发进度,采用快速原型中的算法,对外围进行修改,使用代码产生工具生成算法代码。
将图2做如下修改:1、算法和控制输出模块中的控制输出I/O口修改为ABS控制器对应的PORTA和PORTB口;2、去掉和1103有关的外围部分;3、加入HC12控制Master模块,修改后的Simulink结构如图4所示。
在生成的代码中查找数据结构struct _Parameters_文件名,其定义了模块中的常量:
struct_Parameters_untitled {
/* Expression: 1 *'<Root>/v_fl' */
uint16 root_ v_fl _Value;
/* Expression: 1 *'<Root>/v_fr' */
uint16 root_ v_fr _Value;
/* Expression: 1 *'<Root>/v_rl' */
uint16 root_ v_rl _Value;
/* Expression: 1 *'<Root>/v_rr' */
uint16 root_ v_rr _Value;
/* Expression: 1 *'<Root>/ brake' */
uint8 root_brake _Value;
/*其它系统中的常量*/
……
};
Parameters_untitled untitled_P;
模块的初始化、节拍函数、终止函数:
void untitled_initialize(boolean_T firstTime);
void untitled_step(void);
void untitled_terminate(void);
在主程序中加入模块的初始化函数:
Main( )
{
untitled_initialize(1);
定时器等的初始化;
while (1) {
其它任务
}
untitled_terminate( );
}
在定时中断处理函数中做如下处理:
ISR(timer)
{
从轮速处理和采集模块的到速度,从A/D中得到刹车信号 的幅值,赋值给untitled_P对应的数据;
调用untitled_step进行控制量的计算和控制输出;
通过can发送轮速信息,进行数据采集使用;
其它处理并返回;
}
图4 算法移植simulink结构示意图
说明:1、参数_Parameters_untitled中的数据类型在生成代码后是real_T,根据软件设计的类型修改为相应的数据类型;
2、参数untitled_P生成时定义为const常量,修改为变量;
3、保证算法和控制输出模块在搭建中数据类型的的正确性;
4、在Simulink下HC12也有A/D模块,在图4中也可以将brake修改为相应的A/D模块,而不使用constant模块;
5、如果使用Simulink定点库模块,将相应对应的.c文件和.h文件包含到工程中。
4 实验结果
4.1 快速控制原型实验结果
实车实验是在干燥的柏油和冰雪路面上进行的,制动初速度在40km/h左右,脱档直线制动。使用dSPACE的软件ControlDesk进行数据的采集。从图5和图6的制动过程看,轮速的变化规律比较理想,车轮未发生抱死。
图5快速原型在干燥的柏油路面的实验结果
图6 快速原型在冰雪路面的实验结果
4.2ABS控制器实验结果
实验条件和快速原型实验条件相同。使用canoe 通过can数据线进行数据的采集。从图7和图8的制动过程看,轮速的变化规律比较理想。与快速控制原型的控制效果相比,基本上达到了控制原型的控制效果。
图7 ABS控制器在干燥的柏油路面的实验结果
5 结论
对前期的dSPACE实现快速控制原型及基于Motorola MC9S12DP256B单片机的ABS控制器进行道路实验,验证了基于Matlab Simulink构建的控制算法并移植到单片机方案的可行性,从实验结果对比看,ABS控制器基本达到快速控制原型的效果,能
够很好的控制轮速,防止抱死发生。
图8 ABS控制器在干燥的柏油路面的实验结果