Это часть 1 пятичастной серии примеров по проекту и настройке системы управления рейсом для HL-20 транспортного средства. Эта часть посвящена обрезке и линеаризации планера.
Модель HL-20 адаптирована из модели, описанной в NASA HL-20 Lifting Body Airframe (Aerospace Blockset). Это 6-DOF модель транспортного средства во время финального спуска и фазы посадки рейса. Тяга на этой фазе не используется, и планер планерируется к посадочной полосе.
open_system('csthl20_trim')
Эта версия модели включает уравнения движения (EOM), вычисление силы и момента из аэродинамических таблиц, модель окружения и блок «Controls Selector», который сопоставляет требования элерона, лифта и руля направления с отклонениями шести поверхностей управления.
Обрезка состоит из вычисления отклонений элерона, лифта и руля направления, которые обнуляют силы и моменты на планере или, эквивалентно, сохраняют скорости тела ub, vb, wb и угловые скорости p, q, r устойчивы. Поскольку тяга не используется во время спуска, одна степень свободы теряется, и условие обрезки должно быть расслаблено, чтобы позволить ub изменяться. Значения обрезки отклонений da, de, dr зависят от ориентации планера относительно ветра. Эта ориентация характеризуется углом атаки (AoA) альфа и боковым углом (AoS) бета.
С operspec
и findop
функции, вы можете эффективно вычислить отклонения отделки по сетке (альфа, бета) значений, покрывающих рабочую область значений транспортного средства. Здесь мы обрезаем модель для 8 значений альфа в диапазоне от -10 до 25 степеней и 5 значений бета в диапазоне от -10 до + 10 степени. Номинальная высота и скорость заданы равными 10 000 футов и 0,6 Маха.
d2r = pi/180; % degrees to radians m2ft = 3.28084; % meter to feet Altitude = 10000/m2ft; % Nominal altitude Mach = 0.6; % Nominal Mach alpha_vec = -10:5:25; % Alpha Range beta_vec = -10:5:10; % Beta Range [alpha,beta] = ndgrid(alpha_vec,beta_vec); % (Alpha,Beta) grid
Использование operspec
для создания массива спецификаций рабочих точек.
opspec = operspec('csthl20_trim',size(alpha));
opspec(1)
Operating point specification for the Model csthl20_trim. (Time-Varying Components Evaluated at time t=0) States: ---------- (1.) csthl20_trim/HL20 Airframe/6DOF (Euler Angles)/Calculate DCM & Euler Angles/phi theta psi spec: dx = 0, initial guess: 0 spec: dx = 0, initial guess: -0.199 spec: dx = 0, initial guess: 0 (2.) csthl20_trim/HL20 Airframe/6DOF (Euler Angles)/p,q,r spec: dx = 0, initial guess: 0 spec: dx = 0, initial guess: 0 spec: dx = 0, initial guess: 0 (3.) csthl20_trim/HL20 Airframe/6DOF (Euler Angles)/ub,vb,wb spec: dx = 0, initial guess: 203 spec: dx = 0, initial guess: 0 spec: dx = 0, initial guess: 23.3 (4.) csthl20_trim/HL20 Airframe/6DOF (Euler Angles)/xe,ye,ze spec: dx = 0, initial guess: -1.21e+04 spec: dx = 0, initial guess: 0 spec: dx = 0, initial guess: -3.05e+03 Inputs: ---------- (1.) csthl20_trim/da initial guess: 0 (2.) csthl20_trim/de initial guess: 0 (3.) csthl20_trim/dr initial guess: 0 Outputs: ---------- (1.) csthl20_trim/p;q;r (1-3) spec: none spec: none spec: none (2.) csthl20_trim/phi;theta;psi (4-6) spec: none spec: none spec: none (3.) csthl20_trim/alpha (7) spec: none (4.) csthl20_trim/beta (8) spec: none (5.) csthl20_trim/Mach (9) spec: none (6.) csthl20_trim/Ax,Ay,Az (10-12) spec: none spec: none spec: none
Задайте условия равновесия для каждой ориентации планера. Для этого:
Задайте ориентацию путем фиксации выходов альфа и бета-версии к их желаемым значениям.
Задайте скорость планера путем фиксации выхода Mach на 0,6.
Отметьте угловые скорости p, q, r как установившиеся.
Отметьте скорости vb и wb как устойчивые.
for ct=1:40 % Specify alpha angle opspec(ct).Outputs(3).y = alpha(ct); opspec(ct).Outputs(3).Known = true; % Specify beta angle opspec(ct).Outputs(4).y = beta(ct); opspec(ct).Outputs(4).Known = true; % Specify Mach speed opspec(ct).Outputs(5).y = Mach; opspec(ct).Outputs(5).Known = true; % Mark p,q,r as steady opspec(ct).States(2).SteadyState = true(3,1); % Mark vb,wb as steady opspec(ct).States(3).SteadyState = [false;true;true]; % (phi,theta,psi) and (Xe,Ye,Ze) are not steady opspec(ct).States(1).SteadyState = false(3,1); opspec(ct).States(4).SteadyState = false(3,1); end
Чтобы полностью охарактеризовать условие обрезки, также
Установите p = 0, чтобы предотвратить качение.
Установите углы крена/тангажа/рыскания (phi, theta, psi) равными (0, альфа, бета), чтобы выровнять системы координат ветра и земли.
Укажите положение планера (Xe, Ye, Ze) как (0,0, -Altitude).
for ct=1:40 % Set (phi,theta,psi) to (0,alpha,beta) opspec(ct).States(1).x = [0 ; alpha(ct)*d2r ; beta(ct)*d2r]; opspec(ct).States(1).Known = true(3,1); % Set p=0 (no rolling) opspec(ct).States(2).x(1) = 0; opspec(ct).States(2).Known(1) = true; % Set (Xe,Ye,Ze) to (0,0,-Altitude) opspec(ct).States(4).x = [0 ; 0 ; -Altitude]; opspec(ct).States(4).Known = true(3,1); end
Теперь используйте findop
для вычисления условий обрезки для всех 40 (альфа, бета) комбинаций в одном движении. Этот подход пакетного режима включает одну компиляцию модели. FINDOP использует оптимизацию, чтобы решить нелинейные уравнения, характеризующие каждое равновесие. Здесь мы используем алгоритм «SQP» для этой задачи.
% Set options for FINDOP solver TrimOptions = findopOptions; TrimOptions.OptimizationOptions.Algorithm = 'sqp'; TrimOptions.DisplayReport = 'off'; % Trim model [ops,rps] = findop('csthl20_trim',opspec,TrimOptions);
Это возвращает 8 на 5 массивов OPS (рабочие условия) и RPS (отчеты оптимизации). Можно использовать RPS, чтобы убедиться, что каждое условие обрезки было успешно вычислено. Результаты для первой (альфа, бета) пары показаны ниже.
[alpha(1) beta(1)]
ans = -10 -10
ops(1)
Operating point for the Model csthl20_trim. (Time-Varying Components Evaluated at time t=0) States: ---------- (1.) csthl20_trim/HL20 Airframe/6DOF (Euler Angles)/Calculate DCM & Euler Angles/phi theta psi x: 0 x: -0.175 x: -0.175 (2.) csthl20_trim/HL20 Airframe/6DOF (Euler Angles)/p,q,r x: 0 x: -0.158 x: 0.008 (3.) csthl20_trim/HL20 Airframe/6DOF (Euler Angles)/ub,vb,wb x: 191 x: -34.2 x: -33.7 (4.) csthl20_trim/HL20 Airframe/6DOF (Euler Angles)/xe,ye,ze x: 0 x: 0 x: -3.05e+03 Inputs: ---------- (1.) csthl20_trim/da u: -24 (2.) csthl20_trim/de u: -6.49 (3.) csthl20_trim/dr u: 4.09
rps(1).TerminationString
ans = 'Operating point specifications were successfully met.'
Усиления системы управления рейсом обычно планируются как функция альфа и бета, см. Часть 2 (Управление угловой скоростью в HL-20 Autopilot) для получения дополнительной информации. Чтобы настроить эти усиления, вам нужны линеаризированные модели планера HL-20 в условиях 40 обрезки. Использование linearize
чтобы вычислить эти модели из условий работы обрезки ops
.
% Linearize airframe dynamics at each trim condition G = linearize('csthl20_trim','csthl20_trim/HL20 Airframe',ops); size(G)
8x5 array of state-space models. Each model has 34 outputs, 9 inputs, and 12 states.
Линейный эквивалент блока «Controls Selector» зависит от величины отклонения лифта и должен быть рассчитан для qbar_inv=1 (номинальное динамическое давление при Mach = 0,6). Для удобства также линеаризируйте этот блок в условиях 40 обрезки.
CS = linearize('csthl20_trim','csthl20_trim/Controls Selector',ops); % Zero out a/b and qbar_inv channels CS = [CS(:,1:3) zeros(6,2)];
Линеаризированные модели планера имеют 12 состояний:
xG = G.StateName
xG = 12x1 cell array {'phi theta psi(1)'} {'phi theta psi(2)'} {'phi theta psi(3)'} {'p,q,r (1)' } {'p,q,r (2)' } {'p,q,r (3)' } {'ub,vb,wb(1)' } {'ub,vb,wb(2)' } {'ub,vb,wb(3)' } {'xe,ye,ze(1)' } {'xe,ye,ze(2)' } {'xe,ye,ze(3)' }
Некоторые состояния не находятся под властью автопилота roll/pitch/yaw, а другие состояния мало способствуют проекту этого автопилота. В целях управления наиболее важными состояниями являются угол крена phi, скорости тела ub, vb, wb и угловые скорости p, q, r. Соответственно, используйте modred
чтобы получить модель 7-го порядка, которая только сохраняет эти состояния.
G7 = G; xKeep = {... 'phi theta psi(1)' 'ub,vb,wb(1)' 'ub,vb,wb(2)' 'ub,vb,wb(3)' 'p,q,r(1)' 'p,q,r(2)' 'p,q,r(3)'}; [~,xElim] = setdiff(xG,xKeep); for ct=1:40 G7(:,:,ct) = modred(G(:,:,ct),xElim,'truncate'); end
С помощью этих линеаризированных моделей вы можете перейти к задаче настройки и планирования коэффициентов усиления системы управления рейсом. Смотрите Управление Угловой Скоростью в HL-20 Autopilot для Части 2 этого примера.