В этом примере показано, как задать метод преобразования уровня при линеаризации многоскоростной модели Simulink®. Выбор методологии преобразования уровня может влиять на получившуюся линеаризовавшую модель. Этот пример иллюстрирует экстракцию дискретной модели линейного независимого от времени (LTI) использование двух различных методов преобразования уровня.
scdmrate
Модель Simulink содержит пять блоков с различными шагами расчета. Все линейные системы в этой модели находятся в формате нулей, полюсов и усиления.
sysC
- Система линейного независимого от времени (LTI) непрерывного времени
Integrator
- Интегратор непрерывного времени
sysTs1
- Система LTI дискретного времени с шагом расчета 0,01 секунд
sysTs2
- Система LTI дискретного времени с шагом расчета 0,025 секунд
Zero-Order Hold
- Блокируйтесь это производит входящий сигнал в 0,01 секунды
Откройте модель Simulink.
mdl = 'scdmrate';
open_system(mdl)
В этом примере вы линеаризуете модель между выходом sysTs1
блокируйтесь и выход Zero-Order Hold
блок. Чтобы вычислить ответ разомкнутого контура, вы добавляете цикл, открывающийся при выходе Zero-Order Hold
блок.
io(1) = linio('scdmrate/sysTs1',1,'input'); io(2) = linio('scdmrate/Zero-Order Hold',1,'openoutput');
Используя эти точки линеаризации, линеаризация эффективно приводит к линеаризации модели scdmrate_ol
.
open_system('scdmrate_ol')
При линеаризации модели, которая содержит и непрерывные и дискретные сигналы, программное обеспечение сначала преобразует непрерывные сигналы в дискретные сигналы, с помощью метода преобразования уровня. Чтобы задать метод преобразования уровня, создайте linearizeOptions
объект и набор RateConversionMethod
свойство. Метод преобразования уровня по умолчанию является нулевым порядком, содержат ('zoh'
).
opt = linearizeOptions; opt.RateConversionMethod
ans = 'zoh'
Линеаризуйте модель с помощью нулевого порядка по умолчанию, содержат метод. Поскольку линеаризация включает Zero-Order Hold
блокируйтесь, шаг расчета линеаризации составляет 0,01 секунды.
syszoh = linearize(mdl,io,opt);
Измените метод преобразования уровня в Тастин (Билинейное преобразование) метод и линеаризуйте модель с помощью этого метода. Шаг расчета получившейся модели является также 0,01 секундами.
opt.RateConversionMethod = 'tustin';
systust = linearize(mdl,io,opt);
Можно также создать непрерывное время линеаризовавшая модель путем определения шага расчета как 0
в linearizeOptions
объект. Метод преобразования уровня создает одно дискретное время линеаризовавшая модель и затем преобразует модель дискретного времени в модель непрерывного времени.
opt.SampleTime = 0; sysc = linearize(mdl,io,opt);
Диаграммы Боде для этих трех линеаризации показывают эффекты двух методов преобразования уровня. В этом примере метод преобразования уровня Тастина дает самое точное представление фазового отклика системы непрерывного времени, и нулевой порядок содержат, дает лучшее соответствие ответу величины.
p = bodeoptions('cstprefs'); p.YLimMode = {'manual'}; p.YLim = {[-100 0];[-180 -30]}; p.Grid = 'on'; bodeplot(sysc,syszoh,systust,p); legend('sysc','syszoh','systust','Location','SouthWest');
Закройте модели.
bdclose('scdmrate') bdclose('scdmrate_ol')