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

Описания RDS

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

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

§2.7. Создание и изменение связей

§2.7.2. Изменение внешнего вида, параметров и конфигурации связи

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

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

### §2.7. Создание и изменение связей

#### §2.7.2. Изменение внешнего вида, параметров и конфигурации связи

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

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

Задание внешнего вида всей связи производится при помощи окна ее параметров, которое можно вызвать либо дважды щелкнув в режиме редактирования на любой линии или любом узле связи, либо нажав на связи правую кнопку мыши и выбрав в контекстном меню пункт «параметры». Окно содержит три вкладки: «внешний вид», «соединения» (рис. 48) и «дополнительно» (рис. 53).

(а)

(б)

Рис. 48. Вкладки окна параметров связи «внешний вид» (а) и «соединения» (б)

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

- «Тип» – выпадающий список, в котором можно выбрать тип линии связи: сплошная, пунктирная и т.п.
- «Толщина» – поле для ввода толщины линий связи в точках экрана (при увеличении масштаба в окне подсистемы толщина будет изменяться, поэтому в поле вводится толщина для масштаба 100%).
- «Цвет» – кнопка, открывающая диалог выбора цвета связи. Этим цветом будут изображаться все линии, узлы и стрелки данной связи, а также имена переменных рядом с ее конечными узлами. Шрифт имен переменных отдельно не задается, он общий для всех связей в подсистеме и указывается в окне параметров подсистемы.
- «Размер узла» – поле ввода для задания диаметра кругов, которые рисуются в точках ветвления связи. Диаметр указывается в точках экрана для масштаба 100%, при задании нулевого диаметра круги рисоваться не будут.
- «Длина стрелки» – поле ввода для задания длины стрелок, которые рисуются на связи около входов блоков. Длина указывается в точках экрана для масштаба 100%, при задании нулевой длины стрелки рисоваться не будут.
- «Выступ стрелки» – поле ввода для задания половины ширины задней части треугольной стрелки. Значение указывается в точках экрана для масштаба 100%, при задании нулевого выступа стрелки рисоваться не будут.

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

Рис. 49. Отключенная связь

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

Список соединяемых связью переменных состоит из четырех колонок. В крайней левой колонке, не имеющей заголовка, отображается иконка, символизирующая роль данной переменной в блоке: вход (кружок со стрелкой к нему) или выход (кружок со стрелкой от него). В колонке «переменная» отображаются имена блока и переменной в нем, разделенные двоеточием. В колонке «тип» выводится название типа данной переменной. В крайней правой колонке без заголовка выводится «OK», если соединение с переменной в порядке, или одна из двух иконок, указывающих на ошибку: красный треугольник, если переменной с указанным именем нет в блоке (рис. 50) или желтый круг, если если эта переменная – выход, а связь уже подключена к какому-либо выходу блока (рис. 51), или если тип переменной не совместим с типом данных, передаваемых связью (рис. 52). Такая же иконка будет отображаться в окне подсистемы поверх узла, соединяющего связь с блоком. Выбрав имя переменной в списке, можно прочесть описание ошибки в нижней части вкладки.

Рис. 50. Ошибка в соединении:
переменной «Var» нет в блоке «Int2»

Рис. 51. Ошибка в соединении:
соединены два выхода блока

Рис. 52. Ошибка в соединении: выход типа
double не может быть подключен к матрице

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

Рис. 53. Вкладка «дополнительно» окна параметров связи

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

Рис. 54. Окно добавления и редактирования параметра связи

На вкладке «текст» окна параметров связи (рис. 55) задается пояснительный текст, который может отображаться в произвольном месте рядом с линией этой связи.

Рис. 55. Вкладка «текст» окна параметров связи

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

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

Если для схемы заданы какие-либо классы объектов, в окне параметров связи будет присутствовать вкладка «классы» (рис. 56), на которой можно включить связь в один или несколько классов схемы. При отсутствии в схеме классов эта вкладка не отображается.

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

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

Рис. 57. Выделенная связь

