Можно линеаризовать Simulink® модель, которая содержит блоки с различными шагами расчета с помощью программного обеспечения Simulink Control Design™. По умолчанию, инструменты линеаризации:
Преобразуйте шаги расчета с помощью нулевого порядка, содержат метод преобразования.
Создайте линеаризовавшую модель с шагом расчета, равным самому большому шагу расчета блоков на пути к линеаризации.
Можно изменить любое из этих поведений путем определения опций линеаризации, который влияет на результат линеаризации.
По умолчанию программное обеспечение устанавливает шаг расчета на наименьшее общее кратное ненулевых шагов расчета в модели. На этом уровне субдискретизация точна для всех уровней в модели. Если шаг расчета по умолчанию не подходит для вашего приложения, можно задать различный шаг расчета.
Задавать шаг расчета линейной модели в Model Linearizer:
На вкладке Linear Analysis нажмите More Options.
В Опциях для точного диалогового окна линеаризации, на вкладке Linearization, в поле Enter sample time (sec), задают шаг расчета. Можно задать любое из следующих значений.
-1 — Установите шаг расчета на наименьшее общее кратное ненулевых шагов расчета в модели.
0 — Создайте модель непрерывного времени.
Положительная скалярная величина — Использование заданное значение для шага расчета.
Чтобы задать шаг расчета линейной модели в командной строке, создайте a linearizeOptions
набор опции и набор SampleTime
опция.
opt = linearizeOptions; opt.SampleTime = 0.01;
Можно затем использовать этот набор опции с linearize
или slLinearizer
.
Когда вы линеаризуете модели с несколькими шагами расчета, такими как дискретный контроллер с непрерывным объектом, программное обеспечение использует алгоритм преобразования уровня, чтобы создать односкоростную линейную модель. Метод преобразования уровня по умолчанию является нулевым порядком, содержат.
Задавать метод преобразования уровня в Model Linearizer:
На вкладке Linear Analysis нажмите More Options.
В Опциях для точного диалогового окна линеаризации, на вкладке 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 | Сверхдискретизируйте дискретные состояния, если это возможно, чтобы гарантировать усиление и соответствие фазы сверхдискретизированной динамики. Можно только сверхдискретизировать, когда новый шаг расчета является целочисленным кратным шаг расчета исходной системы. В противном случае программное обеспечение использует альтернативный метод преобразования уровня. |
Если вы выбираете любой из следующих методов преобразования уровня:
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)