Незабудка - открытая система архивирования на базе СУБД 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.Часовая статистика по параметру
Минимум, максимум и среднее за час. Минимум, максимум и среднее за сутки.