Запустите код нисходящей подсистемы вызова функций или диаграммы Stateflow путем порождения примера RTOS (VxWorks) задача
Simulink Coder / Асинхронный / Шаблоны Прерывания
Блок Task Sync порождает пример RTOS (VxWorks) задача, которая вызывает график Stateflow® или подсистема вызова функций. Как правило, вы помещаете блок Task Sync между блоком Async Interrupt и блоком подсистемы вызова функций или диаграммой Stateflow. В качестве альтернативы вы могли соединить блок Task Sync с выходным портом схемы Stateflow, которая имеет событие, Output to Simulink
, сконфигурированный как вызов функции.
Блок Task Sync:
Использует RTOS (VxWorks) системный вызов taskSpawn
порождать независимую задачу. Когда задача активируется, она вызывает нисходящий код подсистемы вызова функций или диаграмму Stateflow. Блок вызывает taskDelete
удалить задачу во время завершения модели.
Создает семафор, чтобы синхронизировать связанную подсистему с выполнением блока.
Переносит порожденную задачу в бесконечный for
цикл. В цикле порожденная задача прислушивается к семафору при помощи semTake
. Первый вызов semTake
задает NO_WAIT
. Эта установка позволяет задаче определить ли второй semGive
произошел перед завершением подсистемы вызова функций или графика. Эта последовательность указывает, что уровень прерывания слишком быстр, или приоритет задач является слишком низким.
Генерирует код синхронизации (например, semGive()
). Этот код позволяет порожденной запущенной задаче. Задача в свою очередь вызывает связанный код подсистемы вызова функций. Код синхронизации может запуститься на уровне прерывания. Связь между Async Interrupt и блоками Task Sync выполняет эту операцию и инициировала выполнение блока Task Sync в ISR.
Абсолютное время предоставлений, если блоки в нисходящем алгоритмическом коде требуют его. Время настает от таймера, обеспеченного блоком Async Interrupt, или прибывает из независимого таймера, обеспеченного задачей, сопоставленной с блоком Task Sync.
Когда вы проектируете свое приложение, рассматриваете, когда таймер и сигнализирует, что входные значения могли быть взяты для нисходящей подсистемы вызова функций, которая соединяется с блоком Task Sync. По умолчанию время и входные данные читаются, когда RTOS (VxWorks) активирует задачу. Для этого случая данные (вход и время) синхронизируются с самой задачей. Если вы выбираете опцию Synchronize the data transfer of this task with the caller task, и драйвер блока Task Sync является блоком Async Interrupt, время и входные данные читаются, когда прерывание происходит (то есть, в ISR). Для этого случая данные синхронизируются с вызывающей стороной блока Task Sync.
Можно использовать блоки в vxlib1
Библиотека (Simulink Coder) (Async Interrupt и Task Sync) для симуляции и генерации кода. Эти блоки обеспечивают примеры начальной точки, чтобы помочь вам разработать пользовательские блоки для своего целевого окружения.