Skip to main content

Счётный

В режиме «Счётный» вход OrionMeter LA-IP-RSP и LA-IP-RSP[A] считает импульсы от прибора учёта — водо-, газо- или электросчётчика с выходом «сухой контакт» или «открытый коллектор». Накопленное значение устройство периодически передаёт в сеть LoRaWAN, а для входов 1 и 2 ещё и ведёт почасовой архив. Страница нужна тем, кто настраивает вход по эфиру и разбирает пакеты устройства на своём сервере. В описании Protocol 78 этот режим называется «счётный вход» (тип входа 0), в кодеке — counter.

Что делает счётный вход​

У LA-IP-RSP и LA-IP-RSP[A] три входа — в протоколе они нумеруются 0–2, это входы 1–3, — и нет дискретного выхода. Счётные входы и архив работают так же, как у базового OrionMeter LA-IP: в прошивке это один и тот же код.

  • Импульс только увеличивает счётчик: счётный вход не формирует событий и не запускает опрос по RS-485. События формирует только вход в режиме «Цифровой». Исключение — отдельная сборка прошивки LA-IP-RSP[A] с детектором утечек и прорывов: если детектор включён в системной конфигурации, по счётному входу формируются события утечки и прорыва.
  • Счёт и почасовой архив работают только в рабочем режиме устройства. Входы и часовой таймер запускаются при переходе в рабочий режим и останавливаются при выходе из него, поэтому в складском режиме импульсы не считаются. Режимы описаны на странице Эксплуатация.
Что передаёт устройствоЗапись Protocol 78Для каких входов
Текущие показания0x12Все включённые счётные входы; по команде магнитом — все входы в режиме «Счётный», в том числе выключенные
Суточный пакет почасового архива0x02 — вход 1, 0x04 — вход 2Только входы 1 и 2
Ответ на настройку входа0x08, подтипы CFG_ID и CFG_RESULTЛюбой вход

Как вход считает импульсы​

Триггер​

Какой фронт считать, задаёт триггер — биты 4–5 байта команды 0x04 (см. раздел «Настройка по эфиру»).

ЗначениеТриггерЧто считает вход
0Размыкание (нарастающий фронт)Одно размыкание — один импульс
1Замыкание (спадающий фронт), заводское значениеОдно замыкание — один импульс
2Любое изменениеСчётчик прибавляет на обоих фронтах: два отсчёта на импульс
3ОТСУТСТВУЕТНичего: устройство принимает такую настройку без ошибки, но вход не считает. Описание протокола запрещает задавать этот триггер для счётного входа

Байт команды 0x04, равный 0x00, настраивает счёт размыканий, а не замыканий. Для счёта по замыканию в режиме КОМБИ с приоритетом LOW передайте 0x10.

Режим КОМБИ: подавление дребезга и импульсный опрос​

Счётный вход всегда работает в режиме захвата КОМБИ:

  • Замыкание засчитывается сразу, на спадающем фронте. Затем устройство выдерживает время подавления дребезга.
  • Новые замыкания в это время не засчитываются, а продлевают его.
  • Если вход остаётся замкнутым дольше времени подавления дребезга, через 1000 мс устройство отключает подтяжку и дальше проверяет вход раз в период импульсного опроса — так оно экономит батарею.

Отсюда предел частоты импульсов — около 1 / время подавления дребезга: примерно 40 Гц при 24 мс и 50 Гц при минимальных 20 мс. Если контакт замыкается дольше времени подавления дребезга, пауза между импульсами тоже должна быть длиннее этого времени. Для КОМБИ на странице Цифровые входы указано 40 Гц.

Оба времени задаёт команда 0x05: по байту на параметр, в единицах «мс / 4». В EEPROM они тоже хранятся в единицах по 4 мс, поэтому заводские значения из прошивки — 26 и 101 мс — после записи и чтения превращаются в 24 и 100 мс. С этими значениями вход и работает.

ПараметрБайт команды 0x05Фактически по умолчаниюДопустимый диапазонЗначение 0 или вне диапазона
Время подавления дребезга024 мс (байт 6)20–512 мс: значения байта 5–128Устройство подставит 26 мс
Период импульсного опроса1100 мс (байт 25)50–1000 мс; с шагом 4 мс это значения байта 13–250 (52–1000 мс)Устройство подставит 101 мс

