Разрешение символа

Символы

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

Символ, который предоставляет значение или определение, должен быть легальным MATLAB® идентификатор. Такой идентификатор начинается с буквенного символа, за которым следуют алфавитно-цифровые символы или символы подчеркивания до длины, заданной функцией namelengthmax. Вы можете использовать функцию isvarname для определения, является ли символ допустимым идентификатором MATLAB.

Символ предоставляет значение или определение в модели Simulink путем соответствия некоторому элементу, который:

  • Существует в доступной рабочей области

  • Имеет имя, совпадающее с символом

  • Предоставляет необходимую информацию

Процесс разрешения символа

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

Когда программа Simulink компилирует модель, она пытается разрешить каждый символ в модели, кроме символов в коде MATLAB, который запускается в коллбэке или как часть инициализации маски. В зависимости от конкретной ситуации, элемент, которому разрешается символ, может быть переменной, объектом или функцией.

Simulink пытается разрешить символ путем поиска в доступных рабочих областях в иерархическом порядке для переменного MATLAB или объекта Simulink, имя которого совпадает с именем символа.

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

  1. Любые рабочие области маски в порядке от блока вверх (см. Основы маскирования).

  2. Рабочее пространство модели модели, которая содержит блок (см. Рабочие пространства модели).

  3. Базовое рабочее пространство MATLAB (см. «Создание и редактирование переменных») или, если модель связана со словарем данных, словарь (см. «Что такое словарь данных?»). Если в словаре данных выбрано Enable dictionary access to base workspace свойство, поиск рассматривает словарь и базовое рабочее пространство как одно пространство имен.

Примечание

Если модель ссылается на конфигурацию модели, который хранится в базовом рабочем пространстве, поиск начинается в базовом рабочем пространстве. В отличие от конфигурации модели, который присоединен к модели, конфигурация модели, находящийся в базовом рабочем пространстве, не имеет доступа к рабочему пространству модели.

Параметры Input и Initial state не загружают данные из словаря данных. Когда модель использует словарь данных и вы отключаете доступ модели к базовому рабочему пространству, параметры Input и Initial state все еще получают доступ к данным в базовом рабочем пространстве.

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

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

Если модель, которая содержит символ, является ссылочной моделью, и поиск достигает рабочего пространства модели, но не преуспевает там, поиск переходит непосредственно к базовому рабочему пространству или словарю данных, не пытаясь разрешить символ в рабочей области любой родительской модели. Таким образом, заданный символ разрешается к тому же элементу, независимо от того, является ли модель, которая содержит символ, ссылочной моделью. Для получения информации о ссылках на модели см. Модели-ссылки.

Числовые значения с символами

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

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

Например, предположим, что параметр Gain блока Gain задан как cos(a*(b+2)). Символ cos разрешится к функции косинуса MATLAB, и a и b должен разрешиться к числовым значениям, которые могут быть получены из тех же или разных типов элементов в одной или разных рабочих областях. Если символы разрешаются до числовых значений, значение, возвращаемое функцией косинуса, становится значением параметра Gain.

Другие значения с символами

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

Другое распространенное использование символов - называть объекты, которые обеспечивают определения какого-либо рода. Для примера имя сигнала может разрешиться к объекту сигнала (Simulink.Signal), который определяет свойства сигнала, и параметр Bus Creator block Data type может называть шинный объект (Simulink.Bus), который определяет свойства шины. Вы можете использовать символы для многих целей, включая:

  • Определите типы данных

  • Укажите источники входных данных

  • Укажите места назначения записанных данных

Для иерархического разрешения символов все эти различные использования символов, будь то по отдельности или в выражениях, одинаковы. Каждый символ разрешается, по возможности, независимо от любых других, и результат становится доступным там, где символ появился. Единственным различием одного символа от другого является конкретный элемент, которому символ разрешает, и использование этого элемента. Единственным требованием является то, что каждый символ должен разрешиться к тому, что может законно появиться в местоположении символа.

Предельное Разрешение Сигнала

Иерархическое разрешение символа по умолчанию проходит полный путь поиска файлов. Можно обрезать путь поиска файлов, используя опцию Permit Hierarchical Resolution любой подсистемы. Эта опция управляет тем, что происходит, если поиск достигает этой подсистемы, не разрешаясь в переменную рабочей области. Значения Permit Hierarchical Resolution:

  • All

    Продолжите поиск иерархии рабочей области, пытаясь разрешить символ. Это значение по умолчанию.

  • None

    Не продолжайте поиск иерархии.

  • ExplicitOnly

    Продолжите поиск иерархии, только если символ задает параметры блоков значение, память хранилища данных (где нет блока) или сигнал или состояние, которое явно требует разрешения. Не продолжайте поиск неявного разрешения. Дополнительные сведения см. в разделе Явное и неявное разрешение символов.

Если поиск не находит совпадение в рабочей области и заканчивается, потому что значение ExplicitOnly или NoneSimulink оценивает символ как функцию. Поиск выполняется успешно или не выполняется в зависимости от результата оценки, как описано выше.

Явное и неявное разрешение символов

Модели и некоторые типы сущностей модели имеют связанные параметры, которые могут влиять на разрешение символа. Например, предположим, что модель включает сигнал с именем Amplitude, и что a Simulink.Signal объект с именем Амплитуда существует в доступной рабочей области. Если выбрана опция Signal name must resolve to Simulink signal object сигнала Amplitude, сигнал разрешится к объекту. Для получения дополнительной информации см. раздел «Управление свойствами сигнала».

Если опция не проверена, сигнал может разрешиться или не разрешиться к объекту, в зависимости от значения Configuration Parameters > Data Validity > Signal resolution. Этот параметр может подавить разрешение для объекта, даже если объект существует, или может указать, что разрешение происходит только на основе совпадения имен. Для получения дополнительной информации см. раздел Параметры конфигурации модели: диагностика валидности данных > Разрешение сигнала.

Разрешение, которое происходит, потому что такая опция, как Signal name must resolve to Simulink signal object, требует, называется явным разрешением символа. Разрешение, которое происходит на основе только совпадения имен, без явной спецификации, называется неявным разрешением символа.

Совет

Неявное разрешение символа может быть полезно для быстрого прототипирования. Однако, когда вы завершили разработку прототипа, рассмотрите использование явного разрешения символа, потому что неявное разрешение замедляет эффективность, усложняет валидацию модели и может иметь недетерминированные эффекты.

См. также

Похожие темы