В этом примере показано, как обрезать и линеаризовать корпус с помощью программного обеспечения 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: ---------- <strong>x</strong> <strong>Known</strong> <strong>SteadyState</strong> <strong>Min</strong> <strong>Max</strong> <strong>dxMin</strong> <strong>dxMax</strong> <strong>_____</strong> <strong>_____</strong> <strong>___________</strong> <strong>____</strong> <strong>___</strong> <strong>_____</strong> <strong>_____</strong> (1.) scdairframe/EOM/ Equations of Motion (Body Axes)/Position 0 false true -Inf Inf -Inf Inf -3048 false true -Inf Inf -Inf Inf (2.) scdairframe/EOM/ Equations of Motion (Body Axes)/Theta 0 false true -Inf Inf -Inf Inf (3.) scdairframe/EOM/ Equations of Motion (Body Axes)/U,w 984 false true -Inf Inf -Inf Inf 0 false true -Inf Inf -Inf Inf (4.) scdairframe/EOM/ Equations of Motion (Body Axes)/q 0 false true -Inf Inf -Inf Inf Inputs: ---------- <strong>u</strong> <strong>Known</strong> <strong>Min</strong> <strong>Max</strong> <strong>_</strong> <strong>_____</strong> <strong>____</strong> <strong>___</strong> (1.) scdairframe/Fin Deflection 0 false -Inf Inf Outputs: ---------- <strong>y</strong> <strong>Known</strong> <strong>Min</strong> <strong>Max</strong> <strong>_</strong> <strong>_____</strong> <strong>____</strong> <strong>___</strong> (1.) scdairframe/q 0 false -Inf Inf (2.) scdairframe/az 0 false -Inf Inf
Задайте, который состояния в модели:
Известный в рабочей точке
В устойчивом состоянии в рабочей точке
Укажите что 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 specifications were successfully met. States: ---------- <strong>Min</strong> <strong>x</strong> <strong>Max</strong> <strong>dxMin</strong> <strong>dx</strong> <strong>dxMax</strong> <strong>_____</strong> <strong>__________</strong> <strong>_____</strong> <strong>_____</strong> <strong>___________</strong> <strong>_____</strong> (1.) scdairframe/EOM/ Equations of Motion (Body Axes)/Position 0 0 0 -Inf 984 Inf -3048 -3048 -3048 -Inf 0 Inf (2.) scdairframe/EOM/ Equations of Motion (Body Axes)/Theta 0 0 0 -Inf -0.0097235 Inf (3.) scdairframe/EOM/ Equations of Motion (Body Axes)/U,w 984 984 984 -Inf 22.69 Inf 0 0 0 0 -1.4367e-11 0 (4.) scdairframe/EOM/ Equations of Motion (Body Axes)/q -Inf -0.0097235 Inf 0 1.1477e-16 0 Inputs: ---------- <strong>Min</strong> <strong>u</strong> <strong>Max</strong> <strong>____</strong> <strong>_________</strong> <strong>___</strong> (1.) scdairframe/Fin Deflection -Inf 0.0014161 Inf Outputs: ---------- <strong>Min</strong> <strong>y</strong> <strong>Max</strong> <strong>____</strong> <strong>__________</strong> <strong>___</strong> (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