Управление линейного электрического Привода

В этом примере показано, как использовать slTuner и systune для настройки циклов тока и скорости в линейном электрическом приводе с пределами насыщения.

Модель линейного электрического Привода

Откройте модель Simulink линейного электрического привода:

open_system('rct_linact')

Электрические и механические компоненты моделируются с помощью Simscape Electrical и Simscape Multibody. Система управления состоит из двух каскадных циклов обратной связи, управляющих ведущим током и угловой скоростью двигателя постоянного тока.

Фигура 1: Ток и Скорость Контроллеров.

Обратите внимание, что контроллер с внутренним контуром (током) является пропорциональной составляющей, в то время как контроллер с внешним контуром (скоростью) имеет пропорциональные и интегральные действия. Выход обоих контроллеров ограничен плюс/минус 5.

Спецификации к проекту

Нам нужно настроить пропорциональные и интегральные составляющие, чтобы ответить на спрос скорости 2000 об/мин примерно за 0,1 секунды с минимальным перерегулированием. Начальные настройки усиления в модели являются P = 50 и PI (s) = 0,2 + 0 .1/s, и соответствующий ответ показан на Фигуру 2. Этот ответ слишком медлен и слишком чувствителен к нарушениям порядка нагрузки.

Фигура 2: Untuned Response.

Настройка системы управления

Можно использовать systune совместная настройка обоих циклов обратной связи. Чтобы настроить проект, создайте образец slTuner интерфейс со списком настроенных блоков. Все блоки и сигналы заданы их именами в модели. Модель линеаризируется при t = 0,5, чтобы избежать разрывов в некоторых производных при t = 0.

TunedBlocks = {'Current PID','Speed PID'};
tLinearize = 0.5;  % linearize at t=0.5

% Create tuning interface
ST0 = slTuner('rct_linact',TunedBlocks,tLinearize);
addPoint(ST0,{'Current PID','Speed PID'})

Структура данных ST0 содержит описание системы управления и ее настраиваемых элементов. Далее укажите, что двигатель постоянного тока должен следовать требованию скорости 2000 об/мин за 0,1 секунды:

TR = TuningGoal.Tracking('Speed Demand (rpm)','rpm',0.1);

Теперь можно настроить пропорциональные и интегральные составляющие с помощью looptune:

ST1 = systune(ST0,TR);
Final: Soft = 1.03, Hard = -Inf, Iterations = 124

Это возвращает обновленное описание ST1 содержащие настроенные значения усиления. Чтобы подтвердить этот проект, постройте график отклика замкнутой системы от требования скорости до скорости:

T1 = getIOTransfer(ST1,'Speed Demand (rpm)',{'rpm','i'});
figure
step(T1,0.5)

Реакция выглядит хорошо в линейной области, поэтому передвиньте настроенные значения усиления в Simulink и дополнительно проверьте проект в нелинейной модели.

writeBlockValue(ST1)

Нелинейные результаты симуляции появляются в Фигуру 3. Нелинейное поведение намного хуже линейного приближения. Фиг.4 показывает насыщение и колебания во внутреннем (текущем) цикле.

Фигура 3. Нелинейная симуляция настроенного контроллера.

Фигура 4: Выход токового контроллера.

Предотвращение насыщения

Пока мы только задали желаемое время отклика для внешнего (скоростного) цикла. Это оставляет systune свободно распределять усилие управления между внутренним и внешним контурами. Насыщение во внутреннем цикле предполагает, что пропорциональная составляющая слишком высок и что необходима некоторая ребалансировка. Одним из возможных средств является явное ограничение усиления от команды speed выходом «Current PID». Для опорной скорости 2000 об/мин и пределов насыщения плюс/минус 5, средний коэффициент усиления не должен превышать 5/2000 = 0,0025. Чтобы быть консервативным, попробуйте сохранить коэффициент усиления от скорости по отношению к «Текущему ПИД» ниже 0,001. Для этого добавьте ограничение усиления и восстановите коэффициент усиления контроллера при наличии обоих требований.

% Mark the "Current PID" output as a point of interest
addPoint(ST0,'Current PID')

% Limit gain from speed demand to "Current PID" output to avoid saturation
MG = TuningGoal.Gain('Speed Demand (rpm)','Current PID',0.001);

% Retune with this additional goal
ST2 = systune(ST0,[TR,MG]);
Final: Soft = 1.39, Hard = -Inf, Iterations = 52

Итоговый коэффициент усиления 1.39 указывает, что требования почти, но не выполняются точно (все требования выполняются, когда конечный коэффициент усиления меньше 1). Использование viewGoal чтобы проверить, как настроенные контроллеры относятся к каждой цели.

figure('Position',[100,100,560,550])
viewGoal([TR,MG],ST2)

Далее сравните два проектов в линейной области.

T2 = getIOTransfer(ST2,'Speed Demand (rpm)',{'rpm','i'});
figure
step(T1,'b',T2,'g--',0.4)
legend('Initial tuning','Tuning with Gain Constraint')

Второй проект менее агрессивна, но все еще соответствует требованию времени отклика. Сравнение настроенных коэффициентов ПИД показывает, что пропорциональная составляющая в токовом цикле был уменьшаема с 18 до 2.

showTunable(ST1)  % initial tuning
Block 1: rct_linact/Current Controller/Current PID =
 
  Kp = 18.4
 
Name: Current_PID
P-only controller.

-----------------------------------

Block 2: rct_linact/Speed Controller/Speed PID =
 
             1 
  Kp + Ki * ---
             s 

  with Kp = 0.402, Ki = 0.677
 
Name: Speed_PID
Continuous-time PI controller in parallel form.

showTunable(ST2)  % retuning
Block 1: rct_linact/Current Controller/Current PID =
 
  Kp = 2.38
 
Name: Current_PID
P-only controller.

-----------------------------------

Block 2: rct_linact/Speed Controller/Speed PID =
 
             1 
  Kp + Ki * ---
             s 

  with Kp = 0.44, Ki = 4.51
 
Name: Speed_PID
Continuous-time PI controller in parallel form.

Чтобы подтвердить этот новый проект, передвиньте новые настроенные значения усиления к модели Simulink и симулируйте реакцию на потребность в скорости 2000 об/мин и нарушение порядка нагрузки 500 Н. Результаты симуляции показаны на фигуре 5, а выход токового контроллера показан на фигуре 6.

writeBlockValue(ST2)

Фигура 5. Нелинейная характеристика настройки с ограничением усиления.

Фигура 6: Выход токового контроллера.

Нелинейные отклики теперь удовлетворительны, и текущий цикл больше не насыщается. Дополнительное ограничение усиления успешно восстановило баланс усилия управления между внутренним и внешним контурами.

См. также

| | (Simulink Control Design) | (Simulink Control Design) | (Simulink Control Design)

Похожие темы