Регистры Modbus — СЭ-02м-3
This page is not translated yet. The text below is the Russian source. Facts are unchanged.
Фазные и межфазные напряжения, токи трёх фаз и нейтрали, мощности, частота, коэффициент мощности, энергия и коэффициенты трансформаторов тока.
Опасное напряжение. Регистры 500…508 — фазные и межфазные напряжения. Подключение этих цепей выполняют только при снятом напряжении.
Полная карта регистров генерируется из файла карты регистров прошивки и лежит в репозитории: src/data/generated/registers/ce-02m-3.json (156 строк). Ниже 15 ключевых регистров. Компонент под ними показывает все 156 строк JSON.
Единица энергии 580…647 — целые Вт·ч (с версии 1.0.7.11).
Порт: RS-485, Modbus RTU. По умолчанию 115200 8N1 — из таблицы семейства, где у этого прибора заводской адрес 14. Карта прибора задаёт запись адреса в Holding 128 (1…247) и заводскую цифру 14 сама не повторяет. Портов RS-485 два. Holding 122 = 2 в специальной сборке переводит порт, с которого пришла запись, на BACnet MS/TP 38400 8N1; второй порт остаётся Modbus. В обычной сборке значение 2 на протокол не действует.
Функции: coil 0x01/0x05/0x0F, discrete 0x02, holding 0x03/0x06/0x10, input 0x04. Блок измерений 500…679 читается по FC04. Регистры 553…559 читаются и по FC04, и по FC03; запись 553…559 — только holding.
Пространство в таблице — то, которым регистром пользуются при настройке или чтении измерения. Общий заголовок карты объединяет input и holding в одном списке служебных адресов и отдельно помечает, где запись идёт через holding.
| Адрес | Пространство | Название |
|---|---|---|
| 0 | input | Код продукта 100 |
| 110 | holding | Скорость RS-485. Пример кодирования: 96 = 9600, 1152 = 115200. Чётность — 111 (0 нет, 1 odd, 2 even), стоп-биты — 112 (1 или 2) |
| 122 | holding | Режим шины: 0 = классический Modbus, 1 = Fast Modbus, 2 = BACnet MS/TP. Запись больше 2 — исключение 3. Coil 122 остаётся флагом 0/1 и снимает выбор BACnet |
| 128 | holding | Адрес прибора 1…247, запись через holding и EEPROM |
| 129 | holding | Ненулевая запись — режим обновления прошивки, около 2 минут, не широковещательно |
| 500 | input | Напряжение фазы A, В×10. Пример: 2205 = 220,5 В. Фазы B и C — 501 и 502. Целые вольты — 503…505. Межфазные Uab/Ubc/Uca — 506…508, В×10 |
| 510 | input | Ток фазы A, А×1000. Пример: 1234 = 1,234 А. Фазы B, C и нейтраль — 511…513. Потолок uint16 — 65534 (65,534 А). 0xFFFF в этом проекте означает неудачное чтение, поэтому насыщение стоит на единицу ниже |
| 514 | input | Ток фазы A, А×10. Фазы B, C и нейтраль — 515…517. Выше 65,5 А читают этот масштаб: он считается из необрезанного произведения |
| 524 | input | Суммарная активная мощность, Вт, int32: младшее слово 524, старшее 525. По фазам активная мощность — 518…523 |
| 542 | input | Частота сети, Гц×100 |
| 543 | input | cos φ фазы A, ×1000, int16. Фазы B, C и сумма — 544…546. При малой полной мощности чтение даёт 0 |
| 553 | holding | Обнаружение пропажи фаз: 0 = выкл (по умолчанию), 1 = вкл. Инверсия ТТ фаз A/B/C — 554…556, значение больше 1 отклоняется |
| 557 | holding | Коэффициент ТТ фазы A. Первичный ток, мА = ток измерителя, мА × K / 1000. Диапазон 1…20000, заводское 4000 (пример карты: 80 А при 20 мА на вторичной обмотке). Запись 0 становится 4000. Запись больше 20000 обрезается до 20000 и квитируется успехом. Фазы B и C — 558 и 559 |
| 580 | input | Суммарная активная энергия импорта, uint64, четыре слова 580…583, младшее слово по меньшему адресу. С 1.0.7.11 — целые Вт·ч первичной цепи. Соседние суммы: 584 экспорт активной, 588/592 реактивная, 596 полная |
| 1001 | holding | Ненулевая запись — сброс настроек EEPROM к заводским, в основном цикле |
| Адрес (dec) | Адрес (hex) | Тип | Функции | Доступ | Формат | Ед. и масштаб | Значения и диапазон | По умолчанию | Хранение | ⚡ Событие Fast Modbus | С версии ПО | Канал | Название | Описание |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 122 | 0x007A | Coil | 01/05/0F | RW | нет | Fast Modbus | Fast Modbus: 0 = классический (DMA), 1 = Fast Modbus. Чтение/запись, EEPROM. Legacy-грань 3-состояночного селектора Holding 122 (см. ниже): coil принимает только 0/1 (запись 1-значным битом коэрсится в {0,1}); запись через coil ВСЕГДА снимает BACnet-выбор (если он был зафиксирован через Holding 122=2), возвращая режим к классическому/Fast. Контракт: docs/contracts/bus-protocol.md. | |||||||
| 118 | 0x0076 | Coil | 01/05/0F | RW | нет | Гашение панели | Гашение панели: 0 = индикация включена, 1 = погашена. Тот же флаг, что Holding/Input/Discrete 118. Запись EEPROM не из обработчика (байт 239). | |||||||
| 0 | 0x0000 | Discrete | 02 | R | нет | Зарезервировано, 0 | Зарезервировано, 0. | |||||||
| 1 | 0x0001 | Discrete | 02 | R | нет | Зеркало DO (на CE — 0) | Адреса 1–16. Зеркало DO (на CE — 0). | |||||||
| 18 | 0x0012 | Discrete | 02 | R | нет | Зеркало DI (на CE — 0) | Адреса 18–31. Зеркало DI (на CE — 0). | |||||||
| 122 | 0x007A | Discrete | 02 | R | нет | Статус Fast Modbus (0/1), дублирует Coil 122 (legacy-грань | Статус Fast Modbus (0/1), дублирует Coil 122 (legacy-грань; см. Coil 122 и Holding 122 про 3-состояночный селектор). | |||||||
| 118 | 0x0076 | Discrete | 02 | R | нет | Гашение панели (только чтение), дублирует Coil 118 | Гашение панели (только чтение), дублирует Coil 118. | |||||||
| 104 | 0x0068 | Input | 04 | R | нет | Время работы с момента загрузки, сек uint32 (105 — мл | Адреса 104–106. Время работы с момента загрузки, сек uint32 (105 — мл. слово, 106 — ст.; логика синхронизации как в MR-02m). | |||||||
| 107 | 0x006B | Input | 04 | R | нет | На CE не используются (0) | Адреса 107–108. На CE не используются (0). | |||||||
| 114 | 0x0072 | Input | 04 | R | нет | Наработка, целые сутки | Наработка, целые сутки: floor(накопленных часов / 24). Часы копятся в RAM (тик 1 с, TIM6) и раз в час сохраняются снимком v2 в страницу Flash .network_backup (i2c.c, flash_counters_*). | |||||||
| 110 | 0x006E | Holding | 03/06/10 | RW | нет | Скорость RS-485 (напр | Скорость RS-485 (напр. 96 = 9600, 1152 = 115200). В Holding — запись + EEPROM. Принимает Fast Modbus 0x60 (в allowlist вместе с 111/112/179). Контракт: docs/contracts/fast-modbus-broadcast-write.md. | |||||||
| 111 | 0x006F | Input | 04 | R | нет | Чётность | Чётность: 0 none, 1 odd, 2 even. Broadcast 0x60 — как у 110. | |||||||
| 112 | 0x0070 | Input | 04 | R | нет | Стоп-биты | Стоп-биты: 1 или 2. Broadcast 0x60 — как у 110. | |||||||
| 120 | 0x0078 | Holding | 03/06/10 | RW | нет | Запись ненулевого | Запись ненулевого: перезагрузка без сохранения (как в MR-02m). | |||||||
| 122 | 0x007A | Holding | 03/06/10 | RW | нет | Селектор шины, 3 состояния (с версии 1 | Селектор шины, 3 состояния (с версии 1.0.7.0, контракт docs/contracts/bus-protocol.md): 0 = классический Modbus, 1 = Fast Modbus, 2 = BACnet MS/TP. Чтение/запись, EEPROM (при изменении). Запись значения > 2 — Modbus-исключение 3 (Illegal Data Value), режим не меняется. Coil-грань 122 остаётся легаси 1-битным флагом (см. выше) — запись через coil всегда сбрасывает BACnet-выбор. ВЫБОР ПОРТА (значение 2 только): порт, с которого пришла запись 122=2, становится BACnet-портом (implicit in-band selection, fork #1a-(a)); второй порт ВСЕГДА продолжает отвечать классическим Modbus. Повторная запись 122=2 с ДРУГОГО (Modbus-) порта при уже зафиксированном BACnet — «перемещение» порта: BACnet перезахватывается новым портом. Запись 122=2 с ТОГО ЖЕ порта, что уже держит BACnet, — no-op. С ВЕРСИИ 1.0.7.2 (стадия 2, только `WITH_BACNET`-сборка AppBoot): значение 2 АКТИВНО — стек MS/TP слинкован, захваченный порт реально отвечает по BACnet (38400 8N1, Device + Multistate Value «Bus Protocol» инстанс 1, контракт docs/contracts/bacnet-device.md), второй порт продолжает отвечать классическим Modbus. Запись, пересекающая границу BACnet (0/1 <-> 2), или перемещение порта — отложенная перезагрузка (≤5 с, после персиста и слива ответа). Не-`WITH_BACNET`-сборка (Debug/Release, бутлоадер, AppBoot без флага) не изменилась — значение 2 по-прежнему принимается и персистится, но ИНЕРТНО (прибор отвечает Modbus на ОБОИХ портах). ПРИБОР С ИСТОРИЕЙ ЭКСПЛУАТАЦИИ ДО 1.0.7.0: до ПЕРВОЙ явной записи 122 в этой версии значение читается как 0 или 1 (из бита Fast), НИКОГДА не 2, даже если физическая EEPROM-область содержит непредсказуемый мусор из прошлых прошивок — валидность пары mode+порт проверяется по служебному магическому значению, проставляемому первой же записью 122. Первая запись 122 ЛЮБОГО значения на таком приборе очищает этот мусор. Контракт: docs/contracts/bus-protocol.md. | |||||||
| 118 | 0x0076 | Holding | 03/06/10 | RW | нет | Гашение всей панели (с 1 | Гашение всей панели (с 1.0.7.9), uint16. Один флаг на Holding, Input, Coil и Discrete: 0 — индикация включена (завод и любая старая EEPROM), 1 — панель погашена. Запись Holding > 1 — исключение 3. Возврат к 0: кнопка, регистр 1001 и загрузка без годной конфигурации. EEPROM байт 239. Контракт: docs/contracts/led-panel-reg-118.md. | |||||||
| 123 | 0x007B | Input | 04 | R | нет | Напряжение VDD МК, 0 | Напряжение VDD МК, 0.01 В. | |||||||
| 124 | 0x007C | Input | 04 | R | нет | Температура ядра МК, °C (знаковое) | Температура ядра МК, °C (знаковое). | |||||||
| 125 | 0x007D | Holding | 03/06/10 | RW | да | Маска групп системных событий Fast Modbus (с 1 | Маска групп системных событий Fast Modbus (с 1.0.6.12). Чтение — текущая маска, запись — применить. Биты: 0 uptime (Input 105–106), 1 VDD (123), 2 температура МК (124), 3 наработка (114), 4 счётчики DO (45–76), 5 счётчики DI (77–108), 6 счётчик обновлений (65509–65510), 7 диагностика (65504, 65508), 8 RAM/EEPROM (65505–65507, 1003), 9 резерв. Старшие биты сверх 0x03FF игнорируются (исключение не выдаётся). Включённая группа = приоритет LOW, выключенная = событие не формируется вообще. События каналов (измерения 500–502 / 510–513, с 1.0.7.6 также 518–546) и служебное REBOOT маской НЕ управляются. Заводское значение после КАЖДОЙ перезагрузки — 0x0030 (только счётчики DO+DI, которых на CE нет), т.е. heartbeat uptime, VDD, температура и наработка по умолчанию ВЫКЛЮЧЕНЫ. Маска НЕ сохраняется в EEPROM — мастер выставляет её заново после каждого REBOOT-события. | |||||||
| 126 | 0x007E | Holding | 03/06/10 | W | нет | Команда «все системные группы» (с 1 | Команда «все системные группы» (с 1.0.6.12): запись 0 — выключить все (маска 0), запись ненулевого — включить все (маска 0x03FF). Чтение всегда 0 (регистр-команда). Действует на ту же маску, что и 125. | |||||||
| 128 | 0x0080 | Holding | 03/06/10 | RW | нет | Modbus-адрес прибора 1 | Modbus-адрес прибора 1..247. Запись через Holding + EEPROM. | |||||||
| 129 | 0x0081 | Holding | 03/06/10 | RW | нет | Запись ненулевого | Запись ненулевого: режим обновления прошивки (bootloader), ~2 мин; не по broadcast. | |||||||
| 133 | 0x0085 | Input | 04 | R | нет | Время бегущей строки индикации, ×0 | Время бегущей строки индикации, ×0.1 с (если индикация используется). | |||||||
| 134 | 0x0086 | Input | 04 | R | нет | Таймаут неактивности Modbus, с (без реле на CE влияет только на логику таймера) | Таймаут неактивности Modbus, с (без реле на CE влияет только на логику таймера). | |||||||
| 135 | 0x0087 | Input | 04 | R | нет | Команда | Команда: сброс счётчиков DO (на CE фактически без выходов). | |||||||
| 136 | 0x0088 | Input | 04 | R | нет | Команда | Команда: сброс счётчиков DI. | |||||||
| 175 | 0x00AF | Holding | 03/06/10 | RW | нет | Бегущая строка v2 (running line) | Бегущая строка v2 (running line): чтение — 1, если count>0, иначе 0. Запись 0 — выключить (count:=0); запись 1 — no-op (включение задаётся count>0); прочие значения — ILLEGAL DATA VALUE. | |||||||
| 176 | 0x00B0 | Holding | 03/06/10 | RW | нет | Бегущая строка v2 | Бегущая строка v2: slot этого модуля, 0-based (0..254). Запись + EEPROM (выделенный блок 234..238, магия+CRC, вне tConfig). | |||||||
| 177 | 0x00B1 | Holding | 03/06/10 | RW | нет | Бегущая строка v2 | Бегущая строка v2: всего слотов N (0..255), 0 = выключено. Запись + EEPROM. | |||||||
| 178 | 0x00B2 | Input | 04 | R | нет | Бегущая строка v2 | Бегущая строка v2: T_step, мс. Только RAM; клампится к кратному 50 в диапазоне 50..2000, иначе 200 (default). После перезагрузки — 200. | |||||||
| 179 | 0x00B3 | Holding | 03/06/10 | RW | нет | Бегущая строка v2 | Бегущая строка v2: запись 1 — латч общего t0 (фаза бегущей точки). Принимает broadcast, в т.ч. Fast Modbus 0x60 (в allowlist вместе с 110/111/112); ответ на broadcast не передаётся. Контракты: docs/contracts/running-line-regs-175-179.md, docs/contracts/fast-modbus-broadcast-write.md. | |||||||
| 310 | 0x0136 | Input | 04 | R | нет | Отладочные флаги (EEPROM) | Отладочные флаги (EEPROM): CE-02m-3 — **бит 0** comport, **6–8** poll_inp / poll_out / nmbs_error_addr; **биты 1–5** (легаси MR-02m) не используются. **313** — verbose в битах **14–15**. | |||||||
| 313 | 0x0139 | Input | 04 | R | нет | Расширенный verbose отладки (EEPROM) | Расширенный verbose отладки (EEPROM). | |||||||
| 340 | 0x0154 | Input | 04 | R | да | Порог событий Fast Modbus, AI-класс (raw) | Порог событий Fast Modbus, AI-класс (raw): события формируются по измерительным регистрам 500-502 (U фаз, В×10) и 510-513 (I фаз и нейтрали, А×1000) при |Δ| ≥ порога. Заводское 10 (= 1.0 В / 10 мА). События мощности 518–546 (с 1.0.7.6) этим порогом НЕ управляются — у них свои пороги в прошивке, см. контракт ниже. RW; 0, 0xFFFF и 1..4 (ниже семейного минимума 5, с 1.0.6.10) отбиваются исключением 3; применяется сразу, персист в EEPROM отложен (блок 215..225). Контракт: docs/contracts/fmb-runtime-thresholds-regs-340-344.md. | |||||||
| 341 | 0x0155 | Input | 04 | R | да | Порог событий VDD (Input 123), 0 | Порог событий VDD (Input 123), 0.01 В. Заводское 10 (= 0.1 В). RW, семантика как у 340 (минимум 5). | |||||||
| 342 | 0x0156 | Input | 04 | R | да | Порог событий температуры МК (Input 124), 0 | Порог событий температуры МК (Input 124), 0.1 °C. Заводское 30 (= 3 °C). RW, семантика как у 340 (минимум 5). | |||||||
| 343 | 0x0157 | Input | 04 | R | да | Период heartbeat-события uptime (Input 105), с | Период heartbeat-события uptime (Input 105), с. Заводское 5. RW, семантика как у 340, но БЕЗ минимума (период, самоограничен 1/с). | |||||||
| 344 | 0x0158 | Holding | 03/06/10 | RW | нет | Зарезервирован (AO-класс MR-02m) | Зарезервирован (AO-класс MR-02m): чтение 0, запись — исключение 3. | |||||||
| 1000 | 0x03E8 | Holding | 03/06/10 | RW | нет | Запись ненулевого | Запись ненулевого: переинициализация UART RS-485 с параметрами из EEPROM. | |||||||
| 1001 | 0x03E9 | Holding | 03/06/10 | RW | нет | Запись ненулевого | Запись ненулевого: сброс настроек EEPROM (заводские), выполняется в main loop. | |||||||
| 1005 | 0x03ED | Holding | 03/06/10 | RW | нет | FC16 (2 слова | FC16 (2 слова: 1005 мл., 1006 ст., форма 0x0E0Axxxx). В ПРИЛОЖЕНИИ (с 1.0.6.11) — только ПОДТВЕРЖДЕНИЕ серийного номера, НЕ смена: • запись текущего эффективного SN (тот, что в 270/271) → успех; действие — no-op, EEPROM-зеркало 252..255 сводится к канону; • запись ДРУГОГО корректного SN → исключение 4 (смена SN — операция режима загрузчика: BL_REG_PROGRAM_SERIAL, сервисный адрес 247); • некорректное значение (0, 0xFFFFFFFF, не-0x0E0Axxxx, переставленные слова) → исключение 4. Приложение НИКОГДА не стирает/не программирует страницу 0 Flash (вектора загрузчика) — до 1.0.6.11 такая запись могла окончательно «окирпичить» прибор (docs/bugs/BUGLOG.md [2026-07-23]). Политика записи/приоритета — Core/Inc/svc_serial_number_core.h. Штатная смена SN — в загрузчике на 247 (RAM-резидентный писатель Flash 0x080000C4 + зеркало EEPROM 252..255). Стендовая проверка: scripts/hw/serial_write_safety_test.py. | |||||||
| 65468 | 0xFFBC | Input | 04 | R | нет | Кадров с ошибкой CRC (crc_err_cnt) | Кадров с ошибкой CRC (crc_err_cnt). | |||||||
| 65469 | 0xFFBD | Input | 04 | R | нет | Вызовов nmbs_server_poll из пути TIM14 (src_t14_cnt) | Вызовов nmbs_server_poll из пути TIM14 (src_t14_cnt). | |||||||
| 65470 | 0xFFBE | Input | 04 | R | нет | Вызовов poll из DMA-пути (src_dma_cnt | Вызовов poll из DMA-пути (src_dma_cnt; в IRQ-режиме CE — 0). | |||||||
| 65471 | 0xFFBF | Input | 04 | R | нет | poll OK, но TX-ответ не стартовал (no_tx_after_ok) | poll OK, но TX-ответ не стартовал (no_tx_after_ok). | |||||||
| 65472 | 0xFFC0 | Input | 04 | R | нет | RxEvent всего (rx_evt_cnt | RxEvent всего (rx_evt_cnt; DMA-путь, в CE — 0). | |||||||
| 65473 | 0xFFC1 | Input | 04 | R | нет | TX завис >25 мс — оборван и ответ отправлен повторно (tx_stall_recovered) | TX завис >25 мс — оборван и ответ отправлен повторно (tx_stall_recovered). | |||||||
| 65474 | 0xFFC2 | Input | 04 | R | нет | Срабатываний mb_recover (mb_recover_cnt) | Срабатываний mb_recover (mb_recover_cnt). | |||||||
| 65475 | 0xFFC3 | Input | 04 | R | нет | Повторных попыток старта TX (tx_start_retried) | Повторных попыток старта TX (tx_start_retried). | |||||||
| 65476 | 0xFFC4 | Input | 04 | R | нет | Диагностический код последнего старта TX (tx_start_diag) | Диагностический код последнего старта TX (tx_start_diag). | |||||||
| 65477 | 0xFFC5 | Input | 04 | R | нет | Отказов старта TX после всех ретраев (tx_start_fail) | Отказов старта TX после всех ретраев (tx_start_fail). | |||||||
| 65478 | 0xFFC6 | Input | 04 | R | нет | Входов в TIM14 mb_none с данными (t14_entry) | Входов в TIM14 mb_none с данными (t14_entry). | |||||||
| 65479 | 0xFFC7 | Input | 04 | R | нет | TIM14 | TIM14: Size=0 (t14_size0). | |||||||
| 65480 | 0xFFC8 | Input | 04 | R | нет | TIM14 | TIM14: короткий фрагмент 0<Size<4 (t14_short) — начало разрезанного кадра. | |||||||
| 65481 | 0xFFC9 | Input | 04 | R | нет | TIM14 | TIM14: «чужой» первый байт (t14_alien) — хвост разрезанного кадра. | |||||||
| 65482 | 0xFFCA | Input | 04 | R | нет | TIM14 | TIM14: продлений окна для частичного кадра (t14_extend; до 12 пропусков ≈ 38 мс терпения к внутрикадровым гэпам хоста — фикс потери ответов shared/modbus c0ad0f0, баглог MR-02m 2026-07-10 23:50). | |||||||
| 65483 | 0xFFCB | Input | 04 | R | нет | rxcplt | rxcplt: отказ TIM_Start (t14-путь). | |||||||
| 65484 | 0xFFCC | Input | 04 | R | нет | rxcplt | rxcplt: отказ UART_Receive. | |||||||
| 65485 | 0xFFCD | Input | 04 | R | нет | Успешных TxCplt (ответ полностью передан в линию) | Успешных TxCplt (ответ полностью передан в линию). | |||||||
| 65487 | 0xFFCF | Holding | 03/06/10 | RW | нет | Чтение | Чтение: макс. Size в TIM14 mb_none (склейки). Запись любого значения (Holding FC06) — сброс счётчиков диагностики. | |||||||
| 65486 | 0xFFCE | Holding | 03/06/10 | RW | нет | Число стираний страницы Flash | Число стираний страницы Flash .network_backup приложением с момента старта (диагностика износа; сама страница делит ресурс между снимками наработки и записями энергии). ВНИМАНИЕ: продуктовый хук CE имеет приоритет — общий счётчик shared/modbus по этому адресу (rxcplt buffer overflow) на CE-02m-3 затенён и недоступен. | |||||||
| 65488 | 0xFFD0 | Input | 04 | R | нет | Счётчики/тайминги опроса Modbus (mb_diag_* | Адреса 65488–65503. Счётчики/тайминги опроса Modbus (mb_diag_*: ошибки UART, ISR-снапшот, max проход main loop и т.д., см. shared/modbus). | |||||||
| 65504 | 0xFFE0 | Input | 04 | R | нет | Stack high-water mark, байт (замер раз в секунду | Stack high-water mark, байт (замер раз в секунду; 0 = нет замера/стек повреждён). | |||||||
| 65505 | 0xFFE1 | Input | 04 | R | нет | Свободная RAM | Свободная RAM: зазор между концом кучи и MSP, байт. | |||||||
| 65506 | 0xFFE2 | Input | 04 | R | нет | Занятая RAM | Занятая RAM: .data + .bss, байт. | |||||||
| 65507 | 0xFFE3 | Input | 04 | R | нет | Размер резерва стека (_Min_Stack_Size), байт (0x1400 = 5120 с 1 | Размер резерва стека (_Min_Stack_Size), байт (0x1400 = 5120 с 1.0.7.7; до того 0x800 = 2048). | |||||||
| 65508 | 0xFFE4 | Input | 04 | R | нет | Причина последнего сброса (мл | Причина последнего сброса (мл. байт): 1=LPWR 2=WWDG 3=IWDG 4=SFT 5=POR 6=PIN 7=OBL 8=V18PWR 0=неизвестно; ст. байт — код последней ошибки SPI (ATM90), если была. | |||||||
| 65509 | 0xFFE5 | Input | 04 | R | нет | Счётчик успешных обновлений прошивки uint32 (мл | Адреса 65509–65510. Счётчик успешных обновлений прошивки uint32 (мл./ст.), хранится в странице .network_backup (offset 8, пишет бутлоадер; приложение сохраняет при стираниях страницы). | |||||||
| 65511 | 0xFFE7 | Input | 04 | R | нет | Код последней ошибки SPI/ATM90 (0 — не было) | Код последней ошибки SPI/ATM90 (0 — не было): 0xA1xx — HAL-ошибка SPI (xx = адрес регистра ATM90), 0xA2xx — 0xFFFF после всех ретраев чтения. Хранится в .noinit, переживает watchdog/soft reset. | |||||||
| 65512 | 0xFFE8 | Input | 04 | R | нет | POST-статус (битовая маска) | POST-статус (битовая маска): биты 0..6 — пройдено, 8..14 — применимо, бит 15 — POST завершён. Для CE-02m-3 применимы: bit0/8 APP_CRC (CRC32 образа против эталона mk/patch_app_crc.py), bit1/9 EEPROM (CAT24 ответил), bit4/12 SPI_BUS, bit5/13 I2C_BUS; ADS1220/MCP23S17 — «не применимо»; RAM_MARCH — только сборка FACTORY_TEST. fail = (reg>>8) & ~reg & 0x7F. | |||||||
| 65513 | 0xFFE9 | Input | 04 | R | нет | Минимальный свободный остаток стека, байт (stack_guard | Минимальный свободный остаток стека, байт (stack_guard: заливка паттерном при старте + скан watermark каждые 5 с; канарейка дна стека — 1 Гц, срыв => маркированный сброс "STK!"). 0 — до первого скана (~5 с). | |||||||
| 65519 | 0xFFEF | Holding | 03/06/10 | RW | нет | Здоровье внешней EEPROM (битовая маска, только чтение, FC03 и FC04) | Здоровье внешней EEPROM (битовая маска, только чтение, FC03 и FC04). Регистр СЕМЕЙСТВА: тот же адрес и та же битовая грамматика, что у MR-02m (их Core/storage/inc/eeprom_health.h) — не изобретайте своё значение. Соседние адреса зарезервированы за семейством и на CE пока не заняты: 65516 статус монитора питания, 65517 число записей в EEPROM, 65518 страниц конфигурации в последнем сохранении, 65520 счётчик стираний Flash за всё время, 65521+ PC/LR пойманного отказа. Биты, которые CE ЗАПОЛНЯЕТ: бит 4 (0x0010) RUNTIME_FAIL — после старта была неудачная операция; бит 5 (0x0020) SEEN_FAIL — залипающий: была хоть одна неудача с момента включения (редкий опрос не пропустит кратковременную); биты 8..11 — класс последней НЕУДАЧНОЙ операции: 3 запись конфигурации, 5 запись самостоятельного блока (бегущая строка 234..238, ТТ 226..233, пороги 215..225), 7 запись отклонена из контекста прерывания (сторож EE24_Write_Protected; в исправной прошивке не должно появляться никогда); биты 12..15 — число подряд идущих неудач, насыщается на 15. Биты, которые CE НЕ ЗАПОЛНЯЕТ (всегда 0 — это «CE не проверяет», а НЕ «исправно»): 0 DEGRADED, 1 BOOT_NOACK, 2 BOOT_READ_FAIL, 3 BOOT_PARSE_FAIL, 6 MIRROR_APPLIED, 7 RECOVERED — они относятся к модулю выживания при старте, который на CE не портирован (та же конвенция применимости, что у POST 65512). 0 = ни одной неудачи с момента включения. Залипающие биты не сбрасываются ни чтением, ни последующей УСПЕШНОЙ записью — только сбросом питания: иначе удачный повтор стёр бы улику о том, что конкретная запись не легла. Записи в регистр нет намеренно (сосед по шине не должен уметь стереть улику). | |||||||
| 500 | 0x01F4 | Input | 04 | R | нет | Напряжение фазы A, В×10 (2205 = 220 | Напряжение фазы A, В×10 (2205 = 220.5 В). | |||||||
| 501 | 0x01F5 | Input | 04 | R | нет | Напряжение фазы B, В×10 | Напряжение фазы B, В×10. | |||||||
| 502 | 0x01F6 | Input | 04 | R | нет | Напряжение фазы C, В×10 | Напряжение фазы C, В×10. | |||||||
| 503 | 0x01F7 | Input | 04 | R | нет | Напряжение фазы A, В (целое, округл | Напряжение фазы A, В (целое, округл.). | |||||||
| 504 | 0x01F8 | Input | 04 | R | нет | Напряжение фазы B, В (целое) | Напряжение фазы B, В (целое). | |||||||
| 505 | 0x01F9 | Input | 04 | R | нет | Напряжение фазы C, В (целое) | Напряжение фазы C, В (целое). | |||||||
| 506 | 0x01FA | Input | 04 | R | нет | Межфазное RMS Uab, В×10 | Межфазное RMS Uab, В×10; пара A+B «жива» по Urms, иначе 0 (без устаревшего кэша). | |||||||
| 507 | 0x01FB | Input | 04 | R | нет | Межфазное RMS Ubc, В×10 | Межфазное RMS Ubc, В×10; пара B+C, иначе 0. | |||||||
| 508 | 0x01FC | Input | 04 | R | нет | Межфазное RMS Uca, В×10 | Межфазное RMS Uca, В×10; пара C+A, иначе 0. | |||||||
| 509 | 0x01FD | Input | 04 | R | нет | Резерв, 0 | Резерв, 0. | |||||||
| 510 | 0x01FE | Input | 04 | R | нет | Ток фазы A, А×1000 (1234 = 1 | Ток фазы A, А×1000 (1234 = 1.234 А). | |||||||
| 511 | 0x01FF | Input | 04 | R | нет | Ток фазы B, А×1000 | Ток фазы B, А×1000. | |||||||
| 512 | 0x0200 | Input | 04 | R | нет | Ток фазы C, А×1000 | Ток фазы C, А×1000. | |||||||
| 513 | 0x0201 | Input | 04 | R | нет | Ток нейтрали N, А×1000 | Ток нейтрали N, А×1000. | |||||||
| 514 | 0x0202 | Input | 04 | R | нет | Ток фазы A, А×10 (один знак после запятой) | Ток фазы A, А×10 (один знак после запятой). | |||||||
| 515 | 0x0203 | Input | 04 | R | нет | Ток фазы B, А×10 | Ток фазы B, А×10. | |||||||
| 516 | 0x0204 | Input | 04 | R | нет | Ток фазы C, А×10 | Ток фазы C, А×10. | |||||||
| 517 | 0x0205 | Input | 04 | R | нет | Ток N, А×10 | Ток N, А×10. | |||||||
| 518 | 0x0206 | Input | 04 | R | нет | Активная мощность фазы A, Вт, int32 | Адреса 518–519. Активная мощность фазы A, Вт, int32. | |||||||
| 520 | 0x0208 | Input | 04 | R | нет | Активная мощность фазы B, Вт, int32 | Адреса 520–521. Активная мощность фазы B, Вт, int32. | |||||||
| 522 | 0x020A | Input | 04 | R | нет | Активная мощность фазы C, Вт, int32 | Адреса 522–523. Активная мощность фазы C, Вт, int32. | |||||||
| 524 | 0x020C | Input | 04 | R | нет | Суммарная активная мощность, Вт, int32 (сумма фаз после маски пропажи) | Адреса 524–525. Суммарная активная мощность, Вт, int32 (сумма фаз после маски пропажи). | |||||||
| 526 | 0x020E | Input | 04 | R | нет | Реактивная мощность фазы A, вар, int32 | Адреса 526–527. Реактивная мощность фазы A, вар, int32. | |||||||
| 528 | 0x0210 | Input | 04 | R | нет | Реактивная мощность фазы B, вар, int32 | Адреса 528–529. Реактивная мощность фазы B, вар, int32. | |||||||
| 530 | 0x0212 | Input | 04 | R | нет | Реактивная мощность фазы C, вар, int32 | Адреса 530–531. Реактивная мощность фазы C, вар, int32. | |||||||
| 532 | 0x0214 | Input | 04 | R | нет | Суммарная реактивная мощность, вар, int32 | Адреса 532–533. Суммарная реактивная мощность, вар, int32. | |||||||
| 534 | 0x0216 | Input | 04 | R | нет | Полная мощность фазы A, ВА, int32 | Адреса 534–535. Полная мощность фазы A, ВА, int32. | |||||||
| 536 | 0x0218 | Input | 04 | R | нет | Полная мощность фазы B, ВА, int32 | Адреса 536–537. Полная мощность фазы B, ВА, int32. | |||||||
| 538 | 0x021A | Input | 04 | R | нет | Полная мощность фазы C, ВА, int32 | Адреса 538–539. Полная мощность фазы C, ВА, int32. | |||||||
| 540 | 0x021C | Input | 04 | R | нет | Суммарная полная мощность, ВА, int32 | Адреса 540–541. Суммарная полная мощность, ВА, int32. | |||||||
| 542 | 0x021E | Input | 04 | R | нет | Частота сети, Гц×100 | Частота сети, Гц×100. | |||||||
| 543 | 0x021F | Input | 04 | R | нет | cosφ фазы A, ×1000 (int16) | cosφ фазы A, ×1000 (int16): P_a/S_a после масштаба ТТ; при малых S — 0 (чтение как int16). | |||||||
| 544 | 0x0220 | Input | 04 | R | нет | cosφ фазы B, ×1000 (int16), см | cosφ фазы B, ×1000 (int16), см. 543. | |||||||
| 545 | 0x0221 | Input | 04 | R | нет | cosφ фазы C, ×1000 (int16), см | cosφ фазы C, ×1000 (int16), см. 543. | |||||||
| 546 | 0x0222 | Input | 04 | R | да | Суммарный cosφ, ×1000 (int16) | Суммарный cosφ, ×1000 (int16): P_Σ/S_Σ после масштаба ТТ (как 524–541); при малых S — 0. События Fast Modbus по 518–546 (с 1.0.7.6): int32 518–541 приходят парой обычных 2-байтных записей (младшее слово первым); пара может оказаться в двух ответах 0x11 или потерять одно слово при переполнении очереди — собирайте int32 только из пары в одном ответе, иначе перечитайте 518–541 по FC04. Пороги, порядок и бюджет — docs/contracts/fmb-runtime-thresholds-regs-340-344.md. | |||||||
| 547 | 0x0223 | Input | 04 | R | нет | Температура кристалла ASIC, °C int16 (регистр 0xFC, без масштаба) | Температура кристалла ASIC, °C int16 (регистр 0xFC, без масштаба). | |||||||
| 548 | 0x0224 | Input | 04 | R | нет | Импорт активной энергии EP+, сырой uint16 счётчика ASIC | Импорт активной энергии EP+, сырой uint16 счётчика ASIC. | |||||||
| 549 | 0x0225 | Input | 04 | R | нет | Экспорт активной энергии EP−, raw uint16 | Экспорт активной энергии EP−, raw uint16. | |||||||
| 550 | 0x0226 | Input | 04 | R | нет | Импорт реактивной энергии EQ+, raw uint16 | Импорт реактивной энергии EQ+, raw uint16. | |||||||
| 551 | 0x0227 | Input | 04 | R | нет | Экспорт реактивной энергии EQ−, raw uint16 | Экспорт реактивной энергии EQ−, raw uint16. | |||||||
| 552 | 0x0228 | Input | 04 | R | нет | Кажущаяся энергия S, raw uint16 | Кажущаяся энергия S, raw uint16. | |||||||
| 553 | 0x0229 | Holding | 03/06/10 | RW | нет | Обнаружение пропажи фаз (ERRMAP-стиль) | Обнаружение пропажи фаз (ERRMAP-стиль): 0 = выкл, 1 = вкл (по умолчанию **0**). | |||||||
| 554 | 0x022A | Holding | 03/06/10 | RW | нет | Инверсия ТТ фазы A | Инверсия ТТ фазы A: 0 = нет, 1 = да. | |||||||
| 555 | 0x022B | Holding | 03/06/10 | RW | нет | Инверсия ТТ фазы B | Инверсия ТТ фазы B: 0/1. | |||||||
| 556 | 0x022C | Holding | 03/06/10 | RW | нет | Инверсия ТТ фазы C | Инверсия ТТ фазы C: 0/1. | |||||||
| 557 | 0x022D | Holding | 03/06/10 | RW | нет | Коэффициент ТТ фазы A (первичный ток), **K×1000** | Коэффициент ТТ фазы A (первичный ток), **K×1000**: фактический первичный ток [мА] = `I_ASIC_mА × K / 1000`. Диапазон **1…20000**, заводское **4000**; запись **0** → принудительно **4000**. Запись значения **> 20000 обрезается до 20000** и квитируется **успехом** (исключения нет): SCADA, записавшая K=25000, получит ACK, а прочитает 20000 — проверяйте read-back. (Соседние 553–556, наоборот, отвергают значение > 1 с исключением 3 ILLEGAL_DATA_VALUE — политики валидации в блоке разные.) Хранится в EEPROM (блок `CT`, смещение **226**, до 1.0.6.3 — 240; карта зон: `docs/contracts/eeprom-identity-map.md`), не в `tConfig`. | |||||||
| 558 | 0x022E | Holding | 03/06/10 | RW | нет | Коэффициент ТТ фазы B, формат и запись как у 557 | Коэффициент ТТ фазы B, формат и запись как у 557. | |||||||
| 559 | 0x022F | Holding | 03/06/10 | RW | нет | Коэффициент ТТ фазы C, формат и запись как у 557 | Коэффициент ТТ фазы C, формат и запись как у 557. | |||||||
| 560 | 0x0230 | Input | 04 | R | нет | UPeak A, raw uint16 | UPeak A, raw uint16. | |||||||
| 561 | 0x0231 | Input | 04 | R | нет | UPeak B, raw uint16 | UPeak B, raw uint16. | |||||||
| 562 | 0x0232 | Input | 04 | R | нет | UPeak C, raw uint16 | UPeak C, raw uint16. | |||||||
| 563 | 0x0233 | Input | 04 | R | нет | IPeak A, ПЕРВИЧНЫЙ, ×K/1000 (K — Holding 557) | IPeak A, ПЕРВИЧНЫЙ, ×K/1000 (K — Holding 557). Потолок 65534 (`0xFFFE`, по той же причине, что у 510-513 выше). Пары «×10» для пиков нет — в отличие от токов 510-513 (см. 514-517), измерить пик выше потолка нечем. Заметьте отличие от UPeak 560-562: те действительно сырые. | |||||||
| 564 | 0x0234 | Input | 04 | R | нет | IPeak B, ПЕРВИЧНЫЙ, ×K/1000 (K — Holding 558) | IPeak B, ПЕРВИЧНЫЙ, ×K/1000 (K — Holding 558). Потолок 65534. | |||||||
| 565 | 0x0235 | Input | 04 | R | нет | IPeak C, ПЕРВИЧНЫЙ, ×K/1000 (K — Holding 559) | IPeak C, ПЕРВИЧНЫЙ, ×K/1000 (K — Holding 559). Потолок 65534. | |||||||
| 566 | 0x0236 | Input | 04 | R | нет | PAngle A, raw int16 | PAngle A, raw int16. | |||||||
| 567 | 0x0237 | Input | 04 | R | нет | PAngle B, raw int16 | PAngle B, raw int16. | |||||||
| 568 | 0x0238 | Input | 04 | R | нет | PAngle C, raw int16 | PAngle C, raw int16. | |||||||
| 569 | 0x0239 | Input | 04 | R | нет | Uangle A, raw int16 | Uangle A, raw int16. | |||||||
| 570 | 0x023A | Input | 04 | R | нет | Uangle B, raw int16 | Uangle B, raw int16. | |||||||
| 571 | 0x023B | Input | 04 | R | нет | Uangle C, raw int16 | Uangle C, raw int16. | |||||||
| 572 | 0x023C | Input | 04 | R | нет | Неактивная мощность N, фаза A, var, int32 | Адреса 572–573. Неактивная мощность N, фаза A, var, int32. | |||||||
| 574 | 0x023E | Input | 04 | R | нет | Неактивная мощность N, фаза B, var, int32 | Адреса 574–575. Неактивная мощность N, фаза B, var, int32. | |||||||
| 576 | 0x0240 | Input | 04 | R | нет | Неактивная мощность N, фаза C, var, int32 | Адреса 576–577. Неактивная мощность N, фаза C, var, int32. | |||||||
| 578 | 0x0242 | Input | 04 | R | нет | Суммарная неактивная мощность N, var, int32 | Адреса 578–579. Суммарная неактивная мощность N, var, int32. | |||||||
| 580 | 0x0244 | Input | 04 | R | нет | Total AP energy, uint64, 4 слова, Вт·ч (с 1 | Адреса 580–583. Total AP energy, uint64, 4 слова, Вт·ч (с 1.0.7.11; см. «ЕДИНИЦА ЭНЕРГИИ» выше; так же 584–647). Первичка: сумма фаз, каждая ×Ka/Kb/Kc/1000. ПРИРОСТ накопителя с 1.0.7.4 равен сумме приростов 600–611 (в опубликованных Вт·ч итог больше суммы фаз на 0…2 Вт·ч усечения). АБСОЛЮТНОЕ равенство НЕ гарантируется на приборе, работавшем на ≤ 1.0.7.3: унаследованная база восстанавливается из Flash как есть и может расходиться с фазами шагами по 65535 единиц накопителя (≈ 204.8 Вт·ч; а при инверсии ТТ — на всю историю фазы). Подробно и про инверсию: docs/contracts/en-meter-measurement-map.md. | |||||||
| 584 | 0x0248 | Input | 04 | R | нет | Total AN energy, uint64, Вт·ч (первичка) | Адреса 584–587. Total AN energy, uint64, Вт·ч (первичка). | |||||||
| 588 | 0x024C | Input | 04 | R | нет | Total RP energy, uint64, вар·ч (первичка) | Адреса 588–591. Total RP energy, uint64, вар·ч (первичка). | |||||||
| 592 | 0x0250 | Input | 04 | R | нет | Total RN energy, uint64, вар·ч (первичка) | Адреса 592–595. Total RN energy, uint64, вар·ч (первичка). | |||||||
| 596 | 0x0254 | Input | 04 | R | нет | Total S energy, uint64, ВА·ч (первичка ×K̄/1000 — пофазных регистров S-энергии в | Адреса 596–599. Total S energy, uint64, ВА·ч (первичка ×K̄/1000 — пофазных регистров S-энергии в ATM90E32 нет, при разных ТТ — приближение). | |||||||
| 600 | 0x0258 | Input | 04 | R | нет | AP energy по фазам A/B/C, uint64, Вт·ч (×Ka/Kb/Kc / 1000) | Адреса 600–611. AP energy по фазам A/B/C, uint64, Вт·ч (×Ka/Kb/Kc / 1000). | |||||||
| 612 | 0x0264 | Input | 04 | R | нет | AN energy по фазам A/B/C, uint64, Вт·ч (первичка) | Адреса 612–623. AN energy по фазам A/B/C, uint64, Вт·ч (первичка). | |||||||
| 624 | 0x0270 | Input | 04 | R | нет | RP energy по фазам A/B/C, uint64, вар·ч (первичка) | Адреса 624–635. RP energy по фазам A/B/C, uint64, вар·ч (первичка). | |||||||
| 636 | 0x027C | Input | 04 | R | нет | RN energy по фазам A/B/C, uint64, вар·ч (первичка) | Адреса 636–647. RN energy по фазам A/B/C, uint64, вар·ч (первичка). | |||||||
| 648 | 0x0288 | Input | 04 | R | нет | Total NP energy, uint64, мвар·ч (1/1000 вар·ч) — НЕ счётчик чипа и не единица 58 | Адреса 648–651. Total NP energy, uint64, мвар·ч (1/1000 вар·ч) — НЕ счётчик чипа и не единица 580–647: интеграл |N| × dt неактивной мощности 578–579 (первичка) при N ≥ 0. Прежняя подпись «мВт·ч» — та же величина. С 1.0.7.10 без потери дроби цикла (остаток переносится, так же 652–679); до 1.0.7.10 дробь цикла отбрасывалась — |N| ≤ 31 вар не накапливалось. | |||||||
| 652 | 0x028C | Input | 04 | R | нет | Total NN energy, uint64, мвар·ч — то же при N < 0 | Адреса 652–655. Total NN energy, uint64, мвар·ч — то же при N < 0. | |||||||
| 656 | 0x0290 | Input | 04 | R | нет | NP energy по фазам A/B/C, uint64, мвар·ч (из 572–577, как 648) | Адреса 656–667. NP energy по фазам A/B/C, uint64, мвар·ч (из 572–577, как 648). | |||||||
| 668 | 0x029C | Input | 04 | R | нет | NN energy по фазам A/B/C, uint64, мвар·ч (как 652) | Адреса 668–679. NN energy по фазам A/B/C, uint64, мвар·ч (как 652). | |||||||
| 680 | 0x02A8 | Input | 04 | R | нет | Битовая маска решения публикации P/Q/S, пересчитывается каждым циклом публикации | Битовая маска решения публикации P/Q/S, пересчитывается каждым циклом публикации. Биты 0–2 — HOLD_REJECT фаз A/B/C в этом цикле (фильтр достоверности отверг тройку P/Q/S чипа, опубликовано прежнее значение); биты 3–5 — FORCED фаз A/B/C в этом цикле (фильтр отвергает уже больше 3 циклов подряд — опубликовано собственное измерение чипа); биты 6–8 — HOLD_STALE фаз A/B/C в этом цикле (фаза под напряжением и током, но P/Q/S этой фазы в этом цикле прочитаны из чипа не все — опубликовано прежнее значение); биты 9–11 — FORCED фаз A/B/C случался хотя бы раз после включения (не сбрасываются); бит 15 — блок валиден (был хотя бы один цикл публикации после включения). Остальные биты — 0. | |||||||
| 681 | 0x02A9 | Input | 04 | R | нет | Счётчик отказов фильтра достоверности, фаза A (HOLD_REJECT + FORCED), uint16 (пе | Счётчик отказов фильтра достоверности, фаза A (HOLD_REJECT + FORCED), uint16 (переполняется — читайте разности). | |||||||
| 682 | 0x02AA | Input | 04 | R | нет | То же, фаза B | То же, фаза B. | |||||||
| 683 | 0x02AB | Input | 04 | R | нет | То же, фаза C | То же, фаза C. | |||||||
| 684 | 0x02AC | Input | 04 | R | нет | Счётчик неудачных чтений P/Q/S фаз из чипа (все фазы, uint16, по кругу) | Счётчик неудачных чтений P/Q/S фаз из чипа (все фазы, uint16, по кругу). | |||||||
| 685 | 0x02AD | Input | 04 | R | нет | Счётчик публикаций FORCED (все фазы, uint16, по кругу) | Счётчик публикаций FORCED (все фазы, uint16, по кругу). | |||||||
| 686 | 0x02AE | Input | 04 | R | нет | Счётчик циклов публикации, uint16 (по кругу) — по его приросту за интервал видна | Счётчик циклов публикации, uint16 (по кругу) — по его приросту за интервал видна частота обновления 500–679. Все счётчики обнуляются только включением питания, записи нет (FC06/FC16 не сбрасывают их). Читаются и при потерянной связи с ATM90E32, когда 500–679 отдают 0. Контракт: docs/contracts/en-meter-measurement-map.md. |
Условные обозначения
- R чтение
- RW чтение и запись
- W запись
- ⚡ событие Fast Modbus
- EEPROM значение хранится в EEPROM
- RAM значение хранится в RAM
Напряжения фаз A и C на клеммах перекрёстны с входами измерителя. Карта пишет, что публикации напряжения и межфазных значений это учитывают. Токи по маркировке клемм A/B/C идут в каналы A/B/C без этой перестановки.