exponenta event banner

Идентификация данных с помощью точечного обозначения

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

Например, на этой диаграмме символ data находится в подсостоянии aa государства a. Действия состояния и перехода используют определенные имена данных для ссылки на этот символ.

  • В переходе по умолчанию действие использует полное имя данных a.aa.data для указания пути от диаграммы к состоянию верхнего уровня a, на подсостояние aa, и, наконец, для data.

  • В состоянии a, действие записи использует полное имя данных aa.data для указания пути от подсостояния aa кому data.

  • В состоянии b, действие записи использует полное имя данных a.aa.data для указания пути от диаграммы к состоянию a, на подсостояние aa, а затем в data.

Разрешение имен квалифицированных данных

Во время моделирования Stateflow разрешает определенное имя данных, выполняя локализованный поиск иерархии диаграммы для соответствующего объекта данных. Поиск начинается на уровне иерархии, на котором отображается полное имя данных:

  • Для действия состояния начальной точкой является состояние, содержащее действие.

  • Для метки перехода начальной точкой является родительская точка источника перехода.

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

Эта блок-схема иллюстрирует различные этапы процесса разрешения определенных имен данных.

Рекомендации по использованию точечных обозначений

Разрешение имен квалифицированных данных:

  • Не выполняет исчерпывающий поиск всех данных.

  • Не останавливается после нахождения первого матча.

Чтобы повысить шансы на поиск уникального результата поиска при разрешении имен квалифицированных данных:

  • Использовать определенные пути в определенных именах данных.

  • Дать состояниям уникальные имена.

  • Используйте состояния и поля в качестве вложений, чтобы ограничить область поиска разрешения пути.

Примеры разрешения имени квалифицированной информации

Поиск не приводит к совпадениям

На этой диаграмме действие ввода в состоянии b содержит полное имя данных aa.data. Если символ data находится в состоянии aa, то Stateflow не может разрешить полное имя данных.

В этой таблице перечислены различные этапы процесса разрешения для определенного имени данных. aa.data.

СтадияОписаниеРезультат
1Запуск в состоянии b, поиск объекта aa который содержит data.Совпадение не найдено.
2Переход на следующий уровень иерархии (уровень диаграммы). Поиск объекта aa который содержит data.Совпадение не найдено.

Поиск завершается на уровне диаграммы без соответствия для aa.data, что приводит к ошибке.

Чтобы избежать этой ошибки, в действии ввода state b, укажите данные с более определенным именем a.aa.data.

Поиск создает несколько совпадений

На этой диаграмме действие ввода в состоянии a содержит два экземпляра полного имени данных aa.data. Если оба состояния названы aa содержат объект данных с именем data, то Stateflow не может разрешить полное имя данных.

В этой таблице перечислены различные этапы процесса разрешения для определенного имени данных. aa.data.

СтадияОписаниеРезультат
1Запуск в состоянии a, поиск объекта aa который содержит data.Совпадение найдено.
2Переход на следующий уровень иерархии (уровень диаграммы). Поиск объекта aa который содержит data.Совпадение найдено.

Поиск завершается на уровне диаграммы с двумя совпадениями, найденными для aa.data, что приводит к ошибке.

Чтобы избежать этой ошибки:

  • Используйте более определенное имя данных. Например:

    • Задание объекта данных в подсостоянии состояния a, использовать полное имя данных a.aa.data.

    • Задание объекта данных в состоянии верхнего уровня aa, использовать полное имя данных /aa.data.

  • Переименовать одно из состояний, содержащих data.

  • Заключить состояние верхнего уровня aa в рамке или в другом состоянии. Добавление корпуса не позволяет процессу поиска обнаружить данные в состоянии верхнего уровня.

Связанные темы