exponenta event banner

systemcomposer.analysis. ArchitectureInstance

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

    Описание

    ArchitectureInstance представляет экземпляр архитектуры.

    Создание

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

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

    Свойства

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

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

    Пример: 'NewInstance'

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

    Дочерние компоненты экземпляра, указанные как массив systemcomposer.analysis.ComponentInstance объекты.

    Порты экземпляра архитектуры, указанные как массив systemcomposer.analysis.PortInstance объекты.

    Соединители в экземпляре архитектуры, указанные как массив systemcomposer.analysis.ConnectorInstance объекты, соединяющие дочерние компоненты.

    Опорный элемент в конструкторской модели, указанный как systemcomposer.arch.Architecture объект.

    Нормализуют ли единицы значения свойств в экземпляре, указанном как логический 1 (true) или 0 (false).

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

    Получают ли экземпляры свойства только в том случае, если в спецификации экземпляра применен стереотип, указанный как логический 1 (true) или 0 (false).

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

    Функция анализа, заданная как дескриптор функции MATLAB, которая должна выполняться при выполнении анализа.

    Пример: @calculateLatency

    Направление анализа, указанное как перечисление.

    Пример: 'TopDown'

    Пример: 'PreOrder'

    Пример: 'PostOrder'

    Пример: 'BottomUp'

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

    Аргументы анализа, указанные как символьный вектор необязательных аргументов для функции анализа.

    Пример: '3'

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

    Обновляется ли средство просмотра анализа автоматически при изменении конструкторской модели, указанной как логический 1 (true) или 0 (false).

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

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

    getValueПолучение значения свойства из экземпляра элемента
    setValueЗадать значение свойства для экземпляра элемента
    hasValueНайти, имеет ли экземпляр элемента значение свойства
    iterateИтерация по элементам модели
    lookupПоиск элемента архитектуры
    saveСохранить экземпляр архитектуры
    updateОбновление модели архитектуры
    refreshОбновить экземпляр архитектуры
    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