2 - 2009

Иерархическое проектирование в E3.series

Дмитрий Чухран

Иерархия — закон управления сложностью

Реализация иерархий

Создание иерархических блоков

Иерархическое дерево проекта

Простая иерархия как принцип проектирования

Понятие иерархического порта

Понятие иерархического соединителя

Навигация по иерархии

В настоящей статье продолжен обзор нововведений в E3.series. Рассматривается иерархический принцип проектирования, реализованный в 2009-й версии, а также описаны основные положения данного подхода.

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

Иерархия — закон управления сложностью

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

Понятие иерархии используется очень широко, особенно в последнее время. Многие современные САПР поддерживают иерархическое проектирование, и E3.series не является исключением. Основная идея такого проектирования состоит в том, что целый фрагмент схемы можно поместить в «черный ящик» и тем самым упростить схемное описание. Более того, «черные ящики» можно вкладывать друг в друга, уменьшая при этом насыщенность представления. Уровень вложенности неограничен, однако существует критическая точка, при которой дальнейшее увеличение вложенности может существенно усложнить проект.

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

В начало В начало

Реализация иерархий

Роль «черных ящиков» в E3.series выполняет элемент типа «блок» (далее — блок). Это специфический объект модуля E3.cable, в общем случае представляющий функционально законченный узел. Условный графический образ (далее — УГО) блока — прямоугольник, геометрические размеры и другие свойства которого можно изменять динамически.

Начиная с версии E3.series 2009 блок наделен новым свойством — иерархичностью. Многоуровневое расположение иерархических блоков организует упорядоченную иерархию. Именно это позволило реализовать иерархическое проектирование.

Суть данного подхода состоит в том, что иерар­хический блок может включать любой лист проекта, будь то лист схемы, спецификации, компоновки шкафа или внедренный внешний файл. При этом листы проекта могут быть вложены на нужный уровень (рис. 1).

Рис. 1. Принцип иерархического проектирования в E3.series

Рис. 1. Принцип иерархического проектирования в E3.series

Процесс иерархического проектирования в E3.series может происходить в двух противоположных направлениях: сверху вниз — нисходящее проектирование и снизу вверх — восходящее проектирование. При нисходящем проектировании сначала создается иерархический блок, а затем формируется его содержимое. При восходящем проектировании наоборот — сначала создаются листы, которые будут составлять блок, а потом непосредственно сам иерархический блок.

В начало В начало

Создание иерархических блоков

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

Примечание. Количество способов создания блоков этим не ограничивается. Более подробно работа с блоками рассматривается в официальной справке к E3.series.

Чтобы превратить размещенный блок в иерархический, достаточно зайти по правому клику через контекстное меню в свойства изделия блока и во вкладке Блок выбрать опцию Иерархический блок (рис. 2). При этом для визуального различия УГО иерархического блока примет серый цвет.

Рис. 2. Определение иерархического блока

Рис. 2. Определение иерархического блока

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

Кроме того, теперь блоки могут выступать и как структурный элемент проекта. Для этого, как правило, используется механизм шаблонов структуры проектов. Шаблон в этом случае представляет собой текстовый XML-файл, в правила формирования которого разработчики добавили новый элемент <block> . В результате чего, назначив нужный шаблон, в контекстном меню проекта будет доступен пункт Блок (рис. 3).

Рис. 3. Блок как структурный элемент проекта

Рис. 3. Блок как структурный элемент проекта

В начало В начало

Иерархическое дерево проекта

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

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

В E3.series 2009 разработчики добавили новое условие сортировки листов, которое позволяет отсортировать листы иерархически, то есть согласно их уровню вложенности.

Чтобы отсортировать листы иерархически, необходимо перейти во вкладку Листы панели Окно Проекта, по правому клику на имени проекта вызвать контекстное меню и выбрать Параметры структурного дерева (рис. 4а).

В появившемся окне перейти во вкладку Сортировка и выбрать опцию Сортировать листы иерархически (рис. 4б).

