systemcomposer.analysis.PortInstance

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

    Описание

    The 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 на основе холодных прокруточных усилителей (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
    Для просмотра документации необходимо авторизоваться на сайте