Пакет: раздражения
Идентифицируйте изменяющиеся во времени исходные блоки
blocks = frest.findSources(model)
blocks = frest.findSources(model,io)
находит все изменяющиеся во времени исходные блоки в пути прохождения сигнала любой выходной точки линеаризации отмеченными в модели blocks
= frest.findSources(model
)model
Simulink®.
находит, что все изменяющиеся во времени исходные блоки в пути прохождения сигнала любой выходной точки линеаризации, заданной в массиве линейного анализа, указывают blocks
= frest.findSources(model
,io
)io
.
|
Вектор символов или строка, которая содержит имя модели Simulink, в которой вы идентифицируете изменяющиеся во времени исходные блоки для оценки частотной характеристики. |
|
Массив точек ввода-вывода линеаризации. Элементы |
|
Блокируйте пути изменяющихся во времени исходных блоков в Если вы обеспечиваете Если вы не обеспечиваете |
Оцените частотную характеристику модели, имеющей изменяющиеся во времени исходные блоки. Этот пример показывает использование frest.findSources
идентифицировать изменяющиеся во времени исходные блоки, которые вмешиваются в оценку частотной характеристики. Можно также видеть использование BlocksToHoldConstant
опция frestimateOptions
отключить изменяющиеся во времени исходные блоки по оценке.
Загрузите модель scdspeed_ctrlloop
.
mdl = 'scdspeed_ctrlloop'; open_system(mdl) % Convert referenced model to normal mode for accuracy set_param('scdspeed_ctrlloop/Engine Model',... 'SimulationMode','Normal');
Во-первых, просмотрите эффекты изменяющихся во времени исходных блоков на оценке частотной характеристики. Для этого выполните оценку, не отключая изменяющиеся во времени исходные блоки.
В этом примере точки ввода-вывода линеаризации уже заданы в модели. Используйте getlinio
команда, чтобы понять мысли ввода-вывода для frestimate
.
io = getlinio(mdl)
Задайте sinestream, сигнализируют и вычисляют предполагаемую частотную характеристику sysest
.
in = frest.Sinestream('Frequency',logspace(1,2,10),... 'NumPeriods',30,'SettlingPeriods',25); [sysest,simout] = frestimate(mdl,io,in);
Выполните точную линеаризацию и сравните с предполагаемым ответом.
sys = linearize(mdl,io); bodemag(sys,sysest,'r*')
Предполагаемая частотная характеристика не совпадает с точной линеаризацией. Несоответствие происходит, потому что изменяющиеся во времени исходные блоки в модели препятствуют тому, чтобы ответ достиг устойчивого состояния.
Найдите изменяющееся во времени использование блоков frest.findSources
.
srcblks = frest.findSources(mdl);
srcblks
массив путей к блоку, соответствующих изменяющимся во времени исходным блокам в модели. Чтобы исследовать результат, индексируйте в массив.
Например, ввод
srcblks(2)
возвращает результат
ans = Simulink.BlockPath Package: Simulink Block Path: 'scdspeed_ctrlloop/Engine Model' 'scdspeed_plantref/Drag Torque/Step1'
Теперь можно оценить частотную характеристику без вклада изменяющихся во времени исходных блоков. Для этого установите BlocksToHoldConstant
опция frestimateOptions
равняйтесь srcblks
, и запустите оценку.
opts = frestimateOptions opts.BlocksToHoldConstant = srcblks % Run frestimate again with blocks disabled [sysest2,simout2] = frestimate(mdl,io,in,opts);
Оценка частотной характеристики теперь предоставляет хорошее соответствие точному результату линеаризации.
bodemag(sys,sysest2,'r*')
Использование frest.findSources
идентифицировать изменяющиеся во времени исходные блоки, которые могут вмешаться в оценку частотной характеристики. Чтобы отключить такие блоки, чтобы оценить частотную характеристику, установите BlocksToHoldConstant
опция frestimateOptions
равняйтесь blocks
или подмножество blocks
. Затем оцените использование частотной характеристики frestimate
.
Иногда, model
включает модели, на которые ссылаются, содержащие исходные блоки в пути прохождения сигнала выходной точки линеаризации. В таких случаях, набор модели, на которые ссылаются, к нормальному режиму симуляции, чтобы гарантировать это frest.findSources
определяет местоположение их. Используйте set_param
команда, чтобы установить SimulationMode
из любых моделей, на которые ссылаются, к Normal
перед выполнением frest.FindSources
.
Определять местоположение изменяющихся во времени исходных блоков, которые могут вмешаться в оценку частотной характеристики, frest.findSources
начинается в каждой выходной точке линеаризации в модели. От каждой выходной точки алгоритм прослеживает каждый путь прохождения сигнала, назад блокируются блоком. Алгоритм сообщает о любом исходном блоке (блок без входного порта), это обнаруживает, если тот исходный блок не является блоком Constant или Ground.
frest.findSources
алгоритм прослеживает каждый путь прохождения сигнала, который может влиять на значение сигналов в каждой выходной точке линеаризации в модели. Прослеженные пути включают:
Пути прохождения сигнала в виртуальных и невиртуальных подсистемах.
Пути прохождения сигнала в режиме normal mode сослались на модели. Установите все модели, на которые ссылаются, на нормальный режим симуляции перед использованием frest.findSources
гарантировать, что алгоритм идентифицирует исходные блоки в моделях, на которые ссылаются.
Сигналы направляются через From и блоки Goto, или через блоки Data Store Write и Data Store Read.
Сигналы направляются через переключатели. frest.findSources
алгоритм принимает, что любой полюс переключателя может быть активным во время оценки частотной характеристики. Алгоритм поэтому следует за сигналом назад через все входные параметры переключателя.
Примечание
Некоторые изменяющиеся во времени исходные блоки не могут быть найдены frest.findSources
. Если внутренний путь прохождения сигнала блока не содержит блок без входного порта, о том блоке не сообщает функция.
Например, рассмотрите модель scdspeed_ctrlloop
. Эта модель имеет одну выходную точку линеаризации, расположенный при выходе блока Sum пометил Speed Output
. ( frest.findSources
алгоритм игнорирует точки ввода линеаризации.) Перед выполнением frest.findSources
, преобразуйте модель, на которую ссылаются, в нормальный режим симуляции:
set_param('scdspeed_ctrlloop/Engine Model',... 'SimulationMode','Normal');
Можно теперь запуститься frest.findSources
идентифицировать изменяющиеся во времени исходные блоки с помощью выходной точки линеаризации, заданной в модели.
srcblks = frest.findSources('scdspeed_ctrlloop');
Алгоритм начинается в выходной точке и прослеживает через блок Sum Speed Output
. Один вход к Speed Output
подсистема External Disturbance
. Алгоритм вводит подсистему, находит, что исходный блок пометил Step Disturbance
, и отчеты тот блок.
Блок Sum Speed Output
имеет другой вход, который алгоритм прослеживает в модель Engine Model
, на которую ссылаются,.
Engine Model
содержит несколько подсистем, и алгоритм прослеживает сигнал через эти подсистемы, чтобы идентифицировать любые изменяющиеся во времени существующие исходные блоки.
Например, Combustion
подсистема включает блок From, отмеченный delta
это направляет сигнал от Spark Advance
источник. Поскольку Spark Advance
постоянный исходный блок, однако, алгоритм не сообщает о присутствии блока.
Алгоритм продолжает трассировку, пока все возможные пути прохождения сигнала, способствующие сигналу в каждой выходной точке линеаризации, не исследованы.
Можно использовать Model Advisor Simulink, чтобы определить, существуют ли изменяющиеся во времени исходные блоки в пути прохождения сигнала выхода линейные аналитические точки в модели. Для этого используйте Проверки Simulink Control Design проверки Model Advisor. Для получения дополнительной информации об использовании Model Advisor смотрите Проверку Ваша Модель Используя Model Advisor.