Навигация:
<< >> Оглавление Указатель

Описание пользователя

Глава 2. Интерфейс пользователя

§2.10. Редактирование векторной картинки блока

§2.10.9. Дополнительная информация о связи картинки с переменными

Описываются особенности связи элементов векторной картинки с элементами массивов и полями структур, а также с динамическими переменными.

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

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

Вручную можно указывать не только имена пока не существующих переменных, но и поля структур, элементы массивов и т.п. Для этого используется обычный синтаксис RDS: имя поля структуры отделяется от имени структуры точкой, элементы массива указываются в квадратных скобках, индексы ячейки матрицы указываются в квадратных скобках через запятую. Например, указание в каком-либо поле ввода связи графического элемента с переменной текста «X[3]» подключает его к элементу массива «X» с индексом 3, «y.Re» – к полю «Re» структуры «y», и т.п. При этом, как и в случае простых переменных, не важно, существует ли в данный момент такая переменная или элемент массива с таким номером: как только он появится, элемент картинки установит с ним связь.

При необходимости можно связывать элементы картинки не только со статическими переменными блока, но и с динамическими, причем это могут быть динамические переменные не только самого блока, но и его родительской подсистемы или корневой подсистемы схемы. Для связи с ними используются специальные префиксы, начинающиеся со знака доллара и отделяемые от имени самой переменной точкой – точно так же, как поля структур отделяются от их имен. Всего существует четыре префикса: «$DYN», «$PARENT», «$SEARCH» и «$ROOT».

Префикс «$DYN» указывает на связь с динамической переменной того блока, которому принадлежит векторная картинка. Например, текст «$DYN.var1», введенный в поле ввода в окне параметров графического элемента, связывает этот элемент с динамической переменной «var1» этого самого блока. Этот префикс используется достаточно редко, поскольку обычно в нем нет необходимости: гораздо проще связать элемент со статической переменной этого блока, чем с динамической, для работы с которой требуется программная поддержка его модели. Пожалуй, единственный случай, когда картинке блока может потребоваться связь с динамической переменной этого же блока – это подсистема, у которой есть модель. Статические переменные подсистемы не имеют постоянной структуры и работать с ними из ее модели нельзя, поэтому, если модели требуется изменять внешний вид подсистемы, одна должна создать динамическую переменную и записывать в нее значения, которые будут влиять на внешний вид связанного с этой переменной элемента картинки.

Префикс «$PARENT» указывает на связь с динамической переменной родительской подсистемы, то есть подсистемы, непосредственно внутри которой находится блок с данной картинкой. Например, запись «$PARENT.DynTime» связывает элемент картинки с динамической переменной «DynTime» родительской подсистемы блока. Если в родительской подсистеме не окажется такой переменной, элемент будет вести себя как при отсутствии связи.

Префикс «$SEARCH» тоже связывает элемент с динамической переменной родительской подсистемы данного блока, однако, в отличие от «$PARENT», если в этой подсистеме не окажется нужной переменной, элемент попытается связаться с родительской подсистемой этой подсистемы. Если переменной не окажется и там, она будет искаться в следующей по иерархии подсистеме, и так вплоть до корневой подсистемы схемы.

Префикс «$ROOT» связывает элемент с указанной динамической переменной корневой подсистемы, если, конечно, там есть переменная с таким именем.

В качестве примера создадим блок, в картинку которого будет входить текстовая строка, связанная с переменной «$SEARCH.DynTime» (рис. 160 а). «DynTime» – это стандартная динамическая переменная, создаваемая блоком-планировщиком динамического расчета и содержащая текущее значение системного времени.

Связь текстовой строки с динамической переменной (а) и внешний вид блока в режиме расчета (б) 1

(а)

Связь текстовой строки с динамической переменной (а) и внешний вид блока в режиме расчета (б) 2

(б)

Рис. 160. Связь текстовой строки с динамической переменной (а) и внешний вид блока в режиме расчета (б)

Поместим в одну подсистему с этим блоком стандартный блок-планировщик и подключим числовой индикатор (см. пример в §2.4) к его выходу «Time», на котором он дублирует значение времени (рис. 160 б). «Time» – скрытый выход, поэтому при создании связи для его выбора придется воспользоваться пунктом меню «список»). Если запустить расчет, можно будет увидеть, как строка на изображении блока отображает текущее значение времени – оно будет совпадать со значением на числовом индикаторе.


<< >> Оглавление Указатель