exponenta event banner

Проектирование двигателя и компромиссы в затратах

В этом примере показано, как использовать Simulink Design Optimization™ для оптимизации конструкции по производительности и стоимости. В этом примере мы настраиваем контроллер скорости двигателя автомобиля, одновременно снижая затраты на контроллер за счет настройки точности датчика и времени срабатывания привода.

Открытие модели

Откройте модель автомобильного двигателя с помощью следующей команды. Следующие подсистемы моделируют реакцию двигателя: Throttle & Manifold, Induction to Power Stroke Delay, Combustion, Drag Torque и Vehicle Dynamics. Основным сигналом, представляющим интерес для модели, является частота вращения двигателя в об/мин. Система управления состоит из опережения-запаздывания Controller, rpm Sensor, и Throttle actuator блоки. Модель управляется шаговым изменением опорной скорости.

open_system('enginetradeoff_demo')

Обзор конструкции

Проект преследует следующие цели:

Цель работы двигателя:

Двигатель должен реагировать на шаговые изменения в эталоне скорости со следующими характеристиками:

  • Максимальное превышение 2%

  • Время подъема 4 секунды для достижения 90% опорной скорости

  • Время установки 7,5 с для достижения в пределах 2% от контрольной скорости

Эта цель включена в качестве ограничения в Performance requirement блок. На входе в этот блок находится частота вращения двигателя, которая нормализуется опорным значением скорости. Это означает, что, хотя опорная скорость изменяется, требования к производительности остаются прежними.

Цель минимизации затрат:

Проектная стоимость контроллера должна быть сведена к минимуму. Для этого используется параметризация датчика и привода для расчета стоимости конструкции. Проектная стоимость вычисляется так, чтобы она всегда была больше 1, и оптимизация пытается привести стоимость к 1.

Мы используем настраиваемое требование, чтобы минимизировать эту стоимость. enginetreadeoff_cost функция, используемая пользовательским требованием, просто возвращает минимизируемое значение стоимости.

type enginetradeoff_cost
function Cost = enginetradeoff_cost(u)
%Compute controller cost based on sensor accuracy, actuator response, and
%controller sampling time.

% Copyright 2013 The MathWorks, Inc.

%Cost constants
min_cost       = 1;       %Minimum cost > 0
sensor_var_min = 1e-3;    %Minimum sensor variance (most expensive)
sampling_min   = 1e-2;    %Minimum controller sampling time (most expensive)
throttle_max   = 2*pi*10; %Maximum actuator response frequency (most expensive)

%Get variable names
varnames = {u.DesignVars.Name};

%Form cost
Cost = min_cost;
%Add sensor cost
index = strcmp(varnames, 'sensor_std');
if any(index)
  Cost = Cost + sensor_var_min./max(u.DesignVars(index).Value,sensor_var_min);
end

%Add sampling cost
index = strcmp(varnames, 'Ts');
if any(index)
  Cost = Cost+ sampling_min./max(u.DesignVars(index).Value,sampling_min);
end

%Add throttle cost
index = strcmp(varnames, 'Tthrottle');
if any(index)
  Cost = Cost + u.DesignVars(index).Value/throttle_max;
end

Параметризация модели:

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

  • Конечное значение скорости: это гарантирует, что конструкция работает в различных рабочих точках, от низкой скорости до высокой скорости.

  • Усиление, полюс и нулевые значения контроллера: это позволяет нам изменить производительность контроллера. Мы настраиваем эти значения с помощью оптимизации.

  • Время срабатывания дроссельного привода: Время срабатывания оптимизировано для минимизации затрат на контроллер. Стоимость исполнительного механизма обратно пропорциональна времени отклика, т.е. более быстрое время отклика подразумевает более дорогой исполнительный механизм.

  • Точность датчика частоты вращения: точность определяется значением стандартного отклонения и оптимизирована для минимизации стоимости контроллера. Стоимость датчика обратно пропорциональна стандартному отклонению, т.е. меньшее стандартное отклонение подразумевает более точный датчик, что дороже.

Запуск оптимизации

Оптимизация контроллера двигателя по производительности и стоимости включает в себя:

  • Оптимизация параметров контроллера, датчика и привода.

  • Оптимизация реакции в различных рабочих условиях.

При решении проблем такого типа рекомендуется создавать конструкцию итеративно, а не оптимизировать для всех целей вместе. Здесь мы используем стратегию «разделяй и властвуй», как показано в таблице ниже. Идея состоит в том, чтобы использовать оптимизированные значения параметров из одного этапа в качестве начального предположения для следующего этапа.

Можно запустить оптимизатор ответа с помощью меню «Приложения» на панели инструментов Simulink или sdotool в MATLAB. Предварительно настроенную задачу оптимизации можно запустить в оптимизаторе отклика, предварительно открыв модель и дважды щелкнув оранжевый блок в нижней части модели. В оптимизаторе отклика нажмите кнопку «График отклика модели», чтобы смоделировать модель и показать, насколько хорошо начальная конструкция удовлетворяет проектным требованиям.

Проект оптимизации, сохраненный в примере, соответствует этапу 2. На этом этапе мы оптимизируем параметры контроллера в рабочем диапазоне. Для этого необходимо указать K, P и Z в качестве настроенных параметров и конечного значения шага, final_step, опорного сигнала в качестве неопределенного параметра. На этом этапе целевая стоимость пользовательского контроллера не включается в задачу оптимизации.

Мы представляем цель затрат на контроллер на этапе 3, настроив модель следующим образом:

  • Откройте окно Uncertain Variables в редакторе оптимизатора ответа, а затем снимите флажок для final_step. Это исключает из задачи оптимизации протягивание модели по различным рабочим точкам и, таким образом, уменьшает вычислительную нагрузку.

  • Откройте окно Design Variables в редакторе оптимизатора ответа, а затем установите флажок для sensor_std для настройки этого параметра.

  • Нажмите кнопку Select в оптимизаторе ответа, чтобы открыть Design Requirements редактор, а затем установите флажок для пользовательских Cost. Это учитывает цель минимизации затрат во время оптимизации.

Мы начинаем оптимизацию, нажав кнопку «Оптимизировать» в оптимизаторе ответа. Графики обновляются, указывая, что проектные требования теперь выполнены.

Чтобы настроить оптимизацию для этапа 4:

  • Откройте окно Design Variables в редакторе оптимизатора ответа, а затем установите флажок для Tthrottle для настройки этого параметра.

Чтобы начать оптимизацию, нажмите кнопку «Оптимизировать» в оптимизаторе ответа.

Конфигурирование оптимизации для этапа 5:

  • Откройте окно Uncertain Variables в редакторе оптимизатора ответа, а затем установите флажок для final_step для сдвига модели по рабочему диапазону.

Чтобы начать оптимизацию, нажмите кнопку «Оптимизировать» в оптимизаторе ответа.

% Close the model
bdclose('enginetradeoff_demo')