对机身进行配平和线性化
此示例说明如何使用 Simulink® Control Design™ 软件对机身进行配平和线性化。
目标是找到当飞机以设定速度飞行时,能够产生给定迎角的升降舵偏转角以及由此产生的配平机体角速度。
一旦找到配平条件,就可以计算出描述配平条件附近状态动态特性的线性模型。
固定参数:
迎角 (
Theta)机体姿态 (
U)位置
配平稳态参数:
升降舵偏转角 (
w)机体角速度 (
q)
计算工作点
打开模型。
mdl = 'scdairframe';
open_system(mdl)

使用模型初始条件为模型创建一个工作点设定对象。
opspec = operspec(mdl)
opspec =
Operating point specification for the Model scdairframe.
(Time-Varying Components Evaluated at time t=0)
States:
----------
x Known SteadyState Min Max dxMin dxMax
___________ ___________ ___________ ___________ ___________ ___________ ___________
(1.) scdairframe/EOM/3DOF (Body Axes)/Position
0 false true -Inf Inf -Inf Inf
-3047.9999 false true -Inf Inf -Inf Inf
(2.) scdairframe/EOM/3DOF (Body Axes)/Theta
0 false true -Inf Inf -Inf Inf
(3.) scdairframe/EOM/3DOF (Body Axes)/U,w
984 false true -Inf Inf -Inf Inf
0 false true -Inf Inf -Inf Inf
(4.) scdairframe/EOM/3DOF (Body Axes)/q
0 false true -Inf Inf -Inf Inf
Inputs:
----------
u Known Min Max
_____ _____ _____ _____
(1.) scdairframe/Fin Deflection
0 false -Inf Inf
Outputs:
----------
y Known Min Max Period PeriodicTolerance
_________________ _________________ _________________ _________________ _________________ _________________
(1.) scdairframe/q
0 false -Inf Inf -1 0.0001
(2.) scdairframe/az
0 false -Inf Inf -1 0.0001
指定模型中哪些状态:
在工作点处已知
在工作点处处于稳态
指定 Position 状态为已知,且不处于稳态。对于状态值(在 opspec.States(1).x 中指定),使用模型初始条件的默认值。
opspec.States(1).Known = [1;1]; opspec.States(1).SteadyState = [0;0];
指定第二个状态(对应于迎角 Theta)为已知,但不处于稳态。与位置状态一样,使用模型初始条件的默认状态值。
opspec.States(2).Known = 1; opspec.States(2).SteadyState = 0;
第三个状态设定包括机体轴线角速度 U 和 w。指定两个状态在工作点处均为已知,且 w 处于稳态。
opspec.States(3).Known = [1 1]; opspec.States(3).SteadyState = [0 1];
搜索满足这些设定的工作点。
op = findop(mdl,opspec);
Operating point search report:
---------------------------------
opreport =
Operating point search report for the Model scdairframe.
(Time-Varying Components Evaluated at time t=0)
Operating point search completed successfully using optimization.
States:
----------
Min x Max dxMin dx dxMax
___________ ___________ ___________ ___________ ___________ ___________
(1.) scdairframe/EOM/3DOF (Body Axes)/Position
0 0 0 -Inf 984 Inf
-3047.9999 -3047.9999 -3047.9999 -Inf 0 Inf
(2.) scdairframe/EOM/3DOF (Body Axes)/Theta
0 0 0 -Inf -0.0097235 Inf
(3.) scdairframe/EOM/3DOF (Body Axes)/U,w
984 984 984 -Inf 22.6897 Inf
0 0 0 0 -1.4367e-11 0
(4.) scdairframe/EOM/3DOF (Body Axes)/q
-Inf -0.0097235 Inf 0 1.1477e-16 0
Inputs:
----------
Min u Max
_________ _________ _________
(1.) scdairframe/Fin Deflection
-Inf 0.0014161 Inf
Outputs:
----------
Min y Max
__________ __________ __________
(1.) scdairframe/q
-Inf -0.0097235 Inf
(2.) scdairframe/az
-Inf -0.24207 Inf
模型线性化
要在计算出的工作点处对模型进行线性化,请首先指定线性化输入和输出点。
io(1) = linio('scdairframe/Fin Deflection',1,'input'); io(2) = linio('scdairframe/EOM',3,'output'); io(3) = linio('scdairframe/Selector',1,'output');
在工作点处对模型进行线性化。
sys = linearize(mdl,op,io);
绘制线性模型的波特幅值响应。
bodemag(sys)
bdclose('scdairframe')

另请参阅
operspec | findop | linio | linearize