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

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

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

  • Создайте линеаризовавшую модель с шагом расчета, равным самому большому шагу расчета блоков на пути к линеаризации.

Можно изменить любое из этих поведений путем определения опций линеаризации, который влияет на результат линеаризации.

Измените шаг расчета линейной модели

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

Задавать шаг расчета линейной модели в Model Linearizer:

  1. На вкладке Linear Analysis нажмите More Options.

  2. В Опциях для точного диалогового окна линеаризации, на вкладке Linearization, в поле Enter sample time (sec), задают шаг расчета. Можно задать любое из следующих значений.

    • -1 — Установите шаг расчета на наименьшее общее кратное ненулевых шагов расчета в модели.

    • 0 — Создайте модель непрерывного времени.

    • Положительная скалярная величина — Использование заданное значение для шага расчета.

Чтобы задать шаг расчета линейной модели в командной строке, создайте a linearizeOptions набор опции и набор SampleTime опция.

opt = linearizeOptions;
opt.SampleTime = 0.01; 

Можно затем использовать этот набор опции с linearize или slLinearizer.

Измените метод преобразования уровня линеаризации

Когда вы линеаризуете модели с несколькими шагами расчета, такими как дискретный контроллер с непрерывным объектом, программное обеспечение использует алгоритм преобразования уровня, чтобы создать односкоростную линейную модель. Метод преобразования уровня по умолчанию является нулевым порядком, содержат.

Задавать метод преобразования уровня в Model Linearizer:

  1. На вкладке Linear Analysis нажмите More Options.

  2. В Опциях для точного диалогового окна линеаризации, на вкладке Linearization, в Choose rate conversion method выпадающий список, избранный один из следующих методов преобразования уровня.

    Метод преобразования уровняКогда использовать
    Zero-Order HoldВам нужна точная дискретизация непрерывной динамики во временном интервале для входных параметров лестницы.
    TustinВам нужен хороший частотный диапазон, соответствующий между системой непрерывного времени и соответствующей дискретизированной системой, или между исходной системой и передискретизируемой системой.
    Tustin with PrewarpingВам нужен хороший частотный диапазон, соответствующий на особой частоте между системой непрерывного времени и соответствующей дискретизированной системой, или между исходной системой и передискретизируемой системой.
    Upsampling when possible, Zero-Order Hold otherwise
    Upsampling when possible, Tustin otherwise
    Upsampling when possible, Tustin with Prewarping otherwise
    Сверхдискретизируйте дискретные состояния, если это возможно, чтобы гарантировать усиление и соответствие фазы сверхдискретизированной динамики. Можно только сверхдискретизировать, когда новый шаг расчета является целочисленным кратным шаг расчета исходной системы. В противном случае программное обеспечение использует альтернативный метод преобразования уровня.
  3. Если вы выбираете любой из следующих методов преобразования уровня:

    • Tustin with Prewarping

    • Upsampling when possible, Tustin with Prewarping otherwise

    затем, в поле Enter prewarp frequency, задайте частоту перед деформацией.

Чтобы задать метод преобразования уровня в командной строке, создайте a linearizeOptions объект и набор RateConversionMethod и PreWarpFreq опции.

opt = linearizeOptions;
opt.RateConversionMethod = 'prewarp';
opt.PreWarpFreq = 100;

Можно затем использовать этот объект опций с linearize или slLinearizer.

Примечание

Если вы используете метод преобразования уровня кроме нулевого порядка, содержат, конвертированные состояния больше не имеют тот же физический смысл как исходные состояния. В результате именами состояния в получившейся системе LTI является '?'.

Многоскоростной алгоритм линеаризации

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

