frest.findSources

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

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

Синтаксис

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

Описание

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

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

  • Сигналы, направленные через От и блоки 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).

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