В этом примере показано, как применить известные ограничения для приложения контроллера PID с помощью блока «Применение ограничений».
Для этого примера динамика растений описывается следующими уравнениями [1].
+ 1) u2
Целью установки является отслеживание требуемых траекторий, определенных как:
(start)
Пример изучения и применения неизвестной функции ограничения для одного и того же приложения управления PID см. в разделе Изучение и применение ограничений для контроллеров PID.
Сконфигурируйте параметры модели и исходные условия.
r = 1.5; % radius for desired trajectory Ts = 0.1; % sample time Tf = 22; % duration x0_1 = -r; % initial condition for x1 x0_2 = 0; % initial condition for x2
Перед наложением ограничений спроектируйте контроллеры PID для отслеживания опорных траекторий. trackingWithPIDs модель содержит два контроллера PID с усилениями, настроенными с помощью приложения PID Tuner. Дополнительные сведения о настройке контроллеров PID в моделях Simulink см. в разделе Введение в настройку PID на основе модели в Simulink.
mdl = 'trackingWithPIDs';
open_system(mdl)
Смоделировать контроллеры PID и построить график производительности отслеживания.
% Simulate the model. out = sim(mdl); % Extract trajectories. logData = out.logsout; x1_traj = logData{3}.Values.Data; x2_traj = logData{4}.Values.Data; x1_des = logData{1}.Values.Data; x2_des = logData{2}.Values.Data; % Plot trajectories. figure('Name','Tracking') xlim([-2,2]) ylim([-2,2]) plot(x1_des,x2_des,'r') xlabel('x1') ylabel('x2') hold on plot(x1_traj,x2_traj,'b:','LineWidth',2) hold on plot(x1_traj(1),x2_traj(1),'g*') hold on plot(x1_traj(end),x2_traj(end),'go') legend('desired','traj','start','end')

В этом примере известные ограничения применяются к приложению с помощью блока «Применение ограничений», который настраивает управляющие действия в соответствии с функцией ограничения.
В этом примере выполнимая область для установки задается {}. Поэтому условие следующего состояния установки x2 (k + 1)] удовлетворять xk+1≤[11].
Аппроксимировать динамику растений можно по следующему уравнению.
1 + x22 (k))] uk
При применении ограничений к этому уравнению создается следующая функция ограничений.
x22 (k))] uk≤[11].
Блок «Применение ограничений» принимает ограничения формы. Для этого применения коэффициенты этой функции ограничения следующие.
x22 (k))], c = [11]
trackingWithConstraintPID модель содержит контроллеры PID, динамику завода и реализацию ограничений.
mdl = 'trackingWithKnownConstraintPID';
open_system(mdl)
Чтобы просмотреть реализацию ограничения, откройте подсистему ограничения. Здесь известная функция ограничения реализуется с использованием блока MATLAB Function, и блок ограничения принудительно применяет функцию ограничения.

Запустите модель и постройте график результатов моделирования. На сюжете показано, что состояния растения меньше единицы.
% Simulate the model. out = sim(mdl); % Extract trajectories. logData = out.logsout; x1_traj = zeros(size(out.tout)); x2_traj = zeros(size(out.tout)); for ct = 1:size(out.tout,1) x1_traj(ct) = logData{4}.Values.Data(:,:,ct); x2_traj(ct) = logData{5}.Values.Data(:,:,ct); end x1_des = logData{2}.Values.Data; x2_des = logData{3}.Values.Data; % Plot trajectories. figure('Name','Tracking with Constraint'); plot(x1_des,x2_des,'r') xlabel('x1') ylabel('x2') hold on plot(x1_traj,x2_traj,'b:','LineWidth',2) hold on plot(x1_traj(1),x2_traj(1),'g*') hold on plot(x1_traj(end),x2_traj(end),'go') legend('desired','traj','start','end','Location','best')

Блок «Применение ограничений» успешно ограничивает действия управления таким образом, что состояния установки остаются меньше единицы.
bdclose('trackingWithPIDs') bdclose('trackingWithKnownConstraintPID')
[1] Роби, Александр, Хаймин Ху, Ларс Линдеманн, Ханьвэнь Чжан, Димос В. Димарогонас, Стивен Ту и Николай Матни. «Изучение функций контрольных барьеров из демонстраций экспертов». Препринт, представлен 7 апреля 2020 года. https://arxiv.org/abs/2004.03315