This is an old revision of the document!
arctrm
Модуль arctrm предназначен для периодического архивирования температурных значений в базе данных Firebird. На текущий момент значения считываются только из тегов модулей promauto.termo5. В дальнейшем возможно расширение поддержки других модулей термометрии.
Модуль сохраняет:
- температурные срезы по каждой подвеске;
- сведения о подвесках;
- события запуска архива и изменения состояния связи с устройствами.
Сам модуль не выполняет обмен с оборудованием. Данные и состояние связи он получает через ссылки Ref на теги других модулей.
Конфигурация
Пример настройки:
plugin.arctrm: module.arctrm: database: db schema: AT period: 5s size: 1000000 sensorCount: 6 promauto.termo5: mytrm1: p0: 231 силос, корпус 2 p5: 232 силос, корпус 2 mytrm2: p1: 401 силос, корпус 4
Параметры
| Параметр | По умолчанию | Описание |
|---|---|---|
database | db | Имя модуля базы данных. Модуль должен использовать Firebird. |
schema | AT | Префикс таблиц базы данных. |
period | 1h | Период сохранения архива. Поддерживаются суффиксы ms, s, m, h, d. |
size | 1000000 | Максимальное количество строк в таблице TEMPER. |
sensorCount | 6 | Количество датчиков в каждой подвеске. |
promauto.termo5 | — | Список модулей-источников и настроенных подвесок. |
Значения size, period и sensorCount должны быть больше нуля.
Настройка устройств
Ключ первого уровня в секции promauto.termo5 является именем модуля-источника тегов. Ключ подвески состоит из произвольного первого символа и числового номера. Например, из ключа p5 модуль получает номер подвеса 5.
Для каждой подвески создаются ссылки на теги:
<deviceName>:Pdv<podvesNum>.T0 <deviceName>:Pdv<podvesNum>.T1 ... <deviceName>:Pdv<podvesNum>.T<sensorCount-1>
Состояние связи с устройством определяется по тегу:
<deviceName>:SYSTEM.ErrorFlag
Принцип работы
После подключения к базе модуль автоматически:
- создаёт необходимые таблицы и индексы;
- добавляет отсутствующие колонки
T0…Tnв таблицуTEMPER; - синхронизирует справочник подвесок;
- загружает дату последней архивной записи;
- записывает событие запуска архива.
На каждом рабочем цикле модуль считывает текущие значения датчиков. Время берётся с сервера базы данных и округляется вниз до границы периода period.
Если наступил новый период, в TEMPER записывается по одной строке для каждой подвески. При превышении лимита size удаляются строки с наименьшими значениями ID.
База данных
| Таблица | Назначение |
|---|---|
PODVES | Справочник подвесок: имя и описание. |
TEMPER | Архив температурных срезов. Содержит PODVES_ID, DT и динамические колонки T0…Tn. |
EVENTLOG | Журнал запуска архива и изменения состояния связи с устройствами. |
Основные связи:
PODVES.ID <- TEMPER.PODVES_ID
Одна строка TEMPER содержит значения всех датчиков одной подвески за один архивный период.
Значения датчиков
Обычные значения записываются без изменения. Ошибочные состояния сохраняются в тех же колонках T0…Tn как специальные числа.
| Значение | Состояние |
|---|---|
3000 | Тег датчика не найден — NOLINK. |
3010 | Значение ниже допустимого диапазона — обрыв датчика. |
3011 | Значение выше допустимого диапазона — короткое замыкание. |
Допустимый диапазон обычного значения: от -1000 до 2000 включительно.
События
| Код | Событие |
|---|---|
0 | Инициализация архива. |
1 | Связь с устройством установлена. |
2 | Связь с устройством потеряна: SYSTEM.ErrorFlag = true. |
3 | Ссылка на SYSTEM.ErrorFlag не найдена. |
Событие состояния устройства записывается только при изменении его состояния.
Теги модуля
| Тег | Тип | Описание |
|---|---|---|
connected | boolean | Установлен, когда модуль подключён к базе и рабочий цикл выполняется без ошибки. |
Диагностика
Метод getInfo() возвращает краткую строку состояния, например:
devices=2 podves=3 sensors=18 cursize=30 last=2026-07-23 00:16:50
| Поле | Описание |
|---|---|
devices | Количество настроенных устройств. |
podves | Общее количество подвесок. |
sensors | Общее количество датчиков. |
nolinkSensors | Количество датчиков без ссылки; выводится только при ненулевом значении. |
cursize | Текущий размер таблицы TEMPER, учтённый модулем. |
last | Дата и время последнего архивного периода или never. |
При отсутствии подключения в начало строки добавляется NOT CONNECTED!. Если модуль выключен, возвращается disabled.
Ограничения
- Поддерживается только Firebird.
- Значение
sensorCountявляется общим для всех подвесок. - Таблица
EVENTLOGавтоматически не очищается. - Удаление архивных строк выполняется по
ID, а не по датеDT.