Продукт Simulink® не симулирует асинхронное поведение задачи. Несмотря на то, что можно задать приоритет задач для асинхронной задачи, представленной в модели с блоком Task Sync, приоритетная установка в целях генерации кода только и не соблюдается в процессе моделирования.
Можно использовать блок the Asynchronous Task Specification, чтобы задать асинхронный вход вызова функции к модели - ссылке. Однако необходимо преобразовать Асинхронные блоки Прерывания и Вызова функции в подсистему и затем преобразовать подсистему в модель - ссылку.
Следующее является примером с постепенными инструкциями для преобразования.
Преобразуйте Асинхронное Прерывание и блоки количества в подсистему. Выберите оба блока и щелкните правой кнопкой по Count. В меню выберите Subsystem & Model Reference> Create Subsystem from Selection.
Чтобы подготовиться к преобразованию новой подсистемы к блоку Model, установите следующие параметры конфигурации в топ-модели. Откройте диалоговое окно Configuration Parameters.
Под Диагностикой перейдите к панели Шага расчета. Затем установите параметр конфигурации модели Multitask rate transition на error
и Multitask conditionally executed subsystem к error
.
Под Diagnostics перейдите к панели Connectivity. Установите параметры Bus signal treated as vector и Invalid function-call connection к error
. Также установите Context-dependent inputs на Enable All
.
Под Diagnostics перейдите к панели Data Validity и установите параметр Multitask data store на error
.
Установите параметр конфигурации модели Underspecified initialization detection на Simplified
.
Если ваша модель является большой или комплексной, запуститесь, Model Advisor регистрируется в папке Migrating to Simplified Initialization Mode Overview (Simulink), и внесите предложенные изменения.
Преобразуйте подсистему в атомарную подсистему. Выберите параметры блоков подсистемы Treat as atomic unit.
Преобразуйте подсистему в блок Model. Щелкните правой кнопкой по подсистеме и выберите Subsystem & Model Reference> Convert Subsystem to> Referenced Model. Окно открывается блоком модели - ссылки в нем.
Замените подсистему в топ-модели с новым блоком модели - ссылки.
Переместите блок Async Interrupt от модели - ссылки до топ-модели перед блоком модели - ссылки.
Вставьте блок Asynchronous Task Specification в модель - ссылку. Установите приоритет блока Asynchronous Task Specification. (Для получения дополнительной информации об установке приоритета смотрите Асинхронную Спецификацию Задачи.)
В модели - ссылке дважды кликните входной порт, чтобы открыть его диалоговое окно Source Block Parameters. Во вкладке Signal Attributes выберите параметр Output function call. Нажмите OK.
Сохраните свою модель и затем обновите схему, чтобы проверить ваши настройки.