Режим ПРЕРЫВАНИЕ недоступен​

Внимание

Тип захвата ПРЕРЫВАНИЕ (биты 6–7 байта команды 0x04 = 1) прошивка не сохраняет: эти биты не записываются в EEPROM, а после применения настроек конфигурация перечитывается из EEPROM. Поэтому вход всегда работает в режиме КОМБИ. При этом устройство сохраняет новую версию конфигурации и сообщает её в ответе, как будто настройка применена. Так работают все версии прошивки с этим модулем входов, начиная с 2022 года.

Максимальная частота импульсов 200 Гц, которую спецификация указывает для устройства, а страница Цифровые входы — для режима ПРЕРЫВАНИЕ, недостижима. Рассчитывайте на предел режима КОМБИ — около 40 Гц. Задавайте в битах 6–7 значение 0: значения 2 и 3 — ошибка формата, на этом блоке устройство прекращает разбор кадра.

Настройки по умолчанию​

Эти настройки действуют, пока конфигурацию входа не меняли, а также если блок настроек входа в EEPROM повреждён (неверная CRC).

ПараметрЗначение по умолчанию
Тип входаСчётный (0) — у всех трёх входов
Вход включён (команда 0x0A, бит 0)Входы 1 и 2 — да, вход 3 — нет
Журналирование (команда 0x0A, бит 1)Входы 1 и 2 — включено, вход 3 — выключено
Отправка архива (команда 0x0A, бит 2)Включена у всех трёх входов; у входа 3 бит установлен, но архив для него не ведётся
Триггер«Замыкание» (спадающий фронт)
Тип захватаКОМБИ
ПриоритетLOW
Байт команды 0x040x10
Коэффициент1, деление
Время подавления дребезга24 мс (в прошивке 26 мс, см. выше)
Период импульсного опроса100 мс (в прошивке 101 мс)
Интервал отправки24 часа
Интервал сохранения в EEPROM30 минут — 120 циклов по 15 секунд
Подтверждение LoRaWAN (команда 0xEE)Выключено
Версия конфигурации (CFG_ID)0

Вход 3 с завода выключен: чтобы он считал, включите его командой 0x0A (бит 0).

Хранение счётчика и потеря питания​

Счётчик хранит число импульсов как 32-битное целое со знаком. У него две копии — в ОЗУ и в EEPROM, у каждой своя контрольная сумма (CRC).

  • В EEPROM значение записывается, только если оно изменилось, и не чаще одного раза за интервал сохранения — по умолчанию 30 минут. Интервал задаёт команда 0x03.
  • При запуске устройство берёт копию из ОЗУ, если её CRC верна и значение больше сохранённого в EEPROM. Иначе берётся копия из EEPROM, а если повреждены обе — 0.
  • Перед перезагрузкой по команде устройство сохраняет счётчики в EEPROM.
  • При пропадании питания счётчики не сохраняются: детектор пропадания питания их в EEPROM не записывает.

Поэтому при отключении питания — замене батареи у LA-IP-RSP или отключении сети у LA-IP-RSP[A] — теряются импульсы, накопленные после последнего сохранения в EEPROM: при заводском интервале до 30 минут счёта. Импульсы, которые прибор учёта выдаёт, пока LA-IP-RSP[A] без питания, тоже теряются — см. Назначение и применение.

Коэффициент и начальное значение​

Счётчик всегда хранит импульсы. Коэффициент (команда 0x06) устройство применяет к передаваемым показаниям — записи 0x12 — и к записям почасового архива. Деление целочисленное, остаток отбрасывается.

Биты значения команды 0x06 (uint16, младший байт первым)Значение
0–14Коэффициент минус 1
151 — умножать, 0 — делить

Например, 06 09 00 — делить на 10. Если в битах 0–14 передать 0x7FFF (коэффициент 32768), устройство подставит 1, поэтому фактически работают коэффициенты 1–32767. Описание протокола и кодек указывают диапазон 1–32768.

