12 - 2008

Triggered Scripts (событийные сценарии) — новое средство автоматизации работы в E3.series

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

Триггеры

Скрипты

Triggered Scripts

Управление триггерами

Примеры использования

Заключение

Ссылки

Настоящая статья продолжает ряд публикаций, посвященных нововведениям в E3.series. В ней рассмотрен новый механизм автоматизации работы пользователя с помощью Triggered Scripts.

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

Популярность продукт получил благодаря следующим аспектам:

  • в основе работы программы лежат фундаментальные законы электротехники;
  • развитый и продуманный функционал Редактора базы данных;
  • применение скриптов (функциональных макросов), благодаря которым в E3.series можно в автоматическом режиме получить выходную документацию практически любого вида;
  • поддержка русского языка на уровне ядра программы, а начиная с версии 2008 — полная поддержка Unicode;
  • наличие качественной русскоязычной технической поддержки.

Разумеется, это неполный список преимуществ E3.series, но именно вышеназванные факторы являются ключевыми.

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

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

  • автоматическое наследование атрибутов родительского элемента дочерним элементом;
  • автоматическое присвоение кода Места/Устройства изделию, размещенному на листе или в области листа;
  • автоматическое присвоение имен (позиционных обозначений) элементам сборки согласно заданному правилу.

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

Перед тем как дать определение понятия Triggered Scripts и разобраться, в каком контексте разработчики E3 . series предлагают его использовать, важно рассмотреть определения слов Trigger (триггер) и Script (скрипт, сценарий).

Триггеры

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

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

Скрипты

Те из пользователей, кто хоть раз сталкивался с E3.series, знают о значимости применения скриптов в программе. По сути, скрипт (от англ. script — скрипт, сценарий, макрос) — это обыкновенный текстовый файл, содержащий набор команд на определенном языке программирования. Скрипты для E3.series создаются на VBScript (Visual Basic Script Edition, VBS). Этот язык является урезанной версией языка Microsoft Visual Basic, поэтому для тех, кто программировал на Visual Basic или VBA, язык VBScript окажется хорошо знакомым.

Имя интерфейса

Версия E3.series / число методов

2006

2007

2008

IApplicationInterface

92

100

106

IJobInterface

447

489

535

IBundleInterface

33

33

33

IAttributeInterface

12

12

13

IComponentInterface

13

13

15

IConnectionInterface

34

34

34

IDeviceInterface

108

110

116

IExternalDocumentInterface

12

12

27

IFieldInterface

35

35

35

IGraphInterface

60

61

61

IModuleInterface

22

22

22

IModulePortInterface

11

11

11

INetSegmentInterface

42

42

42

IOptionInterface

12

12

12

IOutlineInterface

12

12

12

ISheetInterface

67

76

76

ISignalInterface

21

21

25

ISupplyInterface

16

16

16

IPinInterface

104

104

114

ISymbolInterface

57

64

84

ITestpointInterface

18

18

18

ITextInterface

41

41

46

IVariantInterface

8

8

8

ISlotInterface

6

6

6

IBoardInterface

7

7

7

ILayerInterface

6

6

6

INetInterface

15

15

15

IUserMenuItemInterface

24

24

28

IBinDataInterface

2

2

2

IStructureNodeInterface

18

23

23

ITreeInterface

11

24

24

IDimensionInterface

-

34

34

IDllInterface

-

-

3

Суммарное число методов

1366

1487

1609

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

Рис. 1. Принцип именования триггеров

Рис. 1. Принцип именования триггеров

HKEY_LOCAL_MACHINE\SOFTWARE\CIM-Team\E3.series\<version>\Triggered-Scripts
где:
<version> — число, указывающее версию E3.series (на момент написания статьи триггеры поддерживались только E3.series 2008 — версией 9.0)

Рис. 2. Путь к разделу реестра для регистрации триггеров

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

Triggered Scripts

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

Таблица 2. Список триггеров, реализованных в E3.series 2008

