Модель архитектуры 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 |
Добавьте Basic Software (BSW) сервисные блоки компонента для симуляции сервисных вызовов BSW | addBSWService |
Экспортируйте состав и описания ARXML компонента и сгенерируйте код компонента (требует Embedded Coder®), | export getXmlOptions setXmlOptions |
Этот скрипт в качестве примера:
Создает и открывает модель архитектуры AUTOSAR.
Добавляют состав и компоненты.
Добавляют архитектура, состав и порты компонента.
Архитектура подключений, состав и порты компонента.
Создает и соединяет модели реализации Simulink для компонентов.
Макет модели архитектуры расположений на основе эвристики.
Свойства компонентов наборов и свойства портов.
Удаляет компонент.
Поиски элементов на разных уровнях иерархии модели архитектуры.
Значения свойств списков для портов состава.
Чтобы запустить скрипт, скопируйте команды от этого кода MATLAB® до окна команды MATLAB, или скопировать файл configAutosarArchModel.m
от
(matlabroot
/help/toolbox/autosar/examplescd
к папке) к рабочей папке.
% 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