Начальное значение задают команды 0x00 (абсолютное значение) и 0x01 (приращение). Обе передают int32, младший байт первым, — тоже в импульсах, а не в единицах показания. Устройство сразу записывает новое значение в EEPROM.

Чтобы при делителе K устройство передавало показание R, задайте счётчик R × K импульсов. Например, при делителе 10 и показании прибора учёта 12 500 задайте 125 000 импульсов — пример кадра для входа 1 есть в разделе «Настройка по эфиру».

Текущие показания (FORMAT 0x12)​

Показания счётных входов устройство передаёт записью 0x12. Запись формируется:

  • когда срабатывает таймер интервала отправки входа (команда 0x02);
  • по команде магнитом «принудительная отправка» — в запись попадают все входы в режиме «Счётный», включая выключенные (с завода — все три).

Пакет, который устройство отправляет при запуске, показаний не содержит. Поэтому после активации первые показания приходят только через интервал отправки — с заводскими настройками через 24 часа.

Таймер интервала отправки отсчитывается от перехода устройства в рабочий режим или от последнего изменения настроек любого входа и к часам не привязан. Входы с одинаковым интервалом отправки попадают в одну запись. Запись ставится в очередь и уходит при ближайшем сеансе передачи; метка времени в ней — момент снятия показаний, а не момент передачи.

ПолеРазмерЗначение
FORMAT1 байт0x12
TIMESTAMP4 байта, uint32, младший байт первымСекунды от 01.01.2000 00:00 UTC. Чтобы получить UNIX-время, прибавьте 946684800
FLAGS1 байтБит 7 = 1 — номер входа указан в заголовке значения; биты 2–4 — число счётчиков минус 1; бит 5 — флаг инициализации, прошивка LA-IP-RSP его не выставляет
Заголовок значения1 байтБиты 0–2 — номер входа (с 0), биты 3–4 — длина значения минус 1, бит 7 — знак
Значение1–4 байта, младший байт первымПоказание с учётом коэффициента

Заголовок и значение повторяются для каждого счётного входа в записи.

Пример: 08.10.2026 в 12:00:00 UTC вход 1 показывает 12345, вход 2 — 5.

78 01 00 12 40 42 5A 32 84 08 39 30 01 05
БайтыЗначение
78 01 00Заголовок Protocol 78: ID, SEQ, FLAGS
12FORMAT 0x12 — текущие показания
40 42 5A 32TIMESTAMP 0x325A4240 = 844776000; 844776000 + 946684800 = 1791460800 — 08.10.2026 12:00:00 UTC
84FLAGS: бит 7 = 1 — номер входа в заголовке значения; биты 2–4 = 1 — два счётчика
08Заголовок: вход 0 (вход 1), биты 3–4 = 1 — значение 2 байта, знак 0
39 300x3039 = 12345
01Заголовок: вход 1 (вход 2), значение 1 байт
055

Фрагмент вывода кодека для этого пакета (служебные поля опущены):

"utctimestamp": "2026-10-08T12:00:00.000Z",
"counter_1": { "rawValue": 12345, "value": 12345 },
"counter_2": { "rawValue": 5, "value": 5 }

Вход 3 кодек называет counter_3: кадр 78 01 00 12 40 42 5A 32 80 02 07 даёт counter_3 = 7. Отрицательное значение передаётся с битом знака в заголовке: в кадре 78 01 00 12 40 42 5A 32 80 80 FB кодек разбирает counter_1 = −5.

Почасовой архив входов 1 и 2​

Почасовой архив ведётся только для входов 1 и 2; вход 3 в архивировании не участвует.

  • В начале каждого часа по часам устройства в архив записывается накопленное показание с учётом коэффициента — если вход включён, работает в режиме «Счётный» и у него включено журналирование (команда 0x0A, бит 1). Иначе записывается 0.
  • Записи текущих суток копятся в ОЗУ. После 24-й записи блок сохраняется в EEPROM, и для каждого из входов 1 и 2, который включён, работает в режиме «Счётный» и у которого включены журналирование и отправка архива (команда 0x0A, биты 0–2), устройство ставит в очередь пакет с 24 значениями.
  • Метка блока — время 24-й записи минус 23 часа, поэтому блок не привязан к полуночи. Отдельных меток у записей нет: они идут с шагом 1 час от метки блока. Если часовой тик пропущен (например, при перезагрузке), метки ранних записей блока сдвигаются.

