В этом примере показано, как моделировать планирование задач управляющего приложения с использованием блоков SimEvents. SimEvents расширяет Simulink с возможностью моделирования и моделирования архитектурных компонентов системы реального времени.
Верхняя модель включает две области блоков:
Функциональные компоненты включают в себя две замкнутые системы. Каждый из них имеет пропорциональный контроллер, работающий на установке.
Архитектурные компоненты включают блоки SimEvents, моделирующие задачи и планировщик этой системы управления.

В этом примере контроллер моделируется как экспортированная функциональная модель Simulink. Он отображает выполнение контроллера на задачу программного обеспечения, которую операционная система периодически планирует и выполняет. Задача может быть разделена на несколько сегментов (или подзадач). Из-за зависимостей данных эти сегменты должны выполняться в последовательном порядке.
Задана задача со следующими параметрами:
ID: уникальный идентификатор задачи.
Период: как часто создается экземпляр задачи для выполнения.
Приоритет: приоритет задачи (меньшее значение указывает на более высокий приоритет).
Список запускаемых сегментов (функций): исполняемые файлы, связанные с каждым сегментом задачи. Эти исполняемые файлы представлены функциями Simulink экспортируемой модели функций.
Продолжительность выполнения сегмента: время завершения сегмента задачи, если он выполняется на процессоре без прерывания.
Требуется дисковый ресурс ввода-вывода для каждого сегмента: требует ли сегмент задачи использования защищенного от мьютекса общего ресурса (жесткого диска).
Например, блок Задача 2 определяет задачу для второго контроллера (блок Контроллер 2). Задача включает в себя два сегмента, «t2_run» и «t2_write,», оба смоделированные как функции Simulink в модели seSwcController2. В этих сегментах «t2_write» требует использования защищенного мьютексом общего ресурса.
Планировщик операционной системы моделируется со следующими компонентами:
Создание задачи: Блокировать задачу 1 и задачу 2 создавать задачи и управлять состояниями задач. Сущность SimEvents представляет экземпляр задачи. Свойства задачи (например, ее приоритет) моделируются как атрибуты сущности.
Очередь задач: После создания экземпляра задача присоединяется к очереди готовых задач, которая моделируется очередью задач OS блока очереди сущностей. Чтобы смоделировать политику планирования, основанную на непревзойденном приоритете, блок очереди настраивается для сортировки задач по атрибуту taskPriority.
CPU: Процессор системы моделируется как центральный процессор блока сервера сущностей. Он принимает объекты из очереди задач ОС и обрабатывает объект в течение длительности, указанной параметром продолжительности выполнения сегмента задачи. В конце этой задержки вызывается соответствующая функция Simulink этого сегмента задачи, как часть действия блока Service complete.
Lock/unlock Mutex: Прежде чем сегмент задачи войдет в блок CPU, он должен получить требуемый ресурс в предыдущем блоке Lock Mutex. После завершения сегмента задачи и выхода из блока CPU ресурс освобождается в блоке разблокировки Mutex.
Управление состояниями задачи: Блоки под маской Задачи 1 и Задачи 2 управляют состоянием выполнения задач. По завершении сегмента задачи, если задача имеет последующие сегменты для выполнения, задача направляется обратно в очередь задач OS. В противном случае этот экземпляр задачи будет завершен и удален.
Блок CPU конфигурируется с двумя ядрами. При моделировании модели создается следующая диаграмма Ганта.
Задача более высокого приоритета, Задача 2 (красные полосы), запланирована на ядро 1 (y = 1).
Задача с более низким приоритетом, Задача 1 (синие полосы), запланирована на ядро 2 (y = 2).
Во втором сегменте задачи 2 используется мьютекс DiskLock. Зеленые полосы указывают на использование (y = 3).

Измените следующие параметры и узнайте, как изменяется расписание задач и производительность контроллера с помощью переконфигурированных архитектурных параметров.
В блоке CPU настройте параметр Capacity для изменения количества ядер.
В блоках Задача 1 и Задача 2 настройте такие параметры, как Период и Приоритет, для изменения спецификаций задачи.
Например, если изменить значение параметра Need disk i/o resource для каждого сегмента блока Task 1 на [0 0 1], t1_write сегмент контроллера 1 должен получить значение mutex DiskLock, прежде чем он начнет работать. При моделировании создается диаграмма Ганта, иллюстрирующая это изменение.
Обе задачи имеют сегменты, использующие mutex DiskLock, как показано зелеными полосами (y = 3).
Третий сегмент задачи 1 теперь должен выполняться последовательно со вторым сегментом задачи 2 (см. y = 1), так как оба сегмента совместно используют мьютекс DiskLock.

Генератор объектов | Сервер сущностей | Очередь | Приобретатель ресурсов | Пул ресурсов | Средство освобождения ресурсов