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

Регистры Modbus — ПИ-02м

Преобразователь интерфейсов ПИ-02м

Таблица ниже — вся карта, 177 строк. При генерации отброшено 15 строк. Отброшенные строки здесь не восстановлены.

Колонка функций считается по типу регистра: coil — 01/05/0F, discrete — 02, input — 04, holding — 03/06/10. В исходных строках JSON отдельного поля функций нет. Колонки, для которых в строке нет поля, остаются пустыми.

Порт N занимает десять адресов с базы 10×N (порт 1 — с 10, порт 5 — с 50). Те же смыслы продублированы в Input.

Смещение Адрес порта 1 Смысл в карте
0 10 Режим: 0 — прозрачный (RTU поверх TCP), 1 — Modbus TCP, 2 — slave (только порт 5)
1 11 Скорость, код bps/100. Примеры: 96 = 9600, 1152 = 115200. Набор: 1200…115200
2 12 Чётность. Файл карты: 0 — нет, 1 — odd, 2 — even. Драйвер UART и веб: 1 — чёт, 2 — нечёт
3 13 Стоп-биты: 1 или 2
4 14 TCP-слушатель, 1…65535, кроме 80 и 9999, номер уникален среди портов
5 15 Таймаут RTU, мс. 0 — автоматически, верх 60000
6 16 Число TCP-соединений, 1…4
7 17 Очередь FIFO: 0 — выкл, 1 — строгая очередь
8 18 Фильтр линейных ошибок порта: 0 — выкл, 1 — вкл
9 19 Резерв. Прозрачный узел карта относит к веб-интерфейсу

Для порта 2 база 20, для порта 3 — 30, для порта 4 — 40, для порта 5 — 50. Смещение прибавляется к базе. Адрес 24 поэтому одновременно попадает в смещение +4 порта 2 и в отдельную строку расширенного DO1. Адрес 128 в Holding тоже записан дважды: Unit ID 1…248 и запись в зеркало FRAM, где слушатель recovery остаётся 247. Обе строки остаются в таблице как в файле.

Скорость порта 4 дополнительно читается в Input 110 (код bps/100), чётность — в Input 111, стоп-биты — в Input 112. Holding 110–112 в карте — отдельная запись скорости, чётности и стоп-битов в зеркало FRAM.

Input 121 карта называет «Напряжение 24 V» со масштабом ×0,01 В и примером 2400 = 24,00 В. Это измеренное значение регистра. Номинал питания изделия реестр карточки не задаёт.

Порт 9999 — локальная карта шлюза, на RS-485 не форвардится. На порту 4 запрос с unit id шлюза (Holding 128) отвечает преобразователь, остальные адреса идут в мост. Порт 5 в режиме 2 отдаёт виртуальную карту списка опроса: адрес = слот × 32 + смещение, только FC03/FC04. Зачем это нужно и как задаётся список — на странице ПИ-02м.

