Программная конфигурация модели архитектуры 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

См. также

| | |

Похожие темы