Можно выполнить код модели строго однозадачным способом. Хотя этот режим менее эффективен в отношении скорости выполнения, в определенных ситуациях он может упростить вашу модель.
В однозадачном режиме базовая частота дискретизации должна определять временной интервал, который достаточно велик, чтобы позволить выполнение всех блоков в этом интервале.
Следующий рисунок иллюстрирует неэффективность, присущую однозадачному выполнению.
Для выполнения однозадачной системы требуется базовая частота дискретизации, которая достаточна для выполнения одного шага всей модели.
Чтобы использовать однозадачное выполнение, очистите Treat each discrete rate as a separate task параметра конфигурации модели. Если вы выбираете параметр, однозадачный режим используется в следующих случаях:
Если ваша модель содержит один шаг расчета
Если ваша модель содержит непрерывный и дискретный шаг расчета, и фиксированный размер шага равен дискретному шагу расчета
В этом примере рассматривается, как простая многоскоростная модель выполняется как в реальном времени, так и в симуляции, с помощью решателя с фиксированным шагом. Он рассматривает операцию как в однозадачном, так и в многозадачном режимах, как определяется настройкой параметра конфигурации модели Treat each discrete rate as a separate task.
Пример модели показан на следующем рисунке. Обсуждение относится к шести блокам модели как A-F, как обозначено в блок-схеме.
Порядок выполнения блоков (указанный в правом верхнем углу каждого блока) был принудительно приведен в порядок, показанный путем присвоения более высоких приоритетов блокам F, E и D. Показанное упорядоченное расположение является одним из возможных допустимых упорядоченных расположений выполнения для этой модели. Для получения дополнительной информации смотрите Фазы симуляции в динамических системах.
Порядок выполнения определяется зависимостями данных между блоками. В системе реального времени порядок выполнения определяет порядок, в котором блоки выполняются в течение заданного временного интервала или задачи. Это обсуждение рассматривает порядок выполнения модели как заданный, потому что это касается распределения расчетов блоков для задач и планирования выполнения задачи.
Примечание
Обсуждение и временные диаграммы в этом разделе основаны на предположении, что блоки Rate Transition используются в режиме по умолчанию (protected) с параметрами блоков Ensure data integrity during data transfer и Ensure deterministic data transfer (maximum delay) выбраны
Этот пример рассматривает выполнение вышеупомянутой модели, когда параметр конфигурации модели Treat each discrete rate as a separate task очищен, что указывает на однозадачный режим.
В однозадачной системе, если вы выбираете параметр конфигурации <reservedrangesplaceholder1> модели, быстрые к медленным блоки Rate Transition оптимизируются из модели. Показан случай по умолчанию (параметр Block reduction выбран), поэтому блок B не отображается в временных диаграммах в этом разделе. Для получения дополнительной информации см. Раздел «Сокращение блоков».
Следующая таблица показывает для каждого блока в модели порядок выполнения, шаг расчета и имеет ли блок выходы или обновленные вычисления. Блок A не имеет дискретных состояний и, соответственно, не имеет расчетов обновления.
Порядок выполнения и шаги расчета (однозадачное)
Блоки | Шаг расчета | Выход | Обновление |
---|---|---|---|
E | 0.1 | Y | Y |
F | 0.1 | Y | Y |
D | 1 | Y | Y |
A | 0.1 | Y | N |
C | 1 | Y | Y |
Следующий рисунок показывает планирование расчетов, когда сгенерированный код развертывается в системе реального времени. Сгенерированная программа показана работающей в режиме реального времени под управлением прерываний от таймера 10 Гц.
В момент времени 0,0, 1,0 и каждую секунду после этого как медленный, так и быстрый блоки выполняют свои выходные расчеты; Далее следуют расчеты обновлений для блоков с состояниями. В течение заданного временного интервала выходные и обновлённые расчеты секвенируются в порядке выполнения блока.
Быстрые блоки выполняются на каждом такте с интервалами 0,1 секунды. После выходных расчетов следуют расчеты.
Система проводит несколько фрагмент каждого временного интервала (помеченного как «ожидание») в простое. Во время интервалов, когда выполняются только быстрые блоки, большой фрагмент интервала расходуется на холостой ход. Это иллюстрирует присущую ему неэффективность однозадачного режима.
Следующий рисунок показывает выполнение модели во время Simulink® цикл симуляции.
Поскольку время моделируется, размещение тактов представляет итерации цикла симуляции. Блоки выполняются в том же порядке, что и на предыдущем рисунке, но без ограничения часов реального времени. Поэтому нет времени простоя между моделируемыми периодами дискретизации.