В EEPROM хранится кольцо суточных блоков: новый блок записывается на место самого старого. В прошивке METER_V3.0.4.24 и новее блоков 49 — архив охватывает около 49 суток; в более ранних версиях — 52 или 54 блока. Спецификация указывает 62 дня — это расходится с прошивкой. Записи текущих неполных суток хранятся только в ОЗУ: запросить их по эфиру нельзя, а при пропадании питания они теряются.

Внимание

Значения в блоке хранятся разностями int16. Если прирост за час (после коэффициента) у входа 1 или 2 выходит за пределы −32768…32767, суточный блок не записывается для обоих входов, и суточные пакеты не отправляются. Так бывает:

  • при включении или выключении входа либо журналирования посреди суток, если показание больше 32767;
  • при установке счётчика командой 0x00 или 0x01 со скачком больше 32767;
  • при потоке больше 32767 импульсов в час без делителя.

Суточный пакет (FORMAT 0x02 и 0x04)​

Архив входа 1 приходит записью 0x02, входа 2 — записью 0x04. Записи 0x06 LA-IP-RSP не отправляет. Подробно флаги и сжатие разностей описаны на страницах 0x02 и 0x04.

ПолеРазмерЗначение
FORMAT1 байт0x02 — вход 1, 0x04 — вход 2
TIMESTAMP4 байта, uint32, младший байт первымВремя первой записи блока, секунды от 01.01.2000 00:00 UTC
Начальное значение4 байта, int32, младший байт первымПоказание первой записи с учётом коэффициента
FLAGS2 байта, uint16, младший байт первымБиты 8–13 (REC_NUM) — число разностей; бит 15 — счётчик за сутки не менялся, разностей в пакете нет
РазностиПеременныйСжатые разности между соседними записями

Пример: суточный пакет входа 1, счётчик за сутки не менялся и равен 1000.

78 02 00 02 D0 FE 58 32 E8 03 00 00 00 97
БайтыЗначение
78 02 00Заголовок Protocol 78: ID, SEQ, FLAGS
02FORMAT 0x02 — суточный архив входа 1
D0 FE 58 32TIMESTAMP 0x3258FED0 = 844693200; 844693200 + 946684800 = 1791378000 — 07.10.2026 13:00:00 UTC
E8 03 00 00Начальное значение 1000
00 97FLAGS 0x9700: бит 15 = 1 — счётчик не менялся, разностей нет; REC_NUM = 23

Кодек разбирает пакет как counter1 с массивом values из 24 значений 1000: первое — на 2026-10-07T13:00:00Z, шаг interval — 3600 секунд.

Запрос архива по эфиру (FORMAT 0x10)​

Суточные блоки из EEPROM можно запросить downlink-блоком FORMAT 0x10 на fPort 1 или 2 — как и настройки входов.

БайтЗначение
FORMAT0x10
LEN6
0Младшая тетрада — вход: 0 — вход 1, 1 — вход 2. Старшая тетрада — тип архива: 0 — часовой
1–4Начало периода: uint32, младший байт первым, секунды от 01.01.2000 00:00 UTC
5Число записей. Больше 24 устройство урезает до 24

Устройство отвечает записью 0x02 или 0x04. Метка в ответе — начало периода, округлённое вниз до записи архива. Если сжатые данные не помещаются в один кадр, остаток уходит следующим пакетом. Ответ ставится в очередь с наивысшим приоритетом, что ускоряет его передачу.

Устройство не отвечает ничем, если:

  • за запрошенный период в архиве нет данных;
  • запрошен вход 3;
  • запрошен суточный тип архива;
  • запрошено 0 записей.

Пример: запросить 24 записи входа 1, начиная с 07.10.2026 00:00 UTC. Пример собран по прошивке: кодек блок 0x10 не разбирает.

