frest.findSources

Пакет: раздражения

Идентифицируйте изменяющиеся во времени исходные блоки

Синтаксис

blocks = frest.findSources(model)
blocks = frest.findSources(model,io)

Описание

blocks = frest.findSources(model) находит все изменяющиеся во времени исходные блоки в пути прохождения сигнала любой выходной точки линеаризации отмеченными в Simulink® модель model.

blocks = frest.findSources(model,io) находит, что все изменяющиеся во времени исходные блоки в пути прохождения сигнала любой выходной точки линеаризации, заданной в массиве линейного анализа, указывают io.

Входные параметры

model

Вектор символов или строка, которая содержит имя модели Simulink, в которой вы идентифицируете изменяющиеся во времени исходные блоки для оценки частотной характеристики.

io

Массив точек ввода-вывода линеаризации.

Элементы io объекты ввода-вывода линеаризации, что вы создаете с getlinio или linio. frest.findSources использование только выходные точки, чтобы определить местоположение изменяющихся во времени исходных блоков, которые могут вмешаться в оценку частотной характеристики. См. Алгоритмы для получения дополнительной информации.

Выходные аргументы

blocks

Блокируйте пути изменяющихся во времени исходных блоков в model это может вмешаться в оценку частотной характеристики, возвращенную как массив Simulink.BlockPath объекты. blocks включает изменяющиеся во времени исходные блоки в подсистемах, и режим normal mode сослался на модели.

Если вы обеспечиваете io, blocks содержит все изменяющиеся во времени исходные блоки, способствующие сигналу в выходных точках в io.

Если вы не обеспечиваете io, blocks содержит все изменяющиеся во времени исходные блоки, способствующие сигналу в выходных точках, отмеченных в model.

Примеры

Оцените частотную характеристику модели, имеющей изменяющиеся во времени исходные блоки. Этот пример показывает использование 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.

Представленный в R2010b