В этом примере показано, как моделировать вычислительную задержку и эффект выборки с помощью Simulink Control Design.
Вычислительные задержки и эффекты выборки могут критически влиять на производительность системы управления. Обычно реакции системы с замкнутым контуром становятся колебательными и нестабильными, если эти факторы не принимаются во внимание. Поэтому при моделировании системы управления следует включать вычислительные задержки и эффекты выборки для точного проектирования и моделирования системы с замкнутым контуром.
Существует два подхода к проектированию компенсаторов с эффектами вычислительной задержки и выборки. Первый подход заключается в разработке контроллера в дискретной области для регистрации эффектов отбора проб путем дискретизации установки. Второй подход заключается в разработке контроллера в непрерывной области. Такой подход иногда более удобен, но в этом случае нужно учитывать эффекты вычислительной задержки и выборки. В этом примере применяются оба подхода к перепроектированию системы управления с использованием Simulink Control Design.
В следующем примере модели начальный компенсатор имеет следующие коэффициенты усиления от компенсатора в примере «Single Loop Feedback/Prefilter Compensator Design».
P = 0.0018222
I = 0.0052662
Первая модель имеет дискретную реализацию системы управления.
mdl = 'scdspeed_compdelay';
open_system(mdl)

В этой модели блок scdspeed_compdelay/Computational Delay моделирует эффекты вычислительной задержки. Задержка равна времени выборки контроллера, что является наихудшим случаем. Блок удержания нулевого заказа scdspeed_compdelay/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;
В качестве второго подхода переработайте контроллер с помощью непрерывных эквивалентов единичной задержки и удержания нулевого порядка.
Установка динамики удержания нулевого заказа

на блоке scdspeed_compdelay/Zero-Order Hold щелкните правой кнопкой мыши блок и выберите «Линейный анализ - > Задать линеаризацию». Откроется следующее диалоговое окно блока для задания динамики удержания нулевого порядка.

Также укажите линеаризацию как удержание нулевого порядка scdspeed_compdelay/Zero-Order Hold с непрерывным представлением. Следующий код эквивалентен введению этих спецификаций в диалоговое окно спецификаций.
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);
Задание линеаризации блока задержки scdspeed_compdelay/Computational Delay с непрерывной задержкой транспортировки.

Эти команды используются для задания линеаризации блока.
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')

Используя модель с самым медленным временем выборки, перепроектируйте компенсатор, используя методы, описанные в документе Single Loop Feedback/Prefilter Compensator Design. Это дает следующие прибыли PI:
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') h = legend('cont. compensator (orig)','disc. compensator (orig)', ... 'disc. compensator (disc. redesign)',... 'disc. compensator (cont. redesign)',... 'Location','SouthEast') grid bdclose('scdspeed_contcomp') bdclose('scdspeed_compdelay')
h =
Legend (cont. compensator (orig), disc. compensator (o…) with properties:
String: {1x4 cell}
Location: 'southeast'
Orientation: 'vertical'
FontSize: 9
Position: [0.5222 0.1294 0.3683 0.1274]
Units: 'normalized'
Use GET to show all properties
