Используйте несколько блоков Function-Call Generator с различными шагами расчета и пусть Simulink® планируйте компоненты вызова функции для симуляции. Эта стратегия полезна, когда поведение планирования скорость-монотонное в Simulink подобно поведению целевой ОС.
Создайте новую модель Simulink.
Добавьте блок Model, который ссылается на модель export-function.
Задайте события вызова функции, используя блоки 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 должны следовать порядку выполнения блоков function-call корневого уровня в Inport модели export-function. Function-Call Generator блоки с меньшими шагами расчета выполняйте сначала.
Если экспериментальная модель вызывает функции модели-ссылки вне порядка в любой временной шаг, Simulink отображает ошибку. Для получения информации о отсортированном поручении на выполнение смотрите Управление и Отображение порядка выполнения. Чтобы отключить это ограничение, снимите флажок для параметр конфигурации <reservedrangesplaceholder0>.
Можно использовать блок Mux, чтобы соединить сигналы из блоков Function-Call Generator с различными шагами расчета, прежде чем соединять их с ссылочной моделью export-function. В диалоговом окне Параметры конфигурации снимите флажок для Treat each discrete rate as a separate task параметра.
Для модели экспорта функций:
Для блоков шагов расчета вызова функции корневого уровня должно быть задано Inport наследование (-1
) или соответствовать шагу расчета блоков Function-Call Generator, которые управляют ими.
Симулируйте модель экспорта функций, чтобы протестировать и наблюдать ее поведение перед генерацией кода.
Примечание
Simulink не моделирует прерывание вызовов функций.
Установите параметры конфигурации для экспериментальной модели. На вкладке Modeling и из раздела Setup выберите Model Settings. Выберите панель Модели ссылок. Снимите флажок для параметр конфигурации <reservedrangesplaceholder0>.
Проверьте, что для параметров конфигурации Solver Type задано значение Fixed-step
, Решатель установлено в discrete (no continuous states)
, и Фиксированный размер шага (основной шаг расчета), установленный на auto
.
Настройте протоколирование сигналов. Щелкните правой кнопкой мыши выходные сигналы порта и выберите Log selected signal.
Запустите симуляцию.
Откройте Simulation Data Inspector, щелкнув значок на панели инструментов.
После тестирования модели можно сгенерировать код для функций. См. «Генерация кода для модели экспорта функций».