Чтобы проиллюстрировать концепции, пример показывает процесс линеаризации с помощью функций Control System Toolbox™. Затем тот же процесс повторяется с помощью linearize функция.

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

  • sysC - Система линейного независимого от времени (LTI) непрерывного времени

  • Integrator - Интегратор непрерывного времени

  • sysTs1 - Система LTI дискретного времени с шагом расчета 0,01 секунд

  • sysTs2 - Система LTI дискретного времени с шагом расчета 0,025 секунд

  • Zero-Order Hold - Блокируйтесь это производит входящий сигнал в 0,01 секунды

sysC = zpk(-2,-10,0.1);
Integrator = zpk([],0,1);
sysTs1 = zpk(-0.7463,[0.4251 0.9735],0.2212,0.01);
sysTs2 = zpk([],0.7788,0.2212,0.025);

Просмотрите scdmrate модель.

open_system('scdmrate')

В этом примере вы линеаризуете модель между выходом блока Constant и выходом sysTs2 блок.

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

Первый шаг процесса линеаризации должен линеаризовать каждый блок в модели. Линеаризация для Насыщения и Нулевого Порядка Содержит блоки, усиление 1. Начиная с ОСВЕТИЛ блоки, уже линейны, они неизменны.

Просмотрите обновленную модель с линеаризовавшими блоками.

open_system('scdmratestep1')

Выполните преобразование уровня

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

linearize функционируйте использует итеративный метод преобразования уровня. Итерации начинаются с наименьшего общего кратного шагов расчета в модели. В этом примере шаги расчета 0, 0.01, и 0,025 секунды, который дает к наименьшему общему кратному 0,05.

Первая итерация преобразования уровня передискретизирует комбинацию блоков с самой быстрой частотой дискретизации на следующем самом быстром уровне. В этом примере первая итерация преобразует комбинацию линеаризовавших блоков непрерывного времени, sysC и Integrator, к шагу расчета 0,01 использований нулевого порядка содержат непрерывное-к-дискретному преобразование.

sysC_Ts1 = c2d(sysC*Integrator,0.01);

Блоки sysC и Integrator теперь заменяются sysC_Ts1.

open_system('scdmratestep2')

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

sysCL = feedback(sysTs1*sysC_Ts1,1);

Затем нулевой порядок содержит метод, преобразует систему с обратной связью от шага расчета 0,01 секунд к 0,025 секундам.

sysCL_Ts2 = d2d(sysCL,0.025);

Система sysCL_Ts2 затем заменяет обратную связь в модели.

open_system('scdmratestep3')

Итоговая итерация передискретизирует комбинацию системы с обратной связью и sysTs2 блок из шага расчета 0,025 секунд к 0,05 секундам.

sys1 = d2d(sysCL_Ts2*sysTs2,0.05)
sys1 =
 
   0.0001057 (z+22.76) (z+0.912) (z-0.9048) (z+0.06495)
  -------------------------------------------------------
  (z-0.01373) (z-0.6065) (z-0.6386) (z-0.8588) (z-0.9754)
 
Sample time: 0.05 seconds
Discrete-time zero/pole/gain model.

Линеаризуйте модель Используя функции Simulink Control Design

linearize функционируйте реализует этот итеративный процесс для линеаризации многоскоростных моделей.

Чтобы линеаризовать модель, сначала задайте точки ввода и вывода линеаризации.

io(1) = linio('scdmrate/Constant',1,'input');
io(2) = linio('scdmrate/sysTs2',1,'openoutput');

Линеаризуйте модель и преобразуйте получившуюся модель в пространстве состояний в формат нулей, полюсов и усиления.

sys2 = zpk(linearize('scdmrate',io))
sys2 =
 
  From input "Constant" to output "sysTs2":
   0.0001057 (z+22.76) (z+0.912) (z-0.9048) (z+0.06495)
  -------------------------------------------------------
  (z-0.6065) (z-0.6386) (z-0.8588) (z-0.9754) (z-0.01373)
 
Sample time: 0.05 seconds
Discrete-time zero/pole/gain model.

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

bode(sys1,sys2)

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

Приложения

Функции

Похожие темы