exponenta event banner

Управление MIMO дизельного двигателя

В этом примере используется systune для проектирования и настройки контроллера MIMO для дизельного двигателя. Контроллер настраивается в дискретное время для одного рабочего состояния.

Модель дизельного двигателя

Современные дизельные двигатели используют турбокомпрессор переменной геометрии (VGT) и рециркуляцию выхлопных газов (EGR) для снижения выбросов. Жесткий контроль давления наддува VGT и массового потока EGR необходим для достижения строгих целевых показателей выбросов. В этом примере показано, как сконструировать и настроить контроллер MIMO, который регулирует эти две переменные, когда двигатель работает при 2100 об/мин с массой топлива 12 мг на цилиндр впрыска.

open_system('rct_diesel')

Система управления VGT/EGR моделируется в Simulink. Контроллер регулирует положения EGRLIFT и VGTPOS клапанов EGR и VGT. Он имеет доступ к целям форсированного давления и массопотока ЭГР и измеренным значениям, а также измерениям массы топлива и частоты вращения двигателя. Оба клапана имеют пределы скорости и насыщения. Модель установки отбирается каждые 0,1 секунды и сигналы управления EGRLIFT и VGTPOS обновляются каждые 0,2 секунды. В данном примере рассматриваются ступенчатые изменения + 10 кПа в давлении наддува и + 3 г/с в массовом потоке EGR, а также нарушения + 5 мг в массе топлива и -200 об/мин в скорости.

Для рассматриваемого рабочего состояния мы использовали системную идентификацию, чтобы вывести линейную модель двигателя из экспериментальных данных. Частотная характеристика от обрабатываемых переменных EGRLIFT и VGTPOS к контролируемым переменным BOOST и EGR MF отображается ниже. При этом установка плохо кондиционируется на низкой частоте, что затрудняет независимое управление давлением наддува и массовым потоком ЭГР.

sigma(Plant(:,1:2)), grid
title('Frequency response of the linearized engine dynamics')

Цели контроля

Существуют две основные цели контроля:

  1. Реагируйте на ступенчатые изменения давления наддува и массового потока EGR примерно за 5 секунд с минимальным перекрестным соединением

  2. Быть нечувствительным к (небольшим) изменениям скорости и массы топлива.

Используйте требование отслеживания для первой цели. Задайте амплитуды ступенчатых изменений, чтобы убедиться, что поперечные муфты малы относительно этих изменений.

% 5-second response time, steady-state error less than 5%
TR = TuningGoal.Tracking({'BOOST REF';'EGRMF REF'},{'BOOST';'EGRMF'},5,0.05);
TR.Name = 'Setpoint tracking';
TR.InputScaling = [10 3];

Для второй цели следует рассматривать изменения скорости и массы топлива как ступенчатые возмущения и определять пиковую амплитуду и время отстаивания результирующих изменений в давлении наддува и массовом потоке EGR. Также задают амплитуды сигнала для правильного отражения относительного вклада каждого возмущения.

% Peak<0.5, settling time<5
DR = TuningGoal.StepRejection({'FUELMASS';'SPEED'},{'BOOST';'EGRMF'},0.5,5);
DR.Name = 'Disturbance rejection';
DR.InputScaling = [5 200];
DR.OutputScaling = [10 3];

Для обеспечения достаточной надежности немодулированной динамики и сглаживания ограничьте полосу пропускания управления и обеспечьте достаточный запас устойчивости как на заводских входах, так и на выходах. Поскольку мы имеем дело с контурами обратной связи MIMO 2 на 2, это требование гарантирует стабильность усиления или фазовых изменений в каждом канале обратной связи. Коэффициент усиления или фаза могут изменяться в обоих каналах одновременно и на различную величину в каждом канале. См. раздел Поля стабильности в настройке системы управления и TuningGoal.Margins для получения подробной информации.

