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

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

Часть 4

Вопрос 1

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

Ответ

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

Откройте конфигуратор сервера безопасности (Пуск – Программы – ICONICS GENESIS-32 – Tools – Security Configurator). При этом будет открыто окно, показанное на рис. 1.


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

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

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


В строке «Включить» введите пароль, который Вы хотите установить, как показано на рис. 3, и нажмите кнопку Добавить. Нажмите кнопку ОК для сохранения внесённых изменений.


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

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


Вопрос 2

При переходе с версии 6 на версию 8 GENESIS32 возникла следующая проблема. Русскоязычные локальные псевдонимы, сохранённые в текстовых файлах, не воспринимаются, вместо них в экранной форме отображаются символы «|». Как можно решить проблему?

Ответ

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


Замечание. Если необходимо перейти с шестой не на восьмую, а на седьмую версию, необходимо установить обновление пакета до версии 7.2 (V7 SP2).

Вопрос 3

Для архивирования событий и тревог используется база данных MS Access. Периодически требуется выполнять операцию сжатия базы данных для освобождения не используемого дискового пространства с помощью операции Сервис – Сжать базу данных MS Access. Можно ли выполнять это действие автоматически?

Ответ

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


Далее приведён текст этого сценария (листинг 2), но, применяя его, нужно обратить внимание на следующее:

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

  2. необходимо подключить библиотеку объектов “Microsoft Jet and Replication Objects 2.6 library”. Для этого в редакторе Visual Basic for Applications необходимо открыть пункт меню Tools — References и подключить библиотеку “Microsoft Jet and Replication Objects 2.6”, выбрав файл SysDrive:\Program Files\ Common Files\system\ado\msjro.dll, как показано на рис. 5.

Вопрос 4

В главной экранной форме имеются 2 окна, в которые с помощью Drag-and-Drop загружается экранная форма объекта с разными на стройками псевдонимов. Как можно установить этим встроенным экранным формам разные значения глобальных псевдонимов? Выбор области темы «Компьютер», «Процесс», «Документ, уровень 0» приводит к тому, что значения псевдонимов устанавливаются в окнах одинаково.

Ответ

Устанавливая тему глобальных псевдонимов в свойствах кнопки, загружающей экран объекта (рис. 6), следует выбрать режим не Абсолютно, а Относительно текущего уровня документа, 0 (рис. 7). 



Вопрос 5

Опишите процедуру на стройки GenBroker для работы с удалённых узлов по протоколу TCP/IP. Возможна ли конфигурация, при которой сервер WebHMI и Web-сервер располагаются на разных машинах?

Ответ

Да, такая конфигурация возможна, применяется достаточно часто и рассматривается в приведённом далее описании. Но сконфигурировать только GenBroker недостаточно. Помимо этого, необходимо выполнить настройки сетевого экрана (firewall), который, как правило, используется на Web-сервере, а также настройки ПО Web-сервера (IIS или Apache).


В качестве примера рассмотрим конфигурацию, показанную на рис. 8:

  1. внешний Web-сервер с сетевым экраном, имеющий адрес www.webserver.ru;

  2. сервер WebHMI, имеющий сетевое имя Webhmi и IP-адрес 192.168.1.34.

На этом же компьютере установлены GENESIS32, WebHMI и лицензия.

Для организации Интернет-соединений удалённого рабочего места используются протокол TCP/IP и следующие порты: 80 — для соединений HTTP и 38080 — для соединений с удалёнными серверами безопасности, лицензирования и т.д.

Рассмотрим по очереди этапы конфигурирования этих двух узлов: Web-сервера и сервера WebHMI.

 

Web-сервер

А. Настройка сетевого экрана

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

Откройте настройки сетевого экрана и выберите в настройках раздел NAT (Network Address Translation), как показано на рис. 9.


Укажите, что вызовы, поступающие по портам 80 и 38080, должны передаваться на узел WebHMI, как показано на рис. 9.

Откройте порты 80 и 38080 для доступа с любых, как показано на рис. 10, или при необходимости с определённых узлов.


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

Б. Настройка Web-сервера

Необходимо опубликовать в Интернете файловые ресурсы самого Web-сервера и сервера WebHMI, к которым должны иметь доступ внешние пользователи.

