doc:jroboplc:modules:arctrm

This is an old revision of the document!


arctrm

Модуль arctrm предназначен для периодического архивирования температурных значений в базе данных Firebird. Значения считываются из тегов модулей promauto.termo5.

Модуль сохраняет:

  • температурные срезы по каждой подвеске;
  • сведения о подвесках;
  • события запуска архива и изменения состояния связи с устройствами.

Сам модуль не выполняет обмен с оборудованием. Данные и состояние связи он получает через ссылки Ref на теги других модулей.

arctrm для разработчика

Пример настройки:

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

После подключения к базе модуль автоматически:

  1. создаёт необходимые таблицы и индексы;
  2. добавляет отсутствующие колонки T0…Tn в таблицу TEMPER;
  3. синхронизирует справочник подвесок;
  4. загружает дату последней архивной записи;
  5. записывает событие запуска архива.

На каждом рабочем цикле модуль считывает текущие значения датчиков. Время берётся с сервера базы данных и округляется вниз до границы периода 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.
  • doc/jroboplc/modules/arctrm.1784745981.txt.gz
  • Last modified: 2026/07/22 21:46
  • by denis