Сконфигурируйте программно модель архитектуры AUTOSAR

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

ЗадачиФункции
Создайте, загрузите, откройте, сохраните или закройте модель архитектуры AUTOSARautosar.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) сервисные блоки компонента для симуляции сервисных вызовов BSWaddBSWService
Экспортируйте состав и описания ARXML компонента и сгенерируйте код компонента (требует Embedded Coder®),export
getXmlOptions
setXmlOptions

Этот скрипт в качестве примера:

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

  2. Добавляют состав и компоненты.

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

  4. Архитектура подключений, состав и порты компонента.

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

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

  7. Свойства компонентов наборов и свойства портов.

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

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

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

Чтобы запустить скрипт, скопируйте команды от этого кода MATLAB® до окна команды MATLAB, или скопировать файл configAutosarArchModel.m от matlabroot/help/toolbox/autosar/examples (cd к папке) к рабочей папке.

% 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

Смотрите также

| | |

Похожие темы