Пакет: раздражения
Идентифицируйте изменяющиеся во времени исходные блоки
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
гарантировать, что алгоритм идентифицирует исходные блоки в моделях, на которые ссылаются.
Сигналы, направленные через От и блоки Goto, или через блоки Записи Чтения и Хранилища данных Хранилища данных.
Сигналы направляются через переключатели. Алгоритм 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
и сообщает о том блоке.
Speed Output
блока Sum имеет другой вход, который алгоритм прослеживает в модель Engine Model
, на которую ссылаются. Engine Model
содержит несколько подсистем, и алгоритм прослеживает сигнал через эти подсистемы, чтобы идентифицировать любые изменяющиеся во времени существующие исходные блоки.
Например, подсистема Combustion
включает блок From, отмеченный delta
, который направляет сигнал из источника Spark Advance
. Поскольку Spark Advance
является постоянным исходным блоком, однако, алгоритм не сообщает о присутствии блока.
Алгоритм продолжает трассировку, пока все возможные пути прохождения сигнала, способствующие сигналу в каждой выходной точке линеаризации, не исследованы.
Можно использовать Model Advisor Simulink, чтобы определить, существуют ли изменяющиеся во времени исходные блоки в пути прохождения сигнала вывода линейные аналитические точки в модели. Для этого используйте Проверки Simulink Control Design проверки Model Advisor. Для получения дополнительной информации об использовании Model Advisor смотрите Выбор и Осуществленные Проверки Model Advisor (Simulink).