Типы шага расчета

Дискретный шаг расчета

Учитывая блок с дискретным шагом расчета, Simulink® выполняет выход блока или метод обновления в моменты времени

tn=nTs+|To|

где период шага расчета Ts всегда больше нуля и меньше времени симуляции, Tsim. Количество периодов (n) - целое число, которое должно удовлетворять:

0nTsimTs

Когда симуляция прогрессирует, Simulink вычисляет выходы блоков только один раз в каждом из этих фиксированных временных интервалов tn. Эти времена симуляции, при которых Simulink выполняет метод выхода блока для заданного шага расчета, называются хитами шага расчета. Дискретные шаги расчета являются единственным типом, для которого априори известны шаги расчета хиты.

Если вам нужно задержать начальное время попадания выборки, можно задать смещение, To.

Блок Unit Delay является примером блока с дискретным шагом расчета.

Непрерывный шаг расчета

В отличие от дискретного шага расчета, непрерывное время попадания выборки разделяется на основные временные шаги и незначительные временные шаги, где мелкие шаги представляют собой разделы основных шагов. Решатель выдает результат на каждом главном временном шаге. Он использует результаты в незначительных временных шагах, чтобы улучшить точность результата на основном временном шаге.

Выбранный решатель ОДУ интегрирует все непрерывные состояния от времени начала симуляции до заданного основного или незначительного временного шага. Решатель определяет время мелких шагов и использует результаты в незначительных временных шагах, чтобы улучшить точность результатов на основных временных шагах. Однако вы видите выход блока только в основные временные шаги.

Чтобы указать, что блок, такой как Derivative блок, непрерывен, введите [0, 0] или 0 в Sample time поле блочного диалогового окна .

Мелкий шаг

Если для шага расчета блока задано значение [0, 1], блок становится неподвижным во миноре-шаге. Для этой настройки Simulink не выполняет блок в незначительные временные шаги; обновления происходят только на основных временных шагах. Этот процесс устраняет ненужные расчеты блоков, выход которых не может измениться между основными шагами.

В то время как вы можете явным образом задать блок, который будет мелким шагом, более обычно Simulink устанавливает это условие как унаследованный шаг расчета или как изменение пользовательской спецификации 0 (непрерывно). Эта настройка эквивалентна и, следовательно, преобразована в, самую быструю дискретную скорость при использовании решателя с фиксированным шагом.

Унаследованный шаг расчета

Если для шага расчета блока задано значение [–1, 0] или –1, шаг расчета наследуется, и Simulink определяет лучший шаг расчета для блока на основе контекста блока в модели. Simulink выполняет эту задачу на этапе компиляции; исходный унаследованный параметр никогда не появляется в скомпилированной модели. Поэтому вы никогда не увидите унаследованный ([-1, 0]) в Шаг расчета Legend. (См. «Просмотр информации о шаге расчета».)

Существуют некоторые блоки, в которых по умолчанию наследуется шаг расчета (-1). Для этих блоков параметр не отображается в диалоговом окне блока, если он не задан как ненаследуемое значение. Примеры этих блоков включают блоки Gain и Rounding Function. Как хорошая практика моделирования, не изменяйте параметр Sample time для этих блоков. Для получения дополнительной информации смотрите Блоки, для которых шаг расчета не рекомендован.

Все унаследованные блоки подвержены процессу распространения шага расчета, как обсуждается в «Как распространение влияет на унаследованные шаги расчета»

Постоянный шаг расчета

В Simulink константа является символическим именем или выражением, значение которого можно изменить только вне алгоритма или через диспетчерскую управляющую систему. Блоки, как и блок констант, выходы которого не изменяются во время нормального выполнения модели, всегда считаются постоянными.

Simulink присваивает этим блокам постоянный шаг расчета. Они запускают свой метод выхода блоков:

  • В начале симуляции.

  • В ответ на изменения во время выполнения окружения, такие как настройка параметра.

Для постоянного шага расчета, блочное назначение шага расчета [inf,0] или [inf].

Чтобы блок позволял постоянный шаг расчета, эти условия удерживают:

Блоки s-function

Библиотека блоков Simulink включает несколько блоков, таких как блок MATLAB S-Function, блок Level-2 MATLAB S-Function и блок C S-Function, порты которых могут выдавать выходы с различными скоростями дискретизации. Возможно, что некоторые порты этих блоков имеют постоянный шаг расчета.

Переменный шаг расчета

Блоки, которые используют переменный шаг расчета имеют неявное SampleTime параметр, который задает блок; блок сообщает Simulink, когда его запускать. Скомпилированный шаг расчета - [-2, Tvo] где Tvo является уникальным смещением переменной.

Блок Pulse Generator является примером блока, который имеет переменный шаг расчета. Поскольку Simulink поддерживает переменные шаги расчета только для решателей с переменным шагом, блок Pulse Generator задает дискретный шаг расчета, если вы используете решатель с фиксированным шагом.

Чтобы узнать, как записать свой собственный блок, который использует шаг расчета переменной, смотрите Примеры C MEX S-Function.

Управляемый шаг расчета

Блок может быть настроен на использование управляемого шага расчета с Tbase разрешения. Tbase - наименьший допустимый временной интервал между выполнениями блоков. Чтобы задать Tbase в своем собственном блоке C S-Function, используйте ssSetControllableSampleTime.

Блок, использующий управляемый шаг расчета, может быть динамически установлен на выполнение в n кратных Tbase. Время следующего выполнения блока:

Tnext = <reservedrangesplaceholder2> <reservedrangesplaceholder1> + T

Задать <reservedrangesplaceholder0> в Блок s-function C можно с помощью ss Set Num Ticks To Next Hit For Controllable Sample Time.

Срабатывание шага расчета

Если блок находится внутри подсистемы триггерного типа (например, вызов функции, активированный и активированный, или итератор), блок может быть постоянным или иметь инициированный шаг расчета. Вы не можете явным образом задать триггерированный тип шага расчета. Однако, чтобы получить триггерный тип во время компиляции, необходимо задать шаг расчета блока на унаследованное (-1). Simulink затем определяет конкретные моменты времени, в которые блок вычисляет свой выход во время симуляции. Одно исключение - если подсистема является вызовом асинхронной функции, как описано в следующем разделе.

Асинхронный Шаг расчета

Асинхронный шаг расчета аналогичен срабатывающему шагу расчета. В обоих случаях необходимо задать унаследованный шаг расчета, потому что механизм Simulink не выполняет блок регулярно. Вместо этого условие выполнения определяет, когда выполняется блок. Для случая асинхронного шага расчета S-функция выполняет асинхронный вызов функции.

Различия между этими типами шагов расчета:

  • Асинхронная подсистема вызова функций может иметь только шаг расчета. (См. Использование подсистем вызова функций.)

  • Источником сигнала вызова функции является S-функция, имеющая опцию SS_OPTION_ASYNCHRONOUS.

  • Асинхронный шаг расчета может также происходить, когда виртуальный блок соединяется с асинхронной S-функцией или асинхронной подсистемой вызова функций.

  • Асинхронный шаг расчета важен для некоторых приложений генерации кода. (См. «Асинхронные события» (Simulink Coder).)

  • Это шаг расчета [1,n].

Для объяснения того, как использовать блоки для моделирования и генерации кода для асинхронной обработки событий, смотрите Переходы Скорости и Асинхронные Блоки (Simulink Coder).

См. также

| |