Незабудка - открытая система архивирования на базе СУБД FIREBIRD. Часть 1. (исходники)Источник: xandrvednarod Группа разработчиков под незатейливым названием "КЕМЕРОВОЗ"
Система НЕЗАБУДКА разрабатывается как бесплатный инструмент c открытым кодом (OPEN SOURCE) для решения задач АСУТП среднего класса (до 20000 тэгов) с невысокой скоростью процесса (не требуется регистрация данных чаще чем 1 раз в секунду). Она предназначена для предприятий, которые имеют многочисленные объекты АСУТП, опытных программистов и стремятся разрабатывать собственные элементы SCADA- системы в целях экономии средств и обретения независимости от сторонних фирм. Учитывая высокую стоимость коммерческих SCADA- систем, а также их значительную избыточность в случае применения в АСУТП среднего класса, количество таких предприятий стремительно возрастает. Для их поддержки впервые в России разрабатывается бесплатная SCADA-система КемеНеЯ, автономной и самодостаточной подсистемой которой является НЕЗАБУДКА (наш адрес ???). Назначение Возможности
Компоненты - модуль периодического архива (nz_history.dll); - модуль архива событий и сообщений (nz_message.dll); - главный модуль просмотра архивов (nezabudka.dll), который подключается к SCADA системе и подключает 2 указанных выше модуля. Системные требования Основные функции главного модуля (номер функции в nezabudka.dll и ее назначение) : 0 - Инициализация структур данных 2 - Инициализация часовых блоков.Запуск потоков архивации.Начало работы 1 - Вызов журнала сообщений 3 - Вызов среднечасовой статистики по параметру 5 - Добавить параметр в группу графиков на указанное место 6 - Регистрация события 7 - Регистрация сообщения 8 - Вызов группы графиков 99 - завершение работы
Алгоритм работы ( nezabudka.dll)
1. Начало работы. Работа осуществляется под управлением внешнего приложения. При старте инициализируются все внутренние структуры и запускается процесс периодической архивации (функции 0 и 2). 2. Регистрация. Так как при старте библиотеке передаются адреса описателей параметров, то процесс периодической архивации самостоятельно циклически считывает значение параметра из указанного адреса ,производит его регистрацию и не требует вмешательства внешнего приложения вплоть до получения команды на завершение работы. Напротив для регистрации событий и сообщений приложение должно вызвать функции 6 или 7. 3. Просмотр архивов. Для просмотра архива сообщений вызывается журнал сообщений (функция 1). Для просмотра периодического архива используются функции 3 (тренд среднечасовой), а также функции 5 и 8 (тренд секундный индивидуальный или групповой) . 4. Завершение работы происходит при вызове функции 99. Аналоги (платные): 1. "Комплексные системы" http://www.complexsystems.ru 2. ООО "ЧЭТА" http://www.cheta.ru 1. Характеристика периодического архива
Периодический архив параметров предназначен для хранения предыстории параметров технологического объекта. Список таких параметров определяется при настройке программы и не может быть изменен в процессе работы программы. Программа периодически сохраняет данные в память компьютера. Каждые минуту содержание памяти частично сохраняется на жестком диске в базу данных FIREBIRD. Для уменьшения размера архива значения хранятся с допустимой погрешностью(апертурой). Апертура устанавливается при настройке программы индивидуально для каждого параметра (например 0.3 % шкалы). Во избежание неумеренного разрастания архива его размер ограничивается заданием периода хранения (например 100 суток). 2. Принцип работы периодического архива.Значения параметров регистрируются 1 раз в секунду. В идеале после окончания цикла данные должны сразу же фиксироваться на жестком диске, но на практике данные сначала накапливаются в памяти в течении какого-то времени и только потом записываются на диск. Недостаток такого подхода - пропажа данных в памяти в случае сбоя питания компьютера. Преимущества - повышение производительности программы и возможность сохранять данные целыми блоками.
Поэтому архив имеет блочную структуру. Блок содержит последовательность значений по одному параметру за один час ( с начала текущего часа) с периодом равным периоду опроса (минимальный период=1 секунда).Такая структура архива позволяет использовать новый(!) эффективный способ упаковки данных для значительного уменьшения размера архива и ускорения операций чтения/записи. Часовой блок содержит следующую информацию: индекс параметра, значения которого содержатся в блоке; дата и час - координаты часового блока; массив значений в упакованном виде (с учетом апертуры); минимальное, максимальное и среднее значение параметра за час (без учета апертуры). Значения по параметру накапливаются в памяти в часовом блоке при каждом опросе. В начале каждой минуты на жестоком диске фиксируется 1/N часть всех блоков, так чтобы через N минут все блоки были сохранены на диске. Таким образом, при пропаже питания могут быть потеряны данные не более чем за N минут. По умолчанию N=20, но может принимать значения от 1 до 30. В начале каждого часа все блоки фиксируются на жестоком диске и начинаются сначала. Таким образом, в памяти всегда хранится предыстория за текущий час. При старте программы если в архиве уже есть данные за текущий час, то они загружаются в часовой блок в памяти, в противном случае блок начинает заполняться заново. При нормальном завершении программы все часовые блоки находящиеся в памяти фиксируются на жестоком диске. 3. Просмотр содержания периодического архива.Приятной особенностью системы НЕЗАБУДКА явлется тот факт, что запрвшиваемые из архива данные возвращаются не виде числового массива, а в форме графического тренда, который автоматически настраивается на особенности вызываемых параметров: шкала, уставки, единицы измерения и т.п. В программе предусмотрено 2 способа просмотра содержания периодического архива.
|