Учитывая блок с дискретным шагом расчета, Simulink® выполняет блок выход или метод обновления время от времени
где период шага расчета всегда больше нуля и меньше, чем время симуляции, . Количество периодов () целое число, которое должно удовлетворить:
В то время как симуляция прогрессирует, Simulink вычисляет, блокируют выходные параметры только однажды в каждом из этих фиксированных временных интервалов . Эти времена симуляции, в которых Simulink выполняет выходной метод блока для данного шага расчета, упоминаются, когда шаг расчета совершает нападки. Дискретные шаги расчета являются единственным типом, которым хиты шага расчета известны априорно.
Если необходимо задержать начальное демонстрационное время хита, можно задать смещение, .
Блок Unit Delay является примером блока с дискретным шагом расчета.
В отличие от дискретного шага расчета, совершила нападки непрерывная выборка, времена разделены на главные временные шаги и незначительные временные шаги, где мелкие шаги представляют подразделения существенных шагов. Решатель приводит к результату на каждом главном временном шаге. Это использует результаты на незначительных временных шагах, чтобы улучшить точность результата на главном временном шаге.
Решатель ОДУ, который вы выбираете, интегрирует все непрерывные состояния со времени начала симуляции к данному главному или незначительному временному шагу. Решатель определяет времена мелких шагов и использует результаты на незначительных временных шагах, чтобы улучшить точность результатов на главных временных шагах. Однако вы видите блок выход только на главных временных шагах.
Чтобы указать, что блок, такой как блок Derivative, непрерывен, вводят [0, 0]
или 0
в the Sample time поле диалогового окна блока.
Если шаг расчета блока установлен в [0, 1
], блок становится фиксированным на мелком шаге. Для этой установки Simulink не выполняет блок на незначительных временных шагах; обновления происходят только на главных временных шагах. Этот процесс устраняет ненужные расчеты блоков, выход которых не может измениться между существенными шагами.
В то время как можно явным образом установить блок быть зафиксированным на мелком шаге, более обычно Simulink устанавливает это условие или как наследованный шаг расчета или как изменение к пользовательской спецификации 0
(непрерывный). Эта установка эквивалентна, и поэтому преобразованный в, самый быстрый дискретный уровень, когда вы используете решатель фиксированного шага.
Если шаг расчета блока установлен в [–1, 0]
или –1
, шаг расчета наследован, и Simulink определяет лучший шаг расчета для блока на основе контекста блока в модели. Simulink выполняет эту задачу во время этапа компиляции; исходная наследованная установка никогда не появляется в скомпилированной модели. Поэтому вы никогда не видите наследованный ([–1, 0]) в Легенде Шага расчета. (Информация о Шаге расчета Вида на море.)
Существуют некоторые блоки, в которых шаг расчета наследован (-1) по умолчанию. Для этих блоков параметр не отображается на диалоговом окне блока, если это не установлено в ненаследованное значение. Примеры этих блоков включают блоки Rounding Function и Gain. Как хорошая практика моделирования, не изменяйте параметр Sample time для этих блоков. Для получения дополнительной информации смотрите Блоки, для Которых Не Рекомендуется Шаг расчета.
Все наследованные блоки подвергаются процессу распространения шага расчета, как обсуждено в том, Как Распространение Влияет на Наследованные Шаги расчета
В Simulink константа является символьным именем или выражением, значение которого можно изменить только вне алгоритма или через диспетчерскую управляющую систему. Блоки, как постоянный блок, выходные параметры которого не изменяются во время нормального выполнения модели, всегда считаются постоянными.
Simulink присваивает постоянный шаг расчета этим блокам. Они запускают свой блок выходной метод:
В начале симуляции.
В ответ на изменения во время выполнения в среде, такие как настройка параметра.
Для постоянного шага расчета присвоением шага расчета блока является [inf,0]
или [inf]
.
Для блока, чтобы позволить постоянный шаг расчета, эти условия содержат:
Блок не имеет никаких непрерывных или дискретных состояний.
Блок не управляет выходным портом условно выполняемой подсистемы (см. Используя Enabled Подсистемы).
Библиотека блока Simulink включает несколько блоков, таких как блок MATLAB S-Function, блок Level-2 MATLAB S-Function и блок C S-Function, порты которого могут произвести выходные параметры на уровне различных частот дискретизации. Для некоторых портов этих блоков возможно иметь постоянный шаг расчета.
Блоки, которые используют переменный шаг расчета, имеют неявный SampleTime
параметр, который задает блок; блок говорит Simulink, когда запустить его. Скомпилированный шаг расчета [–2,
] где Tvo
уникальное переменное смещение. Tvo
Блок Pulse Generator является примером блока, который имеет переменный шаг расчета. Поскольку Simulink поддерживает переменные шаги расчета для решателей переменного шага только, блок Pulse Generator задает дискретный шаг расчета, если вы используете решатель фиксированного шага.
Чтобы изучить, как записать ваш собственный блок, который использует переменный шаг расчета, см. Примеры S-функции MEX C.
Блок может быть сконфигурирован, чтобы использовать управляемый шаг расчета с разрешением Tbase. Tbase является самым маленьким допустимым временным интервалом между выполнением блока. Чтобы установить Tbase в вашем собственном Блоке s-function C, используйте ssSetControllableSampleTime
.
Блок с помощью управляемого шага расчета может динамически собираться выполниться во множителях n Tbase. Время следующего выполнения блока
Tnext = n Tbase + T
Можно установить n в Блоке s-function C с помощью ssSetNumTicksToNextHitForControllableSampleTime
.
Если блок в инициированном типе (e.g., вызов функции, включил и инициировал, или итератор), подсистема, блок может быть постоянным или иметь инициированный шаг расчета. Вы не можете задать инициированный тип шага расчета явным образом. Однако, чтобы достигнуть инициированного типа во время компиляции, необходимо установить шаг расчета блока на наследованный (–1). Simulink затем определяет определенные времена, в которые блок вычисляет свой выход в процессе моделирования. Одно исключение - то, если подсистема является асинхронным вызовом функции, как обсуждено в следующем разделе.
Асинхронный шаг расчета похож на инициированный шаг расчета. В обоих случаях необходимо задать наследованный шаг расчета, потому что механизм Simulink регулярно не выполняет блок. Вместо этого условие во время выполнения определяет, когда блок выполняется. Для случая асинхронного шага расчета S-функция делает асинхронный вызов функции.
Различия между этими типами шага расчета:
Только подсистема вызова функций может иметь асинхронный шаг расчета. (См. Используя Подсистемы вызова функций.)
Источником сигнала вызова функции является S-функция, имеющая опцию SS_OPTION_ASYNCHRONOUS.
Асинхронный шаг расчета может также произойти, когда виртуальный блок соединяется с асинхронной S-функцией или асинхронной подсистемой вызова функций.
Асинхронный шаг расчета важен для определенных приложений генерации кода. (См. Асинхронные События (Simulink Coder).)
Шаг расчета .
Для объяснения того, как использовать блоки, чтобы смоделировать и сгенерировать код для асинхронной обработки событий, смотрите Переходы Уровня и Асинхронные Блоки (Simulink Coder).
Настройка времени выборки | Просмотрите информацию о шаге расчета | Что такое шаг расчета?