К содержанию
Меню

Регистры Modbus — ДТВ-RS-485

Датчик температуры и влажности ДТВ-RS-485

Та же карта у исполнения ДТВ-CO2-RS-485: одна прошивка, одна карта и одна плата, различается набор датчиков.

Порт RS-485. Holding 110 — код скорости, заводское значение в карте 1152 (115200). Holding 111 — чётность: 0 нет, 1 нечёт, 2 чёт. Holding 112 — стоп-биты 1 или 2. Заводские чётность и стоп-биты карта не называет. Holding 128 — адрес 1…246, адрес 247 зарезервирован под сервис и загрузчик. Заводской адрес карта не называет. Holding 122 — режим шины: 0 классический Modbus, 1 Fast Modbus, 2 BACnet MS/TP (применяется после перезагрузки).

В карте 192 строк. Поле _meta.row_count равно 192, _meta.dropped равно 9. Какие строки отброшены, файл не перечисляет.

Колонки «Формат», «Ед. и масштаб», «Значения и диапазон», «По умолчанию», «Хранение», «С версии ПО» и «Канал» в этих строках пустые: в JSON нет полей format, unit, scale, values, default, storage, since_fw, channel. Компонент ставит там прочерк. Единица и диапазон написаны в описании. Функция Modbus считается из типа регистра. Часть коротких названий в файле обрывается на полуслове, продолжение — в описании.

Ниже вся сгенерированная карта, не выборка.