Имя триггера

Момент запуска триггера

AfterChangeComponentCode

После изменения, удаления типа изделия или провода

AfterCreateComponent

После создания нового изделия в Редакторе баз данных

AfterCreateModel

После создания новой модели в Редакторе баз данных

AfterCreateSymbol

После создания нового символа в Редакторе баз данных

AfterDeleteComponent

После удаления изделия в Редакторе баз данных

AfterModifyAttribute

После добавления, изменения или удаления атрибута

AfterModifyDeviceName

После изменения позиционного обозначения (имени) изделия

AfterModifySymbol

После размещения и изменения символа

AfterOpenProject

После открытия файла проекта

AfterPlacePart

После размещения шаблона схемы из базы данных или меню

AfterSaveComponent

После сохранения изделия в Редакторе баз данных

AfterSaveModel

После сохранения модели в Редакторе баз данных

AfterSaveSymbol

После сохранения символа в Редакторе баз данных

AfterUpdateBlock

После добавления и обновления блока

AfterWireConnected

После вставки (назначения) провода

AfterWireDisconnected

После отсоединения провода

BeforeCheckInSheet

Перед проверкой работы в текущем листе (многопользовательский режим)

BeforeCheckOutSheet

Перед проверкой работы вне текущего листа (многопользовательский режим)

BeforeCloseProject

Перед закрытием файла проекта

BeforeDeleteComponent

Перед удалением изделия

BeforeDeleteModel

Перед удалением модели

BeforeDeleteSymbol

Перед удалением символа

BeforeEditComponent

Перед редактированием изделия

BeforeEditModel

Перед редактированием модели

BeforeEditSymbol

Перед редактированием символа

BeforeMoveSymbol

Перед смещением символа

BeforeSaveProject

Перед сохранением файла проекта

Далее для упрощения изложения материала Triggered Scripts мы будем называть просто триггерами, а запуск связанного с ним скрипта — запуском триггера.

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

  • Before — триггер запускается до выполнения связанного с ним события;
  • After — триггер запускается после выполнения события.

Каждый триггер имеет уникальное имя. Для того чтобы упростить работу с триггерами, их именование подчинено определенному правилу. Сначала указывается ключевое слово Before или After, то есть момент запуска, а затем — имя события. На рис. 1 показан принцип именования триггеров. Так, по имени AfterOpenProject можно определенно сказать, что триггер будет выполняться всякий раз после события открытия проекта.

Полный список триггеров, реализованных в E3.series2008, приведен в табл. 2.

Информация, связывающая определенный триггер со скриптом, хранится в системном реестре Windows. Для того чтобы зарегистрировать триггер, нужно в разделе реестра (рис. 2) создать строковый параметр (тип параметра REG_ SZ). Его имя должно совпадать с одним из поддерживаемых триггеров (см. табл. 2). А в качестве значения созданного параметра нужно указать абсолютный путь к файлу скрипта (рис. 3).

Рис. 3. Регистрация триггера

Рис. 3. Регистрация триггера

При запуске система E3.series сканирует данный раздел реестра и хранит в оперативной памяти все зарегистрированные в системе триггеры.

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

