Делаем свой журнал (архив) алармов в 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 page shown" ставим самописную функцию-обертку, которая в ActiveX элемент прописывает нужный web-адрес.


    .


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


    .


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


    .


    .


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


    .


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


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


    .


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


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


    .


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


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


    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 7

      –1
      Интересный подход для промышленного изделия: Возьмем недоSCAD'у без базовой функциональности и прикрутим эту функциональность с помощью самодельного г. и палок. Вавилонская башня: вебсервер + php+ sqlite+ бета-версия ODBC драйвера+ activeX.

      Самоделки в промышленности — это не то, что хотелось бы иметь для категорийных по энергоснабжению объектов.

      1. Это что, с трендами (БД и графики аналоговых параметров, сленг) такая же пляска в Citect?

      2. БД непрерывно работающего объекта имеет свойство переполняться (особенно с приведенной структурой БД, хранящей все в текстовых полях). Но хранить последние год/три все равно надо. Как планируется сегментация/очистка/контроль размера?

      3. Неужели при таком разнообразии SCADA систем, в Питер не завезли адекватную? Как производился выбор?
        0
        1. Это что, с трендами (БД и графики аналоговых параметров, сленг) такая же пляска в Citect?

        2. БД непрерывно работающего объекта имеет свойство переполняться (особенно с приведенной структурой БД, хранящей все в текстовых полях). Но хранить последние год/три все равно надо. Как планируется сегментация/очистка/контроль размера?

        1) нет
        2) в механизме Events создаем событие с нужной периодичностью (+ кнопка на служебном видеокадре для вызова этой же функции удаления), которое вызывает функцию удаляющую старые сообщения

        И, пожалуйста, не используйте выражения типа «самодельного г. и палок» — Хабр и приличные люди читают.
          0
          3. Неужели при таком разнообразии SCADA систем, в Питер не завезли адекватную?


          это вы менеджерам Schneider Electric можете свои фи высказать или хотелку на ideas@SCADA https://www.citect.schneider-electric.com/scada/citectscada/ideas-forum запилить, а мы тут конкретные вопросы решаем вида «отсутствует-требуется-делаем»…

          в случае, если вам сименосовский TIA Portal или WinCC не понравится, то и хотелку запилить некуда…

          Свои тренды делали на PostgreSQL+python для одной инсталяции RSView32 с клиент-серверной нахлобучкой Active Display System (там на клиенте страница с трендами жестко вешала систему)
            0
            Менеджерам Шнайдера фи уже высказали заказчики — они в автоматике у нас в России имеют малую долю рынка. Причина — покупают и гробят чужие технологии. Потому у них 5 несовместимых между собой линеек контроллеров и примерно столько же SCADA систем, при полном отсутствии техподдержки для некоторых.

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

            У Роквелловской RSView, которая уже давно FactoryTalk View (т.е RSView устарела лет на 7), рекомендуемая СУБД только MSSQL. За Active Display System не скажу — слишком древняя, но отображать графики через Веб на заре веб-технологий было опрометчиво.

            Как только начинают лепить «подешевле», и «изобретать» вместо проверенных путей, обычно и начинаются проблемы. А их и так хватает.

            Но речь в п.3 была о том, что есть топ 10 SCADA систем, и их стоило хотя бы посмотреть (это кроме Российских), прежде чем покупать систему с существенными проблемами (а Вы не первый жалующийся на Сайтект, скажу секрет).
              0
              есть топ 10 SCADA систем


              и все они имеют своИ недостатки…

              а Вы не первый жалующийся на Сайтект, скажу секрет


              сочиняете… ни разу не жалуюсь… показываю один из способов поправить функционал Citect…
                0
                … Шнайдера… покупают и гробят чужие технологии…



                так то сам Siemens покупает OEM Citect и делает из него Desigo Insight…
                  0
                  Неужели при таком разнообразии SCADA систем, в Питер не завезли адекватную?



                  Но речь в п.3 была о том, что есть топ 10 SCADA систем, и их стоило хотя бы посмотреть (это кроме Российских), прежде чем покупать систему с существенными проблемами



                  Siemargl, мы тут все пацаны не глупые… не тяни одеяло на себя… допиливай уже свою идеальную скаду и подвози в питер…

                  Only users with full accounts can post comments. Log in, please.