质量-弹簧-阻尼器系统的间接 MRAC 控制
此示例说明如何在 Simulink® 中使用间接模型参考自适应控制 (MRAC) 系统对二阶质量-弹簧-阻尼器系统进行模型参数估计。质量-弹簧-阻尼器系统的属性未知。间接 MRAC 控制器估计被控对象参数,并实现基于逆的控制器来跟踪参考模型。
质量-弹簧-阻尼器模型
质量-弹簧-阻尼器系统由质量为 和 的两个小车组成,这两个小车通过刚度系数为 和 的弹簧以及阻尼系数为 的阻尼器相互连接并接地。
定义弹簧-质量-阻尼系统的未知动态系统可表示如下。
其中:
是系统状态向量。
和 是质量的位置。
和 是未知系统的参数。
假定有以下未知非线性系统,我们的目标是设计一个控制器以便能够跟踪以下参考系统。
其中:
包含参考模型状态。
和 是参考系统的参数。
是用户提供的参考信号。
参考跟踪控制器
间接 MRAC 控制器使用一个估计器模型来计算 和 ,它们分别是未知系统参数 和 的估计值。
为了计算控制动作 ,控制器使用前馈增益 和反馈增益 。
控制器增益派生自参考模型参数( 和 )和估计的观测器参数( 和 )。
配置控制器
指定质量-弹簧-阻尼器系统的真实刚度系数、阻尼系数和质量。
% Stiffness c0 = 1; c1 = 1; % Damping d = 1; % Mass m1 = 5; m2 = 1;
使用这些系统参数定义实际的系统动态特性。
A = [0 1 0 0;-(c0+c1)/m1 -2*d/m1 c1/m1 d/m1; 0 0 0 1;c1/m2 d/m2 -c1/m2 -2*d/m2]
A = 4×4
0 1.0000 0 0
-0.4000 -0.4000 0.2000 0.2000
0 0 0 1.0000
1.0000 1.0000 -1.0000 -2.0000
B = [0 0;1/m1 0;0 0;0 1/m2]
B = 4×2
0 0
0.2000 0
0 0
0 1.0000
此真实模型对于间接 MRAC 控制器是未知的。在这种情况下,控制器使用估计器模型来估计未知的被控对象动态特性。在运行期间,控制器可以自适应此模型的参数以改进它对未知系统参数的估计。
Ahat = [0 1 0 0;0 0 0 0;0 0 0 1;0 0 0 0]; Bhat = [0 0.1;0.1 0;0 0;0.1 0.1];
控制器的目标是跟踪参考模型的性能。指定参考模型的参数。
Am = [0 1 0 0;-25 -10 0 0;0 0 0 1;0 0 -25 -10]; Bm = [0 0;25 0;0 0;0 25];
指定被控对象的初始条件。
x_0 = 0;
指定用于更新估计器模型参数的学习率。
gamma_a = 0.1; % Ahat learning rate gamma_b = 0.1; % Bhat learning rate
仿真控制器
打开 Simulink 模型。
mdl = "mracMassSpringDamper";
open_system(mdl)
在此模型中:
Actual Plant Model 模块实现质量-弹簧-阻尼器系统的标称模型。
Reference 模块为两个质量生成参考信号。
Model Reference Adaptive Control 模块输出控制动作 u,它是使用估计器模型派生的。
虽然 MRAC 控制器也可以估计受控系统中的未知扰动,但对于此示例,不存在这样的扰动。此时,控制器的目标仅仅是估计未知被控对象模型的参数。有关使用直接 MRAC 控制器估计未知扰动的示例,请参阅Model Reference Adaptive Control of Aircraft Undergoing Wing Rock。
仿真模型。
Tf = 100; sim(mdl);
查看实际被控对象状态,即质量的位置,以及相应的参考信号。该控制器能够使实际被控对象状态跟踪参考信号。
open_system(mdl + "/p1")
open_system(mdl + "/p2")
Model Reference Adaptive Controller 模块配置为分别使用 Ahat 和 Bhat 输出端口输出估计器模型的参数 和 。绘制参数图。
open_system(mdl + "/Ahat")
open_system(mdl + "/Bhat")
随着时间的推移,控制器会自适应估计器参数的值。然而,由于参考信号中缺乏持续激励,估计的参数没有收敛到真实参数。尽管模型参数没有收敛,但控制器仍然收敛到参考行为。