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

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

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

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

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

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

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

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

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

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

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

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

Модель в качестве примера показывают в следующей фигуре. Обсуждение относится к шести блокам модели как через 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 очищен, который указывает на однозадачный режим.

В однозадачной системе, если вы выбираете параметр конфигурации модели 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®.

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

Похожие темы