systemcomposer.analysis.Instance

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

Описание

The 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 на основе холодных прокруточных усилителей (CCA). Время разряда вычисляется на основе коэффициента Пуэкерта (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