Формирование отчетов для Мастерскада

Расскажу о том, какую систему отчетов мы разработали и внедрили на одной из объектов диспетчеризации. Под конец всех работ у Заказчика возникла потребность в отчетах,  речь о которых и ранее велась, но скорее как о чем-то второстепенном. На самом деле это достаточно ответственное звено в системе, так как несет в себе экономическую составляющую - числа. Все данные в таблицах запрашиваются выборкой по датам из базы данных SQLite, обрабатываются FBScript и выводятся в формах разработанных в Visual Studio.

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

Очевидно, что это - задача работы приложения (скрипта) при обращении с выборкой к какой либо БД. У Мастерскады есть своя база данных, но отсутствовал платный инструмент обращения к ней и нам пришлось делать приложение, создавать свою БД и СУБД на SQLite. У Мастерскады, конечно, есть свой мастер создания отчетов, но, поразбиравшись в нем, было принято решение на разработку собственной подпрограммы, позволяющей гибко реагировать на любые просьбы нашего Заказчика. Решение такое было продиктовано необходимостью наследования данной системы отчетов на любые другие SCADA-системы. 

В Мастерскаде был написан ФБ скрипт, который запускается 1 раз в секунду, опрашивает переменные и сохраняет их в SQLite. Визуализация (формы отчетов) были разработаны в Visual Studio 2017. Формы отчетов выбирают из БД нужные данные (за определенный месяц) и формируют таблицу для отображения. БД у Мастерскады не закрыта, но у нас возникла сложность в дозакупке инструмента для работы с этой самой БД. Дело в том, что Заказчик и интегратор не знали, что нужно было докупать приложение для Мастерскады, которое позволяло бы работать с БД (записывать данные для дальнейшей обработки). Деньги к тому моменту были уже согласованы и никто ничего не собирался покупать - пришлось разработать свое приложение.

С выбором СУБД (СУБД - это программа для работы с БД) тоже пришлось повозиться. Тут сложности были связанны с особенностями работы операционной системы Windows 7 и не очень продвинутой конфигурацией компьютера. Все пришлось изрядно оптимизировать для обеспечения стабильной работы системы.

Почему выбрали SQLIte? Вся база состоит из единственного файла данных, что обеспечивает высочайший уровень переносимости, т.е. на компьютере ничего не надо устанавливать. Создал базу, кинул ее в проект - и все превосходно работает, не надо ставить никакой сервер + у нас небольшая нагрузка, нет огромных массивов данных.

Удобным оказалось то, что в Мастерскаде присутствует возможность вывода ActiveX, это позволило разместить отчеты непосредственно в формате мнемосхем, не выходя за пределы приложения с использованием прав оператора. Мастерскада позволяет подключать пользовательские компоненты/интерфейсы, написанные на Visual Studio. Принцип работы достаточно прост: в Visual Studio пишется визуализация - наши отчеты, собирается библиотека - dll, а дальше эта dll просто подключается в Мастерскаде через ActiveX. Затем написанный пользовательский интерфейс перетаскивается мышкой в Мастерскаде в нужное место. Таким образом, средствами Visual Studio можно хорошо допилить функционал Мастерскады.

Для сравнения, SimpleScada и Teslascada нет имеют возможности добавления в проект OLE-объектов, что делает данные программные продукты не применимыми для реализации подобного подхода.

В итоге на компьютере были задействованы две базы данных. Одна для графиков и событий (внутренние функции Мастерскады), вторая для системы отчетов. СУБД действуют независимо друг от друга, разными потоками.

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

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

Техническое задание было согласовано по внешнему виду, это порядка семи таблиц в MS Word.
1-min.jpg

Структурная схема отчетов. Как взаимодействуют компанентя между собой и как все устроено
2-min.jpg

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

3-min.jpg

4-min.jpg


5-min.jpg


6-min.jpg


7-min.jpg


8-min.jpg


9-min.jpg


10-min.jpg


11-min.jpg


12-min.jpg

Буду рад, если выскажете критику, пожелания, вопросы в поле "комментарий"

#Отчеты, #Мастерскада, #Инсат, #SQLite, #выборка, #VisualStudio, #ActiveX, #СУБД, #годовые, #месячные, #Excel, #SCADA


17.09.2018

Я рада, что в таком виде все заработало :-). Вопрос 1: разница между стоимостью MSRT и MAS (с коннекторами к СУБД) оказалась больше, чем ваша трудоемкость?
Ваш комментарий добавлен


Возврат к списку