Класс, который представляет стереотип
Stereotype
класс представляет стереотипы архитектуры в профиле.
Добавьте стереотип в профиль.
addStereotype(profile,'name')
Name
— Имя стереотипаИмя стереотипа в виде вектора символов.
Пример: 'HardwareComponent'
Типы данных: char
Description
— Текст описания для стереотипаТекст описания для стереотипа в виде вектора символов.
Типы данных: char
Icon
— Имя значка для стереотипаИмя значка для стереотипа в виде вектора символов.
Пример: 'default'
Пример: 'application'
Пример: 'channel'
Пример: 'controller'
Пример: 'database'
Пример: 'devicedriver'
Пример: 'memory'
Пример: 'network'
Пример: 'plant'
Пример: 'sensor'
Пример: 'subsystem'
Пример: 'transmitter'
Типы данных: char
Parent
— Стереотипируйте, от которого стереотип наследовал свойстваСтереотипируйте, от которого стереотип наследовал свойства в виде systemcomposer.profile.Stereotype
объект.
AppliesTo
— Тип элемента, к которому может быть применен стереотип'Component'
| 'Port'
| 'Connector'
| 'Interface'
Тип элемента, к которому стереотип может быть применен в виде вектора символов следующих опций: 'Component'
Порт
, 'Connector'
, или 'Interface'
.
Типы данных: char
Abstract
— Абстрактен ли стереотипtrue
или 1 | false
или 0Абстрактен ли стереотип в виде логического из числового 1 (true
) или 0 (false
). Если true
, затем стереотип не может быть непосредственно применен на элементы модели, но вместо этого служит родительским элементом для других стереотипов.
Типы данных: логический
FullyQualifiedName
— Полностью определенное имя стереотипаПолностью определенное имя стереотипа в виде вектора символов в форме '<profile>.<stereotype>'
.
Типы данных: char
ComponentHeaderColor
— Цвет заголовка компонентаuint32
вектор-строкаЦвет заголовка компонента в виде 1x4 uint32
вектор-строка в форме Red Green Blue Alpha
Alpha
значение определяет прозрачность.
Пример: 206 232 246 255
Типы данных: uint32
ConnectorLineColor
— Цвет линии коннектораuint32
вектор-строкаЦвет линии коннектора в виде 1x4 uint32
вектор-строка в форме Red Green Blue Alpha
Alpha
значение определяет прозрачность.
Пример: 206 232 246 255
Типы данных: uint32
ConnectorLineStyle
— Стиль линии коннектораСтиль линии коннектора называет в виде вектора символов.
Пример: 'Default'
Пример: 'Dot'
Пример: 'Dash'
Пример: 'Dash Dot'
Пример: 'Dash Dot Dot'
Типы данных: char
Profile
— Профиль стереотипаСтереотипируйте, от которого стереотип наследовал свойства в виде systemcomposer.profile.Profile
объект.
Properties
свойстваСвойства, содержавшиеся в этом стереотипе и наследованные от стереотипа, основывают иерархию в виде массива ячеек из символьных векторов.
Типы данных: char
OwnedProperties
— Находящиеся в собственности свойстваНаходящиеся в собственности свойства содержатся в этом стереотипе в виде массива ячеек из символьных векторов. Свойства не включают свойства, наследованные от стереотипной базовой иерархии.
Типы данных: char
addProperty | Задайте пользовательское свойство для стереотипа |
removeProperty | Удалите свойство из стереотипа |
find | Найдите стереотип по наименованию |
setDefaultComponentStereotype | Установите стереотип по умолчанию для компонентов |
setDefaultConnectorStereotype | Установите стереотип по умолчанию для коннекторов |
setDefaultPortStereotype | Установите стереотип по умолчанию для портов |
destroy | Удалите элемент модели |
В этом примере показано, как создать модель архитектуры использование API System Composer™.
Подготовьте рабочую область
Очистите все профили от рабочей области.
systemcomposer.profile.Profile.closeAll;
Создайте модель
Чтобы создать модель, добавьте словарь данных с интерфейсами и интерфейсными элементами, затем добавьте компоненты, порты и связи. После того, как модель создана, можно создать пользовательские представления, чтобы фокусироваться на определенном беспокойстве. Можно также запросить модель, чтобы собрать различные элементы модели согласно критериям, которые вы задаете.
Добавьте компоненты, порты и связи
Создайте модель и извлеките ее архитектуру.
model = systemcomposer.createModel('mobileRobotAPI');
arch = model.Architecture;
Создайте словарь данных и добавьте интерфейс. Соедините интерфейс с моделью.
dictionary = systemcomposer.createDictionary('SensorInterfaces.sldd'); interface = addInterface(dictionary,'GPSInterface'); interface.addElement('Mass'); linkDictionary(model,'SensorInterfaces.sldd');
Добавьте компоненты, порты и связи. Установите интерфейс на порты, которые вы соедините позже.
components = addComponent(arch,{'Sensor','Planning','Motion'}); sensorPorts = addPort(components(1).Architecture,{'MotionData','SensorData'},{'in','out'}); sensorPorts(2).setInterface(interface); planningPorts = addPort(components(2).Architecture,{'Command','SensorData1','MotionCommand'},{'in','in','out'}); planningPorts(2).setInterface(interface); motionPorts = addPort(components(3).Architecture,{'MotionCommand','MotionData'},{'in','out'});
Соедините компоненты с интерфейсным правилом. Это правило соединяет порты на компонентах, которые совместно используют тот же интерфейс.
c_sensorData = connect(arch,components(1),components(2),'Rule','interfaces'); c_motionData = connect(arch,components(3),components(1)); c_motionCommand = connect(arch,components(2),components(3));
Сохраните словарь данных
Сохраните изменения в словаре данных.
dictionary.save();
Добавьте и соедините порт архитектуры
Добавьте порт архитектуры на архитектуре.
archPort = addPort(arch,'Command','in');
connect
команда требует порта компонента в качестве аргумента. Получите порт компонента и подключение:
compPort = getPort(components(2),'Command');
c_Command = connect(archPort,compPort);
Сохраните модель.
save(model)
Откройте модель
open_system(gcs);
Расположите размещение pressıng Ctrl+Shift+A или используя следующую команду:
Simulink.BlockDiagram.arrangeSystem('mobileRobotAPI');
Создайте и примените профиль и стереотипы
Профилями является xml
файлы, которые могут быть применены к любой модели. Можно добавить стереотипы со свойствами к профилям и затем заполнить свойства с определенными значениями. Наряду со встроенными аналитическими возможностями System Composer, стереотипы могут вести оптимизацию вашей системы для эффективности, стоить, и надежность.
Создайте профиль и добавьте стереотипы
Создайте профиль.
profile = systemcomposer.createProfile('GeneralProfile');
Создайте стереотип, который применяется ко всем типам элемента:
elemSType = addStereotype(profile,'projectElement');
Создайте стереотипы для различных типов компонентов. Эти типы диктуют потребности проекта и до вашего усмотрения:
pCompSType = addStereotype(profile,'physicalComponent','AppliesTo','Component'); sCompSType = addStereotype(profile,'softwareComponent','AppliesTo','Component');
Создайте стереотип для связей:
sConnSType = addStereotype(profile,'standardConn','AppliesTo','Connector');
Добавление свойств
Добавьте свойства в стереотипы. Можно использовать свойства получить метаданные для элементов модели и анализировать нефункциональные требования. Эти свойства добавляются ко всем элементам, к которым стереотип применяется в любой модели, которая импортирует профиль.
addProperty(elemSType,'ID','Type','uint8'); addProperty(elemSType,'Description','Type','string'); addProperty(pCompSType,'Cost','Type','double','Units','USD'); addProperty(pCompSType,'Weight','Type','double','Units','g'); addProperty(sCompSType,'develCost','Type','double','Units','USD'); addProperty(sCompSType,'develTime','Type','double','Units','hour'); addProperty(sConnSType,'unitCost','Type','double','Units','USD'); addProperty(sConnSType,'unitWeight','Type','double','Units','g'); addProperty(sConnSType,'length','Type','double','Units','m');
Сохраните профиль
save(profile);
Примените профиль к модели
Примените профиль к модели:
applyProfile(model,'GeneralProfile');
Примените стереотипы к компонентам. Некоторые компоненты являются физическими компонентами, и другие являются компонентами программного обеспечения.
applyStereotype(components(2),'GeneralProfile.softwareComponent') applyStereotype(components(1),'GeneralProfile.physicalComponent') applyStereotype(components(3),'GeneralProfile.physicalComponent')
Примените стереотип коннектора ко всем связям:
batchApplyStereotype(arch,'Connector','GeneralProfile.standardConn');
Примените общий стереотип элемента ко всем коннекторам и портам:
batchApplyStereotype(arch,'Component','GeneralProfile.projectElement'); batchApplyStereotype(arch,'Connector','GeneralProfile.projectElement');
Установите свойства для каждого компонента:
setProperty(components(1),'GeneralProfile.projectElement.ID','001'); setProperty(components(1),'GeneralProfile.projectElement.Description','''Central unit for all sensors'''); setProperty(components(1),'GeneralProfile.physicalComponent.Cost','200'); setProperty(components(1),'GeneralProfile.physicalComponent.Weight','450'); setProperty(components(2),'GeneralProfile.projectElement.ID','002'); setProperty(components(2),'GeneralProfile.projectElement.Description','''Planning computer'''); setProperty(components(2),'GeneralProfile.softwareComponent.develCost','20000'); setProperty(components(2),'GeneralProfile.softwareComponent.develTime','300'); setProperty(components(3),'GeneralProfile.projectElement.ID','003'); setProperty(components(3),'GeneralProfile.projectElement.Description','''Motor and motor controller'''); setProperty(components(3),'GeneralProfile.physicalComponent.Cost','4500'); setProperty(components(3),'GeneralProfile.physicalComponent.Weight','2500');
Установите свойства связей быть идентичными:
connections = [c_sensorData c_motionData c_motionCommand c_Command]; for k = 1:length(connections) setProperty(connections(k),'GeneralProfile.standardConn.unitCost','0.2'); setProperty(connections(k),'GeneralProfile.standardConn.unitWeight','100'); setProperty(connections(k),'GeneralProfile.standardConn.length','0.3'); end
Добавьте иерархию
Добавьте два компонента под названием Controller
и Scope
в Motion
компонент. Задайте порты. Соедините их с архитектурой и друг другу, применив стереотип коннектора. Иерархия в схеме архитектуры создает дополнительный уровень детализации, который задает, как компоненты ведут себя внутренне.
motionArch = components(3).Architecture; motion = motionArch.addComponent({'Controller','Scope'}); controllerPorts = addPort(motion(1).Architecture,{'controlIn','controlOut'},{'in','out'}); controllerCompPortIn = motion(1).getPort('controlIn'); controllerCompPortOut = motion(1).getPort('controlOut'); scopePorts = addPort(motion(2).Architecture,{'scopeIn','scopeOut'},{'in','out'}); scopeCompPortIn = motion(2).getPort('scopeIn'); scopeCompPortOut = motion(2).getPort('scopeOut'); c_planningController = connect(motionPorts(1),controllerCompPortIn); c_planningScope = connect(scopeCompPortOut,motionPorts(2)); c_planningConnect = connect(controllerCompPortOut,scopeCompPortIn,'GeneralProfile.standardConn');
Сохраните модель.
save(model)
Расположите размещение pressıng Ctrl+Shift+A или используя следующую команду:
Simulink.BlockDiagram.arrangeSystem('mobileRobotAPI/Motion');
Создайте модель - ссылку
Модели - ссылки полезны, чтобы организовать большие модели иерархически и позволить вам задавать архитектуры или поведения однажды и снова использовать его. То, когда ссылки компонента другая модель, любые существующие порты на компоненте удалены и порты, которые существуют на модели, на которую ссылаются, появится на компоненте.
Создайте новую модель System Composer. Преобразуйте Sensor
компонент на ссылочный компонент, чтобы сослаться на новую модель. Добавить дополнительные порты на Sensor
компонент, необходимо обновить модель mobileSensor
, на которую ссылаются,.
newModel = systemcomposer.createModel('mobileSensor'); newArch = newModel.Architecture; newComponents = addComponent(newArch,'ElectricSensor'); save(newModel); linkToModel(components(1),'mobileSensor');
Примените стереотип к архитектуре и компоненту соединенного образца модели.
referenceModel = get_param('mobileSensor','SystemComposerModel'); referenceModel.applyProfile('GeneralProfile'); referenceModel.Architecture.applyStereotype('GeneralProfile.softwareComponent'); batchApplyStereotype(referenceModel.Architecture,'Component','GeneralProfile.projectElement')
Добавьте порты и связи со ссылочным компонентом.
sensorPorts = addPort(components(1).Architecture,{'MotionData','SensorData'},{'in','out'}); sensorPorts(2).setInterface(interface) connect(arch,components(1),components(2),'Rule','interfaces'); connect(arch,components(3),components(1));
Сохраните модели.
save(referenceModel) save(model)
Сделайте различный компонент
Можно преобразовать Planning
компонент на различный компонент с помощью makeVariant
функция. Исходный компонент встраивается в различном компоненте как один из доступных вариантов. Можно спроектировать другие варианты в различном компоненте и переключить активный выбор. Различные компоненты позволяют вам выбирать проекты behaviorial программно в модели архитектуры, чтобы выполнить торговые исследования и анализ.
[variantComp,choice1] = makeVariant(components(2));
Добавьте дополнительный вариант под названием PlanningAlt
. Второй аргумент задает имя, и третий аргумент задает метку. Метка идентифицирует выбор. Активным выбором управляет метка.
choice2 = addChoice(variantComp,{'PlanningAlt'},{'PlanningAlt'});
Создайте необходимые порты на PlanningAlt
.
setActiveChoice(variantComp,choice2) planningAltPorts = addPort(choice2.Architecture,{'Command','SensorData1','MotionCommand'},{'in','in','out'}); planningAltPorts(2).setInterface(interface);
Сделайте PlanningAlt
активный вариант.
setActiveChoice(variantComp,'PlanningAlt')
Расположите размещение pressıng Ctrl+Shift+A или используя следующую команду:
Simulink.BlockDiagram.arrangeSystem('mobileRobotAPI/Planning');
Сохраните модель.
save(model)
Очистка
Не прокомментируйте следующий код и запуск, чтобы очистить артефакты, созданные этим примером:
% bdclose('mobileRobotAPI') % bdclose('mobileSensor') % Simulink.data.dictionary.closeAll % systemcomposer.profile.Profile.closeAll % delete('Profile.xml') % delete('SensorInterfaces.sldd')
Термин | Определение | Приложение | Больше информации |
---|---|---|---|
стереотип | Стереотип является пользовательским расширением языка моделирования. Стереотипы обеспечивают механизм, чтобы расширить элементы языка архитектуры путем добавления проблемно-ориентированных метаданных. | Примените стереотипы к корневой архитектуре уровня, компонентной архитектуре, коннекторам, портам и интерфейсам модели. Стереотипы обеспечивают элементы модели в архитектуре единый набор полей свойства, такие как масса, стоят, и степень. | Задайте профили и стереотипы |
профиль | Профиль является пакетом стереотипов, чтобы создать последовательную область типов элемента модели. | Примените профили к модели через Редактор Профиля. Можно сохранить стереотипы для проекта в одном профиле или в нескольких. Профили хранятся в .xml файлы, когда они сохранены. | Используйте стереотипы и профили |
свойство | Свойство является полем в стереотипе. Для каждого элемента модели применяются к стереотипу, определенные значения свойств заданы. | Используйте свойства сохранить количественные характеристики, такие как вес или скорость, которые сопоставлены с элементом модели. Свойства могут также быть описательными или представлять состояние. | SetProperties |
addStereotype
| getStereotype
| removeStereotype
| systemcomposer.profile.Profile
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.