% Roll off of -20 dB/dec past 1 rad/s
RO = TuningGoal.MaxLoopGain({'EGRLIFT','VGTPOS'},1,1);
RO.LoopScaling = 'off';
RO.Name = 'Roll-off';

% 7 dB of gain margin and 45 degrees of phase margin
M1 = TuningGoal.Margins({'EGRLIFT','VGTPOS'},7,45);
M1.Name = 'Plant input';
M2 = TuningGoal.Margins('DIESEL ENGINE',7,45);
M2.Name = 'Plant output';

Настройка контроллера Blackbox MIMO

Без априорного знания подходящей структуры управления, сначала попробуйте «blackbox» государственных-космических контроллеров различных порядков. Модель завода имеет четыре состояния, поэтому попробуйте контроллер порядка четыре или менее. Здесь мы настраиваем контроллер второго порядка, так как блок «SS2» в модели Simulink имеет два состояния.

Рис. 1: Контроллер blackbox второго порядка.

Используйте slTuner для настройки модели Simulink. Отметьте блок «SS2» как настраиваемый, зарегистрируйте местоположения для оценки полей и форм петель и укажите, что линеаризация и настройка должны выполняться с частотой дискретизации контроллера.

ST0 = slTuner('rct_diesel','SS2');
ST0.Ts = 0.2;
addPoint(ST0,{'EGRLIFT','VGTPOS','DIESEL ENGINE'})

Теперь используйте systune настроить государственный-космический контроллер в соответствии с нашими контрольными целями. Оцените маржу стабильности и цель сворачивания как жесткие ограничения и постарайтесь наилучшим образом достичь остальных целей (мягких целей). Рандомизировать начальную точку, чтобы уменьшить воздействие нежелательных локальных минимумов.

Opt = systuneOptions('RandomStart',2);
rng(0), ST1 = systune(ST0,[TR DR],[M1 M2 RO],Opt);
Final: Soft = 1.06, Hard = 0.92146, Iterations = 306
Final: Soft = 1.05, Hard = 0.94287, Iterations = 403
Final: Soft = 1.05, Hard = 0.94653, Iterations = 435

Все требования почти выполнены (требование выполняется, когда его нормализованное значение меньше 1). Проверьте это графически.

figure('Position',[10,10,1071,714])
viewGoal([TR DR RO M1 M2],ST1)

Постройте график отслеживания уставок и откликов на отклонение возмущений. Шкала по амплитудам сигнала показывает нормализованные эффекты (изменение давления наддува на + 10 кПа, массовый расход ЭГР на + 3 г/с, масса топлива на + 5 мг, скорость на -200 об/мин).

figure('Position',[100,100,560,500])
T1 = getIOTransfer(ST1,{'BOOST REF';'EGRMF REF'},{'BOOST','EGRMF','EGRLIFT','VGTPOS'});
T1 = diag([1/10 1/3 1 1]) * T1 * diag([10 3]);
subplot(211), step(T1(1:2,:),15), title('Setpoint tracking')
subplot(212), step(T1(3:4,:),15), title('Control effort')

D1 = getIOTransfer(ST1,{'FUELMASS';'SPEED'},{'BOOST','EGRMF','EGRLIFT','VGTPOS'});
D1 = diag([1/10 1/3 1 1]) * D1 * diag([5 -200]);
subplot(211), step(D1(1:2,:),15), title('Disturbance rejection')
subplot(212), step(D1(3:4,:),15), title('Control effort')

Контроллер отвечает менее чем за 5 секунд с минимальным кросс-соединением между BOOST и EGRMF переменные.

Настройка упрощенной структуры управления

Контроллер состояния-пространства может быть реализован как есть, но часто желательно кипятить его до более простой, более привычной структуры. Для этого возьмите настроенный контроллер и проверьте его частотную характеристику

C = getBlockValue(ST1,'SS2');

clf
bode(C(:,1:2),C(:,3:4),{.02 20}), grid
legend('REF to U','Y to U')

bodemag(C(:,5:6)), grid
title('Bode response from FUELMASS/SPEED to EGRLIFT/VGTPOS')