Стартовая HTML-страница проекта, находящаяся в виртуальном каталоге Web-сервера, должна содержать корректные ссылки (на каталог CAB-файлов, на клиентскую конфигурацию GenBroker, на стартовую экранную форму и т.д.): они должны соответствовать текущей конфигурации и содержать имя внешнего сервера (рис. 11)


В. Настройка GenBroker

Для настройки клиентской конфигурации GenBroker необходимо сделать следующее:

Откройте конфигуратор GenBroker (Пуск – Программы – ICONICS GENESIS-32 – Tools – GenBroker Configurator). Будет открыто окно, показанное на рис. 12. Нажмите кнопку Изменить.


Технология GenBroker имеет клиент-серверную архитектуру и, соответственно, 2 группы настроек: для клиента и для сервера. Web-сервер будет одновременно выполнять обе функции: он будет сервером для внешних клиентов и клиентом для сервера WebHMI, которому он будет передавать запросы, поступающие от Интернет-клиентов.


Клиентские настройки Web-сервера:

Пункт Серверы администрирования. Укажите узлы, на которых располагаются удалённые серверы проекта: безопасности, лицензирования, событий, глобальных или языковых псевдонимов, как показано на рис. 13. В нашем примере все серверы располагаются на узле WebHMI.


Пункт Каналы. Укажите, что соединение с сервером WebHMI будет устанавливаться по каналу TCP/IP, как показано на рис. 14. При необходимости можно добавить в список другие узлы или установить канал TCP/IP в качестве исходного.


Серверные настройки Web-сервера

Пункт Дополнительные настройки\Сервер\Общие. Установите флажок Разрешить соединения ОРС через TCP/IP, как показано на рис. 15, после чего нажмите кнопку Свойства. Проверьте, что номер порта TCP/IP такой же, как и в настройках GenBroker для внешних клиентов (см. далее). По умолчанию он равен 38080.


Сохраните конфигурационный файл клиентских настроек GenBroker. Далее необходимо запустить на Web-сервере сервер GenBroker как приложение или как системную службу. Сделать это можно с помощью Менеджера приложений GenTray (Пуск – Программы – ICONICS GENESIS-32 – Tools — GenTray). Запуск сервера GenBroker показан на рис. 16.


 

Сервер WebHMI

A. Настройка Web-сервера

Web-сервер IIS (Internet Information Services), установленный на сервере WebHMI, должен содержать виртуальный каталог, соответствующий опубликованному на Web-сервере ресурсу. Должен быть предоставлен доступ для внешних пользователей к CAB-файлам WebHMI и всем необходимым файлам проекта.

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

Б. Настройка GenBroker

Сервер WebHMI для всех клиентов (внешних и внутренних) будет выполнять роль сервера. Серверные настройки для него будут аналогичны настройкам Web-сервера и показаны на рис. 15. Но кроме того, необходимо создать и сохранить в опубликованном каталоге файл настроек GenBroker для внешних Интернет-клиентов, который будет загружаться на их компьютеры при обращении к Web-серверу.

 

Настройки GenBroker для внешних клиентов

Пункт Серверы администрирования. Укажите узлы, на которых располагаются удалённые серверы проекта: безопасности, лицензирования, событий, глобальных или языковых псевдонимов, как показано на рис. 13. В нашем примере все серверы располагаются на узле WebHMI.



Пункт Каналы. Здесь необходимо создать соединение через узел-медиатор с сервером проекта. Узлом-медиатором в данном случае будет Web-сервер с настроенным ранее сетевым экраном, а сервером проекта — сервер WebHMI. Нажмите кнопку Добавить канал TCP… (рис. 17), после чего в открывшемся окне укажите узел-медиатор и параметры соединения (рис. 18):

Для вновь созданного соединения добавьте узел (сервер WebHMI), связь с которым будет осуществляться через медиатор. Для этого выделите строку созданного соединения, как показано на рис. 19, и нажмите кнопку Добавить узел.


Введите в появившемся окне имя сервера WebHMI. Окно настройки соединений примет вид, показанный на рис. 20.


Сохраните конфигурационный файл клиентских настроек GenBroker и разместите его в опубликованном каталоге. Далее необходимо запустить на сервере WebHMI сервер GenBroker как приложение или как системную службу, аналогично тому, как это было сделано для Web-сервера (рис. 16).

Вопрос 6

Можно ли (с помощью сценария VBA или другим способом), управлять возможностью ввода данных в элемент «Параметр»? Необходимо, чтобы элементы «Параметр» постоянно отображали данные и только при определённых условиях давали оператору возможность вносить изменения в значения.

