Линеаризуйте модели с задержками

В этом примере показано, как линеаризовать модель Simulink®, которая содержит задержки.

Для получения дополнительной информации об управлении линеаризовавшими моделями с задержками смотрите Задержки Определения и Анализ Систем управления с Задержками.

Линеаризуйте модель с непрерывными задержками

Можно линеаризовать модель Simulink с блоками задержки непрерывного времени, такими как Транспортная Задержка, Переменная Транспортная Задержка и Переменная Задержка с помощью одной из следующих опций.

  • Используйте приближения Padé задержек, чтобы получить рациональную линейную систему через линеаризацию. Эта опция является методом по умолчанию, используемым программным обеспечением Simulink Control Design™.

  • Вычислите линеаризацию, где задержка точно представлена. Используйте эту опцию, когда вам будут нужны точная симуляция и частотные характеристики из линеаризовавшей модели и при оценке точности приближения Padé.

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

model = 'scdspeed';
open_system(model)

Индукция к подсистеме Задержки Диапазона Степени содержит блок Variable Transport Delay, названный dM/dt. Задайте путь к этому блоку.

DelayBlock = 'scdspeed/Induction to  Power Stroke Delay/dM//dt delay';

Чтобы вычислить линеаризацию с помощью приближения первого порядка, установите порядок приближения Padé к 1. Для блока Variable Transport Delay, свойства Pade Order к 1.

В качестве альтернативы в командной строке, введите следующий код.

set_param(DelayBlock,'PadeOrder','1');

Задайте угол дросселя как вход линеаризации и скорость вращения двигателя как линеаризация выход.

io(1) = linio('scdspeed/throttle (degrees)',1,'input');
io(2) = linio('scdspeed/rad//s to rpm',1,'output');

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

sysOrder1 = linearize(model,io);

Чтобы линеаризовать модель с помощью приближения второго порядка, установите порядок Padé к 2.

set_param(DelayBlock,'PadeOrder','2');
sysOrder2 = linearize(model,io);

Чтобы вычислить линейную модель с точным представлением задержки, создайте линеаризацию, опции возражают и включают UseExactDelayModel опция.

opt = linearizeOptions;
opt.UseExactDelayModel = 'on';

Линеаризуйте модель с помощью заданных опций линеаризации.

sysExactDiscrete = linearize(model,io,opt);

Сравните Предвещать ответ моделей приближения Padé и точной модели линеаризации.

p = bodeoptions('cstprefs');
p.Grid = 'on';
p.PhaseMatching = 'on';
p.XLimMode = {'Manual'};
p.XLim = {[0.1 1000]};
bode(sysOrder1,sysOrder2,sysExactDiscrete,p);
legend('1st Order','2nd Order','Exact','Location','SouthWest')

В случае приближения первого порядка фаза начинает отличать приблизительно 50 рад/с и отличает приблизительно 100 рад/с.

Закройте модель Simulink.

bdclose(model)

Линеаризуйте модель с дискретными задержками

Когда линеаризация модели с дискретными блоками задержки, такими как (Целочисленная) Задержка и блоки Unit Delay, использует точную опцию задержки с учетом задержек, не добавляя состояния в динамику модели. Явным образом составление этих задержек улучшает производительность симуляции для систем со многими дискретными задержками, потому что существует меньше состояний в вашей модели.

Откройте модель Simulink дискретной системы, которая содержит блок Delay с 20 состояниями задержки.

model = 'scdintegerdelay';
open_system(model)

По умолчанию линеаризация включает все состояния, свернутые в линейную модель. Установите сигналы ввода и вывода линеаризации и линеаризуйте модель.

io(1) = linio('scdintegerdelay/Step',1,'input');
io(2) = linio('scdintegerdelay/Discrete Filter',1,'output');
sysDefault = linearize(model,io);

Просмотрите размер модели. Это имеет 21 состояние (1 - Дискретный Фильтр, 20 - Целочисленная Задержка).

size(sysDefault)
State-space model with 1 outputs, 1 inputs, and 21 states.

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

opt = linearizeOptions;
opt.UseExactDelayModel = 'on';
sysExactDiscrete = linearize(model,io,opt);

Просмотрите получившийся размер модели. Это имеет 1 состояние. Задержки составляются внутренне в линеаризовавшей модели.

size(sysExactDiscrete)
State-space model with 1 outputs, 1 inputs, and 1 states.

Сравните эффективность моделей с помощью переходного процесса. Модели производят тот же ответ.

step(sysDefault,sysExactDiscrete)
legend('Default','Exact','Location','SouthEast')

Закройте модель Simulink.

bdclose(model)

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

|

Похожие темы