Архиваторы AgavaSCADA/AgavaPLC
1 Архиватор SQLite
Архиватор SQLite предназначен для сохранения значений параметров в БД формата SQLite.
Для извлечения и просмотра баз данных формата SQLite с устройств может использоваться программа «Архиватор».
1.1 Свойства узла "Архиватор SQLite"
| Наименование свойства | Идентификатор | Тип | Доступ | Описание |
|---|---|---|---|---|
| Путь до файла БД | FilePath | STRING | Чтение / запись | Путь до файла БД. Абсолютный или относительный. |
| Интервал архивирования | Interval | INT | Чтение / запись | Интервал архивирования, мс. |
| Период хранения | Retention | INT | Чтение / запись | Период хранения, дней. |
| Разбиение БД | DBSplitting | BOOL | Чтение / запись | Разбиение БД на файлы. При включении база данных будет разделяться на отдельные файлы, содержащие данные за одни сутки. |
| Интервал сохранения БД на диск | StoringInterval | INT | Чтение / запись | Интервал сохранения БД на диск, мс. |
| Режим выдачи значений | ValueReturnMode | ENUM | Чтение / запись | Режим выдачи значений. Режим "Сохраняемые в БД" — данные выдаются сразу после получения архиватором, возможно до фактического сохранения в БД. Режим "Сохраненные в БД" — данные выдаются только после фактической записи в БД на диск. |
| Коннекторы БД | Signals | NODESARRAY | Чтение / запись | Список коннекторов, содержащих сигналы для архивирования. |
| Текущий размер БД | DBCurrentSize | INT | Только чтение | Текущий размер БД, Мб. |
| Максимальный размер БД | DBMaxSize | INT | Только чтение | Максимальный размер БД, Мб. |
| Состояние БД | DBStatus | INT | Только чтение | Текущий статус операций SQLite (числовой код). Для расшифровки см. раздел Статусы операций SQLite. |
| Включить прореживание | ThinningEnabled | BOOL | Чтение / запись | Включение режима прореживания архива. При включении применяется фильтрация по изменению значения. |
| Тип допуска | ToleranceType | ENUM | Чтение / запись | Тип допуска для прореживания. Возможные значения: "Абсолютные единицы", "Процент от последнего значения", "Процент от среднего значения" и "Процент от среднего значения (окно по времени)" |
| Допуск | ThinningTolerance | FLOAT | Чтение / запись | Величина допуска: в абсолютных единицах для режима «Абсолютные единицы», в процентах для режимов «Процент от…». |
| Период обязательной записи (мс) | MandatoryPeriod | UINT | Чтение / запись | Максимальный интервал между записями данных в архив, даже если значение не изменилось. |
| Размер окна среднего (N) | AverageWindowN | UINT | Чтение / запись | Количество последних значений для расчёта среднего. Используется только в режиме «Процент от среднего значения». В остальных режимах игнорируется. |
1.2 Статусы операций SQLite
В ходе работы SQLite возвращает статус выполнения операций в виде целочисленных значений. Далее приведена расшифровка этих кодов и возможные пути разрешения ошибок.
| Код | Расшифровка | Что предпринять чтобы починить? |
|---|---|---|
| 0 | Операция выполнена успешно. | Не ошибка. Действий не требуется. |
| 1 | Общая ошибка выполнения операции. | Повторите операцию. Проверьте доступность пути к базе и прав доступа, наличие свободного места на диске, отсутствие блокировки антивирусом/резервным копированием. Перезапустите приложение. |
| 2 | Внутренняя ошибка SQLite (ошибка логики). | Перезапустите приложение (при необходимости — ПК). Убедитесь, что не запущено несколько копий программы. |
| 3 | Недостаточно прав для доступа к файлу или базе данных. | Проверьте, что у пользователя или службы, от имени которой работает программа, есть разрешение на чтение и запись в каталог базы данных. Если база на сетевом диске — убедитесь, что доступ не заблокирован. |
| 4 | Операция прервана внутренним процессом. | Обычно это означает, что выполнение запроса было остановлено из-за внутреннего условия или сигнала прерывания. Повторите операцию. Если ошибка повторяется — перезапустите программу. |
| 5 | Файл базы данных удерживается другой программой/процессом. | Подождите 5–30 секунд и повторите операцию. Закройте другие копии программы/станции, отчёты, резервное копирование, антивирусное сканирование. Если база на сетевом диске — убедитесь, что её не открывают с других машин. |
| 6 | Заблокирована таблица внутри базы. | Дождитесь завершения текущей операции в программе. Закройте окна/отчёты, которые используют ту же таблицу. Если запущено несколько экземпляров на одной станции — оставьте один. Перезапустите программу. |
| 7 | Недостаточно оперативной памяти. | Закройте лишние приложения/тяжёлые отчёты и повторите. Перезапустите программу или ПК. Убедитесь, что хватает ОЗУ и места под файл подкачки. При систематическом повторении — используйте машину с большим объёмом памяти. |
| 8 | Попытка записи в базу «только для чтения». | Снимите атрибут «Только чтение» с файла .db и каталога. Проверьте права на запись (локально/на сетевой шаре). Убедитесь, что диск/том не смонтирован как «только чтение» и в настройках программы не выбран режим «только чтение». |
| 9 | Операция была прервана системой/другим процессом. | Повторите операцию и дождитесь завершения. Не закрывайте окно и не переключайте станцию во время выполнения. Убедитесь, что на станции не идут параллельно резервное копирование/антивирусное сканирование. Перезапустите приложение (при необходимости — ПК). Если повторяется — сохраните лог и время сбоя и обратитесь в поддержку. |
| 10 | Ошибка чтения/записи на диск. | Проверьте свободное место и доступ к диску; исключите блокировку антивирусом; проверьте доступность сетевого пути. |
| 11 | Файл базы повреждён. | Сделайте копию файла; восстановите из резервной копии. Если её нет — переименуйте/удалите базу (создастся заново; история будет потеряна). |
| 12 | Запрошена неподдерживаемая низкоуровневая операция хранения. | Если работа продолжается — действий не требуется. Если операция с базой данных не выполняется: перезапустите приложение; проверьте доступность диска/сетевого пути; по возможности временно перенесите базу на локальный диск. |
| 13 | На диске закончилось место. | Освободите место; уменьшите период хранения; включите разбиение БД на файлы. |
| 14 | Не удаётся открыть файл базы. | Проверьте путь и существование папки; права доступа; при необходимости укажите новый путь. |
| 15 | Ошибка протокола блокировок (нарушен порядок совместного доступа). | Закройте все окна/станции, которые используют базу. Подождите 30–60 секунд и запустите снова. Убедитесь, что не идут резервное копирование/антивирусное сканирование. Если база доступна по сети — временно скопируйте её на локальный диск и проверьте работу. |
| 16 | Внутренняя ошибка SQLite (служебный код). | Перезапустите приложение. |
| 17 | Изменилась структура базы во время работы. | Закройте другие экземпляры/станции, которые могли менять структуру. Перезапустите приложение. Если база обновлялась — дождитесь завершения обновления. |
| 18 | Слишком большой блок данных. | Уменьшите размер добавляемых данных. |
| 19 | Нарушено ограничение данных (дубликат, пустое обязательное поле и т.п.). | Проверьте вводимые значения: уникальные имена/ID, заполнение обязательных полей, корректные ссылки на объекты. Исправьте данные и повторите. Если источник данных внешний — исправьте файл/настройки импорта. |
| 20 | Несовместимый тип данных (текст вместо числа и т.п.). | Проверьте формат значений и региональные настройки (разделитель дроби, дата/время). Исправьте файл/настройки импорта или параметры тега и повторите. |
| 21 | Ошибка использования библиотеки (ошибка приложения). | Перезапустите приложение. Убедитесь, что не запускаете несколько конфликтующих копий. |
| 22 | Файловая система/операционная система не поддерживает большие файлы/нужные функции. | Вероятная причина — устаревшая файловая система или сетевое хранилище. Обратитесь к администратору для переноса базы на современную ФС/носитель. Как временная мера — уменьшите размер базы (сократите период хранения/включите ротацию). |
| 23 | Отказ в авторизации (нет прав на действие). | Войдите под учётной записью с нужными правами или запросите доступ у администратора. Если используется сеть — проверьте подключение и актуальность прав. |
| 24 | Не используется (оставлен для обратной совместимости). | Действий не требуется. |
| 25 | Неверные параметры запроса (внутренняя ошибка приложения). | Перезапустите приложение. |
| 26 | Открыт файл, который не является базой данных. | Проверьте путь и что выбран именно файл БД. Если файл повреждён — восстановите из резервной копии или создайте новую БД. |
| 27 | Уведомление (информационное сообщение). | Действий не требуется. В случае частых появлений кода проверьте логи базы данных для выяснения причины. |
| 28 | Предупреждение (некритичная проблема). | Действий не требуется. В случае частых появлений кода проверьте логи базы данных для выяснения причины. |
| 100 | Доступна следующая строка данных. | Не ошибка. Действий не требуется. |
| 101 | Операция завершена, данных больше нет. | Не ошибка. Действий не требуется. |
2 Архиватор PostgreSQL
Архиватор PostgreSQL предназначен для сохранения значений параметров в базы данных под управлением сервера PostgreSQL.
2.1 Прореживание данных
Прореживание данных — это процесс фильтрации и уменьшения количества точек данных, сохраняемых в архиве. Вместо того чтобы записывать каждое полученное значение, система анализирует поток данных и сохраняет только те значения, которые представляют значимое изменение.
Назначение прореживания
Поток данных от датчиков и устройств зачастую содержит незначительные колебания (шум) или избыточные данные, когда параметр не меняется. Прореживание решает следующие задачи:
- Снижение нагрузки на архив: Меньшее количество записей означает более быструю работу базы данных.
- Ускорение отображения графиков: Нужно обрабатывать меньше точек для построения трендов.
- Сохранение только значимых изменений: Система отфильтровывает шум и оставляет только те изменения, которые важны для анализа технологического процесса.
Общий принцип работы
Алгоритм прореживания работает по простому принципу:
- SCADA-система получает новое значение от источника данных.
- Она сравнивает это значение с последним, которое было сохранено в архив.
- Если изменение превышает заранее настроенный допуск (tolerance), новое значение сохраняется.
- Если изменение меньше допуска, значение пропускается.
Кроме того, существует параметр "Период обязательной записи". Если с момента последней записи прошло больше времени, чем указано в этом параметре, новое значение будет сохранено независимо от его изменения. Это гарантирует, что записи в архив будут сохраняться не реже заданной периодичности, даже если сигнал не меняется. Ключевая идея: "Сохраняем только то, что заметно изменилось, но не реже, чем задано".
Как подобрать допуск?
- Слишком малый допуск приведёт к записи избыточных данных, и архив будет быстро расти.
- Слишком большой допуск может привести к потере мелких, но значимых изменений в сигнале.
Выбор правильного допуска — это компромисс между детализацией данных и размером архива.
2.1.1 Типы алгоритмов прореживания
В системе доступны несколько алгоритмов, которые определяют, как именно вычисляется «значимость» изменения. Выбор алгоритма зависит от характера сигнала и требований к точности данных.
- Абсолютный допуск
- Процент от последнего значения
- Процент от среднего N последних
- Процент от среднего по временному окну
Обозначения и определения
В дальнейшем используются следующие обозначения (для числовых сигналов):
- — текущее измерение сигнала, полученное от источника данных к моменту обработки (кандидат на запись).
- — последнее сохранённое числовое значение сигнала в архиве на момент обработки (опорное значение).
- — абсолютная величина изменения между текущим измерением и последним сохранённым значением.
- — арифметическое среднее последних сохранённых числовых значений.
- — среднее всех сохранённых числовых значений, чьи метки времени попадают в временное окно длительности миллисекунд.
- — машинная точность для чисел двойной точности; используется для формальной проверки «близости к нулю».
- — допуск: абсолютный (в физических единицах) или относительный (в процентах), в зависимости от выбранного алгоритма.
Настройки в Свойствах архиватора, общие для всех типов прореживания
- Включить прореживание — включает/выключает применение алгоритма прореживания при записи значений. При выключении все поступающие значения сохраняются без фильтрации.
- Тип допуска — выбирает алгоритм сравнения.
- Период обязательной записи (мс) — максимальный допустимый промежуток между двумя записями одного сигнала. Если за это время значимого изменения не произошло, ближайшее поступившее значение будет записано принудительно. 0 — отключить принудительную запись.
2.1.1.1 Абсолютный допуск
Принцип:
Новое значение сохраняется, если модуль изменения больше установленного порога в физических единицах.Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle |\Delta| > tolerance} Когда использовать:
- Если диапазон сигнала стабилен и известен заранее.
- Для параметров вроде температуры, давления, уровня жидкости, где фиксированное изменение имеет одинаковую интерпретацию по всей шкале.
Преимущества:
- Обеспечивает предсказуемое и детерминированное поведение независимо от текущего масштаба значения.
- Не требует накопления или хранения дополнительных данных (окон/истории), вычислительно прост.
- Удобен при наличии нормативно заданных пределов точности в физических единицах.
Ограничения:
- Не масштабируется на широкий динамический диапазон: один и тот же порог может быть слишком грубым для малых значений и слишком чувствительным для больших.
- Требует аккуратного подбора порога под единицы измерения и разрешение датчика; при неверной калибровке возможны либо избыточные записи, либо потеря значимых мелких изменений.
- Не учитывает относительный контекст изменения (например, 1 единица при значении 10 и при значении 10 000 трактуется одинаково).
Настройки в Свойствах архиватора:
- Допуск — абсолютный порог в физических единицах сигнала. Определяет значение Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle tolerance} .
2.1.1.2 Процент от последнего значения
Принцип:
Новое значение сохраняется, если относительное изменение относительно последнего сохранённого превышает заданный процент.
- Для сигналов, где важна относительная динамика, а не абсолютные величины.
- Для показателей с большим динамическим диапазоном, где относительная точность должна быть сопоставима на всех уровнях.
Преимущества:
- Масштабируемость: одинаково интерпретирует относительные изменения на низких и высоких уровнях сигнала.
- Не требует хранения окна значений; использует только последнее сохранённое значение, поэтому вычислительно лёгок.
- Быстро и корректно реагирует на пропорциональные изменения процесса (проценты), поддерживая заданную относительную чувствительность.
Ограничения:
- В окрестности нуля относительная метрика становится нестабильной (см. примечание).
- При малых базовых значениях возможна повышенная чувствительность к шуму и микроколебаниям.
- Не подавляет высокочастотный шум сам по себе: при необходимости сочетать с обязательной записью по времени и корректной настройкой допуска.
Настройки в Свойствах архиватора:
- Допуск — относительный порог в процентах. Определяет значение .
2.1.1.3 Процент от среднего N последних
Принцип:
Новое значение сохраняется, если изменение больше заданного процента от среднего по последним N сохранённым значениям.Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle \frac{|\Delta|}{|\bar{x}_{N}|} \times{100} > tolerance} Когда использовать:
- Для сигналов с постоянным шумом или пульсациями, когда важно снижать чувствительность к случайным отклонениям.
- Для процессов с умеренной динамикой, где требуется устойчивость к «зубчатым» колебаниям.
Преимущества:
- Снижает чувствительность к высокочастотному шуму за счёт опоры на усреднение; сокращает объём записей на стационарных участках.
- Гибко настраивается параметром Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle N} : увеличение окна повышает устойчивость, уменьшение — повышает чувствительность и снижает задержку реакции.
Ограничения:
- В окрестности нуля относительная метрика становится нестабильной (см. примечание).
- Инерционность: при резких скачках возможна задержка фиксации изменения, особенно при большом .
- Усреднение может «сглаживать» и не фиксировать кратковременные, но важные пики; не подходит для задач, критичных к коротким экстремумам.
- Предполагает относительно стабильную частоту выборок; при сильно переменной частоте эффективная «временная» ширина окна становится непредсказуемой.
Настройки в Свойствах архиватора:
- Допуск — относительный порог в процентах. Определяет значение .
- Размер окна среднего (Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle N} ) — число последних сохранённых значений, по которым считается среднее. Большее Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://en.wikipedia.org/api/rest_v1/»:): {\displaystyle N} повышает устойчивость к шуму, но увеличивает инерционность реакции.
2.1.1.4 Процент от среднего по временному окну
Принцип:
Похож на предыдущий, но среднее считается не по количеству точек, а по всем значениям за заданный интервал времени.
- Для сигналов с непостоянной частотой измерений (событийные, неравномерные потоки).
- В случаях, когда важно учитывать реальную временную протяжённость усреднения независимо от плотности измерений.
Преимущества:
- Корректно работает при переменной частоте выборок: окно фиксируется по времени, а не по числу точек.
- Более реалистично оценивает тренд во времени на участках с неравномерными измерениями.
- Управляемый компромисс между подавлением шума и чувствительностью за счёт выбора длительности окна.
Ограничения:
- В окрестности нуля относительная метрика становится нестабильной (см. примечание).
- Более высокая ресурсоёмкость: требуется хранить и периодически «очищать» значения по условию выхода из временного окна; потребление памяти зависит от фактической скорости поступления данных.
- Инерционность, присущая усреднению: возможна задержка фиксации коротких, но значимых пиковых изменений.
- Критичен выбор длительности окна: слишком малое окно даёт мало подавления шума, слишком большое — чрезмерную инерцию и риск пропуска кратких событий.
Настройки в Свойствах архиватора:
- Допуск — относительный порог в процентах. Определяет значение .
- Интервал архивирования — длительность временного окна (мс), в пределах которого вычисляется среднее. При увеличении растёт сглаживание и уменьшается чувствительность к кратким всплескам; при уменьшении — наоборот. Значения, чьи метки времени выходят за пределы окна, автоматически исключаются из расчёта.
2.1.2 Примечание к алгоритмам 'Процент от…'
При малых опорных значениях система автоматически переходит в абсолютный режим, чтобы избежать деления на величину, близкую к нулю, и связанных с этим скачков чувствительности. Этот механизм применяется ко всем алгоритмам, использующим относительное сравнение: «Процент от последнего», «Процент от среднего N», «Процент от среднего по временному окну» и обеспечивает стабильность критерия при слабых сигналах.
- Условия входа в режим абсолютного допуска:
- для «Процента от последнего»: ;
- для «Процента от среднего N»: ;
- для «Процента от среднего по времени»: .
- Критерий в режиме абсолютного допуска: значение фиксируется, если .
- Условие выхода: как только соответствующая базовая величина (, или ) становится , система автоматически возвращается к относительному критерию.
- Трактовка : используется то же значение настройки; в абсолютном режиме оно интерпретируется как порог в физических единицах сигнала.
2.1.3 Сравнение алгоритмов прореживания данных
| Критерий | Абсолютный | % от последнего | % от среднего N | % от среднего по времени |
|---|---|---|---|---|
| Единицы допуска | Физические | Проценты | Проценты | Проценты |
| Устойчивость к шуму | Низкая | Средняя | Высокая | Высокая |
| Реакция на резкие скачки | Быстрая | Быстрая | Задержка (при большом N) | Задержка |
| Подходит при переменной частоте | Да | Да | Нет | Да |