exponenta event banner

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

Символы

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

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

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

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

  • Имя, соответствующее символу

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

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

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

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

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

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

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

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

  3. Базовое рабочее пространство MATLAB (см. Создание и редактирование переменных) или, если модель связана со словарем данных, словарь (см. Что такое словарь данных?). Если для словаря данных выбрано свойство Включить доступ словаря к основной рабочей области, поиск рассматривает словарь и базовую рабочую область как единое пространство имен.

Примечание

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

Параметры Input и Initial не загружают данные из словаря данных. Если модель использует словарь данных и доступ модели к базовой рабочей области отключен, параметры состояния Ввод (Input) и Начальный (Initial) по-прежнему имеют доступ к данным в базовой рабочей области.

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

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

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

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

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

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

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

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

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

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

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

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

  • Укажите адресаты зарегистрированных данных

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

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

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

  • All

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

  • None

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

  • ExplicitOnly

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

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

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

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

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

Разрешение, возникающее из-за того, что параметр «Имя сигнала» должен разрешаться в объект сигнала Simulink, требует явного разрешения символа. Разрешение, возникающее только на основе совпадения имен без явной спецификации, называется неявным разрешением символа.

Совет

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

См. также

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