В этом примере показано, как настроить параметры модели на соответствие требованиям частотной области с помощью оптимизатора отклика.
В этом примере требуется Simulink ® Control Design™.
Откройте модель Simulink.
open_system('sdoSimpleSuspension')

Модели с массовыми пружинными демпферами представляют собой простые системы подвески, и для этого примера мы настраиваем систему на соответствие типичным требованиям к подвеске. Модель реализует систему второго порядка, представляющую массово-пружинный демпфер с использованием блоков Simulink и включает в себя:
a Mass блок усиления, параметризованный суммарной подвесной массой, m0+mLoad. Общая масса - это сумма номинальной массы, | m0 |, и переменной массы нагрузки,mLoad.
a Damper блок усиления, параметризованный коэффициентом демпфирования, b.
a Spring блок усиления, параметризованный постоянной пружины, k.
два интеграторных блока для вычисления массовой скорости и положения.
a Band-Limited Disturbance Force блок, прилагающий возмущающую силу к массе. Предполагается, что возмущающая сила является белым шумом ограниченного диапазона.
Моделирование модели для просмотра реакции системы на приложенное возмущающее усилие.

Начальная система имеет слишком высокую пропускную способность. Это видно по острому сигналу положения. Значения пружины и демпфера настраиваются в соответствии со следующими требованиями:
Пропускная способность -3dB системы не должна превышать 10 рад/с.
Коэффициент демпфирования системы должен быть меньше 1/sqrt (2). Это гарантирует, что никакие частоты в полосе пропускания не усиливаются системой.
Минимизация ожидаемой частоты отказов системы. Ожидаемая частота отказов описывается распределением Вейбулла, зависящим от массы, пружины и значений демпфера.
Все эти требования должны быть выполнены, так как масса нагрузки находится в диапазоне от 0 до 20.
На вкладке Приложения щелкните Оптимизатор ответа в разделе Системы управления.
В списке «Набор конструктивных переменных» выберите «Создать». Добавить b и k переменных модели в набор конструктивных переменных.
Укажите Minimum и Maximum значения для b переменная 100 и 10000 соответственно.
Укажите Minimum и Maximum значения для k переменная 10000 и 100000 соответственно.

Нажмите кнопку OK. Новая переменная, DesignVars, появляется в браузере оптимизатора ответа.
В списке «Набор неопределенных переменных» выберите «Создать». Добавить mLoad переменной к неопределенному набору переменных.
Укажите Uncertain Values значение для mLoad переменная [10 15 20]

Нажмите кнопку OK. Новая переменная, UncVars, появляется в браузере оптимизатора ответа.
Укажите точки ввода/вывода, определяющие линейную систему, используемую для вычисления коэффициента пропускания и демпфирования.
Чтобы указать точки ввода/вывода:
В списке Создать (New) выберите Линеаризация ввода/вывода (Linearization I/Os).
В модели Simulink щелкните сигнал на выходе Band-Limited Disturbance Force блок. Диалоговое окно Create linearization I/O set (Создать набор ввода/вывода линеаризации) обновляется и в нем появляется выбранный сигнал.
В диалоговом окне Create linearization I/O выберите сигнал и нажмите Add.
В списке Конфигурация для выбранного сигнала выберите Входное возмущение, чтобы указать его как входной сигнал.

Аналогично добавьте сигнал pos из модели Simulink. Укажите этот сигнал в качестве выходного сигнала. В списке Конфигурация (Configuration) выберите Выходное измерение (Output Measurement).

Нажмите кнопку OK. Новая переменная, IOs, появляется в браузере оптимизатора ответа.
Настройте значения пружины и демпфера, чтобы удовлетворить требованиям ширины полосы пропускания и коэффициента демпфирования.
Чтобы указать требования к полосе пропускания, выполните следующие действия.
Откройте диалоговое окно для задания границ величины Бода. В списке Создать (New) выберите Модовая величина (Bode Magnitude).
Укажите имя требования как Bandwidth.
Задайте начальную частоту и величину кромки как 10 рад/с и -3 дБ соответственно.
Задайте частоту и величину конца кромки как 100 рад/с и -3 дБ соответственно.
Укажите набор ввода/вывода, к которому применяется требование, щелкнув Выбрать системы для привязки (Select Systems to Bound). Выберите IOs флажок.

Нажмите кнопку OK. Новое требование, Bandwidth, появляется в браузере оптимизатора ответа и автоматически создается графическое представление требований к пропускной способности.
Для задания требования к коэффициенту демпфирования:
Откройте диалоговое окно для задания границ коэффициента демпфирования. В списке Создать (New) выберите Коэффициент демпфирования (Damping Ratio).
Задайте значение ограничения коэффициента демпфирования 0,7071.
Укажите набор ввода/вывода, к которому применяется требование, щелкнув Выбрать системы для привязки (Select Systems to Bound). Выберите IOs флажок.

Нажмите кнопку OK. Новое требование, DampingRatio, появляется в браузере оптимизатора отклика и автоматически создается графическое представление требования к коэффициенту демпфирования.
Настройте значения пружины и демпфера, чтобы минимизировать ожидаемую частоту отказов в течение срока службы 100e3 миль. Частота отказов вычисляется с использованием распределения Вейбулла по коэффициенту демпфирования системы. По мере увеличения коэффициента демпфирования ожидается увеличение частоты отказов.
Укажите требование надежности как настраиваемое требование:
Откройте диалоговое окно для задания пользовательских требований. В списке Создать выберите Пользовательское требование.
Укажите имя пользовательского требования как MinFailureRate.
В области Задать функцию (Specify Function) выберите Минимизировать вывод функции из списка Тип (Type).
Укажите функцию как @ sdoSuspension _ FailureRate.

