find

Поиск элементов архитектуры AUTOSAR

Описание

пример

archElements = find(archCCM,category) выполняет поиск по модели компонента, композиции или архитектуры AUTOSAR archCCM для элементов архитектуры, которые соответствуют указанной категории. The archElements выходной аргумент возвращает указатели для найденных элементов архитектуры. Допустимые значения для category являются Component, Composition, Port, или Connector. The archCCM аргумент является указателем на компонент, композицию или модель архитектуры, возвращенным предыдущим вызовом в addComponent, addComposition, autosar.arch.createModel, или autosar.arch.loadModel. Область возможностей по умолчанию find - верхний уровень указанной модели композиции или архитектуры, а не всех уровней иерархии модели.

archElements = find(archCCM,category,'AllLevels',value) позволяет расширить поиск элементов архитектуры AUTOSAR на все уровни иерархии модели композиции или архитектуры AUTOSAR. Чтобы искать по всем уровням, задайте value как true.

archElements = find(archCCM,category,property,value) задает ограничивающее значение для свойства заданной категории элементов, сужая поиск.

Примеры

свернуть все

В модели архитектуры AUTOSAR myArchModel:

  • Найти компоненты, которые расположены только на верхнем уровне модели архитектуры.

  • Найти компоненты, расположенные на всех уровнях иерархии модели.

  • Найдите композицию блока порты и перечислите их Kind и Name значения.

% Create 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 layout

% Add components at architecture model top level
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));

layout(archModel);  % Auto-arrange layout

% 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 = 
  4×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 TPS_Hw
Receiver port APP_Hw
Sender port TPS_Perc
Sender port APP_Perc

Входные параметры

свернуть все

Компонент, композиция или модель архитектуры AUTOSAR, в которой можно искать указанные элементы архитектуры. Аргумент является указателем на компонент, композицию или модель архитектуры, возвращенным предыдущим вызовом addComponent, addComposition, autosar.arch.createModel, или autosar.arch.loadModel.

Пример: archModel

Тип найденного элемента архитектуры AUTOSAR. Допустимые категории Component, Composition, Port, или Connector.

Пример: 'Component'

Задайте true поиск всех уровней композиции или архитектуры AUTOSAR иерархии модели для заданных элементов архитектуры. Область возможностей по умолчанию find - верхний уровень указанной модели композиции или архитектуры, а не всех уровней иерархии модели.

Пример: 'AllLevels',true

Допустимое свойство указанной категории элементов архитектуры и значение, соответствующее этому свойству в поиске.

Пример: 'Name','APP_Hw'

Выходные аргументы

свернуть все

Возвращает один или несколько указателей для найденных элементов архитектуры.

Введенный в R2020a