exponenta event banner

Задачи, управляемые событиями

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

Создание модели Simulink с заданием, управляемым событиями

В этом примере показано, как создать и настроить модель Simulink ® для использования функции задач SoC Blockset, управляемых событиями.

Создание ссылочной модели программного обеспечения

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

  1. Создайте новую пустую модель.

  2. В редакторе Simulink добавьте в модель блок Function-Call Subsystem. Подключите блок Inport к входному порту блока Function-Call Subsystem. Подключите выходной порт к блоку терминатора.

  3. Добавьте в модель блок «Спецификация асинхронной задачи». В диалоговом окне «Параметры блока» задайте приоритет задачи равным 41.

  4. Подключите выходной порт блока спецификации асинхронной задачи к входу функции () блока подсистемы вызова функции.

  5. Добавьте блок ввода и откройте диалоговое окно «Параметры блока». На закладке Signal Attributes выберите Output function call. Подключите блок Inport к входному порту блока Asynchronous Task Specification.

  6. Откройте модель подсистемы Function-Call.

  7. Добавьте в модель блок чтения UDP. Откройте диалоговое окно «Параметры блока» и установите для параметра «Максимальная длина данных» (элементы) значение 1024 и установите флажок Включить выполнение на основе событий.

  8. Подключите блок ввода к порту UDP-данных блока чтения UDP. Подключите порт данных к блоку исходящего порта. Подключите порт Length к блоку терминатора.

  9. Откройте диалоговое окно Параметры конфигурации (Configuration Parameters) и выберите панель Решатель (Solver). Задать выбор решателя > Тип как Fixed-step и установите флажок Tasking and sample timer options > Higher priority value указывает на более высокий приоритет задачи.

  10. Выберите панель «Hardware Implementation» (Внедрение оборудования) и установите для параметра «Hardware board» значение Zedboard.

  11. Сохранить модель как soc_task_createeventdriventask_software.slx.

Завершенная модель должна выглядеть аналогично следующей модели.

Создание модели приложения SoC

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

  1. Создайте новую пустую модель.

  2. В редакторе Simulink добавьте блок «Модель». В диалоговом окне «Параметры блока» задайте для параметра «Имя модели» значение soc_task_createeventdriventask_software.slx.

  3. Добавьте блок диспетчера задач и откройте диалоговое окно «Параметры блока». Установите в поле Main (Главное) > Type (Тип) значение Event-driven и Main > Приоритет для 41. Каждая вновь добавленная управляемая событиями задача предоставляет входной порт сообщения о событии в блоке диспетчера задач.

  4. (Необязательно) На вкладке Моделирование (Simulation) указывается длительность задачи для этой задачи. Дополнительные сведения о задании длительности задачи см. в разделе Длительность задачи.

  5. В редакторе добавьте в модель блок источника данных ввода-вывода. Откройте диалоговое окно «Параметры блока» и включите параметр «Показать порт события».

  6. Подключите порт события блока источника данных ввода-вывода к диспетчеру задач, а порт данных UDP - к порту сообщения данных UDP в ссылочном блоке модели.

  7. Откройте диалоговое окно Параметры конфигурации (Configuration Parameters) и выберите панель Решатель (Solver). Задать выбор решателя > Тип как Fixed-step и установите флажок Tasking and sample timer options > Higher priority value указывает на более высокий приоритет задачи.

  8. Выберите панель «Hardware Implementation» (Внедрение оборудования) и установите для параметра «Hardware board» значение Zedboard.

  9. Обновите схему, нажмите Ctrl + D.

  10. Сохранить модель как soc_task_createeventdriventask_application.slx.

Завершенная модель должна выглядеть аналогично следующей модели.

Запуск модели с заданием, управляемым событиями

В редакторе Simulink выполните команду soc_task_createeventdriventask_application.slx модель. По завершении выполнения откройте инспектор данных моделирования и выберите Task1. Инспектор данных моделирования показывает, что Task1 запускает и выполняет каждый раз при поступлении нового пакета UDP. Хотя на поверхностном уровне выполнение задачи выглядит периодическим, это только побочный продукт текущих настроек по умолчанию блока источника данных ввода-вывода, который генерирует событие с шагом времени 0.1.

См. также

|

Связанные темы