Рис. 4. Иерархическая сортировка листов согласно их уровню вложенностиa

 

Рис. 4. Иерархическая сортировка листов согласно их уровню вложенностиb

Рис. 4. Иерархическая сортировка листов согласно их уровню вложенности

Примечание. Опция Сортировать листы иерар­хически будет доступна только при наличии в проекте хотя бы одного иерархического блока, необязательно размещенного на листе.

При этом листы проекта будут сгруппированы определенным образом. На рис. 5 показан пример иерархического дерева проекта. Как видите, на листе № 1 размещены два иерархических блока с позиционными обозначениями (позициями) А1 и А2. Блок А1, в свою очередь, содержит лист № 2, на котором размещены блоки А3 и А4.

Лист, на котором размещен текущий блок, будем называть корневым, а лист, который размещен внутри блока, — подчиненным. Так, для блока с позицией А3 лист № 2 будет корневым, а для блока А1 — подчиненным (см. рис. 5).

Рис. 5. Иерархическое дерево проекта

Рис. 5. Иерархическое дерево проекта

Из сказанного можно предположить, что иерар­хический блок может содержать несколько подчиненных листов и только один корневой. Но это не совсем так. Забегая вперед, скажем, что иерархический блок может иметь несколько корневых листов. Дело в том, что в E3.series блок можно представить несколькими отдельными символами, которые могут быть размещены на отдельных листах. Теперь, если быть более точным, можно сказать, что корневым будет называться лист, на котором размещен символ блока. Но поскольку блок может быть представлен несколькими символами, то и коневых листов у него может быть тоже несколько.

В начало В начало

Простая иерархия как принцип проектирования

В области САПР при иерархическом проектировании, как правило, применяют два типа иерархических структур:

  • простая иерархия — иерархическая структура без повторения одних и тех же фрагментов схемы, оформленных в виде иерархических блоков;
  • сложная иерархия — иерархическая структура с повторением одних и тех же фрагментов схемы, оформленных в виде иерархических блоков.

В E3.series возможно использование структуры только первого типа (см. рис. 1). Дело в том, что E3.series не является моделирующей системой. В ней каждое изделие представляет отдельное реальное устройство, которое в проекте можно применять только один раз. Исходя из этого очевидно, что использование второго типа невозможно.

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

Для того чтобы добавить лист внутрь блока, разработчики предусмотрели несколько способов:

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

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

Пользователям, имеющим опыт работы с блоками в E3.series, известно, что блок может содержать соединитель, который иногда называют блочным. Для тех, кто с этим понятием сталкивается впервые, поясним. Соединитель — это специальный объект E3.series, применяемый исключительно в модуле E3.cable. Физически соединители представляют собой элементы подключения кабелей и жгутов к приборам. Как видно из названия, блочный соединитель может быть размещен только на линии контура блока (но не на свободной области листа).

Для связи подчиненных листов с корневыми были введены два новых понятия: иерархический порт и иерархический соединитель.

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

В начало В начало

Понятие иерархического порта

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

Реализация интерфейса возможна только в случае наличия двух символов иерархического порта:

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

Примечание. Пользователи, имеющие опыт работы в системе OrCAD, наверняка заметили сходство работы с иерархическими блоками. Разница заключается лишь в том, что в OrCAD символ, размещенный на иерар­хическом блоке, называется контактом, а ответный символ, то есть символ, размещенный на подчиненном листе, — портом.

 Чтобы разместить символ иерархического порта, необходимо в окне Базы Данных перейти во вкладку Прочее и в группе Misc _ Hierarchy Port выбрать символ (рис. 6). Изначально в базе данных имеется всего один символ. Разумеется, для своих проектов можно создать собственные.

Рис. 6. Символ иерархического порта в базе данных

Рис. 6. Символ иерархического порта в базе данных

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

Рис. 7. Условие создания символа иерархического порта

Рис. 7. Условие создания символа иерархического порта

