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 объект.

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

    Типы данных: логический

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

    Типы данных: логический

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

    Пример: @calculateLatency

    Аналитическое направление в виде перечисления.

    Пример: 'TopDown'

    Пример: 'PreOrder'

    Пример: 'PostOrder'

    Пример: 'BottomUp'

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

    Аналитические аргументы в виде вектора символов дополнительных аргументов к аналитической функции.

    Пример 3

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

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

    Типы данных: логический

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

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