exponenta event banner

иллюстрировать примерами

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

Описание

пример

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' и логический 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 файлы.

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

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

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

  • Порты архитектуры - это порты на границе системы, независимо от того, находится ли граница в пределах компонента или общей модели архитектуры.

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

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

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

Представлен в R2019a