Незабудка - открытая система архивирования на базе СУБД FIREBIRD. Часть 1. (исходники)

Незабудка - открытая система архивирования на базе СУБД FIREBIRD. Часть 1. (исходники)

Система НЕЗАБУДКА разрабатывается как бесплатный инструмент c открытым кодом (OPEN SOURCE) для решения задач АСУТП среднего класса (до 20000 тэгов) с невысокой скоростью процесса (не требуется регистрация данных чаще чем 1 раз в секунду). Она предназначена для предприятий, которые имеют многочисленные объекты

АСУТП, опытных программистов и стремятся разрабатывать собственные элементы SCADA- системы в целях экономии средств и обретения независимости от сторонних фирм. Учитывая высокую стоимость коммерческих SCADA- систем, а также их значительную избыточность в случае применения в АСУТП среднего класса, количество таких предприятий стремительно возрастает. Для их поддержки впервые в России разрабатывается бесплатная SCADA-система КемеНеЯ , автономной и самодостаточной подсистемой которой является НЕЗАБУДКА (наш адрес . ).

Назначение Сбор, хранение и предоставление средств просмотра данных процесса управления.

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

- модуль периодического архива (nz_history.dll);

- модуль архива событий и сообщений (nz_message.dll);

- главный модуль просмотра архивов (nezabudka.dll), который подключается к SCADA системе и подключает 2 указанных выше модуля.

Системные требования Операционная система Windows NT4/2000/XP/2003Процессор Pentium или старшеОперативная память 128Мб или большеДля хранения данных необходима СУБД: Firebird 2.0.3 и выше.

Основные функции главного модуля (номер функции в nezabudka.dll и ее назначение) :

0 - Инициализация структур данных

2 - Инициализация часовых блоков.Запуск потоков архивации.Начало работы

1 - Вызов журнала сообщений

3 - Вызов среднечасовой статистики по параметру

5 - Добавить параметр в группу графиков на указанное место

6 - Регистрация события

7 - Регистрация сообщения

8 - Вызов группы графиков

99 - завершение работы

Алгоритм работы ( nezabudka.dll)

1. Начало работы.

Работа осуществляется под управлением внешнего приложения.

При старте инициализируются все внутренние структуры и запускается процесс периодической архивации (функции 0 и 2).

Так как при старте библиотеке передаются адреса описателей параметров, то процесс периодической архивации самостоятельно циклически считывает значение параметра из указанного адреса ,производит его регистрацию и не требует вмешательства внешнего приложения вплоть до получения команды на завершение работы.

Напротив для регистрации событий и сообщений приложение должно вызвать функции 6 или 7.

3. Просмотр архивов.

Для просмотра архива сообщений вызывается журнал сообщений (функция 1).

Для просмотра периодического архива используются функции 3 (тренд среднечасовой), а также функции 5 и 8 (тренд секундный индивидуальный или групповой) .

4. Завершение работы происходит при вызове функции 99.

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

Программа периодически сохраняет данные в память компьютера. Каждые минуту содержание памяти частично сохраняется на жестком диске в базу данных FIREBIRD.

Для уменьшения размера архива значения хранятся с допустимой погрешностью(апертурой). Апертура устанавливается при настройке программы индивидуально для каждого параметра (например 0.3 % шкалы).

Во избежание неумеренного разрастания архива его размер ограничивается заданием периода хранения (например 100 суток).

Значения параметров регистрируются 1 раз в секунду. В идеале после окончания цикла данные должны сразу же фиксироваться на жестком диске, но на практике

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

Поэтому архив имеет блочную структуру. Блок содержит последовательность значений по одному параметру за один час ( с начала текущего часа) с периодом равным периоду опроса (минимальный период=1 секунда).Такая структура архива позволяет использовать новый(!) эффективный способ упаковки данных для значительного уменьшения размера архива и ускорения операций чтения/записи.

Часовой блок содержит следующую информацию:

индекс параметра, значения которого содержатся в блоке;

дата и час - координаты часового блока;

массив значений в упакованном виде (с учетом апертуры);

минимальное, максимальное и среднее значение параметра за час (без учета апертуры).

Значения по параметру накапливаются в памяти в часовом блоке при каждом опросе.

В начале каждой минуты на жестоком диске фиксируется 1/N часть всех блоков, так чтобы через N минут все блоки были сохранены на диске. Таким образом, при пропаже питания могут быть потеряны данные не более чем за N минут.

По умолчанию N=20, но может принимать значения от 1 до 30.

В начале каждого часа все блоки фиксируются на жестоком диске и начинаются сначала. Таким образом, в памяти всегда хранится предыстория за текущий час.

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

При нормальном завершении программы все часовые блоки находящиеся в памяти фиксируются на жестоком диске.

Приятной особенностью системы НЕЗАБУДКА явлется тот факт, что запрвшиваемые из архива данные возвращаются не виде числового массива, а в форме графического тренда, который автоматически настраивается на особенности вызываемых параметров: шкала, уставки, единицы измерения и т.п.

В программе предусмотрено 2 способа просмотра содержания периодического архива.

1.Часовая статистика по параметру

Минимум, максимум и среднее за час. Минимум, максимум и среднее за сутки.

📎📎📎📎📎📎📎📎📎📎