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

Этот пример показывает, как настроить параметры в интерполяционной таблице в модели, которая использует табличное управление для настройки реакции контроллера на объект, которая изменяется. Настройка модели использует приложение Response Optimizer.

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

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

open_system('sdoShipSteering')

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

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

Откройте блок Controller, дважды нажатие по нему.

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

Задача проекта

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

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

Откройте Response Optimizer

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

Задайте требования проект

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

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

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

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

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

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

Оптимизация Интерполяционной таблицы данных

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

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

В Response Optimizer нажатия кнопки Optimize. Угол рыскания корабля не соответствует необходимой огибающей переходной характеристике, что видно в переходный процесс в приложении Response Optimizer и в диалоговом окне Optimization Прогресса, где значение при последней итерации все еще положительное, что указывает на нарушение требования. Требование безопасного ускорения также не удовлетворяется, как видно из диалогового окна Optimization Progress, где значение при последней итерации также положительно.

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

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

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

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

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

Похожие примеры

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

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

Похожие темы