78 00 00 10 06 00 00 48 58 32 18
БайтыЗначение
78 00 00Заголовок Protocol 78: ID, SEQ, FLAGS
10FORMAT 0x10 — запрос архива
06LEN: 6 байт тела блока
00Вход 0 (вход 1), тип 0 — часовой архив
00 48 58 320x32584800 = 844646400 — 07.10.2026 00:00:00 UTC
1824 записи

Настройка по эфиру: блок DI CFG (FORMAT 0x02)​

Входы настраиваются downlink-пакетом Protocol 78. Устройство принимает его на fPort 1 и 2, кодек кодирует на fPort 2. После заголовка (ID 0x78, SEQ, FLAGS — см. Формат пакета) идёт блок DI CFG: байт FORMAT = 0x02, байт LEN с длиной тела блока, затем тело.

Байт телаЗначение
0Номер входа: 0, 1, 2 — входы 1, 2, 3. Блок с номером 3 и больше не применяется
1CFG_ID — версия конфигурации, см. раздел «Версия конфигурации и ответ устройства»
2 и далееКоманды: байт CMD, за ним данные команды. Команд в блоке может быть несколько

Команды счётного входа​

CMDНазначениеДанные
0x00Счётчик: абсолютное значение4 байта, int32, младший байт первым, в импульсах. Сразу записывается в EEPROM
0x01Счётчик: приращение4 байта, int32, младший байт первым, в импульсах. Сразу записывается в EEPROM
0x02Интервал отправки текущих показаний3 байта, uint24, младший байт первым, в секундах. Значение меньше 60 секунд устройство молча игнорирует
0x03Интервал сохранения счётчика в EEPROM2 байта, uint16, младший байт первым, в секундах. Устройство делит значение на 15 и отбрасывает остаток; значения 1–14 дают заводские 30 минут, 0 игнорируется
0x04Тип входа, приоритет, триггер, тип захвата1 байт, см. следующий раздел
0x05Время подавления дребезга и период импульсного опроса2 байта в единицах «мс / 4»: байт 0 — подавление дребезга, байт 1 — период импульсного опроса
0x06Коэффициент2 байта, uint16, младший байт первым, см. раздел «Коэффициент и начальное значение»
0x0AАктивация1 байт: бит 0 — вход включён, бит 1 — журналирование, бит 2 — отправка архива
0xEEПодтверждение LoRaWAN1 байт, см. таблицу ниже

Байт команды 0xEE задаёт, какие пакеты отправлять с подтверждением LoRaWAN:

БитПакеты
0Текущие показания — записи 0x12
1События и состояние цифровых входов; на счётный вход не действует
2Суточный архив — записи 0x02 и 0x04

Байт «Тип входа» (команда 0x04)​

БитыПараметрЗначения для счётного входа
0–1Тип входа0 — счётный (1 — «Цифровой»). Значения 2 и 3 — ошибка формата
2–3ПриоритетЗаводское значение — 0 (LOW). Значение 3 — ошибка формата
4–5Триггер0 — размыкание, 1 — замыкание, 2 — любое изменение, 3 — ОТСУТСТВУЕТ (не задавать), см. раздел «Триггер»
6–7Тип захвата0 — КОМБИ. 1 — ПРЕРЫВАНИЕ, прошивка не сохраняет. Значения 2 и 3 — ошибка формата

Для счёта по замыканию в режиме КОМБИ с приоритетом LOW передайте 0x10.

Пример: настройка входа 1​

Вход 1: счётный, LOW, по замыканию, КОМБИ; вход, журналирование и отправка архива включены; интервал отправки 1 час; делитель 10; версия конфигурации 5. Кадр на fPort 2:

78 00 00 02 0D 00 05 0A 07 02 10 0E 00 04 10 06 09 00
БайтыЗначение
78 00 00Заголовок Protocol 78: ID, SEQ, FLAGS
02FORMAT 0x02 — блок DI CFG
0DLEN: дальше 13 байт тела блока
00Номер входа 0 — вход 1
05CFG_ID = 5
0A 07Активация: вход включён, журналирование, отправка архива
02 10 0E 00Интервал отправки 0x000E10 = 3600 секунд (1 час)
04 10Тип входа: счётный, LOW, замыкание, КОМБИ
06 09 00Коэффициент: биты 0–14 = 9 — коэффициент 10, бит 15 = 0 — делить

