Фильтр по тематике

Работа со SCADA-системой GENESIS32. Часть 3

Часть 3

Вопрос 

Можно ли настроить автоматический перезапуск сервера GenBroker?

Ответ

Можно. Для этого следует воспользоваться возможностями автоматического перезапуска служб в операционных системах Windows 2000/XP. Соответственно, необходимо, чтобы сервер GenBroker был запущен как служба. Сделать это можно с помощью менеджера приложений GenTray, как показано на рис. 1, или вручную с помощью команды “C:\Program Files\ICONICS\GENESIS-32\Bin\GenBroker.exe” /service (установив путь, соответствующий расположению исполняемого модуля сервера GenBroker).



После этого необходимо открыть свойства службы GenBroker (Панель управления – Администрирование – Службы – ICONICS GenBroker, как показано на рис. 2), выбрать закладку «Восстановление» (Recovery) и установить «Перезапуск службы» (Restart the Service) через определенные интервалы времени или в случае сбоя, как показано на рис. 3.


Вопрос

Как можно вывести в текстовой строке название пункта меню, выбранного пользователем?

Ответ

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

  1. Создать в экранной форме всплывающее меню, имеющее структуру, показанную на рис. 4. Выбор пунктов «Объект 1...Объект 6» должен открывать всплывающие окна объектов, и название выбранного пункта должно отображаться в текстовой строке (рис. 5).


  2. Добавить в экранную форму динамические элементы «Параметр», связанные с локальными переменными ~~Uch~~ и ~~Obj~~, в которые будут записываться значения, соответствующие выбору пункта на каждом из уровней меню («Участок» и «Объект»).

  3. Для каждого из пунктов меню (динамический объект «Указание и щелчок») следует настроить инспектор свойств, как показано на рис. 6.

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

  4. Настроить ещё один сценарий, запуск которого будет производиться при возникновении события PickPostUp (рис. 7), происходящего в момент, когда пользователь отпустил клавишу мыши после щелчка на графическом объекте GraphWorX32, имеющем динамическое действие «Указание и щелчок».

    При этом в зависимости от значения локальной переменной, идентифицирующей пункт меню, название пункта меню будет записано в текстовую строку. Текст сценария приведён в листинге 2.

Вопрос

Опишите настройку открытия экрана при получении тревоги.

Ответ

  1. Откройте Конфигуратор Сервера тревог ICONICS (Пуск – Программы – ICONICS GENESIS32 — AlarmWorX32 — Alarm Server Configurator) и введите в поле Основной экран (закладка Общие параметры) полный путь к файлу экранной формы, который должен открываться при получении тревоги, как показано на рис. 8.

  2. Откройте свойства ActiveX-компонента AWXViewer, перейдите на закладку Подписка. Настройте подписку на сообщения сервера ICONICS Alarm Server, как показано на рис. 9, нажмите кнопку Изменить и перейдите на закладку Атрибуты.

  3. Для того типа событий, к которому принадлежит эта тревога (выход за предел, дискретное состояние, отклонение и т.д.), добавьте атрибут Исходный экран, как показано на рис. 10.

  4. Запомните номер атрибута, который будет ему присвоен, и закройте окно редактирования подписки.

  5. Перейдите на закладку Столбец и добавьте столбец, в котором будет находиться соответствующий атрибут, как показано на рис. 11.

  6. При получении тревоги щёлкните на строчке тревоги правой клавишей, выберите из выпадающего списка пункт Экран и загрузите экранную форму.

Вопрос

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


Ответ

Происходит это потому, что на Вашем компьютере установлен режим использования соединений GenBroker (GenBroker Configurator – «Закладка Клиент»), как показано на рис. 12, а на удалённом компьютере серверный модуль GenBroker, который необходим для организации соединения с ОРС-тегами через интерфейс GenBroker, не запущен. 


С помощью DataSpy Вы соединяетесь с удалённым тегом по интерфейсу DCOM, и в этом случае отсутствие работающего сервера GenBroker не мешает установлению соединения с удалённым узлом. Соответственно, решений в этом случае два:

  1. Отказаться от использования интерфейса GenBroker, выбрав в настройках GenBroker Configurator (рис. 12) флажок «Соединения ОРС».

  2. Запустить на удалённом узле сервер GenBroker как приложение или как службу NT, сделав это вручную с помощью команды “C:\Program Files\ ICONICS\GENESIS-32\Bin\ GenBroker.exe” или с помощью менеджера приложений GenTray, как показано на рис. 13.

Вопрос

Как мож о организовать ввод значения с помощью кнопки с проверкой на соответствие заданному условию?


Ответ

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

Пример. Предположим, в тег ОРС-сервера ICONICS.Simulator.1\GlobalVariables.Analog1 необходимо ввести значение, не превышающее 100. Для этого надо выполнить последовательность действий:

  1. Создать в экранной форме элемент отображения значения ICONICS. Simulator.1\GlobalVariables.Analog1.

  2. Создать в экранной форме кнопку для ввода значения, запускающую сценарий VBA, со свойствами, показанными на рис. 14.

  3. Ввести текст сценария VBA (листинг 3).

