Pull to refresh

Делаем свой журнал (архив) алармов в Citect

Reading time 3 min
Views 7.5K

Почему "делаем" — потому что его там фактически нет.
Почему "свой" — на случай, если кто-то в комментариях выкатит некую "сущность", выдавая её за журнал/архив алармов.
Это не готовая инструкция, а скорее направление действия, поэтому тега tutorial нет.


Журнал алармов будем делать на основе web-сервер apache, интерпретатор языка php, БД SQLite.


Сам журнал состоит из:
1) файла alarmlog.db — содержит архив тревог;
2) web-сервер apache — обрабатывает наши http запросы из web-морды со страницы SCADA системы;
3) файловов (.html, .php и т.д.) в папке, например, "C:\alarmlog_ostrov";
4) ODBC драйвера SQLite.


В папке C:\alarmlog_ostrov у нас лежат:


1) папка img — там картинка календарика;
2) папка css — красоту наводим стилями;
3) папка js — JavaScript календаря, взят готовый на просторах интернета;
4) alarmlog.db — сама БД, куда Citect складывает свои алармы;
5) front_end.html — фронт-энд нашего журнала;
6) index.php — самый важный файл — "движок" нашего журнала;
7) my_lib.inc — файл c собственными функциями на php;
8) sqlite3_connect.php — механизм подключения к БД, наружу в index.php всегда "торчим" унифицированным интерфейсом, независимо от используемого типа БД (вообще таких файлов несколько — под каждый тип БД).


УСТАНОВКА WEB-СЕРВЕРА APACHE


Установку описывать не буду — там все просто. Я использовал httpd-2.2.25-win32-x86-openssl-0.9.8y.msi.


Главное чтоб в трее появился знакомый значок
и в файле настроек C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\ httpd.conf были следующие значения:
1) ServerRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2"
2) Listen 80
3) LoadModule php5_module "c:/PHP/php5apache2_2.dll" (c учетом, что PHP у нас в корне диска C:)
4) AddType application/x-httpd-php .php
5) DocumentRoot "C:\alarmlog_ostrov" c учетом, что наш журнал располагается в этой папке.


УСТАНОВКА ODBC ДРАЙВЕРА SQLITE


Установка несложна. Я использовал файл sqliteodbc_0.996.exe. Драйвер необходимо использовать 32 битный (даже, если используете 64-битную ОС).


В окне "Choose Components" необходимо выбрать пункт "SQLite 2 Drivers".


.


Установленный драйвер ODBC можно наблюдать в Администраторе источников данных ODBC.


.


УСТАНОВКА ИНТЕРПРЕТАТОРА ЯЗЫКА PHP


Я использовал вариант c файлом-архивом PHP_5.4.26.zip, распаковал в папку С:/PHP.
Файл настроек php.ini необходимо хранить в папке C:/Windows .


НАСТРОЙКА ODBC ПОДКЛЮЧЕНИЯ


Связь SCADA системы с файлом БД журнала тревог осуществляется посредством ODBC. Необходимо сконфигурировать источник данных в Администраторе источников данных ODBC.


Настраивается источник данных ODBC в Администраторе источников данных ODBC (файл C:\Windows\SysWOW64\odbcad32.exe).


В окне Администратора источников данных ODBC перейти на вкладку "СИСТЕМНЫЙ DSN".


.


Для добавления источника данных ODBC необходимо нажать кнопку "Добавить", из списка выбрать SQLite 3 ODBC Driver, нажать кнопку "Готово".


Для ODBC подключения необходимо задать следующие параметры:
1) Source Name — ALM_LOG_OSTROV;
2) Database Name – C:\alarmlog_ostrov\alarmlog.db;
3) Lock Timeout (ms) – 5000;
4) Sync Mode – OFF;
5) NoWCHAR – поставить флажок/галку;


.


Чтобы SCADA система имела доступ на запись к файлу C:\alarmlog_ostrov\alarmlog.db, ему надо дать права вида "Пользователь: Все – полный доступ".


В самой SCADA нам необходимо в Devices создать устройство, например, alm_log_db типа SQL_DEV.


.


В категориях алармов необходимо указать наше устройство alm_log_db.


.


Раньше использовали Citect 7.0 под Windows XP и журнал открывали в стороннем приложении Firefox. Потом перешли на Windows 7 и Citect 7.3 (сейчас 7.5) и на графической странице журнала используем ActiveX элемент Microsoft Web Browser.


.


В событиях страницы на "On page shown" ставим самописную функцию-обертку, которая в ActiveX элемент прописывает нужный web-адрес.


.


В рантайме это выглядит так.


.


Содержимое самой БД выглядит так:


.


.


Делалась попытка объединить алармы c фактами квитирования через две таблицы и механизм представлений, но на целевой машине это очень тормозило (на виртуалке разработчика никаких тормозов).


.


Вышли из положения установкой параметра в citect.ini , который в алармы вписывает не только On, Off, но еще и Аск событие изменения состояния аларма.


Тот самый календарь на JavaScript.


.


Окно календаря журнала тревог предоставляет следующий интерфейс пользователя:
1) выпадающий список выбора месяца;
2) выпадающий список выбора года;
3) индикатор выбранных года и месяца;
4) текущий день месяца;
5) выбранный день месяца (после клика на день окно закрывается автоматически);
6) кнопка закрытия окна календаря журнала тревог.


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


.


При установленном PDFCreator получаем прекрасный механизм экспорта в pdf.


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


Tags:
Hubs:
+8
Comments 7
Comments Comments 7

Articles