Управление двигателем постоянного тока

Этот пример показывает сравнение трех методов управления двигателем постоянного тока для отслеживания команд уставки и снижения чувствительности к нарушениям порядка нагрузки:

  • команда feedforward

  • интегральное управление обратной связью

  • Регулирование LQR

Смотрите «Начало работы: создание моделей» для получения дополнительной информации о модели электродвигателя постоянного тока.

Оператор о проблеме

В управляемых якорем двигателях постоянного тока приложенное напряжение Va управляет скоростью вращения w вала.

Этот пример показывает два метода управления двигателем постоянного тока для уменьшения чувствительности w к изменениям нагрузки (изменения крутящего момента, противоположного нагрузке мотора).

Упрощенная модель двигателя постоянного тока показана выше. Крутящий момент Td моделирует нарушения порядка нагрузки. Вы должны минимизировать изменения скорости, вызванные такими нарушениями порядка.

В данном примере физические константы:

R = 2.0;                % Ohms
L = 0.5;                % Henrys
Km = 0.1;               % torque constant
Kb = 0.1;               % back emf constant
Kf = 0.2;               % Nms
J = 0.02;               % kg.m^2/s^2

Сначала создайте модель пространства состояний двигателя постоянного тока с двумя входами (Va, Td) и одним выходом (w):

h1 = tf(Km,[L R]);            % armature
h2 = tf(1,[J Kf]);            % eqn of motion

dcm = ss(h2) * [h1 , 1];      % w = h2 * (h1*Va + Td)
dcm = feedback(dcm,Kb,1,1);   % close back emf loop

Примечание: Вычислите с формой пространство состояний, чтобы минимизировать порядок модели.

Теперь постройте график скорости вращения на изменение шага напряжения Va:

stepplot(dcm(1));

Щелкните правой кнопкой мыши график и выберите «Характеристики: Время установления», чтобы отобразить время установления.

Feedforward двигатель постоянного тока Системы управления

Можно использовать эту простую структуру управления с feedforward, чтобы вызвать скорость вращения w к заданному w_ref значений.

Коэффициент усиления Kff с feedforward должен быть установлен на взаимное усиление DC от Va до w.

Kff = 1/dcgain(dcm(1))
Kff =

    4.1000

Чтобы оценить проект с feedforward перед лицом нарушений порядка нагрузки, симулируйте ответ на командную w_ref=1 шага с нарушением порядка Td = -0.1Nm между t = 5 и t = 10 секундами:

t = 0:0.1:15;
Td = -0.1 * (t>5 & t<10);       % load disturbance
u = [ones(size(t)) ; Td];       % w_ref=1 and Td

cl_ff = dcm * diag([Kff,1]);    % add feedforward gain
cl_ff.InputName = {'w_ref','Td'};
cl_ff.OutputName = 'w';

h = lsimplot(cl_ff,u,t);
title('Setpoint tracking and disturbance rejection')
legend('cl\_ff')

% Annotate plot
line([5,5],[.2,.3]);
line([10,10],[.2,.3]);
text(7.5,.25,{'disturbance','T_d = -0.1Nm'},...
            'vertic','middle','horiz','center','color','r');

Очевидно, что управление с feedforward плохо управляет нарушениями порядка нагрузки.

Обратная связь Система управления двигателем постоянного тока

Затем попробуйте структуру управления обратной связью, показанную ниже.

Чтобы применить нулевую установившуюся ошибку, используйте интегральное управление формой

     C(s) = K/s
     where K is to be determined.

Чтобы определить коэффициент усиления K, можно использовать метод корневого годографа, примененный к передаче разомкнутого контура 1/s * (Va- > w):

h = rlocusplot(tf(1,[1 0]) * dcm(1));
setoptions(h,'FreqUnits','rad/s');
xlim([-15 5]);
ylim([-15 15]);

Щелкните на кривых, чтобы считать значения усиления и соответствующую информацию. Разумный выбор здесь - K = 5. Обратите внимание, что SISO Design Tool предлагает интегрированный графический интерфейс пользователя для выполнения таких проектов (для получения дополнительной информации справка sisotool).

Сравните этот новый проект с исходным проектом с feedforward на том же тесте:

K = 5;
C = tf(K,[1 0]);            % compensator K/s

cl_rloc = feedback(dcm * append(C,1),1,1,1);
h = lsimplot(cl_ff,cl_rloc,u,t);
cl_rloc.InputName = {'w_ref','Td'};
cl_rloc.OutputName = 'w';
title('Setpoint tracking and disturbance rejection')
legend('feedforward','feedback w/ rlocus','Location','NorthWest')

Корневой годограф проекта лучше отклоняет нарушения порядка нагрузки.

LQR Двигатель постоянного тока Системы управления

Для дальнейшего улучшения эффективности попробуйте разработать линейный квадратичный регулятор (LQR) для структуры обратной связи, показанной ниже.

В дополнение к интегралу ошибки, схема LQR также использует вектор состояния x = (i, w), чтобы синтезировать ведущее напряжение Va. Полученное напряжение имеет вид

     Va = K1 * w + K2 * w/s + K3 * i
     where i is the armature current.

Для лучшего подавления помех используйте функцию затрат, которая штрафует большую интегральную ошибку, например, функцию затрат

$$ C = \int^\infty_0 (20q(t)^2+\omega(t)^2+0.01V_a(t)^2) dt $$

где

$$ q(s) = \omega(s)/s. $$

Оптимальный коэффициент усиления LQR для этой функции затрат вычисляется следующим образом:

dc_aug = [1 ; tf(1,[1 0])] * dcm(1); % add output w/s to DC motor model

K_lqr = lqry(dc_aug,[1 0;0 20],0.01);

Далее выведите модель с обратной связью в целях симуляции:

P = augstate(dcm);                     % inputs:Va,Td  outputs:w,x
C = K_lqr * append(tf(1,[1 0]),1,1);   % compensator including 1/s
OL = P * append(C,1);                  % open loop

CL = feedback(OL,eye(3),1:3,1:3);      % close feedback loops
cl_lqr = CL(1,[1 4]);                  % extract transfer (w_ref,Td)->w

Этот график сравнивает схемы Бода с обратной связью для трёх систем управления двигателем постоянного тока

bodeplot(cl_ff,cl_rloc,cl_lqr);

Щелкните на кривых, чтобы идентифицировать системы или просмотреть данные.

Сравнение систем управления двигателем постоянного тока

Наконец, мы сравним три системы управления двигателя постоянного тока на наших тестах симуляции:

h = lsimplot(cl_ff,cl_rloc,cl_lqr,u,t);
title('Setpoint tracking and disturbance rejection')
legend('feedforward','feedback (rlocus)','feedback (LQR)','Location','NorthWest')

Благодаря дополнительным степеням свободы LQR-компенсатор лучше всего работает при отклонении нарушений порядка нагрузки (среди трех обсуждаемых здесь систем управления двигателем постоянного тока).