При нажатии на кнопку будет открыто диалоговое окно, запрашивающее ввод значения. При его соответствии условию значение будет записано в ОРС-тег, при несоответствии будет выведено сообщение об ошибке и повторно открыто окно ввода.

Вопрос

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


Ответ

Для этого есть 2 способа:

  1. расположить кнопки управления масштабом в пользовательской форме VBA;

  2. расположить кнопки управления масштабом во всплывающем окне.

Пример 1. Пользовательская форма.

  1. Открыть редактор VBA (Alt + F11) и создать в нем пользовательскую форму, содержащую кнопки управления масштабом, как показано на рис. 15.

  2. Настроить запуск пользовательской формы (в данном примере форма будет выведена на экран при возникновении события PostRuntimeStart, которое происходит при переводе экранной формы в режим исполнения, рис. 16).

  3. Ввести текст программы (листинг 4) для каждой из кнопок управления (содержит команду масштабирования или прокрутки, рис. 17).


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

Пример 2. Всплывающее окно.

  1. Создать экранную форму, содержащую кнопки управления масштабом, которая будет открываться из основного экрана (рис. 18).

  2. Настроить действие «Выполнить сценарий VBA» для каждой из кнопок управления и ввести текст сценария (листинг 5), содержащий ссылку на основную экранную форму и команду управления её масштабированием (рис. 19).


  3. В основной экранной форме определить условие открытия всплывающего окна (в данном примере всплывающее окно будет выведено на экран, как и в предыдущем примере, при возникновении события PostRuntimeStart, рис. 20).

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

Вопрос

Необходимо с помощью кнопки в экранной форме GraphWorX32 выполнять останов нескольких приложений проекта в определенном порядке. Как это сделать?


Ответ

Во-первых, с помощью Менеджера приложений GenTray следует настроить порядок остановки приложений. Для этого следует запустить GenTray (Пуск — Программы — ICONICS GENESIS32 — Tools — GenTray), при этом на панели задач в правом нижнем углу экрана появится значок GenTray. Щёлкнув на нём, открыть список управления приложениями и выбрать пункт «Настройка», как показано на рис. 21. 


Установить требуемый список автоматического останова приложений, задав порядок и время задержки между остановкой модулей, как показано на рис. 22.



Во-вторых, для кнопки в экранной форме, которая будет управлять остановкой приложений, следует установить действие «Выполнить сценарий VBA», выбрать тип сценария VBScript, как показано на рис. 23, и ввести текст сценария (листинг 6), управляющего остановкой приложений, указанных в списке автоостанова GenTray (окно редактирования сценария VBScript показано на рис. 24).


Вопрос

Существует ли возможность открывать и закрывать Internet Explorer из сценария VBA?

Ответ

Да, такая возможность существует. Сценарий VBA в листинге 7 показывает, как это сделать.


Не забудьте включить использование компонента Microsoft Internet Controls, как показано на рис. 25 (Редактор VBA, пункт меню Tools\References).


Вопрос

Можно ли в экранной форме создать элементы контроля и управления, доступные только определенным пользователям?

Ответ

Да, можно. Делается это следующим образом.

  1. Создать в экранной форме дополнительный слой (назвав его, например, SecretLayer и разместить в нём все элементы, доступ к которым необходимо ограничить.

  2. Открыть конфигуратор системы безопасности ICONICS (Пуск – Программы – ICONICS GENESIS32 – Tools – Security Configurator), затем открыть настройки прав пользователей и групп, которым нужно запретить доступ к элементам контроля и управления.

  3. Открыть закладку «Файлы», как показано на рис. 26, и в списке «Исключить» ввести строку *.*|SecretLayer, запрещающую пользователю доступ к слою SecretLayer во всех файлах (при необходимости можно указать точное имя файла, содержащего «секретный» слой).

Для тех пользователей, которым доступ запрещён, слой будет невидимым.

Вопрос

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


Ответ

Создать в экранной форме графический элемент (например, «Прямоугольник»), отключить для него заливку и установить стиль линии «Линия отсутствует», как показано на рис. 27



Привязать к этому элементу динамику «Указание и щелчок» с необходимым действием.

В свойствах экранной формы (Меню Формат — Свойства экранной формы) установить требуемые настройки для выделения фокуса ввода, отключив при необходимости «Курсор в виде руки» и «Прямоугольник», как показано на рис. 28. ● 

Автор — сотрудник фирмы ПРОСОФТ
Телефон: (095) 234-0636
E-mail: info@prosoft.ru

Комментарии
Рекомендуем

ООО «ПРОСОФТ» 7724020910 2SDnjdbfYK3
ООО «ПРОСОФТ» 7724020910 2SDnjdbfYK3