Класс, представляющий стереотип
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', 'Port', 'Connector', или 'Interface'.
Типы данных: char
Abstract - Является ли стереотип абстрактнымtrue или 1 | false или 0Является ли стереотип абстрактным, указывается как логическое число 1 (true) или 0 (false). Если true, то стереотип не может быть непосредственно применен к элементам модели, а служит в качестве родителя для других стереотипов.
Типы данных: logical
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 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);
Упорядочьте макет, нажав клавиши 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)
Упорядочьте макет, нажав клавиши 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 функция. Исходный компонент встраивается в компонент исполнения в качестве одного из доступных вариантов исполнения. Можно создать другие варианты исполнения в компоненте исполнения и переключить активный вариант. Компоненты вариантов позволяют программно выбирать поведенческие конструкции в архитектурной модели для выполнения торговых исследований и анализа.
[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')Упорядочьте макет, нажав клавиши 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 при сохранении файлов. | Использование стереотипов и профилей |
| собственность | Свойство - это поле в стереотипе. Для каждого элемента модели применяется стереотип, указываются конкретные значения свойств. | Используйте свойства для хранения количественных характеристик, таких как вес или скорость, связанных с элементом модели. Свойства также могут быть описательными или представлять статус. | Задать свойства |
addStereotype | getStereotype | removeStereotype | systemcomposer.profile.Profile
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.