exponenta event banner

systemcomposer.analysis. Случай

Класс, представляющий элемент модели в экземпляре анализа

Описание

Instance представляет экземпляр элемента модели.

Связанные классы включают в себя:

Создание

Создание экземпляра архитектуры.

instance = instantiate(model.Architecture,'LatencyProfile','NewInstance', ...
'Function',@calculateLatency,'Arguments','3','Strict',true, ...
'NormalizeUnits',false,'Direction','PreOrder')

Свойства

развернуть все

Имя экземпляра, указанное как символьный вектор.

Пример: 'NewInstance'

Типы данных: char

Функции объекта

getValueПолучение значения свойства из экземпляра элемента
setValueЗадать значение свойства для экземпляра элемента
hasValueНайти, имеет ли экземпляр элемента значение свойства
isArchitectureНайти, является ли экземпляр экземпляром архитектуры
isComponentНайти, является ли экземпляр экземпляром компонента
isConnectorНайти, является ли экземпляр экземпляром соединителя
isPortНайти, является ли экземпляр экземпляром порта

Примеры

свернуть все

В этом примере показан экземпляр для анализа системы с задержкой в проводке. В качестве материалов используются медь, волокно и WiFi.

Создание профиля задержки со стереотипами и свойствами

Создайте профиль System Composer с основой, соединителем, компонентом и стереотипом порта. При необходимости добавьте свойства со значениями по умолчанию к каждому стереотипу.

profile = systemcomposer.profile.Profile.createProfile('LatencyProfile');

% Add base stereotype with properties
latencybase = profile.addStereotype('LatencyBase');
latencybase.addProperty('latency','Type','double');
latencybase.addProperty('dataRate','Type','double','DefaultValue','10');

% Add connector stereotype with properties
connLatency = profile.addStereotype('ConnectorLatency','Parent',...
'LatencyProfile.LatencyBase');
connLatency.addProperty('secure','Type','boolean','DefaultValue','true');
connLatency.addProperty('linkDistance','Type','double');

% Add component stereotype with properties
nodeLatency = profile.addStereotype('NodeLatency','Parent',...
'LatencyProfile.LatencyBase');
nodeLatency.addProperty('resources','Type','double','DefaultValue','1');

% Add port stereotype with properties
portLatency = profile.addStereotype('PortLatency','Parent',...
'LatencyProfile.LatencyBase');
portLatency.addProperty('queueDepth','Type','double','DefaultValue','4.29');
portLatency.addProperty('dummy','Type','int32');

Создание экземпляра с помощью функции анализа

Создайте новую модель и примените профиль. Создание компонентов, портов и соединений в модели. Применение стереотипов к элементам модели. Наконец, создайте экземпляр с помощью функции анализа.

model = systemcomposer.createModel('archModel',true); % Create new model
arch = model.Architecture;

model.applyProfile('LatencyProfile'); % Apply profile to model

% Create components, ports, and connections
components = addComponent(arch,{'Sensor','Planning','Motion'});
sensorPorts = addPort(components(1).Architecture,{'MotionData','SensorData'},{'in','out'});
planningPorts = addPort(components(2).Architecture,{'SensorData','MotionCommand'},{'in','out'});
motionPorts = addPort(components(3).Architecture,{'MotionCommand','MotionData'},{'in','out'});
c_sensorData = connect(arch,components(1),components(2));
c_motionData = connect(arch,components(3),components(1));
c_motionCommand = connect(arch,components(2),components(3));

% Clean up canvas
Simulink.BlockDiagram.arrangeSystem('archModel'); 

% Batch apply stereotypes to model elements
batchApplyStereotype(arch,'Component','LatencyProfile.NodeLatency');
batchApplyStereotype(arch,'Port','LatencyProfile.PortLatency');
batchApplyStereotype(arch,'Connector','LatencyProfile.ConnectorLatency');

% Instantiate using the analysis function
instance = instantiate(model.Architecture,'LatencyProfile','NewInstance', ...
'Function',@calculateLatency,'Arguments','3','Strict',true, ...
'NormalizeUnits',false,'Direction','PreOrder')
instance = 
  ArchitectureInstance with properties:

        Specification: [1x1 systemcomposer.arch.Architecture]
             IsStrict: 1
       NormalizeUnits: 0
     AnalysisFunction: @calculateLatency
    AnalysisDirection: PreOrder
    AnalysisArguments: '3'
      ImmediateUpdate: 0
           Components: [1x3 systemcomposer.analysis.ComponentInstance]
                Ports: [0x0 systemcomposer.analysis.PortInstance]
           Connectors: [1x3 systemcomposer.analysis.ConnectorInstance]
                 Name: 'NewInstance'

Проверка экземпляров компонентов, портов и соединителей

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

defaultResources = instance.Components(1).getValue('LatencyProfile.NodeLatency.resources')
defaultResources = 1
defaultSecure = instance.Connectors(1).getValue('LatencyProfile.ConnectorLatency.secure')
defaultSecure = logical
   1

defaultQueueDepth = instance.Components(1).Ports(1).getValue('LatencyProfile.PortLatency.queueDepth')
defaultQueueDepth = 4.2900

Очистить

Раскомментируйте следующий код и запустите для очистки артефактов, созданных в этом примере:

% bdclose('archModel')
% systemcomposer.profile.Profile.closeAll

Обзор

В этом примере показано, как моделировать типичную автомобильную электрическую систему как архитектурную модель и выполнять примитивный анализ. Элементы в модели могут быть широко сгруппированы как источник или нагрузка. Различные свойства источников и нагрузок задаются как часть стереотипа. В примере используется iterate метод API спецификации для итерации через каждый элемент модели и выполнения анализа с использованием свойств стереотипа.

Структура модели

Генератор заряжает аккумулятор во время работы двигателя. Батарея вместе с генератором поддерживает электрические нагрузки в транспортном средстве, такие как ECU, радио и управление кузовом. Индуктивные нагрузки, такие как двигатели и другие катушки, имеют InRushCurrent определено свойство стереотипа. На основе свойств, заданных для каждого компонента, выполняются следующие анализы:

  • Общее количество KeyOffLoad.

  • Количество дней, необходимое для KeyOffLoad разрядить 30% батареи.

  • Общее количество CrankingInRush текущее.

  • Общее количество Cranking текущее.

  • Способность аккумуляторной батареи запускать транспортное средство при 0 ° F на основе коэффициентов холодной прокрутки аккумуляторной батареи (ОСО). Время разряда вычисляется на основе коэффициента Пуекерта (k), который описывает зависимость между скоростью разряда и доступной емкостью батареи.

Загрузка модели и выполнение анализа

archModel = systemcomposer.openModel('scExampleAutomotiveElectricalSystemAnalysis');
% Instantiate battery sizing class used by the analysis function to store
% analysis results.
objcomputeBatterySizing = computeBatterySizing;
% Run the analysis using the iterator.
archModel.iterate('Topdown',@computeLoad,objcomputeBatterySizing);
% Display analysis results.
objcomputeBatterySizing.displayResults;
Total KeyOffLoad: 158.708 mA
Number of days required for KeyOffLoad to discharge 30% of battery: 55.789.
Total CrankingInRush current: 70 A
Total Cranking current: 104 A
CCA of the specifed battery is sufficient to start the car at 0 F.

Закрыть модель

bdclose('scExampleAutomotiveElectricalSystemAnalysis');

Подробнее

развернуть все

Представлен в R2019a