Моделирование для однозадачного выполнения

Однозадачный режим

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

В однозадачном режиме основная частота дискретизации должна задать временной интервал, который достаточно длинен, чтобы позволить выполнение всех блоков в том интервале.

Следующая фигура иллюстрирует неэффективность, свойственную от однозадачного выполнения.

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

Создайте программу для однозадачного выполнения

Чтобы использовать однозадачное выполнение, снимите флажок Treat each discrete rate as a separate task на панели Solver диалогового окна Configuration Parameters. Если вы устанавливаете флажок, однозадачный режим используется в следующих случаях:

  • Если ваша модель содержит один шаг расчета

  • Если ваша модель содержит непрерывное и дискретный шаг расчета, и фиксированный размер шага равен дискретному шагу расчета

Однозадачное выполнение

Этот пример исследует, как простая многоскоростная модель выполняется и в реальное время и в симуляцию, с помощью решателя фиксированного шага. Это рассматривает операцию и в однозадачных и в многозадачных режимах, как определено путем установки параметра Treat each discrete rate as a separate task на панели Solver.

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

Порядок выполнения блоков (обозначенный в верхнем правом углу каждого блока) был обеспечен в порядок, показанный путем присвоения более высоких приоритетов блокам F, E и D. Показанное упорядоченное расположение является одним возможным допустимым упорядоченным расположением выполнения для этой модели. Для получения дополнительной информации смотрите Фазы Симуляции в Динамических системах (Simulink).

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

Примечание

Обсуждение и синхронизирующие схемы в этом разделе основаны на предположении, на котором блоки Перехода Уровня используются в (защищенном) режиме значения по умолчанию с Ensure data integrity during data transfer и опциями Ensure deterministic data transfer (maximum delay).

Этот пример рассматривает выполнение вышеупомянутой модели, когда флажок Treat each discrete rate as a separate task снимается, который указывает на однозадачный режим.

В однозадачной системе, если Configuration Parameters> Optimization> Advanced parameters> опция Block reduction выбрана, быстрые к низкой скорости блоки Перехода оптимизированы из модели. Случай по умолчанию показывают (выбранный Block reduction), таким образом, блок B не появляется в схемах синхронизации в этом разделе. Для получения дополнительной информации смотрите сокращение Блока (Simulink).

Следующая таблица показывает, для каждого блока в модели, порядке выполнения, шаге расчета, и имеет ли блок вычисление вывода или обновления. Блок A не имеет дискретных состояний, и соответственно не имеет вычисления обновления.

Порядок выполнения и шаги расчета (однозадачность)

Блоки
(в порядке выполнения)

'SampleTime'
(в Секундах)

Вывод

Обновление

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®.

Поскольку время моделируется, размещение меток деления представляет итерации цикла симуляции. Блоки выполняются в точно том же порядке как в предыдущей фигуре, но без ограничения час реального времени. Поэтому между моделируемыми демонстрационными периодами нет никакого времени простоя.

Похожие темы