Атомарная субдиаграмма является графическим объектом, который помогает вам создать переиспользуемые подкомпоненты в Stateflow® график. Атомарный ящик является графическим объектом, который помогает вам делиться графической, таблицей истинности, MATLAB®, и Simulink® функции на нескольких графиках. Атомарные субдиаграммы и коробки поддерживаются только в диаграммах Stateflow в моделях Simulink. Для получения дополнительной информации смотрите Создание переиспользуемых подкомпонентов при помощи Atomic Subcharts и Переиспользуйте функции при использовании Atomic Boxes.
Чтобы убедиться, что каждый символ в вашей атомарной субдиаграмме или поле обращается к правильному символу в основном графике, отредактируйте отображение символов субдиаграммы. Щелкните правой кнопкой мыши субдиаграмма или поле и выберите Subchart Mappings. На вкладке Mappings диалогового окна свойств используйте раскрывающийся список Main chart symbol, чтобы указать, какой символ в основной график соответствует каждому символу в субдиаграмму. Кроме того, можно ввести выражение, задающее:
Поле структуры Stateflow. См. Индекс и присвоение значений структурам Stateflow».
Вектор или матрица элемента массива. См. «Поддерживаемые операции для векторов и матриц».
Любая допустимая комбинация структурных полей или матричных индексов, таких как struct.field(1,2)
или struct.field[0][1]
.
Если вы оставляете Main chart symbol поле пустым, то Stateflow пытается сопоставить символ атомарной субдиаграммы с символом основного графика с таким же именем.
Можно сопоставить символ в атомарной субдиаграмме с символом в основном графике, который имеет другие возможности. В этой таблице перечислены возможные отображения.
Атомарная Субдиаграмма символ Возможностей | Основной График символ Возможностей |
---|---|
Вход | Вход, Выход, Локальный, Параметр |
Выход | Выход, Локальный |
Параметр | Параметр |
Память хранилища данных | Память хранилища данных, локальная |
Входное Событие | Входное Событие |
Когда вы сопоставляете память хранилища данных в атомарной субдиаграмме с локальными данными перечисляемого типа, у вас есть две опции для определения начального значения памяти хранилища данных:
В диалоговом окне «Свойства данных» установите поле Initial value для локальных данных уровня диаграммы.
Чтобы применить значение по умолчанию для перечисляемого типа, оставьте Initial value поле пустым.
Эта модель содержит два блока Sine Wave, которые подают входные сигналы на график.
График состоит из двух связанных атомарных субдиаграмм из одной библиотеки.
Оба атомарных субдиаграмм содержат логику сатуратора для преобразования входа синусоиды в выход квадратную волну той же частоты.
Если вы симулируете модель, выход для y2
равен нулю.
Потому что символы в атомарной субдиаграмме A имеют то же имя, что и символы u1
и y1
на основном графике они сопоставляются с правильными переменными. Символы в атомарной субдиаграмме B не совпадают с u2
и y2
на основном графике, поэтому необходимо отредактировать отображение.
Щелкните правой кнопкой мыши субдиаграммы B и выберите Субдиаграмму Отображений.
В разделе «Вход отображений» задайте символ главного графика для u1
чтобы быть u2
.
В разделе Output Mapping задайте символ основного графика для y1
чтобы быть y2
.
Нажмите кнопку ОК.
Когда вы запускаете модель снова, вы получаете эти результаты.
Эта модель содержит два блока Sine Wave, которые подают сигналы через шину на график.
График состоит из двух связанных атомарных субдиаграмм из одной библиотеки. Оба атомарных субдиаграмм содержат логику сатуратора для преобразования входа синусоиды в выход квадратную волну той же частоты.
Если вы симулируете модель, вы получаете ошибку, потому что u1
входы в каждой субдиаграмме не совпадают ни с какими переменными на основном графике. Чтобы отредактировать отображение для u1
в каждой субдиаграмме:
Щелкните правой кнопкой мыши субдиаграммы A и выберите Субдиаграмму Отображений.
В разделе «Вход отображений» задайте символ главного графика для u1
чтобы быть первым элементом в шине: BusIn.u1
.
Нажмите кнопку ОК.
Повторите для субдиаграммы B, задавая символ основного графика для u1
чтобы быть вторым элементом в шине: BusIn.u2
.
Когда вы запускаете модель снова, вы получаете эти результаты.
При обращении к элементам массива вектора или матрицы, независимо от языка действий графика, используйте:
Одно-основанное индексирование, разделенное круглыми скобками и запятыми. Для примера, A(4,5)
.
Нулевая индексация, разделенная скобками. Для примера, A[3][4]
.
Индексы могут быть числами или параметрами на графике. Использование других выражений в качестве индексов не поддерживается.
Для примера эта модель содержит два блока Sine Wave, которые подают сигналы через матрицу диагонали на график.
График состоит из двух связанных атомарных субдиаграмм из одной библиотеки. Оба атомарных субдиаграмм содержат логику сатуратора для преобразования входа синусоиды в выход квадратную волну той же частоты.
Если вы симулируете модель, вы получаете ошибку, потому что u1
входы в каждой субдиаграмме не совпадают ни с какими переменными на основном графике. Чтобы отредактировать отображение для u1
в каждой субдиаграмме:
Щелкните правой кнопкой мыши субдиаграммы A и выберите Субдиаграмму Отображений.
В разделе «Вход отображений» задайте символ главного графика для u1
чтобы быть верхним левым элементом в матрице. Нулевой формат индексации для этого элемента M[0][0]
.
Нажмите кнопку ОК.
Повторите для субдиаграммы B, задавая символ основного графика для u1
чтобы быть нижним правым элементом в матрице. Один формат индексации для этого элемента M(2,2)
.
Когда вы запускаете модель снова, вы получаете эти результаты.
Для параметров в атомарной субдиаграмме можно задать выражение, которое комбинирует константы, переменные в базовом рабочем пространстве и параметры в основном графике.
Для примера эта модель содержит два блока Sine Wave, которые подают входные сигналы на график.
График состоит из двух связанных атомарных субдиаграмм из одной библиотеки. Оба атомарных субдиаграмм содержат логику сатуратора для преобразования входа синусоиды в выход квадратную волну той же частоты.
Если вы симулируете модель, вы получите ошибку, потому что параметр T
не определено. Чтобы исправить эту ошибку, задайте выражение для T
для оценки на главном графике:
Щелкните правой кнопкой мыши субдиаграммы A и выберите Субдиаграмму Отображений.
В разделе «Отображение параметров» в качестве значения для T
, введите -1
.
Нажмите кнопку ОК.
Повторите для субдиаграммы B, задавая значение T
как 2
.
Когда вы запускаете модель снова, вы получаете эти результаты.
Эта модель содержит блок Mux, который поставляет входные события на график.
График содержит два сверхсостояний: Active
и Inactive
. The Active
состояние использует входные события, чтобы защитить переходы между различными подсостояниями.
Для преобразования Active
состояние в атомарной субдиаграмме:
Щелкните правой кнопкой мыши по Active
Состоянием и выберите Group & Субдиаграмму > Atomic Субдиаграммы.
Щелкните правой кнопкой мыши атомарная субдиаграмма и выберите Субдиаграмму Отображений.
В разделе Входа Event Отображения сопоставьте каждый символ атомарной субдиаграммы с соответствующим событием входа в основной график.
Нажмите кнопку ОК.
Отключите входные события для атомарных субдиаграмм
Не каждое входное событие в атомарной субдиаграмме должно соответствовать событию в основном графике. Для примера можно создать связанную атомарную субдиаграмму, которая не использует весь набор событий, определенных в график библиотеки. Чтобы отключить событие входа в атомарной субдиаграмме:
Щелкните правой кнопкой мыши атомарная субдиаграмма и выберите Субдиаграмму Отображений.
В Вход Отображения событий в раскрывающемся списке Символ главного графике выберите <disabled>
.
Нажмите кнопку ОК.