Связи, как и блоки, могут быть выделены для проведения с ними каких-либо операций. При открытии окна параметров двойным щелчком или при вызове контекстного меню связь выделяется автоматически, но ее можно выделить и вручную, щелкнув на ней в режиме редактирования левой кнопкой мыши. Все узлы выделенной связи помечаются круглыми маркерами, середины всех ее отрезков помечаются маркерами в форме ромбов (если в настройках RDS маркеры отрезков не отключены), а все имена соединяемых связью переменных отображаются инверсно. Кроме того, вокруг прямоугольной области, занимаемой связью, рисуется шесть стандартных маркеров выделения (рис. 57). Как и блоки, связи можно добавлять к выделенным объектам или исключать из них, щелкая на них левой кнопкой с нажатой клавишей Shift. При выделении прямоугольной области рабочего поля попавшие внутрь рамки связи также становятся выделенными. Выделенные блоки и связи перемещаются, копируются и удаляются как единое целое. Однако, в выделении и перемещении связей есть несколько особенностей.

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

Рис. 58. Перемещение связи:
узлы соединения с блоками
остаются на месте

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

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

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

(а)

(б)

(в)

Рис. 59. Последовательность перемещения узла связи

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

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

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

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

(а)

(б)

(в)

Рис. 60. Последовательность перемещения отрезка связи

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

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

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

Рис. 61. Выбор стандартного положения имени переменной

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

(а)

(б)

(в)

Рис. 62. Последовательность перемещения имени переменной

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

Для выключения или включения отображения имени переменной рядом с узлом следует нажать на узле (или на самом имени переменной) правую кнопку мыши и выбрать в контекстном меню пункт «показывать имя» (см. рис. 61). Если имя отображалось, этот пункт будет помечен галочкой, и после его выбора имя переменной будет скрыто. Если имя не отображалось, галочки возле пункта не будет, и после его выбора имя переменной будет отображаться. RDS помнит положение имени переменной для каждого конечного узла связи даже если имя скрыто, поэтому при включении отображения имени оно появится на том же месте, на котором находилось в момент отключения. Настройки отображения имени переменной, сделанные в списке переменных блока используются только в момент создания связи, после этого скрывать и показывать имя переменной можно по желанию в любой момент. Разумеется, если отображение имен переменных отключено для всей подсистемы, имена не будут показаны независимо от установок в конечных узлах связей.

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

(а)

(б)

(в)

Рис. 63. Преобразование прямой линии в кривую Безье

Сразу после преобразования в кривую линия визуально остается прямой из-за того, что маркеры касательных размещаются на самой линии. Их можно перетаскивать левой кнопкой мыши (рис. 64), при этом форма кривой будет изменяться. Для преобразования кривой обратно в прямую следует снова вызвать контекстное меню линии и выбрать в нем пункт «сделать прямой», который у кривых линий выводится вместо пункта «сделать кривой» (см. рис. 63 б).

(а)

(б)

(в)

(г)

(д)

Рис. 64. Перемещение касательных кривой Безье

Если выделить связь и нажать клавишу Delete или выбрать в меню пункт «удалить», связь будет удалена целиком, вместе со всеми своими узлами и линиями. При помощи контекстного меню можно удалять отдельные узлы, линии и ветви связи.

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

- Выбран узел, к которому подходит только одна линия связи (например, точка соединения с блоком) – из связи будет удален выбранный узел и подходящая к нему линия (рис. 65). Если удаляемый узел соединялся с блоком или шиной, связь будет отсоединена.

Рис. 65. Удаление конечного узла

- Выбран узел, к которому подходит две линии связи (промежуточный узел) – из связи будет удален выбранный узел и подходящие к нему линии, а соседние с ними узлы будут соединены новой прямой линией (рис. 66).

Рис. 66. Удаление промежуточного узла

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

Рис. 67. Удаление точки ветвления

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

- Выбрана линия, на одном из концов которой находится конечный узел – линия и этот конечный узел будут удалены из связи. Если конечный узел соединялся с блоком, связь будет отсоединена (рис. 68).

Рис. 68. Удаление конечной линии

- Выбрана линия, на обеих концах которой находятся промежуточные узлы или точки ветвления – после предупреждения пользователю линия будет удалена, и связь разделится на две независимых связи (рис. 69).

Рис. 69. Удаление промежуточной линии

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

Рис. 70. Удаление ветви связи

Если в результате удаления узла, линии или ветви связи в этой связи останется только один узел, связь будет удалена целиком – в любой связи должно быть не менее двух узлов и одной линии.

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

(а)

(б)

Рис. 71. Добавление промежуточного узла: вызов контекстного
меню линии (а) и результат добавления (б)

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