Карта регистров ПИ-02м
Адрес (dec)Адрес (hex)ТипФункцииДоступФорматЕд. и масштабЗначения и диапазонПо умолчаниюХранение⚡ Событие Fast ModbusС версии ПОКаналНазваниеОписание
10x0001Coil01/05/0FRWнетDO1 (PA5)DO1 (PA5): 0=выкл, 1=вкл. FC05: 0x0000=off, 0xFF00=on. Запись переводит DO1 в ручной режим (сбрасывает режим «индикатор» HR24).
10x0001Discrete02RнетСостояние DO1 на выводеСостояние DO1 на выводе: 0=выкл, 1=вкл (фактический уровень PA5).
10x0001Input04RнетDO1 статус в виде словаDO1 статус в виде слова: 0 или 1 (как Discrete Input 1)
1050x0069Input04RнетUptime с момента загрузки, сек (uint32), младшее словоUptime с момента загрузки, сек (uint32), младшее слово
1060x006AInput04RнетUptime, старшее слово (фиксируется при чтении 105)Uptime, старшее слово (фиксируется при чтении 105)
1070x006BInput04RнетСчётчик перезагрузок (FRAM)Счётчик перезагрузок (FRAM)
1080x006CInput04RнетПричина последнего сбросаПричина последнего сброса: 0=LPWR 1=WWDG 2=IWDG 3=SFT 4=POR 5=PIN 6=OBL 7=UNK
1100x006EInput04RнетСкорость RS-485 порта 4 (код bps/100)Скорость RS-485 порта 4 (код bps/100)
1110x006FInput04RнетЧётность порта 4Чётность порта 4: 0=none 1=odd 2=even
1120x0070Input04RнетСтоп-биты порта 4Стоп-биты порта 4: 1 или 2
1130x0071Input04RнетНаработка, часы (uint16, max 65535)Наработка, часы (uint16, max 65535)
1140x0072Input04RнетНаработка, сутки floor(часы/24)Наработка, сутки floor(часы/24)
1400x008CInput04RнетRTC год (2000RTC год (2000..2099), UTC. 0 — календарь не идёт
1410x008DInput04RнетRTC месяц (1RTC месяц (1..12)
1420x008EInput04RнетRTC день (1RTC день (1..31)
1430x008FInput04RнетRTC час (0RTC час (0..23)
1440x0090Input04RнетRTC минута (0RTC минута (0..59)
1450x0091Input04RнетRTC секунда (0RTC секунда (0..59)
1460x0092Input04RнетRTC статусRTC статус: бит0 LSE готов, бит1 календарь идёт, бит2 время записано (0 = после холодного домена стоит 2000-01-01, пока его не задали)
1480x0094Input04RнетRTC Unix-секунды с 1970-01-01 UTC (uint32), младшее словоRTC Unix-секунды с 1970-01-01 UTC (uint32), младшее слово
1490x0095Input04RнетRTC Unix, старшее слово (фиксируется при чтении 148)RTC Unix, старшее слово (фиксируется при чтении 148)
1210x0079Input04RнетНапряжение 24 V, ×0Напряжение 24 V, ×0.01 В (2400 = 24.00 В)
1230x007BInput04RнетVDD МК, ×0VDD МК, ×0.01 В
1240x007CInput04RнетТемпература МК, °C (знаковое int16)Температура МК, °C (знаковое int16)
1280x0080Input04RнетModbus Unit IDModbus Unit ID
1300x0082Input04RнетIPv4, старшие 16 бит (big-endian по парам регистров)IPv4, старшие 16 бит (big-endian по парам регистров)
1310x0083Input04RнетIPv4, младшие 16 битIPv4, младшие 16 бит
1320x0084Input04RнетМаска подсети, старшие 16 битМаска подсети, старшие 16 бит
1330x0085Input04RнетМаска подсети, младшие 16 битМаска подсети, младшие 16 бит
1340x0086Input04RнетШлюз по умолчанию, старшие 16 бит (0Шлюз по умолчанию, старшие 16 бит (0.0.0.0 = маршрута по умолчанию нет)
1350x0087Input04RнетШлюз по умолчанию, младшие 16 битШлюз по умолчанию, младшие 16 бит
2700x010EInput04RнетСерийный номер (uint32), младшее словоСерийный номер (uint32), младшее слово
2710x010FInput04RнетСерийный номер, старшее словоСерийный номер, старшее слово
2900x0122Input04RнетСигнатура ASCII «PI-02m » (12 символов)Адреса 290–301. Сигнатура ASCII «PI-02m » (12 символов)
3200x0140Input04RнетВерсия прошивки MAJORВерсия прошивки MAJOR
3210x0141Input04RнетMINORMINOR
3220x0142Input04RнетPATCHPATCH
3230x0143Input04RнетSUFFIX (4-й компонент версии, напрSUFFIX (4-й компонент версии, напр. 12 для 2.0.0.12)
3240x0144Input04Rнет(PATCH<<8)+SUFFIX(PATCH<<8)+SUFFIX
3250x0145Input04Rнет(MAJOR<<8)+MINOR(MAJOR<<8)+MINOR
3300x014AInput04RнетВерсия бутлоадера, 8 символов ASCIIАдреса 330–337. Версия бутлоадера, 8 символов ASCII
10030x03EBInput04RнетСвободная heap RAM, байты (max 65535)Свободная heap RAM, байты (max 65535)
654610xFFB5Input04RнетСторожевой таймер задач (с 2Адреса 65461–65473. Сторожевой таймер задач (с 2.0.1.1): самая длинная пауза между отметками жизни задачи с момента готовности приложения, мс (насыщение 65535; 0 — задача ещё не отмечалась или не создана). Регистр = 65461 + № слота: 65461 tcpip, 65462 EthIf, 65463 EthLink, 65464–65468 FSM_01..FSM_05 (порты RS-485 1..5), 65469 aggMb5 (порт 5 в режиме aggregate), 65470 FSM, 65471 TMR, 65472 WEB, 65473 WDG. Только чтение. Пауза дольше бюджета слота сбрасывает шлюз (WWDG), после загрузки 65511 = № слота + 1; бюджеты — README «Сторожевой таймер задач», у WDG бюджета нет (его сторожит TIM7, 65511 = 0x0043). Подробнее (текущая пауза, бюджет) — GET /api/gateway/wdt (docs/openapi/gateway-api.yaml)
654740xFFC2Input04RдаRS-485 порты 1Адреса 65474–65478. RS-485 порты 1..5: транзакции, закрытые линейной ошибкой (`err` в /api/port/stats: ответа нет, но на линии была ошибка UART, байты без валидного ADU / CRC или переполнение RX). Каждый посланный запрос, ждущий ответа, закрывается ровно одним из rx / timeout / err: tx = rx + timeout + err, когда порт свободен. Запрос Fast Modbus (UID 0xFD, FC 0x46) без ответа всегда считается timeout, даже при ошибке на линии (в прозрачном и шлюзовом режиме). Скан и опрос событий (46 01/02, 46 10) — один запрос ко всем устройствам с арбитражем, коллизии там штатные; адресный запрос по серийному номеру (46 08) отвечает одно устройство, но учитывается так же — признак ставится по UID/FC, не по подфункции
654790xFFC7Input04RнетRS-485 порты 1Адреса 65479–65483. RS-485 порты 1..5: ошибки UART — framing (FE)
654840xFFCCInput04RнетRS-485 порты 1Адреса 65484–65488. RS-485 порты 1..5: ошибки UART — шум (NE)
654890xFFD1Input04RнетRS-485 порты 1Адреса 65489–65493. RS-485 порты 1..5: ошибки UART — чётность (PE)
654940xFFD6Input04RнетRS-485 порты 1Адреса 65494–65498. RS-485 порты 1..5: ошибки UART — переполнение (ORE)
654990xFFDBInput04RдаRS-485 порты 1Адреса 65499–65503. RS-485 порты 1..5: ошибки UART — DMA (65474–65478 — младшие 16 бит uint32; 65479–65503 — 16-битные счётчики событий с переходом через 0, одно событие на каждый бит ошибки HAL; рег. 63 = 5 обнуляет 65479–65503, но не 65474–65478)
655040xFFE0Input04RнетStack high-water mark (0 — не используется)Stack high-water mark (0 — не используется)
655050xFFE1Input04RнетСвободная RAM (heap), байтыСвободная RAM (heap), байты
655060xFFE2Input04RнетЗанятая RAM (heap), байтыЗанятая RAM (heap), байты
655070xFFE3Input04RнетРазмер стека задач (0 — не используется)Размер стека задач (0 — не используется)
655080xFFE4Input04RнетПричина перезагрузки (как регПричина перезагрузки (как рег. 108); с 2.0.0.12 brown-out (BOR) = 4 (POR), код 6 (OBL) больше не выдаётся
655090xFFE5Input04RнетСчётчик OTA/обновлений прошивки, младшее слово (растёт на 1 за применённое обновСчётчик OTA/обновлений прошивки, младшее слово (растёт на 1 за применённое обновление начиная с бутлоадера 1.0.0.4; старый BL затирал запись — всегда 0)
655100xFFE6Input04RнетСчётчик OTA/обновлений, старшее словоСчётчик OTA/обновлений, старшее слово
655110xFFE7Input04RнетПричина фатального сброса перед этой загрузкой (с 2Причина фатального сброса перед этой загрузкой (с 2.0.1.1; раньше всегда 0). Значение живёт до следующей загрузки, учитывается только после сброса WWDG/IWDG (65508 = 1/2); после SOFT/POR/PIN — 0. Коды (app_fault_t, Core/Inc/app_watchdog.h; имя — поле fault в /api/gateway/identity): 0x0000 нет; 0x0001–0x001F — сторожевой таймер задачи, № слота + 1 (слоты — у рег. 65461–65473); 0x0040 HTTP-обработчик на tcpip_thread дольше 15 с; 0x0041 инициализация не завершилась за 120 с; 0x0042 tcpip_thread молчит дольше 15 с во время инициализации; 0x0043 Watchdog_Task пропустил > 30 кормлений WWDG (TIM7); 0x0050 configASSERT FreeRTOS; 0x0051 assert lwIP; 0x0052 переполнение стека задачи; 0x0053 pvPortMalloc; 0x0054 Error_Handler; 0x0055 assert_failed; 0x005F маркер ERRH/ASSR старой прошивки или бутлоадера (причина не записана); 0x0060 HardFault; 0x0061 MemManage; 0x0062 BusFault; 0x0063 UsageFault
655120xFFE8Input04RнетПрозрачный мост, порты 1Адреса 65512–65516. Прозрачный мост, порты 1..5: сброшено заданий (очередь RTU полна)
655170xFFEDInput04RнетПрозрачный мост, порты 1Адреса 65517–65521. Прозрачный мост, порты 1..5: сброшено кадров RS-485→TCP (пул/ERR_MEM)
655220xFFF2Input04RнетRS-485 порты 1Адреса 65522–65526. RS-485 порты 1..5: переполнений RX-буфера
655270xFFF7Input04RнетETH TXETH TX: число ожиданий BUSY (кольцо дескрипторов заполнено)
655280xFFF8Input04RнетETH TXETH TX: число таймаутов ожидания TxCplt (2 с, tcpip_thread стоял)
655290xFFF9Input04RнетETH TXETH TX: число реинициализаций ETH после зависания TX DMA
655300xFFFAInput04RнетETH RXETH RX: число кадров, отброшенных при исчерпании RX-пула (8 буферов) (65512–65530 — младшие 16 бит uint32-счётчиков, только чтение)
655310xFFFBInput04RнетСостояние списка опроса в FRAM (PUT /api/devices)Состояние списка опроса в FRAM (PUT /api/devices): биты 3..0 — результат восстановления при загрузке (0=не выполнялось 1=ok 2=ошибка чтения 3=таблицы нет или она стёрта сбросом к заводским 4=CRC 5=пустой список 6=основная копия испорчена или не прочиталась, список взят из теневой копии (с 2.0.1.1); прочитанная, но испорченная основная тут же восстанавливается из теневой), биты 7..4 — результат последнего сохранения (0=не было 1=ok 2=занято I2C 3=ошибка I2C), биты 15..8 — число восстановленных записей
655320xFFFCInput04RнетДиагностика FRAM FM24W256 (I2C1, шину делит с 24AA02E48 — смДиагностика FRAM FM24W256 (I2C1, шину делит с 24AA02E48 — см. nvram_addr.h): биты 15..12 — адресация (1=два байта адреса, FRAM найдена; 0=FRAM не ответила ни на один адрес 0xA0..0xAE), биты 11..8 — объём (4=32768 Б, 0=не найдена), биты 7..4 — самотест при загрузке (1=ok 2=ошибка шины 3=чтение не совпало с записью 4=FRAM не найдена), биты 3..0 — контроль образа после последнего сохранения конфига (1=ok 2=не совпал). То же в /api/gateway/identity (fram, fram_size, fram_st, cfg_rb)
10x0001Holding03/06/10RWнетDO1DO1: запись 0/1 — управление; чтение — фактический статус (0/1)
1050x0069Holding03/06/10RнетUptime (как Input)Адреса 105–106. Uptime (как Input)
1070x006BHolding03/06/10RнетReboot count / reset causeАдреса 107–108. Reboot count / reset cause
1100x006EHolding03/06/10RWнетПорт 4Адреса 110–112. Порт 4: baud/parity/stop (110 — код bps/100; буфер до рег. 136)
1130x0071Holding03/06/10RнетНаработка часы / суткиАдреса 113–114. Наработка часы / сутки
1400x008CHolding03/06/10RWнетRTC календарь UTC (год, месяц, день, час, минута, секунда)Адреса 140–145. RTC календарь UTC (год, месяц, день, час, минута, секунда). Запись только FC16 ровно на 140, количество 6. FC06 и любой другой диапазон, задевающий 140–146 или 148–149 → исключение 03, ничего не пишется.
1460x0092Holding03/06/10RнетRTC статус (как Input)RTC статус (как Input)
1480x0094Holding03/06/10RWнетRTC Unix uint32, младшее слово в 148Адреса 148–149. RTC Unix uint32, младшее слово в 148. Запись — FC16 ровно на 148, количество 2 (сначала младшее слово, затем старшее). Диапазон 2000-01-01 .. 2099-12-31 UTC.
1210x0079Holding03/06/10Rнет24 V24 V
1230x007BHolding03/06/10RнетVDD / температура МКАдреса 123–124. VDD / температура МК
1280x0080Holding03/06/10RWнетModbus Unit ID (1Modbus Unit ID (1..248), без reboot. Порт 5 в режиме 2 слушает этот адрес.
1300x0082Holding03/06/10RWнетIP / mask / gateway (буферАдреса 130–135. IP / mask / gateway (буфер; применение — рег. 136). При применении проверяются те же правила, что у PUT /api/gateway/config: IP ≠ 0.0.0.0, первый октет 1..223 и ≠ 127, не адрес сети/broadcast; маска — непрерывные единицы, префикс 8..30; шлюз 0.0.0.0 = без маршрута, иначе в подсети и ≠ IP/сети/broadcast. Нарушение → исключение 03.
2700x010EHolding03/06/10RнетСерийный номерАдреса 270–271. Серийный номер
2900x0122Holding03/06/10RнетСигнатураАдреса 290–301. Сигнатура
3200x0140Holding03/06/10RнетВерсия прошивкиАдреса 320–325. Версия прошивки
3300x014AHolding03/06/10RнетВерсия бутлоадераАдреса 330–337. Версия бутлоадера
10030x03EBHolding03/06/10RнетСвободная heapСвободная heap
654610xFFB5Holding03/06/10RнетПаузы задач для сторожевого таймера (как Input)Адреса 65461–65473. Паузы задач для сторожевого таймера (как Input)
1200x0078Holding03/06/10WнетЗапись ≠0 → перезагрузка (порт 9999 доступен и во время OTA/паузы Modbus)Запись ≠0 → перезагрузка (порт 9999 доступен и во время OTA/паузы Modbus)
1290x0081Holding03/06/10WнетЗапись ≠0 → переход в бутлоадерЗапись ≠0 → переход в бутлоадер. SOFT-сброс выполняется внутри обработчика записи, до постановки эха FC06 в TCP; таймаут приёма у клиента ожидаем, сброс ради ответа не откладывается.
1360x0088Holding03/06/10WнетЗапись 1 → применить порт 4 + сеть, сохранить, rebootЗапись 1 → применить порт 4 + сеть, сохранить, reboot
100x000AHolding03/06/10RWнетПорт 1, смещение +0, также InputПорт 1, смещение +0, также Input. Режим: 0=RTU-over-TCP, 1=Modbus TCP, 2=aggregate (только порт 5)
200x0014Holding03/06/10RWнетПорт 2, смещение +0, также InputПорт 2, смещение +0, также Input. Режим: 0=RTU-over-TCP, 1=Modbus TCP, 2=aggregate (только порт 5)
300x001EHolding03/06/10RWнетПорт 3, смещение +0, также InputПорт 3, смещение +0, также Input. Режим: 0=RTU-over-TCP, 1=Modbus TCP, 2=aggregate (только порт 5)
400x0028Holding03/06/10RWнетПорт 4, смещение +0, также InputПорт 4, смещение +0, также Input. Режим: 0=RTU-over-TCP, 1=Modbus TCP, 2=aggregate (только порт 5)
500x0032Holding03/06/10RWнетПорт 5, смещение +0, также InputПорт 5, смещение +0, также Input. Режим: 0=RTU-over-TCP, 1=Modbus TCP, 2=aggregate (только порт 5)
110x000BHolding03/06/10RWнетПорт 1, смещение +1, также InputПорт 1, смещение +1, также Input. Baud, код bps/100 (96=9600, 1152=115200) — только из набора в шапке
210x0015Holding03/06/10RWнетПорт 2, смещение +1, также InputПорт 2, смещение +1, также Input. Baud, код bps/100 (96=9600, 1152=115200) — только из набора в шапке
310x001FHolding03/06/10RWнетПорт 3, смещение +1, также InputПорт 3, смещение +1, также Input. Baud, код bps/100 (96=9600, 1152=115200) — только из набора в шапке
410x0029Holding03/06/10RWнетПорт 4, смещение +1, также InputПорт 4, смещение +1, также Input. Baud, код bps/100 (96=9600, 1152=115200) — только из набора в шапке
510x0033Holding03/06/10RWнетПорт 5, смещение +1, также InputПорт 5, смещение +1, также Input. Baud, код bps/100 (96=9600, 1152=115200) — только из набора в шапке
120x000CHolding03/06/10RWнетПорт 1, смещение +2, также InputПорт 1, смещение +2, также Input. Parity: 0=none 1=odd 2=even
220x0016Holding03/06/10RWнетПорт 2, смещение +2, также InputПорт 2, смещение +2, также Input. Parity: 0=none 1=odd 2=even
320x0020Holding03/06/10RWнетПорт 3, смещение +2, также InputПорт 3, смещение +2, также Input. Parity: 0=none 1=odd 2=even
420x002AHolding03/06/10RWнетПорт 4, смещение +2, также InputПорт 4, смещение +2, также Input. Parity: 0=none 1=odd 2=even
520x0034Holding03/06/10RWнетПорт 5, смещение +2, также InputПорт 5, смещение +2, также Input. Parity: 0=none 1=odd 2=even
130x000DHolding03/06/10RWнетПорт 1, смещение +3, также InputПорт 1, смещение +3, также Input. Stop bits: 1 или 2
230x0017Holding03/06/10RWнетПорт 2, смещение +3, также InputПорт 2, смещение +3, также Input. Stop bits: 1 или 2
330x0021Holding03/06/10RWнетПорт 3, смещение +3, также InputПорт 3, смещение +3, также Input. Stop bits: 1 или 2
430x002BHolding03/06/10RWнетПорт 4, смещение +3, также InputПорт 4, смещение +3, также Input. Stop bits: 1 или 2
530x0035Holding03/06/10RWнетПорт 5, смещение +3, также InputПорт 5, смещение +3, также Input. Stop bits: 1 или 2
140x000EHolding03/06/10RWнетПорт 1, смещение +4, также InputПорт 1, смещение +4, также Input. TCP-порт listener: 1..65535, кроме 80 и 9999, уникален среди портов
240x0018Holding03/06/10RWнетПорт 2, смещение +4, также InputПорт 2, смещение +4, также Input. TCP-порт listener: 1..65535, кроме 80 и 9999, уникален среди портов
340x0022Holding03/06/10RWнетПорт 3, смещение +4, также InputПорт 3, смещение +4, также Input. TCP-порт listener: 1..65535, кроме 80 и 9999, уникален среди портов
440x002CHolding03/06/10RWнетПорт 4, смещение +4, также InputПорт 4, смещение +4, также Input. TCP-порт listener: 1..65535, кроме 80 и 9999, уникален среди портов
540x0036Holding03/06/10RWнетПорт 5, смещение +4, также InputПорт 5, смещение +4, также Input. TCP-порт listener: 1..65535, кроме 80 и 9999, уникален среди портов
150x000FHolding03/06/10RWнетПорт 1, смещение +5, также InputПорт 1, смещение +5, также Input. RTU timeout, мс (0=auto, max 60000)
250x0019Holding03/06/10RWнетПорт 2, смещение +5, также InputПорт 2, смещение +5, также Input. RTU timeout, мс (0=auto, max 60000)
350x0023Holding03/06/10RWнетПорт 3, смещение +5, также InputПорт 3, смещение +5, также Input. RTU timeout, мс (0=auto, max 60000)
450x002DHolding03/06/10RWнетПорт 4, смещение +5, также InputПорт 4, смещение +5, также Input. RTU timeout, мс (0=auto, max 60000)
550x0037Holding03/06/10RWнетПорт 5, смещение +5, также InputПорт 5, смещение +5, также Input. RTU timeout, мс (0=auto, max 60000)
160x0010Holding03/06/10RWнетПорт 1, смещение +6, также InputПорт 1, смещение +6, также Input. Max TCP connections (1..4, без усечения)
260x001AHolding03/06/10RWнетПорт 2, смещение +6, также InputПорт 2, смещение +6, также Input. Max TCP connections (1..4, без усечения)
360x0024Holding03/06/10RWнетПорт 3, смещение +6, также InputПорт 3, смещение +6, также Input. Max TCP connections (1..4, без усечения)
460x002EHolding03/06/10RWнетПорт 4, смещение +6, также InputПорт 4, смещение +6, также Input. Max TCP connections (1..4, без усечения)
560x0038Holding03/06/10RWнетПорт 5, смещение +6, также InputПорт 5, смещение +6, также Input. Max TCP connections (1..4, без усечения)
170x0011Holding03/06/10RWнетПорт 1, смещение +7, также InputПорт 1, смещение +7, также Input. FIFO mode (0=off 1=strict queue, no preempt)
270x001BHolding03/06/10RWнетПорт 2, смещение +7, также InputПорт 2, смещение +7, также Input. FIFO mode (0=off 1=strict queue, no preempt)
370x0025Holding03/06/10RWнетПорт 3, смещение +7, также InputПорт 3, смещение +7, также Input. FIFO mode (0=off 1=strict queue, no preempt)
470x002FHolding03/06/10RWнетПорт 4, смещение +7, также InputПорт 4, смещение +7, также Input. FIFO mode (0=off 1=strict queue, no preempt)
570x0039Holding03/06/10RWнетПорт 5, смещение +7, также InputПорт 5, смещение +7, также Input. FIFO mode (0=off 1=strict queue, no preempt)
180x0012Holding03/06/10RWнетПорт 1, смещение +8, также InputПорт 1, смещение +8, также Input. Err filter per port (0=off 1=on; до 3 подряд линейных сбоев)
280x001CHolding03/06/10RWнетПорт 2, смещение +8, также InputПорт 2, смещение +8, также Input. Err filter per port (0=off 1=on; до 3 подряд линейных сбоев)
380x0026Holding03/06/10RWнетПорт 3, смещение +8, также InputПорт 3, смещение +8, также Input. Err filter per port (0=off 1=on; до 3 подряд линейных сбоев)
480x0030Holding03/06/10RWнетПорт 4, смещение +8, также InputПорт 4, смещение +8, также Input. Err filter per port (0=off 1=on; до 3 подряд линейных сбоев)
580x003AHolding03/06/10RWнетПорт 5, смещение +8, также InputПорт 5, смещение +8, также Input. Err filter per port (0=off 1=on; до 3 подряд линейных сбоев)
190x0013Holding03/06/10RWнетПорт 1, смещение +9, также InputПорт 1, смещение +9, также Input. Зарезервировано (transparent peer — только Web UI)
290x001DHolding03/06/10RWнетПорт 2, смещение +9, также InputПорт 2, смещение +9, также Input. Зарезервировано (transparent peer — только Web UI)
390x0027Holding03/06/10RWнетПорт 3, смещение +9, также InputПорт 3, смещение +9, также Input. Зарезервировано (transparent peer — только Web UI)
490x0031Holding03/06/10RWнетПорт 4, смещение +9, также InputПорт 4, смещение +9, также Input. Зарезервировано (transparent peer — только Web UI)
590x003BHolding03/06/10RWнетПорт 5, смещение +9, также InputПорт 5, смещение +9, также Input. Зарезервировано (transparent peer — только Web UI)
00x0000Holding03/06/10RWнетLegacy debug (не используется)Legacy debug (не используется)
240x0018Holding03/06/10RWнетDO1 расширенныйDO1 расширенный: 0=off 1=on 2=индикатор транзакций (legacy SSR)
600x003CHolding03/06/10RWнетЗарезервировано (legacy poll intervals MR-02m, не используется на PI-02m)Адреса 60–61. Зарезервировано (legacy poll intervals MR-02m, не используется на PI-02m)
620x003EHolding03/06/10RWнетOffline timeout, мс (1000Offline timeout, мс (1000..30000; вне диапазона → исключение 03)
630x003FHolding03/06/10WнетКомандаКоманда: 1=save 2=reboot 3=rescan (не реализовано → статус 3) 4=clear cache (очищает и список опроса PUT /api/devices, в т.ч. в FRAM) 5=clear stats 10=factory reset
640x0040Holding03/06/10RнетСтатус командыСтатус команды: 0=idle 1=executing 2=success 3=error
650x0041Holding03/06/10RWнетТерминатор RS-485 портов 1Адреса 65–67. Терминатор RS-485 портов 1..3 (0/1; заводские: 1,1,1)
680x0044Holding03/06/10RнетScan ports (0)Адреса 68–70. Scan ports (0)
710x0047Holding03/06/10RWнетOffline UID throttle (0=выкл 1=вклOffline UID throttle (0=выкл 1=вкл; заводской: 1). В прозрачном режиме при 0 порт молчит, если ведомый не ответил (таймаут держит мастер); при 1 на таймаут уходит синтетическое исключение 0x0B
720x0048Holding03/06/10RWнетLine error filter (0=выкл 1=вклLine error filter (0=выкл 1=вкл; заводской: 0)
40970x1001Holding03/06/10WнетFC06/FC16FC06/FC16: 0x424C — слот B бутлоадера (W25Q 0x00F70000, до 64 КиБ). Иное значение — приложение (W25Q 0x00F80000, 2..256 КиБ). Тип помнится до перезагрузки: без записи действует последний выбранный (после старта — приложение).
40960x1000Holding03/06/10WнетFC16 ровно 16 регFC16 ровно 16 рег.: сигнатура «PI-02m», size LE, magic CRC2, CRC32 LE. Неверная сигнатура/размер/magic — exception 4.
81920x2000Holding03/06/10WнетFC16 ровно 123 регFC16 ровно 123 рег. (246 Б). Одно окно без индекса: повтор текущего блока допустим (потерянный ACK), блок дальше объявленного размера — exception 4. Вектор сброса приложения — в 0x08020000..0x08060000, слота B — в коде слота B. CRC не сошлась — exception 4. Стирание W25Q ленивое, по сектору при записи.
10040x03ECHolding03/06/10WнетFC06/FC16 ≠ 0 после полного приложенияFC06/FC16 ≠ 0 после полного приложения: `fw_update_commit` и сброс — после ухода ACK (COM5: по TX complete + 20 мс; TCP: 0,2–0,7 с из poll). 0 — бездействие.
41020x1006Holding03/06/10WнетFC06/FC16 ≠ 0 после полного слота BFC06/FC16 ≠ 0 после полного слота B: `bl_fw_update_flash_direct(force=false)`, 1–2 с с выключенными прерываниями пачками; нет валидного слота A или копии B — exception 4, слот не стирается. Сброса нет. По Modbus на стенде не прогонялся (слот B 1.0.0.5 записан через HTTP `bootloader/flash`) — путь не проверен.
2700x010EInput04RнетСерийный номер (uint32 LE по парам регистров)Адреса 270–271. Серийный номер (uint32 LE по парам регистров)
2900x0122Input04RнетСигнатура ASCII (12 символов, по байту в младшем байте регистра)Адреса 290–301. Сигнатура ASCII (12 символов, по байту в младшем байте регистра)
3200x0140Input04RнетВерсия приложения (placeholder 0 до первого boot)Адреса 320–325. Версия приложения (placeholder 0 до первого boot)
3300x014AInput04RнетВерсия бутлоадера (8 символов ASCII)Адреса 330–337. Версия бутлоадера (8 символов ASCII)
10030x03EBInput04RнетMax app size, uint32 LE (256 KiB)Max app size, uint32 LE (256 KiB)
2410x00F1Input04RнетLast info reject code (+ detail @ +1)Last info reject code (+ detail @ +1)
2420x00F2Input04RнетLast data reject codeLast data reject code
2430x00F3Input04RнетDiag state bitfield (update/complete/bl_mode/staging)Diag state bitfield (update/complete/bl_mode/staging)
2440x00F4Input04RнетApp valid (1 = vectors OK, transfer not pending)App valid (1 = vectors OK, transfer not pending)
2450x00F5Input04RнетJump-fail counter (shared RAM, max 3)Jump-fail counter (shared RAM, max 3)
2460x00F6Input04RнетApp startup marker uint32 LE (app step before reset)Адреса 246–247. App startup marker uint32 LE (app step before reset)
2480x00F8Input04RнетFault marker (assert/Error_Handler)Адреса 248–249. Fault marker (assert/Error_Handler)
2500x00FAInput04RнетFlash/commit sticky step (BL progress)Адреса 250–251. Flash/commit sticky step (BL progress)
41030x1007Input04RнетActive BL slotActive BL slot: 0=A, 1=B
1280x0080Holding03/06/10WнетЗапись в зеркало FRAM (1Запись в зеркало FRAM (1..248 с BL 1.0.0.5; раньше 1..247). Слушатель recovery остаётся 247
10010x03E9Holding03/06/10WнетFactory reset link params (baud/parity/stop → defaults)Factory reset link params (baud/parity/stop → defaults)
10020x03EAHolding03/06/10WнетErase user EEPROM area (signature/serial in FRAM mirror)Erase user EEPROM area (signature/serial in FRAM mirror)
1100x006EHolding03/06/10WнетBaud / parity / stop (FRAM mirror, MR-02m tConfig layout)Адреса 110–112. Baud / parity / stop (FRAM mirror, MR-02m tConfig layout)
2400x00F0Holding03/06/10WнетSelect device by serial (2 рег SN)Select device by serial (2 рег SN): после — только selected отвечает
40960x1000Holding03/06/10WнетInfo block 16 рег (32 B)Info block 16 рег (32 B): [0..11] signature, [12..15] size LE, [16..19] magic CRC2 (0x32435243), [20..23] CRC32 LE
81920x2000Holding03/06/10WнетDataData: Main — 123 рег (246 B); BL — 122/last рег (244 B variable)
40970x1001Holding03/06/10WнетТипТип: 0x424C («BL») — staging бутлоадера в W25Q
41020x1006Holding03/06/10WнетCommit BLCommit BL: 1 → inactive slot из W25Q, reboot
10040x03ECHolding03/06/10WнетJump appJump app: !=0 → Main (вне прошивки / после complete / idle 120 s)
10050x03EDHolding03/06/10WнетProgram serial (2 рег uint32 LE)Program serial (2 рег uint32 LE)

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

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