MATLAB/Simulink建模-车辆巡航控制 (1)

物理设置

自动巡航控制是许多现代车辆中使用的反馈控制系统的一个很好的例子。 巡航控制系统的目的是在受到外部干扰(例如风或道路坡度的变化)的情况下保持恒定的车速。这是通过测量车辆速度,将其与所需或参考速度进行比较,并根据控制规律自动调节油门来实现的。

MATLAB/Simulink建模-车辆巡航控制 (1)的图1

我们在这里考虑一个简单的车辆动力学模型,如上面的自由体图 (FBD) 所示。 质量为 m 的车辆受到控制力 u 的作用。 力 u 表示在道路/轮胎界面产生的力。 对于这个简化的模型,我们假设我们可以直接控制这个力,而忽略产生力的动力系统、轮胎等的动力学。 由于滚动阻力和风阻,阻力 bv 被假定为随车辆速度 v 线性变化,并且作用在与车辆运动相反的方向上。

系统方程

有了这些假设,我们就剩下一阶质量阻尼器系统了。将 x 方向的力相加并应用牛顿第二定律,我们得出以下系统方程:

MATLAB/Simulink建模-车辆巡航控制 (1)的图2

由于我们对控制车辆的速度感兴趣,因此选择输出方程如下

MATLAB/Simulink建模-车辆巡航控制 (1)的图3

系统参数对于这个例子,我们假设系统的参数是:

(m) 车辆质量 1000 kg

(b) 阻尼系数 50 Ns/m

状态空间模型

一阶系统只有一种能量存储模式,在这种情况下是汽车的动能,因此只需要一个状态变量,即速度。 因此,状态空间表示为:

MATLAB/Simulink建模-车辆巡航控制 (1)的图4

我们使用以下命令将此状态空间模型输入到 MATLAB 中:

m = 1000;
b = 50;

A = -b/m;
B = 1/m;
C = 1;
D = 0;

cruise_ss = ss(A,B,C,D);

传递函数模型

对控制微分方程进行拉普拉斯变换并假设初始条件为零,我们发现巡航控制系统的传递函数为:

MATLAB/Simulink建模-车辆巡航控制 (1)的图5

我们使用以下命令将传递函数模型输入到 MATLAB 中:

s = tf('s');
P_cruise = 1/(m*s+b);

本例中使用的参数如下:

(m) 车辆质量 1000 kg

(b) 阻尼系数 50 N.s/m

(u) 标称控制力 500 N

性能规格

下一步是提出补偿系统应该达到的一些设计标准。 当发动机提供 500 牛顿的力时,汽车将达到 10 m/s (22 mph) 的最大速度,请参阅下面的开环阶跃响应部分。 汽车应该能够在不到 5 秒的时间内加速到这个速度。 在此应用中,速度的 10% 过冲和 2% 稳态误差就足够了。牢记以上几点,我们针对这个问题提出了以下设计标准:    

上升时间 < 5 秒    

超调 < 10%    

稳态误差 < 2%

开环阶跃

响应在没有任何反馈控制的情况下,系统对 500 牛顿阶跃输入力的开环响应在 MATLAB 中模拟如下:

m = 1000;
b = 50;
u = 500;

s = tf('s');
P_cruise = 1/(m*s+b);

step(u*P_cruise)


MATLAB/Simulink建模-车辆巡航控制 (1)的图6

我们看到开环系统没有表现出超调或振荡(一阶系统的特征),并且确实达到了所需的 10 m/s 稳态速度; 然而,上升时间太慢了,大约 60 秒。 因此,我们需要设计一个反馈控制器,它可以显着加快响应速度,而不会对其他动态性能指标产生负面影响。

开环极点/零点

巡航控制系统在 s = -b/m 处有一个单极点,我们可以看到使用以下 MATLAB 命令绘制在 s 平面上:

pzmap(P_cruise)
axis([-1 1 -1 1])

MATLAB/Simulink建模-车辆巡航控制 (1)的图7

我们观察到开环系统是稳定的并且不会振荡,因为极点是实数和负数。 此外,响应速度由该极点的幅度 b/m 决定:幅度越大,系统越快接近稳态值。 由于我们通常无法改变系统参数来改变系统的动态响应,因此我们必须设计控制器来改变闭环系统的极点和零点以满足所需的性能规格。

开环波特图

我们还对使用以下 MATLAB 命令发现的系统的开环频率响应感兴趣:

bode(P_cruise)

MATLAB/Simulink建模-车辆巡航控制 (1)的图8

我们看到波特图展示了一阶系统的明确特征,包括在 w = b/m = 0.05 rad/s 和 -20 dB/dec roll 的转角频率处的 -3 dB 幅度和 -45 度相位。 高频时关闭。

(4条)
默认 最新
感谢分享
评论 点赞
👍🏻
评论 点赞

查看更多评论 >

点赞 11 评论 4 收藏 4
关注