Ответ

Это можно сделать, не прибегая к программированию на VBA. Сконфигурируйте элемент «Параметр» так, как требуется для Вашей задачи, флажок Ввод данных должен быть установлен. Затем добавьте для этого элемента динамику «Скрыть/Блокировать». Выберите режим «Блокировать», как показано на рис. 21, установив в качестве источника данных условие, когда ввод данных должен быть разрешён.


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

Примечание. Цвета, которыми будут отображаться заблокированные элементы ввода, настраиваются в Свойствах экранной формы, как показано на рис. 22 (Меню Формат – Свойства экранной формы – Исполнение).


Вопрос 7

Можно ли сконфигурировать сервер тревог так, чтобы сообщение о тревоге выдавалось при любом изменении аналогового сигнала, а не только при выходе значения за установленные пределы или его отклонении от заданного уровня?

Ответ

Да, это сделать можно, и воспользоваться здесь следует тревогой «Скорость изменения». Для вычисления скорости изменения параметра сервер тревог запоминает последнее значение сигнала и его метку времени. Затем при получении нового значения от ОРС-сервера скорость изменения параметра вычисляется следующим образом: модуль разности между новым и предыдущим значениями сигнала делится на интервал времени в секундах между отсчётами:

Abs (new value – old value)/ (new time – old time). И если полученное значение будет больше скорости изменения, заданной в настройках сервера тревог, будет сформировано сообщение о тревоге.

Соответственно, при установке в качестве скорости изменения любого отрицательного значения (например –1, как показано на рис. 23) тревога будет формироваться при любом изменении значения сигнала.


Вопрос 8

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

Ответ

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


Вопрос 9

Как можно организовать с помощью Data Mining динамические запросы к базе данных?

Ответ

Настройка Сервера баз данных

  1. Открыть Конфигуратор Сервера баз данных (Пуск → Программы → ICONICS GENESIS-32 → Tools → Data Mining Configurator).

  2. Создать соединение с базой данных и источник данных. В данном примере мы воспользуемся готовым соединением AdministrationDB и источником Employees _By_PID, имеющимся в демонстрационной конфигурации Сервера баз данных (рис. 24).

 

Настраиваемые запросы

Строка настраиваемого запроса имеет следующий синтаксис:

ICONICS.DatabaseOPCServer.3\

[Соединение_БД].[Источник]<[Параметр];

[Параметр]>.<[Столбец]>

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


Один из способов получить строку настраиваемого запроса — открыть из любого приложения ICONICS Универсальный навигатор данных\ Доступ к базе данных и из списка элементов (тегов) указанного источника выбрать встроенный тег “@@column” (рис. 26). 


Для выбранного нами примера строка тега будет иметь следующий вид:

ICONICS.DatabaseOPCServer.3\AdministrationDB.Employees_By_PID<PID>.<Column Name>.

Подставляя вместо <PID> и <Column Name> необходимые значения, пользователь может изменять условия запроса и получать различные выборки из базы данных. Например, тег, возвращающий имя сотрудника (столбец Name), порядковый номер которого (параметр PID) равен 3, будет выглядеть так: 

ICONICS.DatabaseOPCServer.3\ AdministrationDB.Employees_By_PID<3>.<Name>

 

Динамические запросы

Было бы удобно задавать значения параметров и имен столбцов с помощью локальных или глобальных псевдонимов и, управляя их значениями, динамически изменять запросы к Серверу баз данных. Однако этот способ не подходит для тех случаев, когда параметр или имя столбца задаются значением ОРС-тега. В качестве примера рассмотрим случай, когда переменным значением, задаваемым с помощью тега ОРС, является параметр PID, изменяя который, необходимо получать значение столбца Name.

Если задать параметр PID с помощью псевдонима, привязанного, например, к тегу ОРС ICONICS.Simulator.1\ GlobalVariables.Analog1, получим в результате строку тега следующего вида:

ICONICS.DatabaseOPCServer.3\AdministrationDB.Employees_By_PID

<ICONICS.Simulator.1\GlobalVariables.Analog1>.<Name>.

Она неверна — сервер не сможет по ней сделать корректную выборку из базы данных (см. синтаксис строки). Для того чтобы правильно сформировать строку динамического запроса, есть 2 способа: написать короткий сценарий VBA или воспользоваться возможностями, предоставляемыми сервером данных DataWorX32.

