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

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

ЗадачиФункции
Создайте, загрузите, откройте, сохраните или закройте модель архитектуры AUTOSARautosar.arch.createModel
autosar.arch.loadModel
close
open
save
Добавьте, соедините или удалите компоненты AUTOSAR, состав и портыaddComponent
addComposition
addPort
connect
destroy
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,true);

% Add a composition
composition = addComposition(archModel,'Sensors');

% Add 2 components inside Sensors
names = {'PedalSnsr','ThrottleSnsr'};
sensorSWCs = addComponent(composition,names,'Kind','SensorActuator');
layout(composition);  % Auto-arrange 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');

% Connect composition and components based on matching port names
connect(archModel,composition,controller);
connect(archModel,controller,actuator);

% Connect specified architecture ports to specified composition and component ports
connect(archModel,archModel.Ports(1),composition.Ports(1));
% Instead of connect(archModel,archModel.Ports(2),composition.Ports(2)), use find
connect(archModel,...
    find(archModel,'Port','Name','APP_Hw'),...
    find(composition,'Port','Name','APP_Hw'));
connect(archModel,actuator.Ports(2),archModel.Ports(3));

% Create implementation models for controller and actuator
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

ports_in_composition = 
  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

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

| | |

Похожие темы