exponenta event banner

systemcomposer.analysis. PortInstance

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

    Описание

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

    Создание

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

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

    Свойства

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

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

    Пример: 'NewInstance'

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

    Компонент, содержащий порт, указанный как systemcomposer.analysis.ComponentInstance объект.

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

    Полное имя порта, указанное как символьный вектор формы '<PathToComponent>:<PortDirection>'.

    Пример: 'model/Component:In'

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

    Входящее соединение, указанное как systemcomposer.analysis.ConnectorInstance объект.

    Исходящее соединение, указанное как systemcomposer.analysis.ConnectorInstance объект.

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

    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