Модель архитектуры AUTOSAR предоставляет ресурсы и холст для разработки композиции AUTOSAR и моделей компонента. Вы разрабатываете программную архитектуру с помощью графических пользовательских интерфейсов, эквивалентных функций моделирования архитектуры или обоих. AUTOSAR Blockset обеспечивает функции для этих связанных с архитектурой задач.
Задачи | Функции |
---|---|
Создайте, загрузите, откройте, сохраните или закройте модель архитектуры AUTOSAR | autosar.arch.createModel autosar.arch.loadModel close open save |
Добавляйте, соединяйте или удаляйте компоненты, композицию и порты AUTOSAR | addComponent addComposition addPort connect destroy importFromARXML layout |
Поиск элементов AUTOSAR и изменение свойств | find get set |
Задайте поведение компонента путем создания или связывания Simulink® модели | createModel linkToModel |
Добавьте блоки сервисных компонентов базового программного обеспечения (BSW) для симуляции сервисных вызовов BSW | addBSWService |
Экспортируйте описание композиции и компонента ARXML и сгенерируйте код компонента (требует Embedded Coder ®) | export getXmlOptions setXmlOptions |
Этот пример скрипта:
Создает и открывает модель архитектуры AUTOSAR.
Добавляет композицию и компоненты.
Добавляет архитектуру, композицию и порты компонентов.
Соединяет архитектуру, композицию и порты компонентов.
Создает и связывает модели реализации Simulink для компонентов.
Упорядочивает макет модели архитектуры на основе эвристики.
Устанавливает свойства компонента и порта.
Удаление компонента.
Поиск элементов на разных уровнях иерархии модели архитектуры.
Перечисляет значения свойств для портов состава.
Чтобы запустить скрипт, скопируйте команды из MATLAB® перечисление скриптов ниже в командном окне MATLAB.
Также можно скопировать файл скрипта configAutosarArchModel.m
в рабочую папку и запустите файл. Чтобы скопировать скрипт в рабочую папку, введите эту команду MATLAB:
copyfile(fullfile(matlabroot,'help/toolbox/autosar/examples/configAutosarArchModel.m'),'.')
% configAutosarArchModel.m % % Configure AUTOSAR architecture model. % This script creates models Controller1.slx and Actuator.slx. % To rerun the script, remove the models from the working folder. % Create and open AUTOSAR architecture model modelName = 'myArchModel'; archModel = autosar.arch.createModel(modelName); % Add a composition composition = addComposition(archModel,'Sensors'); % Add 2 components inside Sensors composition names = {'PedalSnsr','ThrottleSnsr'}; sensorSWCs = addComponent(composition,names,'Kind','SensorActuator'); layout(composition); % Auto-arrange composition layout % Add components at architecture model top level (call layout to arrange blocks) addComponent(archModel,'Controller1'); actuator = addComponent(archModel,'Actuator'); set(actuator,'Kind','SensorActuator'); % Add architecture ports addPort(archModel,'Receiver',{'TPS_Hw','APP_Hw'}); addPort(archModel,'Sender','ThrCmd_Hw'); % Add composition ports addPort(composition,'Receiver',{'TPS_Hw','APP_Hw'}); addPort(composition,'Sender',{'TPS_Perc','APP_Perc'}); % Add component ports controller = find(archModel,'Component','Name','Controller1'); addPort(controller,'Receiver',{'TPS_Perc','APP_Perc'}); addPort(controller,'Sender','ThrCmd_Perc'); addPort(actuator,'Receiver','ThrCmd_Perc'); addPort(actuator,'Sender','ThrCmd_Hw'); % At top level, connect composition and components based on matching port names connect(archModel,composition,controller); connect(archModel,controller,actuator); % Connect specified arch root ports to specified composition and component ports connect(archModel,archModel.Ports(1),composition.Ports(1)); % Use find to construct port specifications connect(archModel,... find(archModel,'Port','Name','APP_Hw'),... find(composition,'Port','Name','APP_Hw')); connect(archModel,actuator.Ports(2),archModel.Ports(3)); % ALTERNATIVELY, connect architecture root ports based on matching port names % connect(archModel,[],composition); % connect(archModel,actuator,[]); % Create implementation models for controller and actuator components createModel(controller); createModel(actuator); % Link implementation model to PedalSnsr component inside Sensors pedalSnsr = find(composition,'Component','Name','PedalSnsr'); % Add path to implementation model addpath(fullfile(matlabroot,'/examples/autosarblockset/main')); linkToModel(pedalSnsr,'autosar_tpc_pedal_sensor'); layout(archModel); % Auto-arrange layout % Set properties set(composition.Ports(1),'Name','NewPortName1'); % Names for Sensors composition ports set(composition.Ports(3),'Name','NewPortName2'); set(find(controller,'Port','Name','TPS_Perc'),... 'Name','NewPortName3'); % Port name for Controller1 component & implementation set(controller,'Kind','ServiceProxy'); % Component type for Controller1 component set(controller,'Name','Instance1'); % Name for Controller1 component % Destroy component ThrottleSensor inside Sensors throttleSnsr = find(composition,'Component','Name','ThrottleSnsr'); destroy(throttleSnsr); % Find components in architecture model top level only components_in_arch_top_level = find(archModel,'Component') % Find components in all hierarchy components_in_all_hierarchy = find(archModel,'Component','AllLevels',true) % Find ports for composition block only composition_ports = find(composition,'Port') % List Kind and Name property values for composition ports for ii=1:length(composition_ports) Port = composition_ports(ii); portName = get(Port,'Name'); portKind = get(Port,'Kind'); fprintf('%s port %s\n',portKind,portName); end
components_in_arch_top_level = 2×1 Component array with properties: Name Kind Ports ReferenceName Parent SimulinkHandle components_in_all_hierarchy = 3×1 Component array with properties: Name Kind Ports ReferenceName Parent SimulinkHandle composition_ports = 4×1 CompPort array with properties: Kind Connected Name Parent SimulinkHandle Receiver port NewPortName1 Receiver port APP_Hw Sender port NewPortName2 Sender port APP_Perc
Diagnostic Service Component | NVRAM Service Component | Software Component | Software Composition