В этом примере показано, как создать многокомпонентную модель программной архитектуры с основанным на уровне и экспортом функций компоненты, как симулировать ваш проект на уровне архитектуры, и как сгенерировать код.
Эта модель программной архитектуры имеет два компонента программного обеспечения: Export_Function
и Rate_Based
.
open_system('RateBasedExportFunctionSoftwareArchitectureModel')
В модели программной архитектуры, Export_Function
компонент соединяется с моделью поведения экспорта функций Simulink®, export_model_software_architecture
.
В этом поведении Simulink две функции моделируются с помощью блоков Подсистемы вызова функций. Блоки импорта соединяются с входными портами вызова функции и генерируют периодические события вызова функции с шагами расчета 10ms
и 100ms
. Чтобы изучить, как смоделировать это поведение, смотрите, Создают Модель Экспорта функций.
Если блоки импорта, которые соединяются с входными портами вызова функции с шагом расчета, заданным как-1, означая функции, являются апериодическими, используйте тестовую модель Simulink с явными блоками планирования, такими как диаграмма Stateflow, чтобы симулировать. Для получения дополнительной информации смотрите Тестовую Программную архитектуру.
Компонент Rate_Based соединяется с rate_based_model_software_architecture
как модель поведения Simulink. Чтобы изучить, как создать эту основанную на уровне модель, смотрите, Создают Основанную на уровне Модель.
Симулируйте модель. Заметьте, что Инспектор Данных моделирования отображает вывод от Основанного на уровне компонента.
Используйте Редактор Функций, чтобы отредактировать порядок выполнения симуляции функций в вашей программной архитектуре. Можно также отредактировать шаг расчета функций с наследованным шагом расчета (-1
).
Редактор Функций отображается только, когда вы моделируете программные архитектуры. Чтобы открыть Редактор Функций, в панели инструментов на вкладке Modeling, выбирают Functions Editor.
Отредактировать функции в вашей программной архитектуре:
Откройте Редактор Функций. Когда вы откроете Редактор Функций, модель автоматически обновится, и таблица покажет функции, заполненные из вашей модели.
Если существуют изменения в модели программной архитектуры, кнопка Update Model становится желтой, чтобы сигнализировать, что обновление требуется, чтобы обновлять вашу таблицу функций.
Чтобы расположить порядок выполнения функций, используйте стрелки вверх и вниз или перетащите мышью функции, чтобы отсортировать их.
Чтобы отредактировать шаги расчета функций, задайте их период в таблице.
Чтобы заказать функции на основе их зависимостей по данным, выберите функции Порядка флажком зависимости. Чтобы позволить сортировать функций на основе зависимостей, можно установить этот параметр: set_param('RateBasedExportFunctionSoftwareArchitectureModel','
OrderFunctionsByDependency','on')
. Значением по умолчанию для параметра является off
.
В качестве альтернативы можно использовать systemcomposer.arch.Function
объект получить функции программно.
Можно протестировать модель программной архитектуры и симулировать различные порядки выполнения функций путем ссылки на нее от блока Model в тестовой модели Simulink с явными блоками планирования, такими как График Stateflow® (Stateflow).
В этом примере блок Model, который ссылается на модель программной архитектуры, имеет входной порт вызова функции для каждой функции в модели архитектуры.
Чтобы симулировать модель архитектуры с диаграммой Stateflow периодический планировщик, соедините вызов функции диаграммы Stateflow выходные параметры с входными параметрами вызова функции блока Model.
Можно сгенерировать код из модели программной архитектуры для функций экспорта функций и основанных на уровне компонентов.
Чтобы сгенерировать код, от вкладки Apps, выбирают Embedded Coder. На вкладке C Code выберите Generate Code. Сгенерированный код содержит точку входа для каждой функции компонента. Для получения дополнительной информации смотрите, Генерируют Код для Модели Экспорта функций.
Для компонента экспорта функций это сгенерировало две функции, которые соответствуют блокам импорта вызова функции в модели экспорта функций, на которую ссылаются.
Заметьте, что, каждый основанный на уровне компонент имеет отдельные функции точки входа, которые соответствуют каждому шагу расчета в основанной на уровне модели, на которую ссылаются.
systemcomposer.createModel
| createArchitectureModel
| createSimulinkBehavior
| increaseExecutionOrder
| decreaseExecutionOrder