instantiate

Создайте образец анализа из спецификации

Описание

пример

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

Эта функция является частью образец, который можно использовать, чтобы итерационно анализировать модель, элемент за элементом. 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' и логический 1 (true) для нормализации или 0 (false) ничего не делать.

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

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

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

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

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

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

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

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

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

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

свернуть все

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

Подробнее о

свернуть все

Определения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Архитектуры порты являются портами на контур системы, будь то контур внутри компонента или общая модель архитектуры.

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

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

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

Введенный в R2019a