汽车座椅直接和驾乘人员身体相接触,是保护驾乘人员安全驾驶的重要因素之一。一款汽车座椅在上市之前需要经过静态、动态、高低温、舒适性和VOC等测试,其中正碰和后碰测试是汽车座椅试验项目中必不可少的测试项。座椅骨架在发生碰撞时应具有足够的强度和较小的变形量,座椅滑轨在前后方向应锁止,才能够为乘客提供足够的保护和逃生空间。
数日之前曾观摩某汽车座椅的碰撞试验,现场非常震撼。碰撞台车瞬间将座椅推出,座椅及试验平台在几毫秒的时间内加速度达到30g以上。(PS.以后开车一定要小心谨慎哦,碰撞不是闹着玩儿!)
碰撞台车试验输入波形为加速度曲线,加速度曲线来源于CAE分析或者整车碰撞试验实车采集。试验前一名试验工程师通过碰撞台车自带的控制软件把加速度曲线转成速度曲线以判断试验条件。我当时觉得非常惊奇,就想着自己能不能也得到这样的结果呢?
回家之后,我查询了一些资料发现MATLAB软件自带的cumtrapz函数可以满足我的使用要求。cumtrapz函数和trapz函数都是基于梯形法则的数值积分公式,区别是:前者输出一个长度和原数据长度一样的数列,每一个数对应原来数列相应数的积分;后者只能输出一个积分结果。于是琢磨了一下,将思绪整理成代码如下:
[NUM,TXT,RAW]=xlsread('C:\Acc.xlsx'); % 读取excel文件,此处注意路径设置
t=NUM(:,1); %读入时间,单位为s
Acc=NUM(:,2); %读入加速度单位为m/s^2
figure('Name','碰撞波形图')
plot(t,Acc);
xlabel('时间 (s)'); ylabel('加速度 (m/s^2)')
title('碰撞波形图');
v=3.6*cumtrapz(t,Acc); %速度单位转换为km/h
figure('Name','速度曲线图')
plot(t,v);
xlabel('时间 (s)'); ylabel('速度 (m/s)')
title('速度曲线图');
s=cumtrapz(t,cumtrapz(t,Acc)); %位移单位为m
figure('Name','位移曲线图')
plot(t,s);
xlabel('时间 (s)'); ylabel('位移 (m/s)')
title('位移曲线图');
为了方便可以将代码打包成独立可执行程序,本文使用MATLAB软件中的APP Designer模块建立一个小程序。App Designer模块是一个丰富的开发环境,它同时提供布局和代码两种视图、集成了大量的交互式组件。
软件界面如下图所示,使用非常简单:首先导入碰撞波形信号,波形将显示在软件左上角图框内;然后旋转按钮选择计算速度/位移,结果将直接显示在软件右上角的图框内;最后单击“保存按钮”可以根据需要将最终计算结果保存在Excel表中。当旋转按钮指向速度/位移时,指示灯将点亮成“绿色”;否则指示灯颜色为“红色”。
软件操作如下动图所示,旋转按钮结果将直接显示出来。
需要注意的是此积分方式属于时域积分,积分结果受原始信号影响很大。若原始加速度信号中存在零漂、趋势项等,则得到的结果将与真值相差非常大。有资料表明频域积分能取得更好的结果,之后会有另一篇文章进行介绍。