Текущий раздел:

Описания RDS

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

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

§2.11. Использование подсистем

§2.11.4. Настройка параметров подсистемы и ее окна

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

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

### §2.11. Использование подсистем

#### §2.11.4. Настройка параметров подсистемы и ее окна

Рассматриваются настройки подсистемы, влияющие на ее поведение и внешний вид ее окна.

Подсистема в RDS представляет собой блок, внутри которого могут размещаться другие блоки. В схеме подсистема выглядит как обычный блок, а ее содержимое, то есть входящие в нее блоки и связи между ними, можно просматривать и редактировать в отдельном окне. У подсистемы, как и у любого блока, есть окно параметров. В нем можно задать и параметры этой подсистемы как блока (как блок будет выглядеть в схеме, связана ли с ним функция модели и т.п.), и параметры ее окна. Многие настройки окна подсистемы могут быть заданы кнопками самого окна и пунктами главного меню RDS (см. §2.3), но некоторые можно ввести только в окне параметров.

Пользователю не так уж часто приходится менять параметры подсистем. Чаще всего ему может потребоваться изменение внешнего вида блока подсистемы. Например, для подключения к подсистеме большого количества связей имеет смысл увеличить ее изображение, чтобы подходящие к этому изображению линии связей не накладывались друг на друга. Может также понадобиться изменить заголовок, цвет и размер рабочего поля окна, в котором открывается содержимое подсистемы – все эти параметры будут рассмотрены ниже. Подключение функции модели (функции во внешней библиотеке, определяющей реакцию подсистемы на различные события), и, тем более, автоматическая компиляция этой функции, в подсистемах используется крайне редко: модель подсистемы не может принимать участие в расчете. Фактически, модель к подсистемам подключают только в очень сложных схемах для анализа графа самой схемы или для нестандартной реакции на действия пользователя – например, для отработки щелчка мыши на пустом, то есть не занятом блоками, месте окна подсистемы. Тем не менее, окно параметров позволяет изменить все параметры, которые есть у подсистемы, по желанию пользователя.

Окно параметров подсистемы можно вызвать двумя способами. Во-первых, как и у любого блока, оно открывается при выборе пункта «параметры» контекстного меню блока этой подсистемы (рис. 214 а). Во-вторых, если окно подсистемы открыто, ее окно параметров можно вызвать, щелкнув правой кнопкой на свободном от блоков и связей месте рабочего поля этого окна и выбрав в появившемся меню пункт «параметры подсистемы» (рис. 214 б, этот пункт также присутствует в подменю «редактирование» главного меню RDS, если окно подсистемы находится на переднем плане). Окно параметров корневой подсистемы можно вызвать только вторым способом – у корневой подсистемы нет родительской, в которой она была бы видна как блок, поэтому и контекстное меню блока для нее вызвать неоткуда.

(а)

(б)

Рис. 214. Вызов окна параметров подсистемы через контекстное меню ее блока (а) или свободного места рабочего поля ее окна (б)

У простых блоков, внешних входов и выходов и вводов шин окно параметров может открываться по двойному щелчку на изображении блока. Открыть окно параметров подсистемы по двойному щелчку нельзя – даже если у подсистемы нет модели, перехватывающей обработку мыши, двойной щелчок на блоке подсистемы в RDS зарезервирован для открытия окна с ее содержимым и не может быть переназначен на открытие окна параметров (оно используется значительно реже).

Окно параметров подсистемы содержит вкладки «общие» (настройка общих параметров подсистемы), «внешний вид» (задание внешнего вида блока подсистемы в схеме), «переменные» (список входов и выходов подсистемы), «соединения» (список блоков, соединенных с этой подсистемой связями), «редактор» (настройки окна подсистемы), «DLL» (подключение к подсистеме функции модели) и «компиляция» (подключение к подсистеме функции модели, которая будет компилироваться автоматически). Вкладки «внешний вид», «соединения» и «компиляция» в точности совпадают с одноименными вкладками окна параметров простого блока (см. §2.9.1) – по внешнему виду, соединениям и способу подключения автокомпилируемой модели подсистема ничем не отличается от прочих блоков схемы. Другие вкладки окна имеют свою специфику, и их мы рассмотрим подробно.

На вкладке «общие» (рис. 215) в поле ввода «имя блока» можно изменить имя подсистемы, а на панели «комментарий» ввести какие-либо текстовые комментарии к ней – эти параметры у подсистем общие со всеми остальными типами блоков. Имя, как обычно, должно быть уникальным в родительской подсистеме (внутри одной подсистемы не может быть двух блоков с одинаковыми именами, независимо от их типа), комментарий может быть любым – в RDS он никак не обрабатывается.

