Используйте несколько блоков Function-Call Generator с отличными шагами расчета и позвольте Simulink® запланируйте компоненты вызова функции для симуляции. Эта стратегия полезна, когда пропорциональное числу обращений поведение планирования в Simulink похоже на целевое поведение ОС.
Создайте новую модель Simulink.
Добавьте блок Model, который ссылается на модель экспорта функций.
Задайте события вызова функции с помощью блоков Function-Call Generator.
Задайте вводы данных.
Запустите симуляцию.
Чтобы создать модель для этого примера, смотрите, Создают Модель Экспорта функций.
Чтобы открыть завершенную тестовую модель, смотрите ex_export_function_test_model_with_function_call_generators
.
Ссылка на модель экспорта функций от блока Model позволяет сложение событий вызова функции и логгирование сигналов данных для тестирования, не изменяя саму модель.
Добавьте блок Model в новую модель Simulink. В поле Model name введите export_function_model
.
Добавьте блоки Outport в порты output_100ms и output_10ms на блоке Model.
Добавьте блок Sine Wave, чтобы обеспечить ввод данных. Установите Amplitude на 2
и Sample time к 0.01
. Соедините блок с входным портом input_10ms на блоке Model.
Вы используете тестовую модель Simulink только для симуляции. После тестирования симуляции сгенерируйте код из модели экспорта функций, и затем интегрируйте экспортируемый функциональный код с внешне закодированным планировщиком.
Добавьте блок Function-Call Generator. Установите Sample time на 0.1
. Соедините блок с входным портом function_call_100ms.
Добавьте второй блок Function-Call Generator. Установите Sample time на 0.01
. Соедините блок с входным портом function_call_10ms.
Если тестовая модель ссылается на модель экспорта функций, существуют некоторые ограничения, чтобы гарантировать непротиворечивость результатами симуляции.
Для тестовой модели:
Вы не можете использовать два блока Function-Call Generator с тем же шагом расчета.
Вызовы функции к входным портам на блоке Model должны следовать за порядком выполнения вызова функции корневого уровня блоки Inport в модели экспорта функций, на которую ссылаются. блоки Function-Call Generator с меньшими шагами расчета выполняются сначала.
Если тестовая модель вызывает функции модели, на которые ссылаются, не в порядке в любое время продвигаются, Simulink отображает ошибку. Для получения информации об отсортированном порядке выполнения смотрите Порядок выполнения Управления и Отображения. Чтобы отключить это ограничение, снимите флажок для параметра конфигурации Enable strict scheduling checks for referenced model.
Можно использовать блок Mux, чтобы соединить сигналы от блоков Function-Call Generator с различными шагами расчета прежде, чем соединить их с моделью экспорта функций, на которую ссылаются. В диалоговом окне Configuration Parameters снимите флажок для параметра Treat each discrete rate as a separate task.
Для модели экспорта функций:
Шаги расчета для вызова функции корневого уровня блоки Inport должны быть установлены в наследованный (-1
) или совпадайте с шагом расчета блоков Function-Call Generator, которые управляют ими.
Симулируйте модель экспорта функций, чтобы протестировать и наблюдать ее поведение прежде, чем сгенерировать код.
Примечание
Simulink не симулирует вызовы функции вытеснения.
Установите параметры конфигурации для тестовой модели. На вкладке Modeling и от раздела Setup, выберите Model Settings . Выберите Модель, Ссылающуюся на панель. Снимите флажок для параметра конфигурации Enable strict scheduling check for referenced models.
Проверьте, что параметры конфигурации для Типа Решателя установлены в Fixed-step
, Набор решателя к discrete (no continuous states)
, и размер Фиксированного шага (основной шаг расчета) набор к auto
.
Настройте логгирование сигналов. Щелкните правой кнопкой по сигналам выходного порта и выберите Log selected signal.
Запустите симуляцию.
Откройте Инспектора Данных моделирования путем нажатия на значок панели инструментов.
После того, как вы протестируете свою модель, можно сгенерировать код для функций. Смотрите Генерируют Код для Модели Экспорта функций.