Пример: установка счётчика​

Установить счётчик входа 1 в 125 000 импульсов, версия конфигурации 6:

78 00 00 02 07 00 06 00 48 E8 01 00
БайтыЗначение
78 00 00Заголовок Protocol 78: ID, SEQ, FLAGS
02FORMAT 0x02 — блок DI CFG
07LEN: дальше 7 байт тела блока
00Номер входа 0 — вход 1
06CFG_ID = 6
00 48 E8 01 00Команда 0x00: счётчик = 0x0001E848 = 125 000 импульсов

Версия конфигурации и ответ устройства​

CFG_ID в блоке DI CFG определяет, применять ли блок:

CFG_IDЧто делает устройство
0Ничего не применяет, только сообщает текущую версию
1–254Применяет блок, только если CFG_ID отличается от сохранённой версии. При совпадении блок пропускается целиком, включая установку счётчика
255Применяет блок всегда
  • Новая версия сохраняется, только если изменились настройки входа.
  • Блок только с командами 0x00 или 0x01 счётчик устанавливает, а версию не меняет: в ответе придёт прежняя версия, и повтор того же кадра установит счётчик ещё раз. С командой 0x01 повтор прибавит приращение повторно.
  • На блок DI CFG устройство отвечает служебной записью 0x08 с подтипом CFG_ID: подтип 3, номер блока 0x02 и версия, например 08 03 02 05 — версия 5. Номера входа в ответе нет.
  • После разбора всего downlink устройство отправляет ещё одну служебную запись 0x08 — подтип 2 (CFG_RESULT): 2 байта, uint16, младший байт первым; бит n = 1 — n-й по счёту блок настройки в кадре (с 0) принят. Для блока DI CFG бит ставится, даже если настройки не менялись. Пример для кадра с одним блоком: 08 02 01 00. Кодек объединяет обе записи в одну — DI_CFG с полями success и cfg_id.

После применения новых настроек вход переинициализируется и в режиме КОМБИ начинает принимать импульсы примерно через 1 секунду. Таймеры отправки текущих показаний перезапускаются от этого момента.

Ошибки в блоке​

  • Блок с номером входа 3 и больше не применяется.
  • При ошибке формата — данных команды меньше, чем нужно, а у применяемого блока также приоритет 3, тип входа 2 или 3, тип захвата 2 или 3 — устройство прекращает разбор downlink на этом месте: блок с ошибкой и все блоки после него не применяются и не получают ответа, запись CFG_RESULT тоже не отправляется. Блоки раньше в кадре и команды 0x00/0x01 этого блока, стоящие раньше ошибки, уже применены.
  • Если блок не применяется — CFG_ID равен 0 или сохранённой версии, — неверные значения байта команды 0x04 не проверяются и ошибкой не считаются.

Что важно знать​

  • Байт команды 0x04, равный 0x00, настраивает счёт размыканий. Для счёта по замыканию передайте 0x10.
  • Триггер «любое изменение» даёт два отсчёта на импульс, триггер «ОТСУТСТВУЕТ» — ни одного.
  • ПРЕРЫВАНИЕ прошивка не сохраняет: предел частоты — около 40 Гц, а не 200 Гц из спецификации.
  • После активации первые показания приходят через интервал отправки — с заводскими настройками через 24 часа.
  • Счётчик задаётся в импульсах: при делителе K для показания R задайте R × K импульсов.
  • Блок с CFG_ID, равным сохранённой версии, пропускается целиком — вместе с установкой счётчика.
  • Прирост больше 32767 за час у входа 1 или 2 — и суточный архив обоих входов не записывается.
  • Архив хранится около 49 суток (в старых версиях прошивки — 52–54), а не 62 дня, как указано в спецификации.
  • Не задавайте интервал отправки больше 4 294 967 секунд (около 49,7 суток): переполняется таймер устройства.
  • При пропадании питания теряются импульсы, накопленные после последнего сохранения в EEPROM, — до 30 минут счёта при заводском интервале.

См. также​