Рис. 215. Вкладка «общие» окна параметров подсистемы

Ниже поля ввода имени блока можно задать реакцию подсистемы на двойной щелчок на ее изображении в режиме редактирования. Можно выбрать один из двух вариантов: открывать по двойному щелчку окно с содержимым этой подсистемы (это – действие по умолчанию) или передавать двойной щелчок в ее функцию модели, если она есть. Если к подсистеме не подключена функция модели, второй вариант выбрать нельзя, и по двойному щелчку будет всегда открываться окно подсистемы. Следует понимать, что имеется в виду именно двойной щелчок на изображении блока этой подсистемы, то есть не в окне этой подсистемы, а в окне ее родительской, где эта подсистема выглядит как блок.

В правой верхней части вкладки находится панель «заголовок окна», в которой можно задать текст, отображаемый в заголовке окна с содержимым этой подсистемы. По умолчанию в заголовке для всех подсистем, кроме корневой, выводится имя блока подсистемы, а для корневой – слово «система». Корневая подсистема тоже имеет имя, но, поскольку сама она в виде блока никуда не входит, это имя нигде в RDS не используется, и пользователь его может увидеть только в окне настроек корневой подсистемы, поэтому слово «система» в качестве заголовка окна для корневой более информативно. При желании, можно ввести для заголовка окна подсистемы любой текст – он будет отображаться не только в заголовке окна, но и на кнопках списка открытых окон и в меню «окна» главного окна RDS. Обычно в заголовках окон указывают назначение подсистемы (например, «система управления» или «панель приборов»), но RDS не накладывает никаких ограничений на этот текст и никак его не обрабатывает. Этот текст не влияет на имя блока подсистемы: если в поле ввода «имя блока» указано, например, «Sys1», подсистема будет называться «Sys1» и может быть найдена по этому имени, даже если в заголовке ее окна написано «регулятор» или «Sys1234».

Над панелью ввода комментария на вкладке «общие» располагается панель «обновление окна», в которой можно указать, как часто и каким образом будет перерисовываться содержимое окна подсистемы в режиме расчета. При расчете переменные блоков постоянно изменяются, и это обычно отражается на их внешнем виде. Чтобы показания блоков-индикаторов отражали текущее состояние схемы, RDS автоматически обновляет изображения всех окон с заданной частотой. Чем выше эта частота, тем плавнее будет анимация в окнах, но тем больше процессорного времени будет затрачивать система – на медленных машинах большое число открытых окон подсистем с высокой частотой обновления может привести к существенному снижению скорости работы, вплоть до того, что расчет не будет успевать за реальным временем. Частота обновления задается ступенчато от 0.25 Гц (один раз в четыре секунды) до 10 Гц (десять раз в секунду) независимо для каждого окна подсистемы. Для подсистем, не имеющих внутри индикаторов, графиков и анимированных изображений, можно вообще отключить автоматическое обновление, убрав флажок «автоматически»: в этом случае на всем протяжении расчета изображение окна изменяться не будет.

Ниже горизонтальной рукоятки задания частоты обновления находится флажок «в подсистеме только неподвижные не перекрывающиеся блоки», он определяет способ обновления окна в процессе расчета. По умолчанию этот флажок не установлен, при этом RDS обновляет с заданной частотой всю видимую в данный момент область рабочего поля подсистемы вместе со всеми блоками и связями. Если же установить этот флажок, RDS автоматически выделит прямоугольные области, занимаемые блоками, состояние которых изменилось, и обновит только эти области. Такое избирательное обновление существенно уменьшает нагрузку на процессор и увеличивает скорость работы, однако, оно не годится для подсистем, блоки которых могут перемещаться по рабочему полю, перекрывают друг друга или имеют прозрачные участки. Если блок перемещается, то прямоугольная область, которую он занимает, при обновлении окна будет все время находиться в разных местах. В момент очередного обновления блок будет нарисован на новом месте, но на старом, где он находился в прошлый раз, его изображение стерто не будет, и за движущимся блоком появится «хвост» из не стертых остатков его изображения. Если прямоугольные области блоков перекрываются, и состояние блока, находящегося ближе к переднему плану, не изменится перед очередным обновлением окна, он не будет нарисован, и его изображение может оказаться стертым блоком, находящимся дальше, но изменяющим состояние чаще. Если блок неподвижен, за ним нет других блоков, но изображение самого блока содержит прозрачные участки, на которых располагаются меняющиеся в процессе расчета изображения (например, цифры на прозрачном индикаторе), такой блок тоже будет рисоваться неправильно: меняющиеся изображения будут все время накладываться друг на друга, поскольку их фон не будет перерисовываться. Однако, если на прозрачных участках блока ничего не рисуется, изображение блока искажаться не будет: например, круглый стрелочный индикатор, вписанный в прямоугольную область блока, имеет четыре прозрачных участка по углам, но, поскольку все меняющиеся изображения находятся только внутри круга, прозрачные участки ими не затрагиваются, и то, что они не перерисовываются в процессе расчета, заметно не будет.

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

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

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

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

