Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АИУС / Практика / Разработка HMI-приложений.pdf
Скачиваний:
270
Добавлен:
18.05.2015
Размер:
15.71 Mб
Скачать

10.4Посылка событий в протокол

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

Для посылки сообщениях о событии в Протокол событий используются:

События из словаря событий.

Для регистрации события в протоколе используйте функцию

AlarmServiceHelper.SendEvent

Произвольные пользовательские события.

Для регистрации события в протоколе используйте функцию

AlarmServiceHelper.SendUserEvent.

Для использования этих функций , в редакторе скриптов во вкладке Пространства имен

добавьте ссылку на Krug.ObjectModel.AlarmServiceInterfaces

РЕГИСТРАЦИЯ СОБЫТИЯ ИЗ СЛОВАРЯ СОБЫТИЙ

Вызовите в скрипте функцию AlarmServiceHelper. SendEvent со следующими параметрами:

AlarmServiceHelper.SendEvent(

Client,

 

 

Tag,

 

 

Attribute,

 

MessageID,

 

MessageParam

);

где

 

 

Client

– владелец скрипта,

Tag

- имя тега, с которым связано событие

Attribute

- имя атрибута тега, с которым связано событие

MessageID

- номер события в словаре событий

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

Если словарного события с данным номером нет в словаре событий, то в окне Отладка в журнале регистрации сообщений с именем Warnings(предупреждения) появится сообщение:

"Warnings Error: 1: Ошибка при посылке события в протокол событий: словарного события с номером [MessageID] нет в словаре событий".

364 DataRate

Пример:

РЕГИСТРАЦИЯ ПОЛЬЗОВАТЕЛЬСКОГО СОБЫТИЯ

Вызовите в скрипте функцию AlarmServiceHelper. SendUserEvent со следующими параметрами:

AlarmServiceHelper.SendUserEvent(

Client,

 

 

Tag,

 

 

Attribute,

 

 

TypeID,

 

 

Severity,

 

 

TextMessage,

 

MessageParam

);

где

 

 

Client

– владелец скрипта,

Tag

- имя тега, с которым связано событие

Attribute

- имя атрибута тега, с которым связано событие

TypeID

- номер типа события из словаря типов; если типа с заданным номером

 

не будет в словаре, событие не будет зарегистрировано

Severity

- серьезность события. Целое значение из диапазона [0…1000].

TextMessage

– текстовое сообщение заключенное в кавычки

MessageParam – необязательные параметры текстовой строки события

Пример:

Протокол событий 365

10.5Печать событий из скрипта

КЛАСС ДЛЯ ПЕЧАТИ ПРОТОКОЛА СОБЫТИЙ

Для печати протокола событий из скрипта используются специальные методы класса

AlarmServiceHelper.

Чтобы методы этого класса стали доступны, в редакторе скриптов во вкладке Пространства имен добавьте ссылку на Krug.ObjectModel.AlarmServiceInterfaces

МЕТОДЫ ПЕЧАТИ СООБЩЕНИЙ О СОБЫТИЯХ

AlarmServiceHelper.PrintLastEvents(object client, int count, string printSettingsName) - печатает последние события.

Параметры:

client - клиент скрипта;

count - rоличество печатаемых событий;

printSettingsName - название используемой группы настроек или null, если настройки будут запрашиваться у пользователя.

AlarmServiceHelper.PrintLastEvents(object client, int count, EventFilter[] filters, string

printSettingsName) - печатает последние события, отфильтрованные по заданным свойствам.

Параметры:

client - клиент скрипта;

count - rоличество печатаемых событий;

filters - массив фильтров для фильтрации событий по определенным свойствам; printSettingsName - название используемой группы настроек или null, если настройки

будут запрашиваться у пользователя.

AlarmServiceHelper.PrintAllEvents(object client, string printSettingsName) - печатает все события, зарегистрированные протоколом событий.

Параметры:

client - клиент скрипта;

printSettingsName - название используемой группы настроек или null, если настройки будут запрашиваться у пользователя.

AlarmServiceHelper.PrintAllEvents(object client, EventFilter[] filters, string

printSettingsName) - печатает все события, зарегистрированные протоколом событий, отфильтрованные по заданным свойствам.

Параметры:

client - клиент скрипта;

filters - массив фильтров для фильтрации событий по определенным свойствам; printSettingsName - название используемой группы настроек или null, если настройки

будут запрашиваться у пользователя.

366 DataRate

AlarmServiceHelper.PrintEvents(object client, DateTime startTime, DateTime endTime, int

maxCountLimit,

string printSettingsName) - печатает события в заданном промежутке времени.

Параметры:

client - клиент скрипта;

startTime -начальное время запрашиваемого интервала; endTime -конечное время запрашиваемого интервала;

maxCountLimit - ограничение на количество возвращаемых событий или -1 ,если без ограничений

printSettingsName - название используемой группы настроек или null, если настройки будут запрашиваться у пользователя.

AlarmServiceHelper.PrintEvents(object client, DateTime startTime, DateTime endTime,

EventFilter[] filters,

int maxCountLimit, string printSettingsName) - печатает события в заданном промежутке времени, отфильтрованные по заданным свойствам.

Параметры:

client - клиент скрипта;

startTime -начальное время запрашиваемого интервала; endTime -конечное время запрашиваемого интервала;

filters - массив фильтров для фильтрации событий по определенным свойствам; maxCountLimit - ограничение на количество возвращаемых событий или -1 ,если без

ограничений

printSettingsName - название используемой группы настроек или null, если настройки будут запрашиваться у пользователя.

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

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

ПРИМЕР

Создаем настройку печати протокола событий с именем Настройки печати в окне

Настройки протокола событий во вкладке Настройка печати.

Добавляем ссылку на пространство имен Krug.ObjectModel.AlarmServiceInterfaces

Запрашиваем события с 16.01.08 12:00 по 16.01.08 13:30, задав фильтрацию по уровню и по типу серьезности, а также максимальное количество событий - 25.

Во вкладке Скрипт пишем следующий код:

//Задаем начальное время 16.01.2008 12:00

DateTime startTime = new DateTime(2008, 1, 16, 12, 0, 0, DateTimeKind.Local); // Задаем конечное время 16.01.2008 13:30

DateTime endTime = new DateTime(2008, 1, 16, 13, 30, 0, DateTimeKind.Local);

//Создаем массив фильтров. EventFilter[] filters = new EventFilter[2];

//Создаем фильтр серьезность (типы фильтруемых значений серьезност от 200 до 100)

//и добавляем в массив фильтров

filters[0] = new SeverityEventFilter(200, 1000);

//Создаем фильтр типов (фильтруются типы событий с номерами 1 и 2)

//и добавляем в массив фильтров

Протокол событий 367

filters[1] = new TypeEventFilter(new int[] { 1, 2 }); try

{

// Печатаем события с сответсвующими настройками AlarmServiceHelper.PrintEvents(Client, startTime, endTime, filters, 25, "Настройки

печати");

}

catch (Exception ex)

{

// Если произошла ошибка показываем сообщение с ее описанием MessageBox.Show(ex.Message);

}

Данный скрипт можно вызывать с помощью функции реакции или запускать по расписанию.

368 DataRate

Часть

11