exponenta event banner

Оптимизация конструкции с использованием требований к таблице поиска для планирования усиления (GUI)

В этом примере показано, как настроить параметры в таблице поиска в модели, которая использует планирование усиления для настройки отклика контроллера на изменяющуюся установку. При настройке модели используется приложение Response Optimizer.

Модель рулевого управления судна

Откройте модель Simulink.

open_system('sdoShipSteering')

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

Для удержания корабля на курсе контур управления сравнивает курсовый угол корабля с эталонным курсовым углом, а контроллер ПД подает командные сигналы на руль направления. Блок Ship Plant реализует модель Nomoto, систему второго порядка, параметры которой изменяются в зависимости от скорости корабля. Судно первоначально движется со своей максимальной скоростью 15 м/с, но замедлится, когда опорная траектория определит поворот в воде. Этот поворот вместе с усилием двигателя используется блоком Force Dynamics для вычисления скорости корабля во времени. Блок «Кинематика» вычисляет траекторию корабля.

Откройте блок Controller, дважды щелкнув его.

При изменении скорости изменяется и судовая установка. Поэтому коэффициенты усиления контроллера PD должны изменяться, и скорость используется в качестве переменной планирования. Контроллер в форме K(1 + sTd) где K - общий выигрыш и Td - постоянная времени, связанная с производным членом. Планирование усиления реализуется посредством таблиц поиска, а данные таблицы определяются K и Td. Это векторы, которые определяют различные значения для различных скоростей. Различные скорости указаны в векторах точек останова таблицы поиска bpK и bpTd.

Проблема проектирования

В справке уточняется, что в 200 секунд корабль должен повернуть на 180 градусов и обратить курс вспять. Одно требование состоит в том, что угол курса судна должен соответствовать углу опорного курса в пределах огибающей. Для безопасности и комфорта пассажиров второе требование состоит в том, что общее ускорение судна должно оставаться в пределах границы 0,25 g, где 1 g - ускорение гравитации на поверхности Земли, 9,8 м/с/с.

Векторы параметров контроллера K и Td будут являться конструктивными переменными и будут настроены на соответствие требованиям. Если невозможно выполнить оба требования, то таблица поиска имеет точки останова bpK и bpTd также будет использоваться в качестве конструктивных переменных. В этом случае нам нужно будет указать дополнительное требование, которое bpK и bpTd должен быть монотонно строго увеличен, потому что это требуется для векторов точек останова в таблицах поиска Simulink.

Открыть оптимизатор ответов

На вкладке Приложения щелкните Оптимизатор ответа в разделе Системы управления.

Определение требований к конструкции

Укажите требования, которые должны быть удовлетворены. Во-первых, корабль должен следовать по опорной траектории. Поскольку ссылка по существу представляет собой изменение шага от 0 до 180 градусов, для угла курса судна задается огибающая ответа шага. На панели инструментов нажмите кнопку «Создать» и выберите «Оболочка ответа шага». Установите начальное значение равным 0, а конечное - pi radians. Установите время шага 200 секунд. Установите время нарастания 75 секунд и процент нарастания до 85%. Установите время отстоя 200 секунд, а процент отстоя - 1%. Установите процент превышения в 5%. Чтобы указать, что это требование применяется к заголовку судна, нажмите +.

В модели Simulink щелкните сигнал курса судна, который является выводом блока Ship Plant. Выберите этот сигнал в диалоговом окне Create Signal Set и нажмите кнопку со стрелкой, чтобы сделать его обозначенным сигналом, и нажмите кнопку OK.

Второе требование заключается в том, что для безопасности и комфорта пассажиров общее ускорение не должно превышать 0,25 g в любое время. Суммарное ускорение состоит из двух компонентов: тангенциального компонента вдоль направления движения корабля и нормального (горизонтального) компонента. Требование о том, чтобы суммарное ускорение не превышало 0,25 g, соответствует требованию о том, чтобы в фазовой плоскости тангенциального и нормального ускорения траектория этого корабля оставалась в пределах круга радиуса 0,25 * 9,8.