Рис. 216. Вкладка «переменные» окна параметров подсистемы

Список переменных на вкладке отличается по составу колонок от списка переменных простого блока. Он содержит следующие колонки:

- Крайняя левая колонка без имени указывает на роль переменной в подсистеме. В ней отображается иконка в виде стрелки, направленной к кругу, если переменная – вход, и круга со стрелкой от него, если переменная – выход. Внутренних переменных у подсистемы, в отличие от простого блока, быть не может.
- Колонка «имя» содержит имя переменной и комментарий к ней, если он есть. Комментарий к переменной вводится в параметрах соответствующего ей внешнего входа или выхода в поле имени переменной после пробела.
- Колонка «меню» содержит галочку, если имя данной переменной попадает в меню подключения связи (см. §2.7.1). Для включения переменной в меню или исключения ее из него следует щелкать на галочке в этой колонке.
- Колонка «блок» показывает имя внешнего входа или выхода, соответствующего этой переменной внутри подсистемы (чаще всего оно совпадает с именем самой переменной, но может и отличаться).

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

В правой нижней части вкладки располагаются кнопки со стрелками, позволяющие изменить порядок следования переменных в списке:

Кнопка | Действие
--- | ---
| Переместить выбранную переменную на одну позицию вверх по списку
| Переместить выбранную переменную на одну позицию вниз по списку

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

Вкладка «DLL» окна параметров подсистемы (рис. 217) тоже похожа на одноименную вкладку окна параметров простого блока – на ней тоже можно указать файл библиотеки, в которой находится функция модели, и имя этой функции, но для настройки реакций функции модели на действия пользователя у подсистемы есть еще одна, дополнительная, панель. Панель «настройки блока», общая с простым блоком, определяет реакции подсистемы как единого блока, то есть ее поведение внутри ее родительской подсистемы: будет ли блок подсистемы реагировать на мышь, выводить всплывающую подсказку и т.п. Панель же «настройки окна подсистемы» определяет реакции ее открытого окна, если ни один блок внутри этого окна не откликнулся на действие пользователя. Если, например, установить флажок «окно реагирует на мышь», то, при щелчке кнопкой мыши внутри открытого окна подсистемы, RDS сначала проверит, не находится ли в данной точке какой-либо блок, и, если он там есть, вызовет его реакцию. Если блок не может или отказывается реагировать на щелчок мыши, или если в данной точке рабочего поля нет блоков, будет вызвана реакция окна подсистемы. Так же обрабатывается и клавиатура: если в открытом окне ни один блок не среагировал на нажатие или отпускание клавиши, будет вызвана реакция самого окна. Следует отметить, что подключение моделей к подсистемам используется крайне редко, поэтому, как правило, пользователю нечего изменять на этой вкладке.

Рис. 217. Вкладка «DLL» окна параметров подсистемы

Вкладка «редактор» (рис. 218) – самая часто используемая вкладка окна параметров подсистемы, поскольку она определяет внешний вид окна самой подсистемы. Именно эта вкладка автоматически выбирается в окне параметров, если вызвать его через контекстное меню свободного участка рабочего поля окна (рис. 214 б) или при помощи пункта «параметры подсистемы» меню «редактирование» главного окна RDS.

Рис. 218. Вкладка «редактор» окна параметров подсистемы

В левой верхней части вкладки задается размер рабочего поля подсистемы: вводится его ширина и высота в точках экрана для масштаба 100%. Если размер рабочего поля окажется меньше размеров ее содержимого, часть блоков и связей может оказаться за пределами рабочего поля и к ним не будет доступа (в режиме расчета, тем не менее, они продолжат работать). Кнопка «по размеру схемы» устанавливает размеры рабочего поля так, чтобы все содержимое подсистемы уместилось на него.

Ниже, на панели «сетка», задается шаг и цвет сетки, по которой можно выравнивать блоки и узлы связей. Шаг вводится в точках экрана для масштаба 100% независимо по горизонтали и по вертикали. Если установлен флажок «показывать сетку», то сетка будет изображаться на рабочем поле цветными точками (цвет задается отдельной кнопкой). Если установлен флажок «привязка к сетке», то при создании и перемещении блоков и узлов связей RDS будет автоматически размещать их в точках сетки (визуально при этом блоки и связи будут двигаться рывками по позициям сетки). Эти флажки дублируются кнопками на панели элементов окна подсистемы.