Карта регистров ДТВ-RS-485
Адрес (dec)Адрес (hex)ТипФункцииДоступФорматЕд. и масштабЗначения и диапазонПо умолчаниюХранение⚡ Событие Fast ModbusС версии ПОКаналНазваниеОписание
00x0000Holding03/06/10WнетЗаписьЗапись: 0xFFFF — расширенная отладка (verbose, d_nmbs и др., EEPROM); 1 — выключить отладку; 0..99 — без изменения параметров; ≥100 — калибровка по эталонной температуре (x0.1 °C); 300..900 — калибровка влажности по эталону (x0.1 %RH). Подробно: svc_mb_holding, case 0.
00x0000Input04RнетФлаг отладки USART6Флаг отладки USART6: comport (0/1), как в config.
10x0001Input04RдаТемпература DS18B20, x0Температура DS18B20, x0.1 °C; 0 если нет датчика. uint16 WO (0x06/0x10) Запись Holding: дублирует coil 1 — дискретный выход, set_all_output() (0/1).
20x0002Holding03/06/10WнетЗапись HoldingЗапись Holding: дублирует coil 2 — свет/нагрев, 0/1 (см. svc_mb_holding).
20x0002Input04RдаТемпература MCP9808, x0Температура MCP9808, x0.1 °C.
30x0003Input04RдаТемпература HDC1080, x0Температура HDC1080, x0.1 °C.
40x0004Input04RдаТемпература BME280, x0Температура BME280, x0.1 °C.
50x0005Input04RдаТемпература BME680, x0Температура BME680, x0.1 °C (возможен сдвиг; калибр. рег. 35).
60x0006Input04RдаТемпература выбранного внешнего датчика, x0Температура выбранного внешнего датчика, x0.1 °C (0 при коде 0=Off). старое 1 (PT1000) теперь = NTC10K B3950. После обновления прошивки интегратор ОБЯЗАН перезаписать reg 6 нужным кодом (иначе ранее выбранный NTC читается как Off, а PT — как NTC).
60x0006Holding03/06/10RWнетВыбор внешнего датчика температуры, код 0Выбор внешнего датчика температуры, код 0..7 (EEPROM): 0 = Выключен (Off); Input публикует 0. 1 = NTC10K B3950 | 2 = NTC10K B3988 | 3 = NTC10K B3435 | 4 = NTC10K B3470. 5 = Pt1000 a385 (IEC 60751) | 6 = Pt1000 1000П a391 | 7 = Pt1000 1000М a428. Запись вне {0..7} → исключение 3 (ILLEGAL_DATA_VALUE).
70x0007Input04RдаВлажность HDC1080, x0Влажность HDC1080, x0.1 %RH. С 1.0.1.18: по умолчанию применяется компенсация самонагрева кристалла (RH_amb = RH_die·es(Tdie)/es(Tamb), линейно ≈ +5.8 %/°C отн., dT — из рег. 33); гейт — рег. 113. Поднимает публикуемую RH на ~4..9 п.п. (кристаллы теплее воздуха).
80x0008Input04RдаВлажность BME280, x0Влажность BME280, x0.1 %RH. Та же компенсация (dT — рег. 34, гейт 113).
90x0009Input04RдаВлажность BME680, x0Влажность BME680, x0.1 %RH. Та же компенсация (dT — рег. 35, гейт 113). ВАЖНО: абсолютная истина RH без внешнего эталона не устанавливается — компенсация даёт согласованность датчиков, а не поверенную точность; эталон — поверенный гигрометр или солевые точки (NaCl 75.3 %RH, MgCl2 33.1 %RH при 25 °C).
100x000AInput04RдаДавление BME280, мм ртДавление BME280, мм рт.ст.
110x000BInput04RдаДавление BME680, мм ртДавление BME680, мм рт.ст.
120x000CInput04RдаДавление BME280, x0Давление BME280, x0.01 кПа (9989 ≈ 99.89 кПа).
130x000DInput04RдаДавление BME680, x0Давление BME680, x0.01 кПа.
140x000EInput04RдаВысота (барометрическая), BME280, мВысота (барометрическая), BME280, м.
150x000FInput04RдаВысота (барометрическая), BME680, мВысота (барометрическая), BME680, м.
160x0010Input04RдаBME680BME680: газовое сопротивление, кОм (сырое, не TVOC; формат не менялся).
170x0011Input04RдаBME680BME680: IAQ 0..500, собственная шкала (с 1.0.1.18; ранее 500−кОм). 0..50 отлично, 51..100 хорошо, 101..200 слабое загрязнение, 201..300 умеренное, >300 сильное. Расчёт: 0.75·clamp(250·log10( baseline/R)) + 0.25·влажностный член (|RH−40|·500/60); baseline — адаптивный «чистый воздух» (вверх τ≈1 ч, вниз τ≈24 ч, потолок 2 МОм, RAM-only). Первые ~5 мин после старта (burn-in прогрева MOX, 20 газовых выстрелов) IAQ = 0. С 1.0.2.4 рег. 20 — ДРУГАЯ шкала (рейтинг Renesas), рег. 17 и 20 больше не сравниваются напрямую.
180x0012Input04RдаBME680BME680: эквивалент CO2, ppm (клэмп 400..5000). С 1.0.1.18 отношение считается к адаптивному baseline (см. рег. 17): дрейф MOX-нуля не смещает eCO2, единичный всплеск сопротивления не «залипает». Первые ~5 мин после старта (burn-in) публикуется нейтральные 400 ppm; после burn-in в чистом воздухе ≈ 450..560 ppm. Форма формулы и клэмпы прежние.
190x0013Input04RдаZMOD4410ZMOD4410: TVOC, мкг/м³ (25 = 0.025 мг/м³). С 1.0.2.4 ЕДИНИЦА ИЗМЕНЕНА (было мг/м³ × 100: 41 = 0.41 мг/м³) — решение Оператора 2026-09-09; значение — алгоритм Renesas iaq_2nd_gen 4.2.0. Насыщение 65535 (= 65.535 мг/м³, далеко за диапазоном сенсора); NaN / отрицательное — 0. Уставки VOC 353/354 и гистерезис 360 ОСТАЮТСЯ в мг/м³ × 100 (миграции EEPROM нет): движок тревог делит рег. 19 на 10 (округление .5 вверх) перед сравнением — заводская уставка 60 = 0.60 мг/м³ = 600 в рег. 19 (Core/Src/svc_gas_alarm.c; Core/Inc/zmod_iaq_publish_core.h). BACnet AI:19 по-прежнему мг/м³ (масштаб 0.001). Порог событий Fast Modbus (рег. 340, сырые единицы) по этому регистру стал в 10 раз чувствительнее: заводские 10 = 0.010 мг/м³.
200x0014Input04RдаZMOD4410ZMOD4410: IAQ — рейтинг Renesas iaq_2nd_gen 1.0..5.0 × 100 → 100..500 (с 1.0.2.4; ранее — единая шкала 0..500, как рег. 17). Полосы по таблице IAQ rating даташита Renesas: 100..199 очень хорошо, 200..299 хорошо, 300..399 средне, 400..499 плохо, 500 очень плохо. Альтернативное отображение (рейтинг−1)×125 → 0..500 переключается одной константой (Core/Inc/zmod_iaq_publish_core.h ZMOD_IAQ_REG20_MAP), НЕ отгружается — отображение ×100 подтверждено Оператором 2026-09-09 как окончательное. ПРОГРЕВ: после каждого старта (и после переинициализации сенсора по POR) реги 19..22 публикуют 0, пока алгоритм не сообщит валидность (Renesas: «не менее 60 циклов», период 3 с ⇒ ≈3 мин); в это время рег. 349 бит 7 = 0, источник CO2 (биты 8–9) = BME680 при «авто». Отказ самопроверки сенсора (код DAMAGE) — тоже 0 (сторож не подтверждается): повреждённый сенсор не питает тревогу CO2/VOC.
210x0015Input04RдаZMOD4410ZMOD4410: eCO2, ppm, клэмп 400..5000 (формат прежний; с 1.0.2.4 значение — алгоритм Renesas). Оба eCO2 — MOX-прокси, не NDIR.
220x0016Input04RдаZMOD4410ZMOD4410: EtOH, ppm × 100 (формат прежний; с 1.0.2.4 — алгоритм Renesas).
230x0017Input04RдаLD2412LD2412: энергия движущейся цели; 0 если нет кадра.
240x0018Input04RдаLD2412LD2412: энергия неподвижной цели (still_energy); 0 если нет кадра.
250x0019Input04RдаLD2412LD2412: освещённость, % (при живой UART-связи; иначе 0).
260x001AInput04RдаСигнал GPIO PB2Сигнал GPIO PB2: 1 = высокий уровень.
270x001BInput04RдаПрисутствие LD2412 (логика UART + PB2), 0/1 (чтение Input, FC04)Присутствие LD2412 (логика UART + PB2), 0/1 (чтение Input, FC04).
270x001BHolding03/06/10RWнетЗадержка сброса «присутствия» LD2412, сек (запись 1Задержка сброса «присутствия» LD2412, сек (запись 1..300, EEPROM). Чтение Holding (FC03) возвращает сохранённую задержку.
280x001CInput04RдаLD2412LD2412: расстояние движущейся цели, см.
290x001DInput04RнетLD2412LD2412: расстояние неподвижной цели, см.
300x001EInput04RнетLD2412LD2412: дистанция обнаружения, см.
310x001FHolding03/06/10RWнетКалибровка темпКалибровка темп. DS18B20, смещение x0.1 °C, диапазон -100..100. Заводские значения 31/32/33/34/35 = -21/-31/-23/-17/-34 — компенсация самонагрева платы (HIL 2026-07-11, эталон RTD/NTC 6АИ6АО); поэкземплярная подстройка — записью эталона (x0.1 °C) в holding-регистр 0.
320x0020Holding03/06/10RWнетКалибровка темпКалибровка темп. MCP9808, -100..100.
330x0021Holding03/06/10RWнетКалибровка темпКалибровка темп. HDC1080, -100..100.
340x0022Holding03/06/10RWнетКалибровка темпКалибровка темп. BME280, -100..100.
350x0023Holding03/06/10RWнетКалибровка темпКалибровка темп. BME680, -100..100.
360x0024Holding03/06/10RWнетКалибровка темпКалибровка темп. NTC10K/PT1000 (общий канал), -100..100.
370x0025Holding03/06/10RWнетКалибровка влажности HDC1080, -200Калибровка влажности HDC1080, -200..200 (в десятых %RH смещения). РЕКОМЕНДУЕМЫЙ шаг ввода в эксплуатацию: выровнять HDC1080 по среднему бортовых BME280/BME680 записью рег.37 = round((mean(рег8,рег9) − рег7)×10). HDC1080 имеет aging-смещение RH (наблюдалось ~+17 %RH), не устраняемое встроенным нагревателем (bake-out, рег.115 — нежизнеспособен); стендовая калибровка: HDC 59.8→43.3 %RH, в пределах 0.2 % от среднего BME, рег.37 = -167.
380x0026Holding03/06/10RWнетКалибровка влажности BME280, -200Калибровка влажности BME280, -200..200.
390x0027Holding03/06/10RWнетКалибровка влажности BME680, -200Калибровка влажности BME680, -200..200.
400x0028Holding03/06/10RWнетФильтр КалманаФильтр Калмана: DS18B20 темп., 0=выкл, 1=вкл.
410x0029Holding03/06/10RWнетФильтр КалманаФильтр Калмана: MCP9808 темп.
420x002AHolding03/06/10RWнетФильтр КалманаФильтр Калмана: HDC1080 темп.
430x002BHolding03/06/10RWнетФильтр КалманаФильтр Калмана: BME280 темп.
440x002CHolding03/06/10RWнетФильтр КалманаФильтр Калмана: BME680 темп.
450x002DHolding03/06/10RWнетФильтр КалманаФильтр Калмана: NTC10K темп.
460x002EHolding03/06/10RWнетФильтр КалманаФильтр Калмана: PT1000 темп.
470x002FHolding03/06/10RWнетФильтр КалманаФильтр Калмана: HDC1080 влажность.
480x0030Holding03/06/10RWнетФильтр КалманаФильтр Калмана: BME280 влажность.
490x0031Holding03/06/10RWнетФильтр КалманаФильтр Калмана: BME680 влажность.
1050x0069Input04RнетВремя работы с загрузки, младшее слово (сек), u32Время работы с загрузки, младшее слово (сек), u32; сначала читать 105, потом 106.
1060x006AInput04RнетСтаршее слово uptime (сек)Старшее слово uptime (сек).
1100x006EHolding03/06/10RWнетСкорость RS-485 (код baud, напрСкорость RS-485 (код baud, напр. 1152 = 115200, 192 = 19200); заводское значение DEFAULT_BAUD_RATE=1152 — в lock-step с eeprom_factory_reset_link_params бутлоадера; см. set_baudrate().
1110x006FHolding03/06/10RWнетЧётностьЧётность: 0=нет, 1=нечёт, 2=чёт.
1120x0070Holding03/06/10RWнетСтоп-битыСтоп-биты: 1 или 2.
1130x0071Holding03/06/10RWнетКомпенсация самонагрева кристалла для влажности (реги 7/8/9)Компенсация самонагрева кристалла для влажности (реги 7/8/9): 1 = включена (заводское), 0 = выключена. EEPROM. Введён 1.0.1.18.
1140x0072Input04RнетНаработка в целых суткахНаработка в целых сутках: floor(накопленных часов / 24), кап 65535. Часы копятся посекундно (TIM ISR), снимок хранится во Flash и восстанавливается на старте (как MR-02m, get_operating_days). Введён 1.0.1.30 (до этого регистр ошибочно занулялся диспетчером и читал 0).
1150x0073Holding03/06/10RWнетЗарезервированЗарезервирован: HDC1080 heater bake-out — НЕЖИЗНЕСПОСОБЕН, отключён. Любая ненулевая запись (в т.ч. прежний magic 0x1080) отклоняется исключением. При включённом нагревателе шина I2C зависает (clock-stretch/NAK), HAL_I2C-вызов переживает таймаут и валит аппаратный оконный WWDG (~43 мс, рег.65508=2) — не лечится дроблением/ подкормкой сторожей (4 попытки, см. BUGLOG). К тому же нагреватель по даташиту — против конденсата, а не aging-дрейфа RH. Чтение: 0. HDC1080 +17 %RH закрыт калибровкой рег.37 по бортовым BME.
1220x007AHolding03/06/10RWнет, EEPROM Режим шины (семейный селектор, shared/modbus MODBUS_FAST_MODE_ADDR), EEPROM Режим шины (семейный селектор, shared/modbus MODBUS_FAST_MODE_ADDR): 0 = классический Modbus (DMA), 1 = Fast Modbus, 2 = BACnet MS/TP. Другие значения — exception 3. Значения 0/1 применяются сразу (переключение Fast/классика без перезагрузки); выбор 2 = BACnet сохраняется в EEPROM + резерв во Flash и применяется ПОСЛЕ перезагрузки (стек USART2 латчится на старте). При выборе 2: адрес должен быть 1..127 (иначе exc 3), недопустимый baud для MS/TP → 38400 8N1. Чтение отражает ОТЛОЖЕННОЕ (сохранённое) состояние. Внутреннее хранение не изменилось: протокол 0/1 в tConfig.bus_protocol (байт 126), бит Fast в otladka.d_fastmb — регистр 122 меняет только кодировку на шине. Зеркало BACnet — объект Multi-state Value 19:1 «Bus Protocol», Present_Value 1-based: PV = режим + 1 (1=Modbus, 2=Fast Modbus, 3=BACnet), тип Unsigned. Контракт: docs/contracts/bus-protocol.md. (До 1.0.1.52 регистр был RO 0/1, а выбор BACnet жил на снятом регистре 127. В 1.0.1.52/53 зеркалом BACnet был AV:122 «Bus Mode» — снят в 1.0.2.1.)
1230x007BInput04RнетОценка VDDA, 0Оценка VDDA, 0.01 В (328 = 3.28 В), VrefInt / ADC_ready[2].
1240x007CInput04RнетВнутренняя температура МК, 0Внутренняя температура МК, 0.1 °C (300 = 30.0 °C; оценка по ADC и калибровочным константам ROM; единица — как в shared/modbus fast_mb_events.h FAST_MB_SYS_EVT_MCU_TEMP_BIT: "0.1 C").
1250x007DHolding03/06/10RWдаМаска групп системных событий Fast Modbus (FAST_MB_SYS_EVT_* биты, карта — shareМаска групп системных событий Fast Modbus (FAST_MB_SYS_EVT_* биты, карта — shared/modbus/inc/fast_mb_events.h, не дублируется здесь). Заводское значение FAST_MB_SYSGRP_MASK_DEFAULT = 0x0030 (биты 4+5 — счётчики DO/DI, которых у RTU-Sensor НЕТ), поэтому по умолчанию uptime (105/106), VDD (123), температура МК (124), рабочие дни (114) и диагностические группы ВЫКЛЮЧЕНЫ. Практическая настройка DTV: 0x0007 (uptime + VDD + темп. МК) или 126 = любое ненулевое. Верхние биты (> 0x03FF) игнорируются, исключения нет. НЕ сохраняется в EEPROM: после каждой перезагрузки восстанавливается 0x0030 — мастер переустанавливает маску по событию REBOOT.
1260x007EHolding03/06/10WнетКоманда «все системные группы»Команда «все системные группы»: 0 — выключить все группы, любое ненулевое — включить все (0x03FF). Чтение всегда 0. НЕ сохраняется.
1270x007FInput04RнетСНЯТ в 1СНЯТ в 1.0.1.52. Прежде — селектор протокола шины (0=Modbus, 1=BACnet); объединён с семейным регистром 122 (см. выше). Не отображён: FC03 читает 0, FC06 — тихий no-op ACK. Зеркало BACnet BV:127 удалено; селектор в BACnet живёт в объекте MSV 19:1 «Bus Protocol» (через AV:122 в 1.0.1.52/53). Отгружался только в 1.0.1.50/51.
1280x0080Holding03/06/10RWнетModbus slave address, 1Modbus slave address, 1..246 (247 зарезервирован под сервис/бутлоадер); кнопкой задаётся только 1..15, адрес >15 индицируется как 15 (все 4 LED).
1290x0081Holding03/06/10WнетЗапись ненулевогоЗапись ненулевого: перезагрузка в режим загрузчика (магическое число в RAM + reset).
1330x0085Holding03/06/10RWнетВремя «бегущей строки»Время «бегущей строки»; при записи значение делится на 10 (хранится x10 мс в read path).
1340x0086Holding03/06/10RWнетТаймаут неактивности Modbus (сек), 0 = отключеноТаймаут неактивности Modbus (сек), 0 = отключено; до 255.
5330x0215Holding03/06/10RWнетУсреднение по каналам датчиков (9 каналов × 3 регистра)Адреса 533–559. Усреднение по каналам датчиков (9 каналов × 3 регистра): см. раздел ниже.
5330x0215Input04RнетУсреднение по каналам датчиков (9 каналов × 3 регистра)Адреса 533–559. Усреднение по каналам датчиков (9 каналов × 3 регистра): см. раздел ниже.
642560xFB00Input04RнетДиагностика FlashДиагностика Flash: свободные байты страницы (flash_page_get_free_bytes).
643840xFB80Input04RнетФактический размер страницыФактический размер страницы.
645120xFC00Input04RнетМетрика фрагментации FlashМетрика фрагментации Flash.
646400xFC80Input04RнетСчётчик стираний страницы (сатурация 0xFFFF)Счётчик стираний страницы (сатурация 0xFFFF).
655040xFFE0Input04RнетЕдЕд. байт. Макс. глубина стека с момента старта; 0 = стек недостоверен / монитор не готов
655050xFFE1Input04RнетЕдЕд. байт. Свободная оперативная память (приближённо: текущий MSP − конец кучи `_end`)
655060xFFE2Input04RнетЕдЕд. байт. Используемая оперативная память (объём .bss + .data по символам линкера)
655070xFFE3Input04RнетЕдЕд. байт. Размер стека (из `svc_stack_monitor` / `_Min_Stack_Size`)
655080xFFE4Input04RнетПричина последней перезагрузки МК (класс по RCC CSR, приоритет флагов)Причина последней перезагрузки МК (класс по RCC CSR, приоритет флагов): 1=LPWR, 2=WWDG, 3=IWDG, 4=SFT, 5=POR, 6=PIN, 7=OBL, 8=V18PWR; 0 = ни один из флагов не установлен
655090xFFE5Input04RнетСчётчик успешных обновлений прошивкиСчётчик успешных обновлений прошивки: младшие 16 бит (u32 во Flash; сверх 65535 — 0xFFFF)
655100xFFE6Input04RнетСтаршее слово u32 счётчика обновлений (как МР-02м, общая таблица shared/modbus)Старшее слово u32 счётчика обновлений (как МР-02м, общая таблица shared/modbus)
655110xFFE7Input04RнетСостояние EEPROM во время работы (с 1Состояние EEPROM во время работы (с 1.0.1.46; раньше — «не используется», чтение 0): бит 0 — EEPROM отвечает СЕЙЧАС бит 1 — ВОССТАНОВЛЕН на ходу (загрузочный probe провалился, повторный удался) бит 2 — конфигурация загружена из EEPROM при старте; 0 = работа на заводских, запись конфигурации ПОДАВЛЕНА до перезагрузки (защита сохранённых настроек) бит 3 — бюджет повторных probe исчерпан (60 попыток, ~10 мин) в ТЕКУЩЕМ прогоне лестницы (см. примечание ниже) биты 4..7 — резерв, всегда 0 биты 8..15 — число выполненных probe в ТЕКУЩЕМ прогоне лестницы, насыщение на 255 ВНИМАНИЕ (с 1.0.1.47), уточнение смысла битов 3 и 8..15: лестница повторных probe теперь ПЕРЕЗАПУСКАЕМАЯ. Отказ EEPROM на ходу (8 подряд неудачных операций) заводит её заново со свежим бюджетом, поэтому оба поля описывают ТЕКУЩИЙ прогон, а не всю наработку: счётчик в старшем байте после такого отказа НАЧИНАЕТСЯ С НУЛЯ — опрашивающий мастер увидит, что он «пошёл назад». Это НЕ сбой опроса. Так и задумано: без сброса бита 3 новая лестница вообще не запустилась бы, а «исчерпанный бюджет» при активно идущих проверках был бы прямой ложью. До 1.0.1.47 перезапуск был невозможен, и оба поля были монотонны за наработку; биты 0..2 не изменились. Факт перезапуска виден в 65519 (биты 4/5/7). Исправное устройство: 0x0005 (готов + конфиг загружен). ВНИМАНИЕ, единственная неоднозначность: 0 = прошивка старше 1.0.1.46 (не реализовано), НО то же 0 читается у устройства с провалившимся загрузочным probe до ПЕРВОГО повторного (не более 10 с после старта). Различать по 65512 бит 1 — это достоверная запись о старте.
654680xFFBCInput04RнетКадров с ошибкой CRC (crc_err_cnt)Кадров с ошибкой CRC (crc_err_cnt)
654690xFFBDInput04RнетОбработок кадра из ветки TIM14/t3Обработок кадра из ветки TIM14/t3.5 (src_t14_cnt)
654700xFFBEInput04RнетОбработок кадра из DMA-ветки (src_dma_cnt)Обработок кадра из DMA-ветки (src_dma_cnt)
654710xFFBFInput04RнетУспешный разбор без старта TX (no_tx_after_ok)Успешный разбор без старта TX (no_tx_after_ok)
654720xFFC0Input04RнетВсего RxEvent (rx_evt_cnt)Всего RxEvent (rx_evt_cnt)
654730xFFC1Input04RнетВосстановлений зависшего TX (tx_stall_recovered)Восстановлений зависшего TX (tx_stall_recovered)
654740xFFC2Input04RнетСрабатываний recovery Modbus (mb_recover_cnt)Срабатываний recovery Modbus (mb_recover_cnt)
654750xFFC3Input04RнетПовторов старта TX (tx_start_retried)Повторов старта TX (tx_start_retried)
654760xFFC4Input04RнетДиагностика старта TX (tx_start_diag)Диагностика старта TX (tx_start_diag)
654770xFFC5Input04RнетОтказов старта TX (tx_start_fail)Отказов старта TX (tx_start_fail)
654780xFFC6Input04Rнетt14_entryt14_entry: входов в разбор mb_none по t3.5
654790xFFC7Input04Rнетt14_size0t14_size0: t3.5 с пустым буфером
654800xFFC8Input04Rнетt14_shortt14_short: обрезанный кадр 0<Size<4 (голова разорванного кадра)
654810xFFC9Input04Rнетt14_alient14_alien: «чужой» первый байт (хвост разорванного кадра)
654820xFFCAInput04Rнетt14_extendt14_extend: продлений приёма (толеранс к разрыву кадра хостом до ~38 мс)
654830xFFCBInput04Rнетrxcpltrxcplt: отказ TIM_Start
654840xFFCCInput04Rнетrxcpltrxcplt: отказ UART_Receive
654850xFFCDInput04RнетУспешных TxCplt (ответ полностью передан в линию)Успешных TxCplt (ответ полностью передан в линию)
654860xFFCEInput04Rнетrxcpltrxcplt: переполнение буфера приёма
654870xFFCFInput04RнетМаксимальный Size, виденный в t14 mb_noneМаксимальный Size, виденный в t14 mb_none; запись (Holding) — сброс всех счётчиков диагностики
654920xFFD4Input04RнетТаймаутов приёма кадраТаймаутов приёма кадра
654930xFFD5Input04RнетОшибок UART (PE/FE/NE/ORE суммарно)Ошибок UART (PE/FE/NE/ORE суммарно)
654940xFFD6Input04RнетПерезапусков приёма из IRQ-веткиПерезапусков приёма из IRQ-ветки
654950xFFD7Input04RнетЕдЕд. мс. Максимальная длительность прохода main loop (с 1.0.2.4 заполняется; ранее всегда 0 — измерение не было подключено)
654960xFFD8Input04RнетСчётчик «медленных» операций (> порога)Счётчик «медленных» операций (> порога). В этом изделии не подключён — всегда 0 (id операций в общем заголовке имеют смысл МР-02м)
654970xFFD9Input04RнетКод последней медленной операцииКод последней медленной операции. Не подключён — всегда 0
654980xFFDAInput04RнетСчётчик записей EE24 (конфиг/счётчики)Счётчик записей EE24 (конфиг/счётчики)
654990xFFDBInput04RнетЕдЕд. мс. Длительность последней записи EE24
655000xFFDCInput04RнетЕдЕд. мс. Максимальная длительность записи EE24
655010xFFDDInput04RнетЕдЕд. мс. Максимальная пауза между опросами
655020xFFDEInput04RнетСчётчик fast_mb recoveryСчётчик fast_mb recovery
655030xFFDFInput04RнетМладший байтМладший байт: класс причины сброса; старший: флаги ошибок UART
655120xFFE8Input04RнетPOST-битмаска самотестаPOST-битмаска самотеста: биты 0..5 = пройден, 8..13 = применим, 15 = снятие завершено; FAILED = применим и не пройден ((reg>>8) & ~reg & 0x3F). Биты (i/8+i): 0 APP_CRC (CRC образа против эталона mk/patch_app_crc.py; сырой ST-Link ELF = «не применим»), 1 EEPROM (CAT24 ответила при старте), 2 I2C_EEPROM (init шины), 3 I2C_SENSOR (init шины), 4 ADC (polled-конверсия + правдоподобие VREFINT), 5 RAM_MARCH (только сборка FACTORY_TEST) Бит 4 (ADC) — ЕДИНСТВЕННЫЙ, который может измениться ПОСЛЕ старта (с 1.0.1.46): когда лестница перезапуска АЦП сдаётся (3 неудачных ремонта подряд), бит снимается и остаётся снятым до перезагрузки. Значение: прибор «слеп» — рег. 1..49 замерли на правдоподобных старых значениях, а программный brown-out монитор перестал получать выборки и (через 5 с) ЗАПРЕЩАЕТ запись EEPROM/Flash: конфигурация перестаёт сохраняться. Это намеренно (отказ от записи безопаснее записи вслепую), а не отдельная неисправность EEPROM. Индикация на плате — мигание красного светодиода (модульная ошибка).
655130xFFE9Input04RнетЕдЕд. байт. Минимальный наблюдённый запас стека (watermark stack_guard); 0 = скан ещё не выполнялся
655140xFFEAInput04RдаЕдЕд. шт. Событий Fast Modbus, отклонённых потолком частоты (с 1.0.1.42). Насыщается на 65535 (не переполняется в 0). Ненулевое значение = шторм БЫЛ и был ограничен: потолок сработал, события отброшены. При штатной работе ноль. Сброс — запись любого значения в Holding 65487 (общий сброс диагностики). Диагностика: растущий счётчик указывает на неисправный датчик или слишком низкий порог 340..342.
655150xFFEBInput04RнетЕдЕд. шт. Нарушений заполнения буфера в read_inputs (с 1.0.1.45, пришёл с ре-пином shared/modbus 0efa169): обработчик вернул «успех», не заполнив буфер ответа. Насыщается, не переполняется. При штатной работе ноль; ненулевое = дефект в product-хуке чтения входных регистров. ВНИМАНИЕ: этот счётчик НАМЕРЕННО НЕ сбрасывается записью в Holding 65487 — свидетельство дефекта должно пережить общую очистку диагностики, пока дыра не закрыта.
655160xFFECInput04RнетПрисутствие/живость датчиков (с 1Присутствие/живость датчиков (с 1.0.1.51). ТОЛЬКО ЧТЕНИЕ; запись на этот адрес не принимается (обрабатывается как неотображённый адрес). Биты 0..4 — снимок СТАРТА: I2C-датчик ответил на свой init при включении (фиксируются один раз, стабильны до перезагрузки): бит 0 MCP9808 бит 1 HDC1080 бит 2 BME280 бит 3 BME680 бит 4 ZMOD4410 биты 5..7 — резерв, всегда 0 — с 1.0.2.4 бит 4 честный: ставится только когда ZMOD4410 ответил на чтение идентификатора (PID 0x2310); ранее ставился безусловно Биты 8..9 — ЖИВОСТЬ на момент чтения (могут меняться при опросе): бит 8 DS18B20 валиден сейчас (сторожевой вердикт ds18b20_valid) бит 9 связь с LD2412 сейчас (ld2412_link_ok_now) биты 10..14 — резерв, всегда 0 бит 15 — снимок старта ЗАВЕРШЁН (ставится после init_sensor_module_stage2) ПОЛИТИКА: I2C-датчик, отсутствующий при старте, ОТКЛЮЧЁН до перезагрузки (горячее подключение не поддерживается): его регистры публикуют 0, его алгоритмы (Kalman/IAQ) не загружают МК, опрос его шины не ведётся. Полностью укомплектованная исправная плата: 0x831F. 0 = прошивка старше 1.0.1.51 ИЛИ снимок ещё не начат (различать по биту 15 и версии 320..323). Все I2C-биты (0..4) = 0 при бите 15 = 1 — висящая шина I2C (не распаяны подтяжки) — производственный признак, а не пять одновременных отказов.
655190xFFEFInput04RнетЗдоровье внешней EEPROM (с 1Здоровье внешней EEPROM (с 1.0.1.47). ТОЛЬКО ЧТЕНИЕ; запись на этот адрес не принимается (обрабатывается как неотображённый адрес). Раскладка битов — ОБЩЕСЕМЕЙНАЯ, побитово совпадает с МР-02м 65519 (с 1.0.11.3), поэтому один инструмент читает оба изделия: бит 0 DEGRADED — работающая конфигурация в ОЗУ НЕ подтверждена EEPROM бит 1 BOOT_NOACK — микросхема не ответила при старте (EE24_Init false) бит 2 BOOT_READ_FAIL — ответила, но образ конфигурации не прочитался бит 3 BOOT_PARSE_FAIL— образ прочитан, содержимое отвергнуто (CRC конфига) бит 4 RUNTIME_FAIL — залипающий: была исправна при старте, отказала позже бит 5 SEEN_FAIL — залипающий: любой отказ с момента старта бит 6 MIRROR_APPLIED — ВСЕГДА 0 на этом изделии: зеркала конфигурации во Flash здесь нет (у МР-02м бит тоже пока 0) бит 7 RECOVERED — залипающий: связь вернулась после ЛЮБОГО отказа — и стартового, и возникшего на ходу. НЕ путать с 65511 бит 1: тот УЖЕ поставлялся и означает строго «провалился СТАРТОВЫЙ probe, повторный удался»; отказ на ходу его не поднимает биты 8..11 — класс ПОСЛЕДНЕЙ НЕУДАВШЕЙСЯ операции: 0 нет, 1 стартовый probe, 2 чтение конфигурации, 3 запись головы конфигурации, 4 — грамматика семейства, на этом изделии не встречается, 5 запись выше головы конфигурации (постановка смены серийного номера, рег. 1005), 6 повторный probe, 7 (с 1.0.2.3) ДОЛГОВРЕМЕННАЯ ЗАПИСЬ (страница EEPROM либо стирание/программирование Flash) была затребована ИЗ ПРЕРЫВАНИЯ и ОТКЛОНЕНА. Микросхема ИСПРАВНА, дефект — в прошивке, которая так записала. Что делать: искать вызов из контекста прерывания, а НЕ менять EEPROM. Класс намеренно публикуется БЕЗ флагов отказа и БЕЗ счётчика (см. 0x0700 ниже); настоящий отказ (классы 1..6) всегда перебивает его биты 12..15 — подряд неудавшихся операций, насыщение на 15 Правило чтения: бит 0 — «сейчас», бит 5 — «когда-либо». Бит 0 сам по себе не поднимается, поэтому «бит 5 есть, бита 0 нет» = эпизод был, сейчас всё в норме. Класс операции (8..11) — «что пробовали последним», а НЕ диагноз исходного отказа: он меняется по ходу деградации при неизменном младшем байте. Значения ниже ПОЛУЧЕНЫ КОДОМ (`test_eeprom_recovery --dump-examples`), а не выведены вручную — нибблы класса и счётчика делают ручную таблицу ненадёжной: 0x0000 — исправно, ничего никогда не отказывало 0x0009 — образ прочитан, содержимое отвергнуто. Это же читает чистая с завода микросхема (голова стёрта, CRC не сходится всегда) — НЕ неисправность; после первой сохранённой настройки и перезагрузки станет 0x0000 0x1225 — ответила, но образ не прочитался (одна неудачная попытка чтения) 0xF123 → 0xF623 — НЕ ОТВЕТИЛА ПРИ СТАРТЕ. Младший байт зафиксирован на 0x23, счётчик насыщен; меняется только нибл класса: 1 (стартовый probe) — мгновение при старте, затем 6 (повторный probe) на всё время, пока микросхема мертва. Опрашивающий мастер практически всегда видит 0xF623; это НЕ другая неисправность 0x06A3 — …и вернулась: обслуживание EEPROM восстановлено, но конфигурация остаётся заводской до перезагрузки, поэтому бит 0 НЕ снимается (у МР-02м в этой же ситуации 0x01A2 — там бит 0 снимается; расхождение намеренное, см. docs/contracts/eeprom-v2-layout.md) 0x0320 — «было, но сейчас всё в норме»: несколько записей не прошли, затем одна прошла. Единственный поднятый бит младшего байта — залипающий 5 0x8331 — была исправна при старте и отказала под нагрузкой (8 подряд неудачных записей). Настройки, изменённые после этого, В EEPROM НЕ ПОПАЛИ 0x03B0 — …и вернулась: бит 0 снят, класс операции сохранён как история 0x0700 — (с 1.0.2.3) микросхема ИСПРАВНА; долговременная запись отклонена из прерывания — ДЕФЕКТ ПРОШИВКИ. Ни один флаг не поднят, счётчик нулевой — и это однозначно: классы 1..6 физически не могут появиться без залипающего бита 5. Не заменять EEPROM; искать вызов из ISR СЕМЕЙСТВО: класс 7 первым выделил CE-02m-3 1.0.7.5 (MR-02m#121); здесь принят тот же номер, формулировка расширена на Flash. ВНИМАНИЕ при сравнении изделий: НЕ сопоставлять стартовые биты 1..3 с CE — у него они не оцениваются. Условия применимости — один дом: docs/contracts/eeprom-v2-layout.md § Op class 7. ВНИМАНИЕ: 0x0000 читает и прошивка старше 1.0.1.47 (адрес не обслуживался). Различать по версии в 320..323 — из самого 65519 это неразличимо, и «бит достоверности» здесь не вводится намеренно: он сломал бы общесемейную раскладку. 65511 (состояние восстановления EEPROM) НЕ отменяется, и его биты 0..2 сохраняют смысл, выпущенный в 1.0.1.46, — в частности бит 1 остаётся строго СТАРТОВЫМ. Но поля лестницы (бит 3 и биты 8..15) с 1.0.1.47 относятся к ТЕКУЩЕМУ прогону, который отказ на ходу перезапускает: см. уточнение в описании 65511 выше. И 65511 НЕ является общесемейным: у МР-02м по этому адресу лежит код последней ошибки SPI. Для сравнения изделий семейства пригоден только 65519.
2000x00C8Input04RнетМодель устройства ASCIIАдреса 200–219. Модель устройства ASCII: "SENSOR" по одному символу на регистр, остальное 0.
2700x010EInput04RнетFast Modbus serial address, u32 (младший, старший)Адреса 270–271. Fast Modbus serial address, u32 (младший, старший).
2900x0122Input04RнетСигнатура 12 байт (EEPROM 240Адреса 290–301. Сигнатура 12 байт (EEPROM 240..251 или "Sens." по умолчанию), байт в младшем байте регистра.
3200x0140Input04RнетВерсия прошивки MAJORВерсия прошивки MAJOR.
3210x0141Input04RнетMINORMINOR.
3220x0142Input04RнетPATCHPATCH.
3230x0143Input04RнетSUFFIX (знаковое значение как uint16)SUFFIX (знаковое значение как uint16).
3240x0144Input04RнетУпакованная версия u32 (часть 1), смУпакованная версия u32 (часть 1), см. код.
3250x0145Input04RнетУпакованная версия u32 (часть 2)Упакованная версия u32 (часть 2).
3300x014AInput04RнетСтрока версии загрузчика, 8 символов ASCII (младший байт)Адреса 330–337. Строка версии загрузчика, 8 символов ASCII (младший байт).
3400x0154Holding03/06/10RWдаПорог событий Fast Modbus для сенсорных регистров 1Порог событий Fast Modbus для сенсорных регистров 1..28 (одно значение на все 28), raw-единицы (температуры ×0.1 °C, влажность ×0.1 %RH). Заводское 10. Диапазон записи 5..65534 (С 1.0.1.42; ранее 1..65534); запись 1..4, 0 или 0xFFFF — исключение 3. Обоснование минимума: ниже 5 raw единиц (0.5 °C / 0.5 %RH) порог оказывается ниже собственного шума датчика, событие генерируется на шум и заливает общую шину RS-485 (0 = событие на каждое изменение = флуд; 0xFFFF — сентинел «не задано» в EEPROM). 5 по-прежнему ВДВОЕ чувствительнее заводского значения 10. Значение 1..4, записанное прошивкой 1.0.1.38..41 и лежащее в EEPROM, при загрузке поднимается до 5 (не до заводского 10 — намерение «максимальная чувствительность» сохраняется); обратной записи в EEPROM при этом не выполняется. EEPROM (коалесценция ~5 с), применяется сразу без перезагрузки. Побочный эффект записи: перерегистрация трекинга 1..28 — первое изменение каждого регистра после записи засеивает трекинг молча (одно возможно пропущенное событие на регистр). Введён 1.0.1.38; диапазон сужен в 1.0.1.42. Рег. 19 с 1.0.2.4 в мкг/м³ — тот же порог 10 там означает 0.010 мг/м³ (в 10 раз чувствительнее прежнего); при болтливых событиях TVOC поднимите порог сознательно — он общий для 1..28.
3410x0155Holding03/06/10RWдаПорог события VDD (регПорог события VDD (рег. 123), единицы 0.01 В. Заводское 10 (= 0.1 В). Диапазон записи 5..65534 (минимум 0.05 В — ниже лежит шум АЦП/VREFINT). Прочие правила записи/персиста и миграция значения 1..4 — как рег. 340. Введён 1.0.1.38; диапазон сужен в 1.0.1.42.
3420x0156Holding03/06/10RWдаПорог события температуры МК (регПорог события температуры МК (рег. 124), единицы 0.1 °C. Заводское 30 (= 3 °C). Диапазон записи 5..65534 (минимум 0.5 °C — встроенный датчик F030 имеет ~1 °C шума). Прочие правила записи/персиста и миграция значения 1..4 — как рег. 340. Введён 1.0.1.38; диапазон сужен в 1.0.1.42.
3430x0157Holding03/06/10RWдаМинМин. интервал между событиями uptime (рег. 105), секунды (период heartbeat). Заводское 5. Диапазон записи 1..65534 — НЕ СУЖЕН в 1.0.1.42: это ПЕРИОД, а не дельта; heartbeat раз в 1 с легитимен и сам по себе ограничен одним событием в секунду. Прочие правила — как рег. 340. Введён 1.0.1.38.
3440x0158Input04RнетЗАРЕЗЕРВИРОВАН под порог AO-класса (подключение MR-02m)ЗАРЕЗЕРВИРОВАН под порог AO-класса (подключение MR-02m). У DTV чтение 0, запись — как прочие неизвестные адреса.
3450x0159Input04RнетCO2CO2: предупреждение активно (0/1). FC02/FC01 — тот же бит.
3460x015AInput04RнетCO2CO2: авария активна (0/1).
3470x015BInput04RнетVOCVOC: предупреждение активно (0/1).
3480x015CInput04RнетVOCVOC: авария активна (0/1).
3490x015DInput04RнетСводка одним чтением (битовая маска)Сводка одним чтением (битовая маска): b0 CO2 предупреждение · b1 CO2 авария b2 VOC предупреждение · b3 VOC авария b4 сейчас «ночь» · b5 звук тревоги приглушён сейчас (b5 — состояние ПОЛИТИКИ приглушения, а не «сейчас звучит»: он поднят, когда звук тревоги был бы подавлен — ночью при b4 рег.365 или при «только свет». Читается и без активной тревоги, поэтому ночное приглушение проверяется по шине, без ушей.) b6 данные CO2 валидны · b7 данные VOC валидны b8–b9 фактический источник CO2: 0 = нет данных, 1 = ZMOD4410, 2 = BME680 В FC01/FC02 адрес 349 = «есть ЛЮБАЯ активная тревога».
3500x015EHolding03/06/10RWнетВключение каналов (битовая маска, заводское 0 = ВСЁ ВЫКЛЮЧЕНО)Включение каналов (битовая маска, заводское 0 = ВСЁ ВЫКЛЮЧЕНО): b0 CO2 предупр. · b1 CO2 авария b2 VOC предупр. · b3 VOC авария Выключенный канал НЕ даёт ни индикации, ни бита статуса. Диапазон 0..15. Заводское 0 — обновление прошивки не включает тревоги само (интегратор включает сознательно).
3510x015FHolding03/06/10RWнетУставка CO2 «предупреждение», ppmУставка CO2 «предупреждение», ppm. Заводское 1000, диапазон 400..5000.
3520x0160Holding03/06/10RWнетУставка CO2 «авария», ppmУставка CO2 «авария», ppm. Заводское 1400, диапазон 400..5000.
3530x0161Holding03/06/10RWнетУставка VOC «предупреждение», мг/м³ ×100Уставка VOC «предупреждение», мг/м³ ×100. Заводское 60, диапазон 1..10000. Единица ОТЛИЧАЕТСЯ от рег. 19 (мкг/м³ с 1.0.2.4) — намеренно, без миграции; 60 = 0.60 мг/м³ = 600 в рег. 19.
3540x0162Holding03/06/10RWнетУставка VOC «авария», мг/м³ ×100Уставка VOC «авария», мг/м³ ×100. Заводское 100, диапазон 1..10000. Единица ОТЛИЧАЕТСЯ от рег. 19 (мкг/м³ с 1.0.2.4) — намеренно, без миграции; 100 = 1.00 мг/м³ = 1000 в рег. 19.
3550x0163Input04Rнет— ЗАРЕЗЕРВИРОВАНЫ (под возможные отдельные ночные уставки)Адреса 355–358. — ЗАРЕЗЕРВИРОВАНЫ (под возможные отдельные ночные уставки). Чтение 0; запись 0 принимается как no-op (чтобы клиент мог записать обратно блок, который только что прочитал), запись ненулевого — исключение 3.
3590x0167Holding03/06/10RWнетГистерезис возврата по CO2, ppmГистерезис возврата по CO2, ppm. Заводское 50, диапазон 0..1000.
3600x0168Holding03/06/10RWнетГистерезис возврата по VOC, мг/м³ ×100Гистерезис возврата по VOC, мг/м³ ×100. Заводское 5, диапазон 0..1000. Единица ОТЛИЧАЕТСЯ от рег. 19 (мкг/м³ с 1.0.2.4) — намеренно, без миграции; 5 = 0.05 мг/м³ = 50 в рег. 19.
3610x0169Holding03/06/10RWнетПорог «ночь»Порог «ночь»: ночь пока рег. 25 (освещённость) ≤ этого значения. Заводское 10 %, диапазон 0..100.
3620x016AHolding03/06/10RWнетДельта возврата в «день»Дельта возврата в «день»: день при рег. 25 ≥ (рег.361 + рег.362). Заводское 5 %, диапазон 0..100.
3630x016BHolding03/06/10RWнетЗадержка подтверждения включения, сЗадержка подтверждения включения, с. Заводское 30, диапазон 0..3600.
3640x016CHolding03/06/10RWнетЗадержка подтверждения выключения, сЗадержка подтверждения выключения, с. Заводское 60, диапазон 0..3600.
3650x016DHolding03/06/10RWнетОпции (битовая маска), заводское 0x0010Опции (битовая маска), заводское 0x0010: b0–b1 источник CO2: 0 = авто (ZMOD4410, при его отсутствии BME680), 1 = только ZMOD4410, 2 = только BME680, 3 — недопустимо (исключение 3) b2–b3 поведение при мёртвой связи LD2412: 0 = считать день (заводское; звук разрешён), 1 = считать ночь, 2 = держать последнее, 3 — недопустимо (исключение 3) b4 приглушать звук тревоги ночью (заводское 1) b5 «только свет» — звук тревоги запрещён всегда Биты b6–b15 должны быть 0, иначе исключение 3.
3660x016EInput04Rнет— ЗАРЕЗЕРВИРОВАНЫАдреса 366–369. — ЗАРЕЗЕРВИРОВАНЫ. Правила те же, что у 355–358.
10050x03EDHolding03/06/10WнетСерийный номер, 2 регистра подрядСерийный номер, 2 регистра подряд: 1005 = младшее слово, 1006 = старшее слово (форма 0x0E0Axxxx). Broadcast — игнорируется.
5330x0215Holding03/06/10RнетDS18B20 / регDS18B20 / рег.1: только чтение, возвращает 1
5340x0216Holding03/06/10RWнетDS18B20 / регDS18B20 / рег.1: глубина усреднения
5350x0217Holding03/06/10RнетDS18B20 / регDS18B20 / рег.1: только чтение, возвращает 0
5360x0218Holding03/06/10RнетMCP9808 / регMCP9808 / рег.2: только чтение, возвращает 1
5370x0219Holding03/06/10RWнетMCP9808 / регMCP9808 / рег.2: глубина усреднения
5380x021AHolding03/06/10RнетMCP9808 / регMCP9808 / рег.2: только чтение, возвращает 0
5390x021BHolding03/06/10RнетHDC1080 T / регHDC1080 T / рег.3: только чтение, возвращает 1
5400x021CHolding03/06/10RWнетHDC1080 T / регHDC1080 T / рег.3: глубина усреднения
5410x021DHolding03/06/10RнетHDC1080 T / регHDC1080 T / рег.3: только чтение, возвращает 0
5420x021EHolding03/06/10RнетBME280 T / регBME280 T / рег.4: только чтение, возвращает 1
5430x021FHolding03/06/10RWнетBME280 T / регBME280 T / рег.4: глубина усреднения
5440x0220Holding03/06/10RнетBME280 T / регBME280 T / рег.4: только чтение, возвращает 0
5450x0221Holding03/06/10RнетBME680 T / регBME680 T / рег.5: только чтение, возвращает 1
5460x0222Holding03/06/10RWнетBME680 T / регBME680 T / рег.5: глубина усреднения
5470x0223Holding03/06/10RнетBME680 T / регBME680 T / рег.5: только чтение, возвращает 0
5480x0224Holding03/06/10RнетNTC/PT / регNTC/PT / рег.6 in: только чтение, возвращает 1
5490x0225Holding03/06/10RWнетNTC/PT / регNTC/PT / рег.6 in: глубина усреднения
5500x0226Holding03/06/10RнетNTC/PT / регNTC/PT / рег.6 in: только чтение, возвращает 0
5510x0227Holding03/06/10RнетHDC1080 RH / регHDC1080 RH / рег.7: только чтение, возвращает 1
5520x0228Holding03/06/10RWнетHDC1080 RH / регHDC1080 RH / рег.7: глубина усреднения
5530x0229Holding03/06/10RнетHDC1080 RH / регHDC1080 RH / рег.7: только чтение, возвращает 0
5540x022AHolding03/06/10RнетBME280 RH / регBME280 RH / рег.8: только чтение, возвращает 1
5550x022BHolding03/06/10RWнетBME280 RH / регBME280 RH / рег.8: глубина усреднения
5560x022CHolding03/06/10RнетBME280 RH / регBME280 RH / рег.8: только чтение, возвращает 0
5570x022DHolding03/06/10RнетBME680 RH / регBME680 RH / рег.9: только чтение, возвращает 1
5580x022EHolding03/06/10RWнетBME680 RH / регBME680 RH / рег.9: глубина усреднения
5590x022FHolding03/06/10RнетBME680 RH / регBME680 RH / рег.9: только чтение, возвращает 0
00x0000Coil01/05/0FRWнетне используется для выходов (как в конфигурации полного контроллера)не используется для выходов (как в конфигурации полного контроллера).
10x0001Coil01/05/0FRWнетдублирует holding 1 (buzzer), set_all_output()дублирует holding 1 (buzzer), set_all_output().
20x0002Coil01/05/0FRWнетдублирует holding 2 (свет / все LED), all_set_light / all_clear_lightдублирует holding 2 (свет / все LED), all_set_light / all_clear_light.
60x0006Coil01/05/0FRWнетбулев выбор семейства внешнего датчика (легаси-доступ к holding 6)булев выбор семейства внешнего датчика (легаси-доступ к holding 6): запись 0 → код 1 (NTC10K B3950), запись 1 → код 5 (Pt1000 a385); чтение = 1 если holding 6 из группы Pt1000 (коды 5..7), иначе 0 (NTC/Off). Полный набор вариантов (0..7) задаётся только через holding reg 6.
400x0028Coil01/05/0FRWнетсинхронно с регистрами 40Адреса 40–49. синхронно с регистрами 40..49 — включение фильтра Калмана по каналам (EEPROM).
10x0001Discrete02Rнетотражают server_coils (и coil 6 — как coil read)Адреса 1–6. отражают server_coils (и coil 6 — как coil read); остальное — 0.

Условные обозначения

  • R чтение
  • RW чтение и запись
  • W запись
  • ⚡ событие Fast Modbus
  • EEPROM значение хранится в EEPROM
  • RAM значение хранится в RAM