exponenta event banner

Программная настройка архитектурной модели AUTOSAR

Архитектурная модель AUTOSAR предоставляет ресурсы и холст для разработки композиционных и компонентных моделей AUTOSAR. Архитектура программного обеспечения разрабатывается с использованием графических пользовательских интерфейсов, эквивалентных функций моделирования архитектуры или обоих. AUTOSAR Blockset предоставляет функции для этих задач, связанных с архитектурой.

ЗадачиФункции
Создание, загрузка, открытие, сохранение или закрытие архитектурной модели AUTOSARautosar.arch.createModel
autosar.arch.loadModel
close
open
save
Добавление, подключение или удаление компонентов, состава и портов AUTOSARaddComponent
addComposition
addPort
connect
destroy
importFromARXML
layout
Поиск элементов AUTOSAR и изменение свойствfind
get
set
Определение поведения компонентов путем создания или связывания моделей Simulink ®createModel
linkToModel
Добавление блоков сервисных компонентов базового программного обеспечения (BSW) для моделирования сервисных вызовов BSWaddBSWService
Экспорт описания состава и компонента ARXML и создание кода компонента (требуется Embedded Coder ®)export
getXmlOptions
setXmlOptions

Этот пример сценария:

  1. Создание и открытие модели архитектуры AUTOSAR.

  2. Добавление композиции и компонентов.

  3. Добавляет архитектуру, состав и порты компонентов.

  4. Соединяет архитектуру, композицию и порты компонентов.

  5. Создает и связывает модели реализации Simulink для компонентов.

  6. Компоновка модели архитектуры на основе эвристики.

  7. Задает свойства компонента и порта.

  8. Удаление компонента.

  9. Поиск элементов на различных уровнях иерархии архитектурных моделей.

  10. Список значений свойств для портов компоновки.

Чтобы запустить сценарий, скопируйте команды из списка сценариев 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

См. также

| | |

Связанные темы