一、CAPL编程介绍
CANalyzer或者CANoe软件自带一种与C语言类似的编程语言:CAPL(CAN Access ProgramingLanguage)语言,CAPL语言编写的程序是事件触发程序,触发事件诸如总线上的报文、环境变量、键盘的输入或者定时器溢出等,而对于事件的响应可能是向总线发送报文或者改变环境变量的值。本文就是使用CAPL语言编写程序,对试验数据进行离线处理,当然本算法也可以实现在线实时处理试验数据。图1:CAPL语言编程界面。
二、本算法实现的功能
1.换不同挡位时对应的发动机转速、油门位置、扭矩统计,可以用来参考制定换挡规律;其中油门位置可以通过报文EEC2_Eng得到,发动机转速和发动机扭矩可以通过报文EEC 1_Eng得到。
on message EEC2-ng
{
Youmen=this.AccelPedalPos 1 *0.4;
output ( this);
)
on message EEC 1_ Eng
{
shijiniuju=(this. ActualEngPercent
Torque-125)*0.01;
enginespeed=this.EngSpeed*0.125;
output ( this);
}
但是采集的油门位置、发动机转速、发动机扭矩的值必须与目标挡位发出时相对应,这才是从控制策略发出的换挡条件,直接反映换挡规律是如何定义的;
2.不同路况下换不同挡位的换挡时间、最长换挡时间、最短换挡时间、平均换挡时间、换挡次数统计,见图2计算流程图。
三、换不同挡位时对应的转速差、最大转速差、平均转速差
转速差是指目标挡对应的齿轮转速与滑套转速之差,即:
Speeddifference[f][ff]=Countershaft一 Speed[f][ff]*Speed ratio[周-Outputshaft_Speed [f] [ff]*Rang-ratio [ff];//统计换不同挡位时转速差,即调速结束时的转速差;
式中的中间轴转速和输出轴转速可以通过报文0x101x读取,即:
中间轴转速Countershaft_Speed[f[ff=this.Countershaft_Speed*0.125;
输出轴转速Outputshaft_Speed[月[们=this.Outputshaft_ Speed*0.125;
其中:
f-当前挡位;
ff-目标挡位;
而Speed_ratio[ff和Rang_ratio四分别是指对应挡位的齿轮齿数比以及高低挡齿数比,比如10JZSD 160的齿数比可以定义为:
Speed_ratio [21] ={0,1.8/4.2,2.2/3.8,3.0/3.8,3.6/3.4,4.0/2.8,1.8/4.2,2.2/3.8,3.0/3.8,3.6/3.4,4.0/2.8,0,0,0,0,0,0,0,0,0,01;//10挡箱各挡位轮齿数比;
Rang-ratio [21]=10,5.8/1.3,5.8/1.3,5.8/1.3,5.8/1.3,5.8/1.3,1.0,1.0,1.0,1.0,1.0,0,0,0,0,0,0,0,0,0,0); //10挡箱高低挡齿数比。
四、不同路段一定里程内的换挡总次数、换挡成功率、行驶里程、行驶时间、平均车速、换挡频率统计
换挡总次数和换挡成功率计算流程见图3。
以下用来计算行驶里程、行驶时间、平均车速、换挡频率等;
on message EBC2_jiasudu
{
FrontAxleSpeed=this.
FrontAxle
peed*0.00390625;<
FrontAxleSpeed 1=
FrontAxleSpeed2;
FrontAxleSpeed2=
FrontAxleSpeed;
T1 =t2;
t2=timeNow)*0.00001;
t3=timeNow()*0.00001;
S+==(FrontAxleSpeed 1+
FrontAxle
Speed2)*(t2-tl )/2/3600;
VehicleSpeed_average=
S * 3600/t3;
Huandangpinlv =gear number/
S;
//write(”%f,%f , %f , %d”,S,
VehicleSpeed_average,
Huandangpinlv,gear number);
output ( this);
}
五、制动能力统计,制动器工作与不工作的情况下,升挡时间对比
制动能力计算流程见图4。