Вычислительные эффекты задержки и выборки модели

В этом примере показано, как смоделировать вычислительную задержку и эффекты выборки с помощью программного обеспечения Simulink® Control Design™.

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

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

Симулируйте дискретные и непрерывные контроллеры

В следующей модели в качестве примера начальный компенсатор имеет следующие усиления от компенсатора в примере Один Проект Компенсатора Обратной связи/Предварительного фильтра Цикла.

P = 0.0018222
I = 0.0052662

Первая модель имеет дискретную реализацию системы управления.

mdl = 'scdspeed_compdelay';
open_system(mdl)

В этой модели блок Computational Delay моделирует эффекты вычислительной задержки. Задержка равна шагу расчета контроллера, который является худшим случаем. Блок Zero-Order Hold моделирует эффект выборки на ответе системы. Наконец, контроллер скорости, который реализован с помощью блока PID Controller, дискретизируется с помощью метода выборки Форварда Эйлера.

Вы видите эффект выборки путем симуляции ответа системы.

Во-первых, дискретизируйте контроллер с шагом расчета Ts = 0,1 секунды и симулируйте модель.

Ts = 0.1;
sim(mdl);
T2 = simout.time;
Y2 = simout.signals.values;

Затем симулируйте модель с увеличенным шагом расчета Ts = 0,25 секунды.

Ts = 0.25;
sim(mdl);
T3 = simout.time;
Y3 = simout.signals.values;

Вторая модель является непрерывной моделью.

mdl_continuous = 'scdspeed_contcomp';
open_system(mdl_continuous)

Симулируйте ответ непрерывной модели.

sim(mdl_continuous);
T1 = simout.time;
Y1 = simout.signals.values;

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

plot(T1,Y1,'k',T2,Y2,'r',T3,Y3,'g')
xlabel('Time (sec.)')
ylabel('Engine Speed Response')
legend('Continuous Controller','Ts = 0.1','Ts = 0.25')
grid

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

Чтобы удалить колебательные эффекты системы с обратной связью с самым медленным шагом расчета Ts = 0.25, необходимо перепроектировать компенсатор.

Во-первых, перепроектируйте контроллер, использующий дискретизированную версию объекта. Можно перепроектировать компенсатор способом, похожим на Один Проект Компенсатора Обратной связи/Предварительного фильтра Цикла. Настроенный компенсатор имеет следующие усиления.

P = 0.00066155
I = 0.0019118795
set_param('scdspeed_compdelay/PID Controller','P','0.00066155')
set_param('scdspeed_compdelay/PID Controller','I','0.0019118795')

Симулируйте получившуюся систему с обратной связью с шагом расчета Ts = 0,25 секунды. Вы исследуете эти результаты позже в примере.

Ts = 0.25;
sim(mdl);
Td = simout.time;
Yd = simout.signals.values;

Объясните задержки и производящий в непрерывной области

Как второй подход, перепроектируйте контроллер с непрерывными эквивалентами единичной задержки, и нулевой порядок содержат.

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

$$ZOH(s) = \frac{1-e^{-sT_s}}{sT_s}$$

Чтобы задать эти движущие силы в модели, щелкните правой кнопкой по блоку Zero-Order Hold и выберите Linear Analysis> Specify Selected Block Linearization. В диалоговом окне Block Linearization укажите, что выражение для нулевого порядка содержит динамику.

Эквивалентно, можно задать линеаризацию блока с помощью следующего кода.

zohblk = 'scdspeed_compdelay/Zero-Order Hold';
set_param(zohblk,'SCDEnableBlockLinearizationSpecification','on')
rep = struct('Specification','(1-ss(1,''InputDelay'',Ts))*ss(0,1,1,0)/Ts',...
             'Type','Expression',...
             'ParameterNames','',...
             'ParameterValues','');
set_param(zohblk,'SCDBlockLinearizationSpecification',rep)

Задайте линеаризацию Вычислительной Задержки с помощью непрерывной транспортной задержки.

$$DELAY(s) = e^{-sT_s}$$

Задайте линеаризацию для блока задержки с помощью следующего кода.

delayblk = 'scdspeed_compdelay/Computational Delay';
set_param(delayblk,'SCDEnableBlockLinearizationSpecification','on')
rep = struct('Specification','ss(1,''InputDelay'',Ts)',...
             'Type','Expression',...
             'ParameterNames','',...
             'ParameterValues','');
set_param(delayblk,'SCDBlockLinearizationSpecification',rep)

С моделями непрерывного времени для задержки и эффектов выборки, анализ проектирования контроллера затем остается в непрерывной области.

Затем вы линеаризуете модель с задержками Ts = 0,1 и 0,25 секунды. Для этого сначала установите ввод и вывод линейные аналитические точки.

io(1) = linio('scdspeed_compdelay/PID Controller',1,'input');
io(2) = linio('scdspeed_compdelay/Zero-Order Hold',1,'openoutput');

Линеаризуйте модель в Ts = 0.1.

Ts = 0.1;
sys2 = linearize(mdl,io);

Линеаризуйте модель в Ts = 0.25.

Ts = 0.25;
sys3 = linearize(mdl,io);

Наконец, линеаризуйте модель без эффектов выборки и вычислительной задержки.

io(1) = linio('scdspeed_contcomp/PID Controller',1,'input');
io(2) = linio('scdspeed_contcomp/rad//s to rpm',1,'openoutput');
sys1 = linearize(mdl_continuous,io);

Можно использовать линейные модели механизма, чтобы исследовать эффекты вычислительной задержки на частотной характеристике. В этом случае фазовый отклик системы значительно уменьшается из-за задержки, введенной путем выборки.

p = bodeoptions('cstprefs');
p.Grid = 'on';
p.PhaseMatching = 'on';
bodeplot(sys1,'k',sys2,'r',sys3,'g', {1e-2,1e2},p)
legend('Continuous Model','Ts = 0.1','Ts = 0.25','Location','southwest')

Используя модель с самым медленным шагом расчета, перепроектируйте компенсатор с помощью методов в Одном Проекте Компенсатора Обратной связи/Предварительного фильтра Цикла. Выполнение так дает следующие Усиления PI.

P = 0.00065912
I = 0.001898342

Установите эти усиления в контроллере.

set_param('scdspeed_compdelay/PID Controller','P','0.00065912')
set_param('scdspeed_compdelay/PID Controller','I','0.001898342')

Симулируйте получившуюся систему с обратной связью с шагом расчета Ts = 0.25.

sim(mdl)
Tc = simout.time;
Yc = simout.signals.values;

Сравните ответы

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

plot(T1,Y1,'k',T3,Y3,'b',Td,Yd,'m',Tc,Yc,'r')
xlabel('Time (sec.)')
ylabel('Engine Speed Response')
legend('Continuous compensator (original)','Discrete compensator (original)', ...
    'Discrete compensator (discrete redesign)',...
    'Discrete compensator (continuous redesign)',...
    'Location','southeast')
grid

bdclose('scdspeed_contcomp')
bdclose('scdspeed_compdelay')

Смотрите также

Похожие темы