Первый график предполагает, что контроллер по существу ведет себя как PI-контроллер, действующий на REF-Y (разность между целевым и фактическим значениями контролируемых переменных). Второй график предполагает, что переход от измеренного возмущения к манипулируемым переменным может быть заменен усилением последовательно с сетью запаздывания. В целом это предполагает следующую упрощенную структуру управления, состоящую из PI-контроллера MIMO с обратной связью возмущения первого порядка.

Рис. 2: Упрощенная структура управления.

С помощью подсистем вариантов можно реализовать обе структуры управления в одной модели Simulink и использовать переменную для переключения между ними. Здесь настройка MODE=2 выбирает структуру PI MIMO. Как и прежде, используйте systune настройка трех матриц усиления 2 на 2 Kp, Ki, Kff в упрощенной структуре управления.

% Select "MIMO PI" variant in "CONTROLLER" block
MODE = 2;

% Configure tuning interface
ST0 = slTuner('rct_diesel',{'Kp','Ki','Kff'});
ST0.Ts = 0.2;
addPoint(ST0,{'EGRLIFT','VGTPOS','DIESEL ENGINE'})

% Tune MIMO PI controller.
ST2 = systune(ST0,[TR DR],[M1 M2 RO]);
Final: Soft = 1.09, Hard = 0.9993, Iterations = 178

Опять же все требования почти выполнены. Постройте график ответов с замкнутым контуром и сравните его с проектом состояния и пространства.

clf
T2 = getIOTransfer(ST2,{'BOOST REF';'EGRMF REF'},{'BOOST','EGRMF','EGRLIFT','VGTPOS'});
T2 = diag([1/10 1/3 1 1]) * T2 * diag([10 3]);
subplot(211), step(T1(1:2,:),T2(1:2,:),15), title('Setpoint tracking')
legend('SS2','PI+FF')
subplot(212), step(T1(3:4,:),T2(3:4,:),15), title('Control effort')

D2 = getIOTransfer(ST2,{'FUELMASS';'SPEED'},{'BOOST','EGRMF','EGRLIFT','VGTPOS'});
D2 = diag([1/10 1/3 1 1]) * D2 * diag([5 -200]);
subplot(211), step(D1(1:2,:),D2(1:2,:),15), title('Disturbance rejection')
legend('SS2','PI+FF')
subplot(212), step(D1(3:4,:),D2(3:4,:),15), title('Control effort')

Черная коробка и упрощенные структуры управления обеспечивают одинаковую производительность. Проверьте настроенные значения PI и усиления обратной связи.

showTunable(ST2)
Block 1: rct_diesel/CONTROLLER/MIMO PID/Kp =
 
  D = 
               u1          u2
   y1   -0.007985  -0.0007788
   y2    -0.02045      0.0146
 
Name: Kp
Static gain.

-----------------------------------

Block 2: rct_diesel/CONTROLLER/MIMO PID/Ki =
 
  D = 
             u1        u2
   y1  -0.01055  -0.01432
   y2  -0.03002   0.04681
 
Name: Ki
Static gain.

-----------------------------------

Block 3: rct_diesel/CONTROLLER/MIMO PID/Kff =
 
  D = 
               u1          u2
   y1     0.01366  -9.399e-05
   y2     0.03403   -0.001471
 
Name: Kff
Static gain.

Нелинейная проверка

Чтобы проверить PI-контроллер MIMO в модели Simulink, переместите настроенные параметры контроллера в Simulink и запустите моделирование.

writeBlockValue(ST2)

Результаты моделирования показаны ниже и подтверждают, что контроллер адекватно отслеживает изменения уставки в давлении наддува и массовом потоке EGR и быстро отклоняет изменения массы топлива (при t = 90) и скорости (при t = 110).

Рис. 3: Результаты моделирования с упрощенным контроллером.

См. также

| | | | (Simulink Control Design) | (Проект управления Simulink)

Связанные темы