instantiate

Создайте аналитический экземпляр из спецификации

Описание

пример

instance = instantiate(model,properties,name) создает экземпляр модели для анализа.

Эта функция является частью API экземпляра, который можно использовать, чтобы анализировать модель итеративно, поэлементно. instance относится к экземпляру элемента, на котором выполняется итерация.

пример

instance = instantiate(model,profile,name) создает экземпляр модели для анализа со всеми стереотипами в профиле.

пример

instance = instantiate(___,Name,Value) создает экземпляр модели для анализа с дополнительными аргументами.

Примеры

свернуть все

Инстанцируйте всех свойств стереотипа, который будет применен к определенным элементам во время инстанцирования.

Создайте профиль для характеристик задержки.

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');
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');
portLatency.addProperty('dummy','Type','int32');

Инстанцируйте всех свойств стереотипа.

model = systemcomposer.createModel('archModel',true); % Create new model

model.applyProfile('LatencyProfile'); % Apply profile to model

% Specify type of elements each stereotype can be applied on
NodeLatency = struct('elementKinds',['Component']);
ConnectorLatency = struct('elementKinds',['Connector']);
LatencyBase = struct('elementKinds',['Connector','Port','Component']);
PortLatency = struct('elementKinds',['Port']);

% Create the analysis structure
LatencyAnalysis = struct('NodeLatency',NodeLatency, ...
                'ConnectorLatency',ConnectorLatency, ...
                'PortLatency',PortLatency, ...
                'LatencyBase',LatencyBase);

% Create the properties structure      
properties = struct('LatencyProfile',LatencyAnalysis);

% Instantiate all properties of stereotype
instance = instantiate(model.Architecture,properties,'NewInstance')

Инстанцируйте определенных свойств стереотипа, который будет применен к определенным элементам во время инстанцирования.

Создайте профиль для характеристик задержки.

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');
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');
portLatency.addProperty('dummy','Type','int32');

Инстанцируйте определенных свойств стереотипа.

model = systemcomposer.createModel('archModel',true); % Create new model

model.applyProfile('LatencyProfile'); % Apply profile to model

% Specify some properties of stereotypes
NodeLatency = struct('elementKinds',["Component"], ...
                'properties',struct('resources',true));
ConnectorLatency = struct('elementKinds',["Connector"], ...
                'properties',struct('secure',true,'linkDistance',true));
LatencyBase = struct('elementKinds',[], ...
                'properties',struct('dataRate',true,'latency',false));
PortLatency = struct('elementKinds',["Port"], ...
                'properties',struct('queueDepth',true));
 
LatencyAnalysis = struct('NodeLatency',NodeLatency, ...
                'ConnectorLatency',ConnectorLatency, ...
                'PortLatency',PortLatency, ...
                'LatencyBase',LatencyBase);

% Create the properties structure      
properties = struct('LatencyProfile',LatencyAnalysis);

% Instantiate some properties of stereotype
instance = instantiate(model.Architecture,properties,'NewInstance')

Инстанцируйте всех стереотипов уже в профиле, который будет применен к элементам во время инстанцирования.

Создайте профиль для характеристик задержки.

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');
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');
portLatency.addProperty('dummy','Type','int32');

Инстанцируйте всех стереотипов в профиле.

model = systemcomposer.createModel('archModel',true); % Create new model

model.applyProfile('LatencyProfile'); % Apply profile to model

% Instantiate all stereotypes in profile
instance = instantiate(model.Architecture,'LatencyProfile','NewInstance')

Этот пример показывает инстанцирование для анализа для системы с задержкой в ее проводном соединении. Используемые материалы являются медью, волокном и 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

Входные параметры

свернуть все

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

Пример: model.Architecture

Стереотипируйте свойства в виде структуры, содержащей профиль, стереотип и информацию о свойстве. Используйте properties задавать, какие стереотипы и свойства нужно инстанцировать.

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

Имя экземпляра сгенерировано из модели в виде вектора символов.

Пример: 'NewInstance'

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

Профилируйте имя в виде вектора символов.

Пример: 'LatencyProfile'

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

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: instantiate(model.Architecture,'LatencyProfile','NewInstance','Function',@calculateLatency,'Arguments','3','Strict',true,'NormalizeUnits',false,'Direction','PreOrder')

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

Пример: instantiate(model.Architecture,'LatencyProfile','NewInstance','NormalizeUnits',true)

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

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

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

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