В левой нижней части вкладки «редактор», на панели «имена переменных», можно включить или выключить отображение имен переменных рядом с точками подключенных к ним связей (флажок дублируется кнопкой на панели элементов окна подсистемы), а также задать шрифт, которым эти имена будут выводиться. Цвет шрифта не может быть задан – имя переменной всегда выводится цветом связи, подключенной к ней.

В правой верхней части вкладки располагается панель «оформление», на ней можно задать цвет фона и фоновый рисунок («обои») рабочего поля подсистемы, а также цвет, которым изображаются точки привязки блоков с векторными картинками – то есть начала координат этих картинок – если, конечно, в параметрах блока разрешено отображение точки привязки (разрешить или запретить ее отображение для конкретного блока можно на вкладке «внешний вид» окна его параметров). Цвет фона рабочего поля может быть задан двумя способами: можно либо разрешить использование стандартного цвета окна, заданного в настройках оформления Windows, либо установить флажок «настраиваемый» и явно указать желаемый цвет. При выборе стандартного цвета Windows окна подсистем будут иметь вид, более привычный пользователю. Например, если он установил в своей системе светло-серый цвет окна вместо стандартного белого, окна подсистем тоже будут иметь светло-серый фон. Однако, при этом подсистема будет выглядеть по-разному на разных машинах, что может оказаться для разработчика схемы неприятным сюрпризом. Если на машине разработчика фоновый цвет окна – белый, то он, создавая какую-либо сложную векторную картинку, может решить закрыть ее часть белым прямоугольником, считая, что эта часть картинки должна сливаться с фоном. При этом на машине пользователя, выбравшего для фона окон другой цвет, этот белый прямоугольник будет отчетливо виден. Если разработчик сталкивается с такими проблемами, ему следует либо изменить картинку блока так, чтобы не было необходимости закрывать ее части, либо жестко задать цвет фона подсистемы с этим блоком в схеме, которую он передает пользователю.

Обои – это фоновый рисунок, изображаемый под всеми блоками и связями подсистемы. Для управления им на панели «оформление» служат три кнопки: «загрузить», позволяющая загрузить растровый рисунок из файла в формате BMP, «вставить», позволяющая вставить рисунок из буфера обмена, и «очистить», стирающая фоновый рисунок из подсистемы (при этом рабоче поле будет иметь цвет, установленный на этой же панели выше). Слева от кнопок находится область предварительного просмотра текущего фонового рисунка. Флажок «заполнить» управляет способом рисования обоев на рабочем поле. Если он сброшен, указанный растровый рисунок будет выведен в верхнем левом углу рабочего поля (рис. 219 а). Если же он установлен, рисунок будет размножен по всему рабочему полю (рис. 219 б).

(а)

(б)

Рис. 219. Фоновый рисунок («обои») подсистемы при отключенном (а)
и включенном (б) режиме заполнения

Режим заполнения рабочего поля фоновым рисунком обычно используют для декорирования поля каким-либо изображением, само изображение при этом обычно выбирают достаточно небольшим и таким, чтобы его правый край без видимого шва стыковался с левым, а верхний – с нижним. Фоновые рисунки без заполнения обычно используют для вставки на рабочее поле каких-либо логотипов или фотографий, на фоне которых будет изображаться схема. Следует отметить, что этого же эффекта можно добиться, разместив на дальнем от переднего плана и не активном слое (см. §2.12.1) блока с векторной картинкой, в которую вставлен нужный растровый рисунок (создание векторных картинок описывается в §2.10).

В правой нижней части вкладки «редактор» находится панель «имена блоков», на которой можно включить или выключить отображение имен блоков в подсистеме (этот флажок дублируется кнопкой на панели элементов окна подсистемы), задать цвет и шрифт, которым будут выводиться эти имена, а также расстояние между именем блока и его изображением в одном из двух стандартных положений имени. RDS выводит имя блока либо на определенном расстоянии от изображения этого блока выше или ниже него по вертикали (при этом имя будет перемещаться вместе с блоком, а при изменении размеров блока положение имени будет автоматически подстраиваться под изменившиеся размеры), либо в точке, куда пользователь перетащил это имя мышью (при этом при перемещении блока имя будет все равно перемещаться вместе с ним, а при изменении размеров блока автоматически переводится в положение над или под ним). Интервал между блоком и его именем задается в точках экрана для масштаба 100%.

Остальные вкладки окна параметров подсистемы ничем не отличаются от вкладок окна параметров простого блока, которые описаны в §2.9.1.