Способ 1

Для создания сценария VBA необходимо сделать следующее:

  1. Добавить в экранную форму динамический элемент «Параметр», установив ему в качестве источника данных тег ОРС, в котором будет находиться значение параметра. Это вспомогательный элемент, необходимый для сценария. Его можно скрыть (с помощью динамики «Скрыть/Блокировать» или расположить в скрытом слое), если нужно, чтобы он не был виден при исполнении проекта.

  2. Добавить в экранную форму ещё один элемент «Параметр», в котором будет отображаться результат запроса к базе данных. Оставьте поле Источник данных пустым, так как источник данных будет формироваться динамически с помощью сценария. Присвойте имя этому объекту, как показано на рис. 27.

  3. Добавить в экранную форму элемент «Кнопка» или «Флажок», установив его свойства, как показано на рис. 28: Действие = «Выполнить сценарий», Тип = «С фиксацией», Порядок выполнения = «Пока нажато», флаг «Нач. состояние Нажато» взведён, Тип сценария = «VBAScript». Присвойте сценарию имя и нажмите кнопку Создать.

В открывшемся окне редактора сценариев VBA введите следующий текст (листинг 4).


При этом кнопка будет исполнять сценарий постоянно с указанным в свойствах интервалом (в данном примере — 1 с) и формировать строку запроса в зависимости от значения управляющего тега ICONICS. Simulator.1\ Global Variables. Analog1, которое будет определять значение параметра PID.

Способ 2

Реализовать ту же самую задачу средствами DataWorX32 можно следующим образом.

  1. Запустить конфигуратор DataWorX32 (Пуск – Программы – ICONICS GENESIS-32 – Tools – DataWorX32).

  2. Добавить новый псевдоним, присвоить ему произвольное имя, например, Query_alias. Установить ему в качестве входа управляющий тег ICONICS. Simula-tor.1\GlobalVariables.Analog1, значение которого будет определять значение параметра PID, как показано на рис. 29.

  3. Запустить сервер DWX32 на исполнение (значок с изображением светофора на рис. 29).

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

ICONICS.DataWorX32.8\

ICONICS.DatabaseOPCServer.3\

AdministrationDB.Employees_By_PID

<[[Query_alias]]>.<Name>.

В результате вместо псевдонима ICONICS.DataWorX32.8\<[[Query_alias]] будет подставлено значение управляющего тега и сформируется правильный тег запроса к базе данных.

Вопрос 10

Как можно сделать выборку данных из архива TrendWorX32 за период, когда некоторый тег имел определённое значение? TWX32 Reporter позволяет выбрать данные по времени или по интервалу, но время, когда тег принимал необходимое значение, на этапе формирования отчёта неизвестно.

Ответ

Действительно, Менеджер отчётов TWX32 не позволяет установить условие в качестве критерия для выборки данных из архива. Тем не менее решить эту задачу можно.

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


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

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

  1. Настраивая параметры группы тегов в конфигураторе сервера архивирования, необходимо открыть закладку Параметры и установить флажок Слежение за циклическим процессом, как показано на рис. 31.

  2. Указать теги начала цикла и (или) партии. Текстовые строки, которые будут являться значениями этих тегов, будут записываться в базу данных архива, в таблицу с именем <ГруппаТегов>_Notes, где <ГруппаТегов> — имя группы тегов в конфигурации (рис. 32 и 33).


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

  4. Запустить проект, в том числе сервер архивации, на исполнение.

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

  1. При установке диапазона отчёта необходимо нажать кнопку Начало (Окончание), как показано на рис. 34, и в появившемся окне «Установка времени и даты» нажать кнопку Выбрать из комментариев/циклов… (рис. 35).


  2. В появившемся окне «Выбор комментария/Цикла» указать временной диапазон и нажать кнопку Поиск. При этом будет выполнен поиск комментариев цикла и партии, имеющихся в архиве, на указанный интервал времени. Результат поиска будет отображён в окне. Выберите необходимый комментарий с помощью кнопок, как показано на рис. 36. Метка времени, соответствующая этому комментарию, будет скопирована в Начало (Окончание) диапазона.

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


Текст сценария с необходимыми комментариями приведён в листинге 5. ●

Автор — сотрудник компании «Первая Миля»
Телефон: (+7 495) 332-3640
Факс: (+7 495) 332-3641

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

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