汽车全主动悬架最优控制仿真
简介
汽车全主动悬架是一种具有做功能力的悬架,在悬架系统中附加一个可控制作用力的力发生器,因此需要一套提供能量的设备。全主动悬架可根据汽车载荷、路面状况、行驶速度、驱动、制动、转向等行驶条件的变化,自动调节悬架的刚度、阻尼和车身高度等控制参数,同时满足汽车行驶平顺性和操纵稳定性的要求。
使用说明
一、实验目的
1.建立汽车全主动悬架数学模型
2.建立汽车全主动悬架最优控制数学模型
3.建立汽车全主动悬架评价指标传递函数
4.求汽车全主动悬架最优控制参数
5.绘制汽车全主动悬架输出变量的时域特性曲线
6.绘制汽车全主动悬架输出变量的频域特性曲线
二、仿真数据
汽车全主动悬架最优控制仿真所需参数见表6-12-1。
| 悬挂质量/kg | 非悬挂质量/kg | 轮胎刚度/(N/m) | 下截止频率/Hz |
|---|---|---|---|
| 280 | 50 | 180000 | 0.07 |
| 路面不平度系数 | 车速/(km/h) | 仿真时间/s | |
| 5×10⁻⁶ | 60 | 10 |
三、实验步骤
1.建立汽车全主动悬架数学模型
原理参考教材第六章实例12
2.建立汽车全主动悬架最优控制数学模型
原理参考教材第六章实例12
3.建立汽车全主动悬架评价指标传递函数
原理参考教材第六章实例12
4.求汽车全主动悬架最优控制参数
根据汽车全主动悬架最优控制数学模型,编写求汽车全主动悬架最优控制参数的MWORKS程序如下。
# 系统参数
ms = 280
mw = 50
kw = 180000
q1 = 300000000
q2 = 4000000
q3 = 200
q4 = 1
# 系统状态空间矩阵
A = [0 1 0 -1
0 0 0 0
0 0 0 -1
0 0 kw/mw 0]
# 输入矩阵
B = [0 1.0 / ms 0 -1 / mw]'
# 输出矩阵
E = [0 0 1 0]'
# 权重矩阵
Qd = [q2 0 0 0
0 0 0 0
0 0 q3*kw^2 0
0 0 0 0]
# 控制权重
Rd = q4 + q1 / ms^2
# 平衡状态权重
Nd = [0 0 0 0]'
# 计算最优增益矩阵
K, S, E = lqr(A, B, Qd, Rd, Nd)
println("K = ", K)
在MWORKS编辑器中输入这些程序,点击运行按钮,就会得到汽车全主动悬架最优控制参数为
k1 = 33.59,k2 = 146.74,k3 = 5637.28,k4 = - 888.41
5.绘制汽车全主动悬架输出变量的时域特性曲线
根据汽车全主动悬架特性数学模型,编写绘制车身垂直加速度、悬架动挠度和轮胎动载荷时域特性曲线的MWORKS程序如下。
ms = 280
mw = 50
Kw = 180000
k1 = 32.33
k2 = 136.38
k3 = 4933.68
k4 = -680.75
u = 16.67
f0 = 0.07
Sq = 0.000005
# 定义状态空间矩阵 A
A = [0 1 0 -1
-k1/ms -k2/ms -k3/ms -k4/ms
0 0 0 -1
k1/mw k2/mw Kw/mw+k3/mw k4/mw]
# 定义输入矩阵 B
B = [0 0 1 0]'
# 定义输出矩阵 C
C = [-k1/ms -k2/ms -k3/ms -k4/ms
1 0 0 0
0 0 Kw 0]
# 生成随机白噪声
white_noise = 1 .- 2 * 1 * rand(1, 1000)
# 初始化位移和速度数组
q = Array{Float64}(undef, 1001)
dq = Array{Float64}(undef, 1000)
# 模拟系统响应
for i = 1:1000
q[1] = 0
q[i+1] = 0.01 * (-2 * pi * f0 * q[i] + 2 * pi * (sqrt(Sq * u)) * white_noise[i]) + q[i]
global dq = 100 .* diff(q)
end
x = Array{Float64}(undef, 4, 1001)
y = Array{Float64}(undef, 3, 1000)
# 模拟系统响应
for i = 1:1000
x[:, 1] = [0; 0; 0; 0]
# 创建连续时间状态空间模型
sysc = ss(A, B, zeros(size(A)), zeros(size(B)))
# 将连续时间状态空间模型转换为离散时间状态空间模型
sysd = c2d(sysc, 0.01)
# 获取离散时间状态空间模型的矩阵
G = sysd.A
H = sysd.B
# 计算下一个时间步的状态
x[:, i+1] = G * x[:, i] + H * dq[i]
# 计算输出
y[:, i] = C * x[:, i]
end
# 绘制位移随时间的变化曲线
figure(1)
t = 0:0.01:10
plot(t, q)
xlabel("时间/s")
ylabel("路面位移/m")
# 绘制输出y[1,:]随时间的变化曲线
figure(2)
t1 = 0.01:0.01:10
plot(t1, y[1, :])
xlabel("时间/s")
ylabel("车身垂直加速度/(m/s²)")
# 绘制输出y[2,:]随时间的变化曲线
figure(3)
t1 = 0.01:0.01:10
plot(t1, y[2, :])
xlabel("时间/s")
ylabel("悬架动挠度/m")
# 绘制输出y[3,:]随时间的变化曲线
figure(4)
t1 = 0.01:0.01:10
plot(t1, y[3, :])
xlabel("时间/s")
ylabel("轮胎动载荷/N")
在MWORKS编辑器中输入这些程序,点击运行按钮,就会得到路面位移时域特性曲线(图6-12-2)、车身垂直加速度时域特性曲线(图6-12-3)、悬架动挠度时域特性曲线(图6-12-4)、轮胎动载荷时域特性曲线(图6-12-5)。由于路面位移是随机产生的,所以每次运行得到的图形都会不同。




登录账号即可下载资源、参与讨论。