Аналитическое направление в виде разделенной запятой пары, состоящей из 'Direction' и вектор символов.

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

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

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

Выходные аргументы

свернуть все

Экземпляр элемента, возвращенный как systemcomposer.analysis.ArchitectureInstance объект.

Больше о

свернуть все

Определения

ТерминОпределениеПриложениеБольше информации
архитектураАрхитектура System Composer™ представляет систему компонентов и как они взаимодействуют через интерфейс друг с другом структурно и поведенчески. Можно представлять определенные архитектуры с помощью альтернативных представлений.

Различные типы архитектур описывают различные аспекты систем:

  • Функциональная архитектура описывает поток данных в системе.

  • Логическая архитектура описывает намеченную операцию системы.

  • Физическая архитектура описывает платформу или оборудование в системе.

Составьте архитектуру визуально
модельМодель System Composer является файлом, который содержит архитектурную информацию, включая компоненты, порты, коннекторы, интерфейсы и поведения.

Выполните операции на модели:

  • Извлеките корневую архитектуру уровня, содержавшуюся в модели.

  • Примените профили.

  • Соедините интерфейсные словари данных.

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

Модели System Composer хранятся как .slx файлы.

Создайте модель архитектуры
компонентКомпонент является нетривиальной, почти независимой, и заменимой частью системы, которая выполняет функцию clear в контексте архитектуры. Компонент задает элемент архитектуры, такой как функция, система, оборудование, программное обеспечение или другая концептуальная сущность. Компонент может также быть подсистемой или подфункцией.Представленный как блок, компонент является частью модели архитектуры, которая может быть разделена на допускающие повторное использование артефакты.Компоненты
портПорт является узлом на компоненте или архитектуре, которая представляет точку взаимодействия с ее средой. Порт разрешает поток информации к и от других компонентов или систем.

Существуют различные типы портов:

  • Порты компонента являются точками столкновения на компоненте к другим компонентам.

  • Порты архитектуры являются портами на контуре системы, является ли контур в компоненте или полной модели архитектуры.

Порты
коннекторКоннекторы являются линиями, которые обеспечивают связи между портами. Коннекторы описывают как информационные потоки между компонентами или архитектурами.Коннектор позволяет двум компонентам взаимодействовать, не задавая природу взаимодействия. Установите интерфейс на порте задавать, как компоненты взаимодействуют.Связи

ТерминОпределениеПриложениеБольше информации
стереотипСтереотип является пользовательским расширением языка моделирования. Стереотипы обеспечивают механизм, чтобы расширить элементы языка архитектуры путем добавления проблемно-ориентированных метаданных.Примените стереотипы к корневой архитектуре уровня, компонентной архитектуре, коннекторам, портам и интерфейсам модели. Стереотипы обеспечивают элементы модели в архитектуре единый набор полей свойства, такие как масса, стоят, и степень.Задайте профили и стереотипы
профильПрофиль является пакетом стереотипов, чтобы создать последовательную область типов элемента модели.Примените профили к модели через Редактор Профиля. Можно сохранить стереотипы для проекта в одном профиле или в нескольких. Профили хранятся в .xml файлы, когда они сохранены.Используйте стереотипы и профили
свойствоСвойство является полем в стереотипе. Для каждого элемента модели применяются к стереотипу, определенные значения свойств заданы.Используйте свойства сохранить количественные характеристики, такие как вес или скорость, которые сопоставлены с элементом модели. Свойства могут также быть описательными или представлять состояние.SetProperties

ТерминОпределениеПриложениеБольше информации
анализАнализ является методом для того, чтобы количественно оценить архитектуру для определенных характеристик. Статический анализ анализирует структуру системы. Статический анализ использует анализ функциональные и параметрические значения свойств, полученных в системной модели.Используйте анализ, чтобы вычислить полную надежность, массовую свертку, эффективность или тепловые характеристики системы, или выполнить анализ SWaP.Анализируйте архитектуру
экземплярЭкземпляр является вхождением модели архитектуры в данном моменте времени.Можно обновить экземпляр с изменениями в модели, но экземпляр не обновится с изменениями в активных вариантах или моделях - ссылках. Можно использовать экземпляр, сохраненный в .MAT файл, модели архитектуры System Composer для анализа.Создайте экземпляр модели для анализа

Введенный в R2019a