Запустите код дочерней подсистемы вызова функций или диаграммы 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
библиотека (Async Interrupt и Task Sync) для симуляции и генерации кода. Эти блоки предоставляют примеры начальной точки, которые помогают вам разрабатывать пользовательские блоки для вашего целевого окружения.