Нажмите кнопку OK. Новое требование, MinFailureRate, появляется в браузере оптимизатора ответа и автоматически создается графическое представление пользовательского требования.
Функция @ sdoSuspension _ FailureRate возвращает ожидаемую частоту отказов в течение всего срока службы 100e3 миль.
type sdoSuspension_FailureRate
function pFailure = sdoSuspension_FailureRate(data)
%SDOSUSPENDION_FAILURERATE
%
% The sdoSuspension_FailureRate function is used to define a custom
% requirement that can be used in the graphical SDTOOL environment.
%
% The |data| input argument is a structure with fields containing the
% design variable values chosen by the optimizer.
%
% The |pFailure| return argument is the failure rate to be minimized by the
% SDOTOOL optimization solver. The failure rate is given by a Weibull
% distribution that is a function of the mass, spring and damper values.
% The design minimizes the failure rate for a 100e3 mile lifetime.
%
% Copyright 2012 The MathWorks, Inc.
%Get the spring and damper design values
allVarNames = {data.DesignVars.Name};
idx = strcmp(allVarNames,'k');
k = data.DesignVars(idx).Value;
idx = strcmp(allVarNames,'b');
b = data.DesignVars(idx).Value;
%Get the nominal mass from the model workspace
wksp = get_param('sdoSimpleSuspension','ModelWorkspace');
m = evalin(wksp,'m0');
%The expected failure rate is defined by the Weibull cumulative
%distribution function, 1-exp(-(x/l)^k), where k=3, l is a function of the
%mass, spring and damper values, and x the lifetime.
d = b/2/sqrt(m*k);
pFailure = 1-exp(-(100e3*d/250e3)^3);
end
Перед запуском оптимизации обязательно выполните предыдущие шаги. Кроме того, можно загрузить sdoSimpleSuspension_sdosession из рабочей области модели в оптимизатор отклика.
Чтобы сохранить исходные значения конструктивных переменных и позже сравнить их с оптимизированными значениями, настройте оптимизацию.
Щелкните Опции (Options).
Выберите Save optimized variable values as new design variable set вариант.
Чтобы изучить изменение значений конструктивных переменных во время оптимизации, выполните следующие действия.
В списке «Данные для печати» выберите «Варианты конструкции».
В списке Добавить график (Add Plot) выберите График итерации (Iteration Plot).
Просмотр конструктивных переменных в соответствующем масштабе. Щелкните правой кнопкой мыши DesignVars и выберите Показать масштабированные значения.
Чтобы оценить требования в начальной точке проектирования, нажмите кнопку «Оценить требования». Графики требований обновляются, и ReqValues добавляется в браузер оптимизатора отклика.

Для оптимизации конструкции нажмите кнопку «Оптимизировать». Графики обновляются во время оптимизации. В конце оптимизации оптимальные проектные значения записываются в DesignVars1 переменная. Значения требований для оптимизированной конструкции записываются в ReqValues1 переменная.


Для сравнения конструктивных переменных до и после оптимизации:
В списке «Данные для печати» выберите «Варианты конструкции».
В списке Добавить график (Add Plot) выберите График паука (Spider Plot).
Чтобы добавить оптимизированные конструктивные переменные на тот же график, выберите DesignVars1 в браузере оптимизатора ответа и перетащите его на график «Паук». Либо в списке «Данные для печати» выберите DesignVars1. Затем в списке «Добавить график» выберите «Spider plot 1» в разделе «Add to Existing Plot».

График показывает, что оптимизатор уменьшил оба k и b значения для оптимальной конструкции.
Для сравнения требований до и после оптимизации:
В списке «Данные для печати» выберите ReqValues.
В списке Добавить график (Add Plot) выберите График паука (Spider Plot).
Чтобы добавить оптимизированные значения требований к тому же графику, выберите ReqValues1 в браузере оптимизатора ответа и перетащите его на график «Паук». Либо в списке «Данные для печати» выберите ReqValues1. Затем в списке «Добавить график» выберите «Spider plot 2» в разделе «Add to Existing Plot».

График показывает, что оптимальная конструкция имеет меньшую частоту отказов (ось MinFailureRate) и лучше удовлетворяет требованиям к полосе пропускания. Значение, отображаемое на оси полосы пропускания, представляет собой разницу между границей полосы пропускания и значением полосы пропускания. Оптимизация удовлетворяет ограничению, сохраняя это значение отрицательным; более отрицательное значение указывает на лучшее удовлетворение связанных.
Повышенная надежность и ширина полосы пропускания достигаются путем проталкивания коэффициента демпфирования ближе к связанному коэффициенту демпфирования. График имеет две оси для требования к коэффициенту демпфирования, по одной для каждого системного полюса, и значения, нанесенные на график, являются разностью между привязкой коэффициента демпфирования и значением коэффициента демпфирования. Оптимизация удовлетворяет ограничению, сохраняя это значение отрицательным.
Наконец, моделируемое массовое положение является более гладким, чем отклик исходного положения (указание меньшей полосы пропускания, если требуется) за счет большего отклонения положения.

Как оптимизировать конструкцию подвески с помощью sdo.optimize см. раздел Оптимизация конструкции для соответствия требованиям частотной области (код).
% Close the model bdclose('sdoSimpleSuspension')