Однако при работе с триггерами нужно учитывать несколько особенностей. Во-первых, вызов триггера — это внутренний вызов скрипта, в котором объект E3.series создается методом WScript.CreateJobObject(). Во-вторых, разработчики предусмотрели специальные методы, при помощи которых в скрипте можно получить идентификаторы модифицированных элементов. Это методы GetLastAddedItems() и GetLastModifiedItems(). И наконец, в-третьих, триггеры могут возвращать значения (более подробно об этом см. в описании методов GetTriggerReturn() и SetTriggerReturn().

В случае возникновения ошибок в скрипте E3.series перехватывает все сообщения и отображает их в своем стандартном окне вывода информации (рис. 4).

Рис. 4. Перехват сообщения об ошибке в скрипте

Рис. 4. Перехват сообщения об ошибке в скрипте

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

Управление триггерами

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

Рис. 5. Triggered Scripts Manager — приложение для управления триггерами

Рис. 5. Triggered Scripts Manager — приложение для управления триггерами

Чтобы упростить работу с триггерами, предлагается применять приложение (скрипт) Triggered Scripts Manager (рис. 5). В его основном окне можно выделить такие элементы:

1 Версия E3.series (Version E3) — в системе может быть инсталлировано несколько версий программы. Данный список позволяет управлять триггерами для различных версий. Напомним, что на момент написания статьи триггеры поддерживались только 9-й версией программы.

2 Имя триггера (Trigger Name ) — список содержит имена всех поддерживаемых триггеров для выбранной версии программы. Выберите нужный триггер, чтобы зарегистрировать, изменить его параметры или удалить.

3 Показать только используемые триггеры (Show Only Used Triggers ) — если выбрана эта опция, то в списке имен триггеров (2) будут присутствовать имена только тех триггеров, которые уже зарегистрированы в системе.

4 Путь к файлу скрипта (File Path) — в этом поле указывается абсолютный путь к файлу скрипта или внешней программы.

5 Редактор скрипта (Script Editor ) — позволяет производить ввод кода скрипта и/или его редактирование. Если в поле (4) указан путь к уже существующему файлу, то в поле редактора отобразится содержимое скрипта.

6 Выключить редактор (Editor Disabled) — если выбрана эта опция, то поле (5) редактора будет неактивным и внести изменения в код скрипта будет невозможно.

Кнопка Сохранить (Save) сохранит данные о триггере, то есть зарегистрирует его в системе, а кнопка Удалить (Delete) удалит всю информацию о выбранном триггере.

Более подробная информация о том, как скачать Triggered Scripts Manager и его описание, приводится в разделе «Ссылки».

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

Примеры использования

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

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

Чтобы увидеть всю мощь триггеров в E3.series, далее мы рассмотрим более сложный вариант применения Triggered Scripts.

Как правило, системы АСУТП разбиты на отдельные контуры. Всем средствам автоматизации присваиваются позиционные обозначения (позиции), сохраняющиеся во всех документах проекта.

Зачастую позиции средствам автоматизации присваиваются на основании позиции контура, в состав которого они входят. Буквенно-цифровые обозначения как контуров АСУТП, так и всех их элементов регламентируются ГОСТ 21.404-85. Порядок расположения буквенных обозначений должен быть следующим: обозначение основной измеряемой величины; обозначение, уточняющее (если необходимо) основную измеряемую величину; обозначение функционального признака. Далее следует нумерация контура. Это может быть как порядковый номер контура, так и любая другая информация (номер объекта, код технологической стадии и т.д.). Например, в состав контура с позицией PICAHL2311 могут входить устройства: PT2311, PVS2311 и т.д.

Присвоение имени цепи для вывода изделия также можно подчинить определенному правилу. Довольно распространенной практикой является именование цепи по позиции прибора и имени его вывода (контакта). Например, имя цепи, подключенной к выводу 1 устройства PT2311, будет PT2311-1.

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

Более подробно о том, как скачать демонстрационное видео работы с триггерами для описанного примера, см. в разделе «Ссылки».

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

Заключение

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

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

Подводя итог, можно сказать, что Triggered Scripts — это новый инструмент, которым необходимо научиться пользоваться. Или если не научиться, то хотя бы ознакомиться с ним, ведь, как известно, «осведомлен — значит вооружен!».

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

Ссылки

Интернет-ссылки для скачивания всего прилагаемого к настоящей статье материала находятся на форуме поддержки русскоязычных пользователей E3.series по адресу: http://forum.e3series.ru/viewtopic.php?f=13&t=68.


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

Инженер-проектировщик отдела Автоматизации Украинского филиала «Управляющая компания “РусГазИнжиниринг”», г.Северодонецк, Украина.

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

САПР и графика 12`2008