Напомним, что символ иерархического порта может быть размещен либо на иерархическом блоке, либо на его подчиненных листах.

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

Рис. 8. Управление размещением портов на иерархическом блоке

Рис. 8. Управление размещением портов на иерархическом блоке

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

После размещения портов возле блока появляется подсказка, уведомляющая проектировщика о том, какое количество иерархических портов еще не размещено на подчиненных листах. Например, на рис. 9 приведен блок, на подчиненных листах которого остались неразмещенными четыре порта.

Рис. 9. Иерархический блок с размещенными портами

Рис. 9. Иерархический блок с размещенными портами

При размещении порта на подчиненном листе блока также появляется окно (см. рис. 8), но отличие заключается в том, что теперь пользователю необходимо из представленного списка указать, какие именно порты нужно разместить в данный момент. Благодаря списку в окне Порт модуляпроектировщик теперь не должен помнить имена всех портов — E3.series делает это за него.

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

Рис. 10. Демонстрация сквозного проектирования в E3.series

Рис. 10. Демонстрация сквозного проектирования в E3.series

В начало В начало

Понятие иерархического соединителя

Иерархический соединитель, так же как и иерархический порт, используется в качестве интерфейса. Отличие состоит только в том, что соединитель здесь представлен отдельным изделием.

Чтобы определить иерархический соединитель, достаточно зайти в свойства блочного соединителя и выбрать опцию Соединитель как иерархический интерфейс (рис. 11).

Рис. 11. Определение иерархического соединителя

Рис. 11. Определение иерархического соединителя

Примечание. При размещении соединителя на иерархическом блоке данная опция будет выбрана автоматически.

После этого структура отображения изделия соединителя претерпит изменения. Теперь число контактов соединителя удвоится и будет представлено двумя группами:

  • контакты внешнего уровня (outer level);
  • контакты внутреннего уровня (inner level ).

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

Рис. 12. Пример иерархического соединителя

Рис. 12. Пример иерархического соединителя

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

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

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

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

В начало В начало

Навигация по иерархии

Осуществлять навигацию по уровням иерархии можно двумя способами: либо по иерархическому дереву проекта (см. рис. 5), либо при помощи пункта в контекстном меню.

Наличие тех или иных пунктов контекстного меню зависит от того, для какого элемента оно было вызвано. Наибольший интерес здесь представляет контекстное меню иерархического блока (рис. 13):

Рис. 13. Навигация по иерархии из контекстного меню

Рис. 13. Навигация по иерархии из контекстного меню

1) показать в структурном дереве;

2) в иерархическую структуру;

3) в иерархическую структуру в новом окне;

4) из иерархической структуры;

5) из иерархической структуры в новом окне.

При выборе пункта 1 в Окне Проекта будет отображено расположение блока в иерархическом дереве проекта. В случае выбора пункта 2 или 3 произойдет переход к замещающей схеме блока в текущем или в новом листе соответственно. Если блок еще не содержал подчиненного листа, то он будет создан автоматически. Пункты 4 и 5 позволяют перейти на один уровень выше в структурной иерархии проекта.

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

***

Подводя итог обзора, посвященного нововведению в E3.series — иерархическим структурам, необходимо отметить, что данный функционал доступен всем пользователям, имеющим лицензию для модуля E3.cable.

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

 

Используемая литература:

1) Воронин А.А., Мишин С.П. Оптимальные иерар­хические структуры. М.: ИПУ РАН, 2003.

2) Шалагинов А.В. Знакомство с пакетом OrCad 9.1// Компоненты и технологии. 2002. № 3.

3) Официальная справка E3.series.


Дмитрий Чухран

Дмитрий Чухран

Инженер-проектировщик отдела автоматизации.

Украинский филиал ООО «УК “РусГазИнжиниринг”» г.Северодонецк, Украина.

В 2004 году окончил Восточноукраинский национальный университет им. В.Даля по специальности «Автоматизация и компьютерно-интегрированные технологии».

В начало В начало

САПР и графика 2`2009