На панели инструментов нажмите «Создать» и выберите «Зависимость области эллипса». Укажите имя SafeAccel и длину полуоси для обоих сигналов 0,25 * 9,8 = 2,45. Чтобы указать, что требование применяется к тангенциальному ускорению корабля, нажмите кнопку Выбрать (Select). В модели Simulink щелкните сигнал тангенциального ускорения, который выводится из блока «Кинематика». Выберите этот сигнал в диалоговом окне Create Signal Set и нажмите кнопку со стрелкой, чтобы сделать его обозначенным сигналом. и нажмите ОК. Аналогично, чтобы указать, что требование применяется к нормальному ускорению корабля, в диалоговом окне «Зависимость области эллипса» нажмите другую кнопку «Выбрать», и используйте диалоговое окно Create Signal Set для задания нормального сигнала ускорения.

Задание конструктивных переменных

Укажите конструктивные переменные, которые будут настраиваться при оптимизации в соответствии с требованиями. На панели инструментов щелкните поле выбора рядом с пунктом Набор конструктивных переменных и нажмите кнопку Создать. Выберите коэффициент усиления контроллера PD, K и Tdи нажмите кнопку со стрелкой, чтобы обозначить их как конструктивные переменные. Используйте -0.1 для всех записей в значении K вектор, и используйте 50 для всех записей в значении Td вектор, и нажмите OK. Если не все требования могут быть удовлетворены, то позже векторы точек останова bpK и bpTd можно также использовать в качестве конструктивных переменных.

Оптимизация данных таблицы подстановки

Во время оптимизации решатель Simulink может генерировать предупреждение, если размер временного шага становится слишком маленьким. Временное подавление этого предупреждения.

warnState = warning('query', 'Simulink:Engine:SolverMinStepSizeWarn');
warning('off', 'Simulink:Engine:SolverMinStepSizeWarn');

В оптимизаторе ответа щелкните Оптимизировать. Угол курса судна не соответствует требуемой огибающей ответа на шаг, как видно на графике ответа на шаг в приложении Оптимизатор ответа и в диалоговом окне Ход оптимизации, где значение на последней итерации все еще положительное, что указывает на нарушение требования. Требование безопасного ускорения также не выполняется, как показано в диалоговом окне Ход оптимизации (Optimization Progress), где значение на последней итерации также является положительным.

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

Чтобы выполнить требования к конструкции, используйте результат оптимизации сверху в качестве начальной точки и настройте дополнительные переменные. Добавить точки останова bpK и bpTd в качестве конструктивных переменных. Максимальная скорость судна составляет 15 м/с, а при повороте может замедлиться до 60% от максимальной скорости, или 9 м/с. Установите начальное значение точки останова на равном расстоянии от 9 до 15 м/с. Ограничьте минимальные значения точек останова 9 м/с и максимальные значения точек останова 15 м/с.

Точки останова в блоке таблицы поиска Simulink должны быть строго монотонно увеличены. Добавьте его к проектным требованиям.

В оптимизаторе ответа щелкните Оптимизировать. На этот раз угол курса корабля соответствует требуемой огибающей ответа на шаг, как видно на графике ответа на шаг в приложении оптимизатор ответа и в диалоговом окне Ход оптимизации (Optimization Progress), где значение на последней итерации отрицательное, что указывает на выполнение требования. Требование безопасного ускорения также удовлетворяется, как показано в диалоговом окне Ход оптимизации (Optimization Progress), где значение на последней итерации также отрицательное. Аналогично, точки останова таблицы подстановки удовлетворяют монотонным требованиям.

В этом примере судовая установка изменялась в зависимости от скорости судна, поэтому необходимо было также изменять коэффициенты усиления контроллера. Планирование усиления реализовано с использованием таблиц подстановки. Настроив значения коэффициентов усиления и точек останова в контроллере, судно смогло следовать опорному курсовому углу, одновременно ограничив общее ускорение для обеспечения безопасной и комфортной езды пассажиров.

Связанные примеры

Чтобы узнать, как оптимизировать таблицы поиска в запланированном контроллере усиления с помощью sdo.optimize см. раздел Оптимизация конструкции с использованием требований к таблице поиска для планирования усиления (код).

% Close the model and restore state of warnings.
bdclose('sdoShipSteering')
warning(warnState);   % restore state of warning

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