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

Описания RDS

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

Глава 1. Необходимые сведения об устройстве RDS

§1.2. Блоки и связи в RDS, их типы и основные параметры

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

## Глава 1. Необходимые сведения об устройстве RDS

### §1.2. Блоки и связи в RDS, их типы и основные параметры

Кратко описываются типы блоков, из которых в RDS состоит каждая схема, особенности каждого из этих типов, а также общие параметры блоков и способ их соединения.

Схема в RDS состоит из набора отдельных блоков, соединенных друг с другом связями. Блоку может ставиться в соответствие функция-модель во внешней библиотеке (DLL), определяющая его реакцию на различные события и действия пользователя. Блоки либо добавляются в схему из библиотеки или панели блоков, либо создаются пользователем самостоятельно. В схеме они могут выглядеть по-разному: большинство блоков, выполняющих простые функции, изображается прямоугольниками с текстом или значком внутри (например, стандартный интегратор обычно изображается квадратом со знаком интеграла), более сложные блоки могут иметь анимированные изображения, изменяющиеся в зависимости от состояния блока (например, индикаторы и графики). Изображение блока создается его разработчиком, но, в некоторых пределах, может быть изменено пользователем (см. §2.9.1 и §2.10).

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

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

Все блоки в RDS принадлежат к одному из пяти типов:

Рис. 2. Простой блок
с подключенными связями

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

Рис. 3. Подсистема с внешними
входами «Input1» и «Input2» и
выходом «Output1»

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

Рис. 4. Ввод шины в подсистему

- Ввод шины – блок, позволяющий соединить шину внутри подсистемы с шиной снаружи. Число таких вводов в подсистеме не ограничено. Для того, чтобы соединить внутреннюю и внешнюю шины, необходимо добавить в подсистему ввод, соединить с ним внутреннюю шину, а затем соединить внешнюю шину с подсистемой, указав имя этого ввода (можно действовать и в обратной последовательности). Соединенные шины имеют один и тот же набор каналов и обеспечивают передачу данных между подсистемами. Например, на рис. 4 изображены две шины с тремя каналами «Alpha», «Beta» и «Gamma» каждая. В верхней части рисунка изображена шина в основной подсистеме – в ней данные с полей ввода поступают в каналы «Alpha» и «Beta», а данные с канала «Gamma» подаются на индикатор. Эта шина через ввод «Port1» соединена с подсистемой «Sys2», соединенная шина внутри которой получает данные для канала «Gamma» с поля ввода и выдает данные каналов «Alpha» и «Beta» на индикаторы.

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

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

Каждый блок схемы имеет имя, уникальное в его родительской подсистеме. Имя блока – это строка произвольной длины, которая не может содержать символов двоеточия, доллара и коммерческого AT (« : », « $ » и « @ »). При добавлении в схему нового блока ему автоматически присваивается уникальное имя, основанное на его типе или, если он – стандартный, его имени в библиотеке. Позже это имя может быть изменено пользователем. Имя блока обычно отображается в окне подсистемы непосредственно под изображением этого блока, но, при необходимости, оно может быть перемещено или вообще отключено. Можно также отключить отображение всех имен блоков в конкретной подсистеме при помощи пункта главного меню или кнопки в окне подсистемы.

Поскольку в разных подсистемах блоки могут иметь одинаковые имена, для однозначного указания конкретного блока схемы используется его полное имя. Полное имя блока начинается с двоеточия, за которым следует последовательное перечисление через двоеточие всех имен подсистем на пути от корневой подсистемы до этого блока, которое завершается именем самого блока. Например, полное имя «:Sys1:Sys100:Block1» говорит о том, что блок с именем Block1 находится в подсистеме Sys100, которая, в свою очередь, находится в подсистеме Sys1 корневой подсистемы. Полные имена блоков могут использоваться в сообщениях об ошибках, в окне информации о схеме, в списке результатов при поиске блоков и т.п.

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

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

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

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

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

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

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

Для управления видимостью блоков и связей кроме слоев можно использовать еще и классы. Класс – это созданное пользователем множество с произвольным именем, к которому может принадлежать блок, связь или шина, причем каждый объект может принадлежать одновременно к нескольким классам или не принадлежать ни к одному. В отличие от слоев, набор которых может отличаться в разных подсистемах, классы создаются для всей схемы в целом. В подсистемах индивидуально задается только видимость отдельных классов – хотя набор классов и общий, в разных подсистемах могут быть видимыми разные классы. Редактирование списка классов описано в §2.12.2. Принадлежность к классам задается в окнах параметров блоков, связей и шин, а также через окно групповой установки.