Делаем свой журнал (архив) алармов в Citect
Почему «делаем» — потому что его там фактически нет.
Почему «свой» — на случай, если кто-то в комментариях выкатит некую «сущность», выдавая её за журнал/архив алармов.
Это не готовая инструкция, а скорее направление действия, поэтому тега 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 Shown» ставим самописную функцию-обертку, которая в ActiveX элемент прописывает нужный web-адрес.
В рантайме это выглядит так.
Содержимое самой БД выглядит так:
Делалась попытка объединить алармы c фактами квитирования через две таблицы и механизм представлений, но на целевой машине это очень тормозило (на виртуалке разработчика никаких тормозов).
Вышли из положения установкой параметра в citect.ini, который в алармы вписывает не только On, Off, но еще и Аск событие изменения состояния аларма.
Тот самый календарь на JavaScript.
Окно календаря журнала тревог предоставляет следующий интерфейс пользователя:
1) выпадающий список выбора месяца;
2) выпадающий список выбора года;
3) индикатор выбранных года и месяца;
4) текущий день месяца;
5) выбранный день месяца (после клика на день окно закрывается автоматически);
6) кнопка закрытия окна календаря журнала тревог.
Журнал тревог имеет возможность печати результат выборки. Для этого необходимо воспользоваться пунктом «Печать…» контекстного меню, которое вызывается кликом правой кнопкой мыши на полотне журнала.
При установленном PDFCreator получаем прекрасный механизм экспорта в pdf.
Предварительный просмотр позволяет отрегулировать внешний вид печатного документа.
Комментарии (1)
2 марта 2017 в 10:23 (комментарий был изменён)
–1↑
↓
Интересный подход для промышленного изделия: Возьмем недоSCAD’у без базовой функциональности и прикрутим эту функциональность с помощью самодельного г. и палок. Вавилонская башня: вебсервер + php+ sqlite+ бета-версия ODBC драйвера+ activeX.Самоделки в промышленности — это не то, что хотелось бы иметь для категорийных по энергоснабжению объектов.
1. Это что, с трендами (БД и графики аналоговых параметров, сленг) такая же пляска в Citect?
2. БД непрерывно работающего объекта имеет свойство переполняться (особенно с приведенной структурой БД, хранящей все в текстовых полях). Но хранить последние год/три все равно надо. Как планируется сегментация/очистка/контроль размера?
3. Неужели при таком разнообразии SCADA систем, в Питер не завезли адекватную? Как производился выбор?