它主要是调用各个子程序。定时时间要根据算法的复杂性,当算法比较复杂、费时比较长时,则每个循环的时间可以定义的比较长。如果CPU 功能比较强,而且算法比较简单,可以采用比较短的循环时间。比如5ms 甚至更小的时间。一些耗时比较长的程序,例如诊断程序可以放在EHPS主循环外边调用。每次程序开始执行时要调用初始化程序,首先对硬件外设进行初始化,如串口、定时器等。这些初始化每次上电只定义一次,并且要开放中断,然后要进行软件初始化,设置EHPS控制的门限。这些门限有些在控制过程中变化,有些则是不变的常数。如果是不变的常数则可以采用C 语言中的宏定义的方法进行定义。调用诊断程序是对系统进行一次全面的诊断。这个程序耗时比较长,所以只在EHPS 主循环之外。EHPS 系统完成准备工作后就进入EHPS 循环。EHPS 循环
一般可以定义为4~50ms 之间。在这个时间之间调用各种算法,要保证每个程序运行时间加起来小于EHPS 循环时间,这样才能保证EHPS 的节奏。如果程序执行时间大于EHPS 循环时间,则就会出现程序工作节拍性不强,造成系统运行的不稳定。EHPS 循环时间是可调整的,就是要根据程序的执行时间来调整。
2.2 EHPS ECU 的中断程序
EHPS 主循环的运行不时被中断系统所打断,一旦有中断发生,CPU 要响应中断并退出主循环。中断系统的服务程序主要处理突发和随机事件。如果不用中断就会占用主程序许多查询时间,所以中断系统实际是一种并行的多任务程序。
在EHPS 软件中主要使用了下面几种中断类型:
1)方向盘转角中断:它使用输入捕捉中断将方向盘转角脉冲信号记录到寄存器,用于计算目标转速。
2)电机转速采集中断:它使用输入捕捉中断可以随时将输入转速的脉冲信号记录到寄存器。
3)串行通讯中断:串行通讯主要用于诊断系统,使用接收中断,当接收到上位机信号后就可以中断主循环而进入诊断程序。
4)定时器中断:进行控制系统的延时处理。
3. ECU 硬件电路系统设计
电子控制单元根据转向速率和车速信号确定并控制电动机的转速和驱动电流大小。使其在每一种车速下都可以得到最优化的转向助力扭矩。为了保护功率驱动电路,需要对电机电流进行采样,为了降低采集噪声,对系统电流输入采用一级采样保持电路,差分输入端均经过采样保持器,利用P9 口的CC20、CC21 对采样信号进行电压采样。电机电流差分放大电路原理见图3,为了提高系统抗干扰能力,在输入端加有5mV 偏置电压。为了控制电动机的电流换相时刻,采用两个霍尔转速传感器,对电机的换相进行精确控制。霍尔转速传感器可以采TLE4905。为了控制电动机的转速,采用PWM 斩波控制电机电压。利用XC164CM 的P1 口的P1L0~P1L3 控制电动机的相位,利用P1 口的CC24、CC25 对电压斩波,通过74LS366 进行波形叠加后送给功率MOSFET。
4. 试验结果对比
我们采用MATLAB/Simulink 控制开发与测试平台对我们的EHPS 系统进行了仿真测试,图4,图5 为自行研制的ECU 与进口原车上的ECU 控制效果的对比,从图中曲线可以看出,两种控制器的控制效果是相吻合的。同时我们进行了由不同驾驶员进行驾车体验,在事先不告知何种控制器的情况下,驾驶员已分辨不出来是原车上的ECU 还是自行开发ECU 在起作用。
结语
在将近两年的研究过程中,我们主要采用了在实车上进行控制程序的在线调试,并与国外同类产品进行反复性能对比。这样保证了产品在实车应用可行性。依据国外同类产品电机控制曲线,我们EHPS ECU 从性能上已基本达到国外同类产品水平。但是可靠性要随着产品的不断装车要进一步进行验证。