Регистры Modbus — ПИ-02м
This page is not translated yet. The text below is the Russian source. Facts are unchanged.
Преобразователь интерфейсов ПИ-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м.
| Адрес (dec) | Адрес (hex) | Тип | Функции | Доступ | Формат | Ед. и масштаб | Значения и диапазон | По умолчанию | Хранение | ⚡ Событие Fast Modbus | С версии ПО | Канал | Название | Описание |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0x0001 | Coil | 01/05/0F | RW | нет | DO1 (PA5) | DO1 (PA5): 0=выкл, 1=вкл. FC05: 0x0000=off, 0xFF00=on. Запись переводит DO1 в ручной режим (сбрасывает режим «индикатор» HR24). | |||||||
| 1 | 0x0001 | Discrete | 02 | R | нет | Состояние DO1 на выводе | Состояние DO1 на выводе: 0=выкл, 1=вкл (фактический уровень PA5). | |||||||
| 1 | 0x0001 | Input | 04 | R | нет | DO1 статус в виде слова | DO1 статус в виде слова: 0 или 1 (как Discrete Input 1) | |||||||
| 105 | 0x0069 | Input | 04 | R | нет | Uptime с момента загрузки, сек (uint32), младшее слово | Uptime с момента загрузки, сек (uint32), младшее слово | |||||||
| 106 | 0x006A | Input | 04 | R | нет | Uptime, старшее слово (фиксируется при чтении 105) | Uptime, старшее слово (фиксируется при чтении 105) | |||||||
| 107 | 0x006B | Input | 04 | R | нет | Счётчик перезагрузок (FRAM) | Счётчик перезагрузок (FRAM) | |||||||
| 108 | 0x006C | Input | 04 | R | нет | Причина последнего сброса | Причина последнего сброса: 0=LPWR 1=WWDG 2=IWDG 3=SFT 4=POR 5=PIN 6=OBL 7=UNK | |||||||
| 110 | 0x006E | Input | 04 | R | нет | Скорость RS-485 порта 4 (код bps/100) | Скорость RS-485 порта 4 (код bps/100) | |||||||
| 111 | 0x006F | Input | 04 | R | нет | Чётность порта 4 | Чётность порта 4: 0=none 1=odd 2=even | |||||||
| 112 | 0x0070 | Input | 04 | R | нет | Стоп-биты порта 4 | Стоп-биты порта 4: 1 или 2 | |||||||
| 113 | 0x0071 | Input | 04 | R | нет | Наработка, часы (uint16, max 65535) | Наработка, часы (uint16, max 65535) | |||||||
| 114 | 0x0072 | Input | 04 | R | нет | Наработка, сутки floor(часы/24) | Наработка, сутки floor(часы/24) | |||||||
| 140 | 0x008C | Input | 04 | R | нет | RTC год (2000 | RTC год (2000..2099), UTC. 0 — календарь не идёт | |||||||
| 141 | 0x008D | Input | 04 | R | нет | RTC месяц (1 | RTC месяц (1..12) | |||||||
| 142 | 0x008E | Input | 04 | R | нет | RTC день (1 | RTC день (1..31) | |||||||
| 143 | 0x008F | Input | 04 | R | нет | RTC час (0 | RTC час (0..23) | |||||||
| 144 | 0x0090 | Input | 04 | R | нет | RTC минута (0 | RTC минута (0..59) | |||||||
| 145 | 0x0091 | Input | 04 | R | нет | RTC секунда (0 | RTC секунда (0..59) | |||||||
| 146 | 0x0092 | Input | 04 | R | нет | RTC статус | RTC статус: бит0 LSE готов, бит1 календарь идёт, бит2 время записано (0 = после холодного домена стоит 2000-01-01, пока его не задали) | |||||||
| 148 | 0x0094 | Input | 04 | R | нет | RTC Unix-секунды с 1970-01-01 UTC (uint32), младшее слово | RTC Unix-секунды с 1970-01-01 UTC (uint32), младшее слово | |||||||
| 149 | 0x0095 | Input | 04 | R | нет | RTC Unix, старшее слово (фиксируется при чтении 148) | RTC Unix, старшее слово (фиксируется при чтении 148) | |||||||
| 121 | 0x0079 | Input | 04 | R | нет | Напряжение 24 V, ×0 | Напряжение 24 V, ×0.01 В (2400 = 24.00 В) | |||||||
| 123 | 0x007B | Input | 04 | R | нет | VDD МК, ×0 | VDD МК, ×0.01 В | |||||||
| 124 | 0x007C | Input | 04 | R | нет | Температура МК, °C (знаковое int16) | Температура МК, °C (знаковое int16) | |||||||
| 128 | 0x0080 | Input | 04 | R | нет | Modbus Unit ID | Modbus Unit ID | |||||||
| 130 | 0x0082 | Input | 04 | R | нет | IPv4, старшие 16 бит (big-endian по парам регистров) | IPv4, старшие 16 бит (big-endian по парам регистров) | |||||||
| 131 | 0x0083 | Input | 04 | R | нет | IPv4, младшие 16 бит | IPv4, младшие 16 бит | |||||||
| 132 | 0x0084 | Input | 04 | R | нет | Маска подсети, старшие 16 бит | Маска подсети, старшие 16 бит | |||||||
| 133 | 0x0085 | Input | 04 | R | нет | Маска подсети, младшие 16 бит | Маска подсети, младшие 16 бит | |||||||
| 134 | 0x0086 | Input | 04 | R | нет | Шлюз по умолчанию, старшие 16 бит (0 | Шлюз по умолчанию, старшие 16 бит (0.0.0.0 = маршрута по умолчанию нет) | |||||||
| 135 | 0x0087 | Input | 04 | R | нет | Шлюз по умолчанию, младшие 16 бит | Шлюз по умолчанию, младшие 16 бит | |||||||
| 270 | 0x010E | Input | 04 | R | нет | Серийный номер (uint32), младшее слово | Серийный номер (uint32), младшее слово | |||||||
| 271 | 0x010F | Input | 04 | R | нет | Серийный номер, старшее слово | Серийный номер, старшее слово | |||||||
| 290 | 0x0122 | Input | 04 | R | нет | Сигнатура ASCII «PI-02m » (12 символов) | Адреса 290–301. Сигнатура ASCII «PI-02m » (12 символов) | |||||||
| 320 | 0x0140 | Input | 04 | R | нет | Версия прошивки MAJOR | Версия прошивки MAJOR | |||||||
| 321 | 0x0141 | Input | 04 | R | нет | MINOR | MINOR | |||||||
| 322 | 0x0142 | Input | 04 | R | нет | PATCH | PATCH | |||||||
| 323 | 0x0143 | Input | 04 | R | нет | SUFFIX (4-й компонент версии, напр | SUFFIX (4-й компонент версии, напр. 12 для 2.0.0.12) | |||||||
| 324 | 0x0144 | Input | 04 | R | нет | (PATCH<<8)+SUFFIX | (PATCH<<8)+SUFFIX | |||||||
| 325 | 0x0145 | Input | 04 | R | нет | (MAJOR<<8)+MINOR | (MAJOR<<8)+MINOR | |||||||
| 330 | 0x014A | Input | 04 | R | нет | Версия бутлоадера, 8 символов ASCII | Адреса 330–337. Версия бутлоадера, 8 символов ASCII | |||||||
| 1003 | 0x03EB | Input | 04 | R | нет | Свободная heap RAM, байты (max 65535) | Свободная heap RAM, байты (max 65535) | |||||||
| 65461 | 0xFFB5 | Input | 04 | R | нет | Сторожевой таймер задач (с 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) | |||||||
| 65474 | 0xFFC2 | Input | 04 | R | да | 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, не по подфункции | |||||||
| 65479 | 0xFFC7 | Input | 04 | R | нет | RS-485 порты 1 | Адреса 65479–65483. RS-485 порты 1..5: ошибки UART — framing (FE) | |||||||
| 65484 | 0xFFCC | Input | 04 | R | нет | RS-485 порты 1 | Адреса 65484–65488. RS-485 порты 1..5: ошибки UART — шум (NE) | |||||||
| 65489 | 0xFFD1 | Input | 04 | R | нет | RS-485 порты 1 | Адреса 65489–65493. RS-485 порты 1..5: ошибки UART — чётность (PE) | |||||||
| 65494 | 0xFFD6 | Input | 04 | R | нет | RS-485 порты 1 | Адреса 65494–65498. RS-485 порты 1..5: ошибки UART — переполнение (ORE) | |||||||
| 65499 | 0xFFDB | Input | 04 | R | да | 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) | |||||||
| 65504 | 0xFFE0 | Input | 04 | R | нет | Stack high-water mark (0 — не используется) | Stack high-water mark (0 — не используется) | |||||||
| 65505 | 0xFFE1 | Input | 04 | R | нет | Свободная RAM (heap), байты | Свободная RAM (heap), байты | |||||||
| 65506 | 0xFFE2 | Input | 04 | R | нет | Занятая RAM (heap), байты | Занятая RAM (heap), байты | |||||||
| 65507 | 0xFFE3 | Input | 04 | R | нет | Размер стека задач (0 — не используется) | Размер стека задач (0 — не используется) | |||||||
| 65508 | 0xFFE4 | Input | 04 | R | нет | Причина перезагрузки (как рег | Причина перезагрузки (как рег. 108); с 2.0.0.12 brown-out (BOR) = 4 (POR), код 6 (OBL) больше не выдаётся | |||||||
| 65509 | 0xFFE5 | Input | 04 | R | нет | Счётчик OTA/обновлений прошивки, младшее слово (растёт на 1 за применённое обнов | Счётчик OTA/обновлений прошивки, младшее слово (растёт на 1 за применённое обновление начиная с бутлоадера 1.0.0.4; старый BL затирал запись — всегда 0) | |||||||
| 65510 | 0xFFE6 | Input | 04 | R | нет | Счётчик OTA/обновлений, старшее слово | Счётчик OTA/обновлений, старшее слово | |||||||
| 65511 | 0xFFE7 | Input | 04 | R | нет | Причина фатального сброса перед этой загрузкой (с 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 | |||||||
| 65512 | 0xFFE8 | Input | 04 | R | нет | Прозрачный мост, порты 1 | Адреса 65512–65516. Прозрачный мост, порты 1..5: сброшено заданий (очередь RTU полна) | |||||||
| 65517 | 0xFFED | Input | 04 | R | нет | Прозрачный мост, порты 1 | Адреса 65517–65521. Прозрачный мост, порты 1..5: сброшено кадров RS-485→TCP (пул/ERR_MEM) | |||||||
| 65522 | 0xFFF2 | Input | 04 | R | нет | RS-485 порты 1 | Адреса 65522–65526. RS-485 порты 1..5: переполнений RX-буфера | |||||||
| 65527 | 0xFFF7 | Input | 04 | R | нет | ETH TX | ETH TX: число ожиданий BUSY (кольцо дескрипторов заполнено) | |||||||
| 65528 | 0xFFF8 | Input | 04 | R | нет | ETH TX | ETH TX: число таймаутов ожидания TxCplt (2 с, tcpip_thread стоял) | |||||||
| 65529 | 0xFFF9 | Input | 04 | R | нет | ETH TX | ETH TX: число реинициализаций ETH после зависания TX DMA | |||||||
| 65530 | 0xFFFA | Input | 04 | R | нет | ETH RX | ETH RX: число кадров, отброшенных при исчерпании RX-пула (8 буферов) (65512–65530 — младшие 16 бит uint32-счётчиков, только чтение) | |||||||
| 65531 | 0xFFFB | Input | 04 | R | нет | Состояние списка опроса в 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 — число восстановленных записей | |||||||
| 65532 | 0xFFFC | Input | 04 | R | нет | Диагностика 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) | |||||||
| 1 | 0x0001 | Holding | 03/06/10 | RW | нет | DO1 | DO1: запись 0/1 — управление; чтение — фактический статус (0/1) | |||||||
| 105 | 0x0069 | Holding | 03/06/10 | R | нет | Uptime (как Input) | Адреса 105–106. Uptime (как Input) | |||||||
| 107 | 0x006B | Holding | 03/06/10 | R | нет | Reboot count / reset cause | Адреса 107–108. Reboot count / reset cause | |||||||
| 110 | 0x006E | Holding | 03/06/10 | RW | нет | Порт 4 | Адреса 110–112. Порт 4: baud/parity/stop (110 — код bps/100; буфер до рег. 136) | |||||||
| 113 | 0x0071 | Holding | 03/06/10 | R | нет | Наработка часы / сутки | Адреса 113–114. Наработка часы / сутки | |||||||
| 140 | 0x008C | Holding | 03/06/10 | RW | нет | RTC календарь UTC (год, месяц, день, час, минута, секунда) | Адреса 140–145. RTC календарь UTC (год, месяц, день, час, минута, секунда). Запись только FC16 ровно на 140, количество 6. FC06 и любой другой диапазон, задевающий 140–146 или 148–149 → исключение 03, ничего не пишется. | |||||||
| 146 | 0x0092 | Holding | 03/06/10 | R | нет | RTC статус (как Input) | RTC статус (как Input) | |||||||
| 148 | 0x0094 | Holding | 03/06/10 | RW | нет | RTC Unix uint32, младшее слово в 148 | Адреса 148–149. RTC Unix uint32, младшее слово в 148. Запись — FC16 ровно на 148, количество 2 (сначала младшее слово, затем старшее). Диапазон 2000-01-01 .. 2099-12-31 UTC. | |||||||
| 121 | 0x0079 | Holding | 03/06/10 | R | нет | 24 V | 24 V | |||||||
| 123 | 0x007B | Holding | 03/06/10 | R | нет | VDD / температура МК | Адреса 123–124. VDD / температура МК | |||||||
| 128 | 0x0080 | Holding | 03/06/10 | RW | нет | Modbus Unit ID (1 | Modbus Unit ID (1..248), без reboot. Порт 5 в режиме 2 слушает этот адрес. | |||||||
| 130 | 0x0082 | Holding | 03/06/10 | RW | нет | 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. | |||||||
| 270 | 0x010E | Holding | 03/06/10 | R | нет | Серийный номер | Адреса 270–271. Серийный номер | |||||||
| 290 | 0x0122 | Holding | 03/06/10 | R | нет | Сигнатура | Адреса 290–301. Сигнатура | |||||||
| 320 | 0x0140 | Holding | 03/06/10 | R | нет | Версия прошивки | Адреса 320–325. Версия прошивки | |||||||
| 330 | 0x014A | Holding | 03/06/10 | R | нет | Версия бутлоадера | Адреса 330–337. Версия бутлоадера | |||||||
| 1003 | 0x03EB | Holding | 03/06/10 | R | нет | Свободная heap | Свободная heap | |||||||
| 65461 | 0xFFB5 | Holding | 03/06/10 | R | нет | Паузы задач для сторожевого таймера (как Input) | Адреса 65461–65473. Паузы задач для сторожевого таймера (как Input) | |||||||
| 120 | 0x0078 | Holding | 03/06/10 | W | нет | Запись ≠0 → перезагрузка (порт 9999 доступен и во время OTA/паузы Modbus) | Запись ≠0 → перезагрузка (порт 9999 доступен и во время OTA/паузы Modbus) | |||||||
| 129 | 0x0081 | Holding | 03/06/10 | W | нет | Запись ≠0 → переход в бутлоадер | Запись ≠0 → переход в бутлоадер. SOFT-сброс выполняется внутри обработчика записи, до постановки эха FC06 в TCP; таймаут приёма у клиента ожидаем, сброс ради ответа не откладывается. | |||||||
| 136 | 0x0088 | Holding | 03/06/10 | W | нет | Запись 1 → применить порт 4 + сеть, сохранить, reboot | Запись 1 → применить порт 4 + сеть, сохранить, reboot | |||||||
| 10 | 0x000A | Holding | 03/06/10 | RW | нет | Порт 1, смещение +0, также Input | Порт 1, смещение +0, также Input. Режим: 0=RTU-over-TCP, 1=Modbus TCP, 2=aggregate (только порт 5) | |||||||
| 20 | 0x0014 | Holding | 03/06/10 | RW | нет | Порт 2, смещение +0, также Input | Порт 2, смещение +0, также Input. Режим: 0=RTU-over-TCP, 1=Modbus TCP, 2=aggregate (только порт 5) | |||||||
| 30 | 0x001E | Holding | 03/06/10 | RW | нет | Порт 3, смещение +0, также Input | Порт 3, смещение +0, также Input. Режим: 0=RTU-over-TCP, 1=Modbus TCP, 2=aggregate (только порт 5) | |||||||
| 40 | 0x0028 | Holding | 03/06/10 | RW | нет | Порт 4, смещение +0, также Input | Порт 4, смещение +0, также Input. Режим: 0=RTU-over-TCP, 1=Modbus TCP, 2=aggregate (только порт 5) | |||||||
| 50 | 0x0032 | Holding | 03/06/10 | RW | нет | Порт 5, смещение +0, также Input | Порт 5, смещение +0, также Input. Режим: 0=RTU-over-TCP, 1=Modbus TCP, 2=aggregate (только порт 5) | |||||||
| 11 | 0x000B | Holding | 03/06/10 | RW | нет | Порт 1, смещение +1, также Input | Порт 1, смещение +1, также Input. Baud, код bps/100 (96=9600, 1152=115200) — только из набора в шапке | |||||||
| 21 | 0x0015 | Holding | 03/06/10 | RW | нет | Порт 2, смещение +1, также Input | Порт 2, смещение +1, также Input. Baud, код bps/100 (96=9600, 1152=115200) — только из набора в шапке | |||||||
| 31 | 0x001F | Holding | 03/06/10 | RW | нет | Порт 3, смещение +1, также Input | Порт 3, смещение +1, также Input. Baud, код bps/100 (96=9600, 1152=115200) — только из набора в шапке | |||||||
| 41 | 0x0029 | Holding | 03/06/10 | RW | нет | Порт 4, смещение +1, также Input | Порт 4, смещение +1, также Input. Baud, код bps/100 (96=9600, 1152=115200) — только из набора в шапке | |||||||
| 51 | 0x0033 | Holding | 03/06/10 | RW | нет | Порт 5, смещение +1, также Input | Порт 5, смещение +1, также Input. Baud, код bps/100 (96=9600, 1152=115200) — только из набора в шапке | |||||||
| 12 | 0x000C | Holding | 03/06/10 | RW | нет | Порт 1, смещение +2, также Input | Порт 1, смещение +2, также Input. Parity: 0=none 1=odd 2=even | |||||||
| 22 | 0x0016 | Holding | 03/06/10 | RW | нет | Порт 2, смещение +2, также Input | Порт 2, смещение +2, также Input. Parity: 0=none 1=odd 2=even | |||||||
| 32 | 0x0020 | Holding | 03/06/10 | RW | нет | Порт 3, смещение +2, также Input | Порт 3, смещение +2, также Input. Parity: 0=none 1=odd 2=even | |||||||
| 42 | 0x002A | Holding | 03/06/10 | RW | нет | Порт 4, смещение +2, также Input | Порт 4, смещение +2, также Input. Parity: 0=none 1=odd 2=even | |||||||
| 52 | 0x0034 | Holding | 03/06/10 | RW | нет | Порт 5, смещение +2, также Input | Порт 5, смещение +2, также Input. Parity: 0=none 1=odd 2=even | |||||||
| 13 | 0x000D | Holding | 03/06/10 | RW | нет | Порт 1, смещение +3, также Input | Порт 1, смещение +3, также Input. Stop bits: 1 или 2 | |||||||
| 23 | 0x0017 | Holding | 03/06/10 | RW | нет | Порт 2, смещение +3, также Input | Порт 2, смещение +3, также Input. Stop bits: 1 или 2 | |||||||
| 33 | 0x0021 | Holding | 03/06/10 | RW | нет | Порт 3, смещение +3, также Input | Порт 3, смещение +3, также Input. Stop bits: 1 или 2 | |||||||
| 43 | 0x002B | Holding | 03/06/10 | RW | нет | Порт 4, смещение +3, также Input | Порт 4, смещение +3, также Input. Stop bits: 1 или 2 | |||||||
| 53 | 0x0035 | Holding | 03/06/10 | RW | нет | Порт 5, смещение +3, также Input | Порт 5, смещение +3, также Input. Stop bits: 1 или 2 | |||||||
| 14 | 0x000E | Holding | 03/06/10 | RW | нет | Порт 1, смещение +4, также Input | Порт 1, смещение +4, также Input. TCP-порт listener: 1..65535, кроме 80 и 9999, уникален среди портов | |||||||
| 24 | 0x0018 | Holding | 03/06/10 | RW | нет | Порт 2, смещение +4, также Input | Порт 2, смещение +4, также Input. TCP-порт listener: 1..65535, кроме 80 и 9999, уникален среди портов | |||||||
| 34 | 0x0022 | Holding | 03/06/10 | RW | нет | Порт 3, смещение +4, также Input | Порт 3, смещение +4, также Input. TCP-порт listener: 1..65535, кроме 80 и 9999, уникален среди портов | |||||||
| 44 | 0x002C | Holding | 03/06/10 | RW | нет | Порт 4, смещение +4, также Input | Порт 4, смещение +4, также Input. TCP-порт listener: 1..65535, кроме 80 и 9999, уникален среди портов | |||||||
| 54 | 0x0036 | Holding | 03/06/10 | RW | нет | Порт 5, смещение +4, также Input | Порт 5, смещение +4, также Input. TCP-порт listener: 1..65535, кроме 80 и 9999, уникален среди портов | |||||||
| 15 | 0x000F | Holding | 03/06/10 | RW | нет | Порт 1, смещение +5, также Input | Порт 1, смещение +5, также Input. RTU timeout, мс (0=auto, max 60000) | |||||||
| 25 | 0x0019 | Holding | 03/06/10 | RW | нет | Порт 2, смещение +5, также Input | Порт 2, смещение +5, также Input. RTU timeout, мс (0=auto, max 60000) | |||||||
| 35 | 0x0023 | Holding | 03/06/10 | RW | нет | Порт 3, смещение +5, также Input | Порт 3, смещение +5, также Input. RTU timeout, мс (0=auto, max 60000) | |||||||
| 45 | 0x002D | Holding | 03/06/10 | RW | нет | Порт 4, смещение +5, также Input | Порт 4, смещение +5, также Input. RTU timeout, мс (0=auto, max 60000) | |||||||
| 55 | 0x0037 | Holding | 03/06/10 | RW | нет | Порт 5, смещение +5, также Input | Порт 5, смещение +5, также Input. RTU timeout, мс (0=auto, max 60000) | |||||||
| 16 | 0x0010 | Holding | 03/06/10 | RW | нет | Порт 1, смещение +6, также Input | Порт 1, смещение +6, также Input. Max TCP connections (1..4, без усечения) | |||||||
| 26 | 0x001A | Holding | 03/06/10 | RW | нет | Порт 2, смещение +6, также Input | Порт 2, смещение +6, также Input. Max TCP connections (1..4, без усечения) | |||||||
| 36 | 0x0024 | Holding | 03/06/10 | RW | нет | Порт 3, смещение +6, также Input | Порт 3, смещение +6, также Input. Max TCP connections (1..4, без усечения) | |||||||
| 46 | 0x002E | Holding | 03/06/10 | RW | нет | Порт 4, смещение +6, также Input | Порт 4, смещение +6, также Input. Max TCP connections (1..4, без усечения) | |||||||
| 56 | 0x0038 | Holding | 03/06/10 | RW | нет | Порт 5, смещение +6, также Input | Порт 5, смещение +6, также Input. Max TCP connections (1..4, без усечения) | |||||||
| 17 | 0x0011 | Holding | 03/06/10 | RW | нет | Порт 1, смещение +7, также Input | Порт 1, смещение +7, также Input. FIFO mode (0=off 1=strict queue, no preempt) | |||||||
| 27 | 0x001B | Holding | 03/06/10 | RW | нет | Порт 2, смещение +7, также Input | Порт 2, смещение +7, также Input. FIFO mode (0=off 1=strict queue, no preempt) | |||||||
| 37 | 0x0025 | Holding | 03/06/10 | RW | нет | Порт 3, смещение +7, также Input | Порт 3, смещение +7, также Input. FIFO mode (0=off 1=strict queue, no preempt) | |||||||
| 47 | 0x002F | Holding | 03/06/10 | RW | нет | Порт 4, смещение +7, также Input | Порт 4, смещение +7, также Input. FIFO mode (0=off 1=strict queue, no preempt) | |||||||
| 57 | 0x0039 | Holding | 03/06/10 | RW | нет | Порт 5, смещение +7, также Input | Порт 5, смещение +7, также Input. FIFO mode (0=off 1=strict queue, no preempt) | |||||||
| 18 | 0x0012 | Holding | 03/06/10 | RW | нет | Порт 1, смещение +8, также Input | Порт 1, смещение +8, также Input. Err filter per port (0=off 1=on; до 3 подряд линейных сбоев) | |||||||
| 28 | 0x001C | Holding | 03/06/10 | RW | нет | Порт 2, смещение +8, также Input | Порт 2, смещение +8, также Input. Err filter per port (0=off 1=on; до 3 подряд линейных сбоев) | |||||||
| 38 | 0x0026 | Holding | 03/06/10 | RW | нет | Порт 3, смещение +8, также Input | Порт 3, смещение +8, также Input. Err filter per port (0=off 1=on; до 3 подряд линейных сбоев) | |||||||
| 48 | 0x0030 | Holding | 03/06/10 | RW | нет | Порт 4, смещение +8, также Input | Порт 4, смещение +8, также Input. Err filter per port (0=off 1=on; до 3 подряд линейных сбоев) | |||||||
| 58 | 0x003A | Holding | 03/06/10 | RW | нет | Порт 5, смещение +8, также Input | Порт 5, смещение +8, также Input. Err filter per port (0=off 1=on; до 3 подряд линейных сбоев) | |||||||
| 19 | 0x0013 | Holding | 03/06/10 | RW | нет | Порт 1, смещение +9, также Input | Порт 1, смещение +9, также Input. Зарезервировано (transparent peer — только Web UI) | |||||||
| 29 | 0x001D | Holding | 03/06/10 | RW | нет | Порт 2, смещение +9, также Input | Порт 2, смещение +9, также Input. Зарезервировано (transparent peer — только Web UI) | |||||||
| 39 | 0x0027 | Holding | 03/06/10 | RW | нет | Порт 3, смещение +9, также Input | Порт 3, смещение +9, также Input. Зарезервировано (transparent peer — только Web UI) | |||||||
| 49 | 0x0031 | Holding | 03/06/10 | RW | нет | Порт 4, смещение +9, также Input | Порт 4, смещение +9, также Input. Зарезервировано (transparent peer — только Web UI) | |||||||
| 59 | 0x003B | Holding | 03/06/10 | RW | нет | Порт 5, смещение +9, также Input | Порт 5, смещение +9, также Input. Зарезервировано (transparent peer — только Web UI) | |||||||
| 0 | 0x0000 | Holding | 03/06/10 | RW | нет | Legacy debug (не используется) | Legacy debug (не используется) | |||||||
| 24 | 0x0018 | Holding | 03/06/10 | RW | нет | DO1 расширенный | DO1 расширенный: 0=off 1=on 2=индикатор транзакций (legacy SSR) | |||||||
| 60 | 0x003C | Holding | 03/06/10 | RW | нет | Зарезервировано (legacy poll intervals MR-02m, не используется на PI-02m) | Адреса 60–61. Зарезервировано (legacy poll intervals MR-02m, не используется на PI-02m) | |||||||
| 62 | 0x003E | Holding | 03/06/10 | RW | нет | Offline timeout, мс (1000 | Offline timeout, мс (1000..30000; вне диапазона → исключение 03) | |||||||
| 63 | 0x003F | Holding | 03/06/10 | W | нет | Команда | Команда: 1=save 2=reboot 3=rescan (не реализовано → статус 3) 4=clear cache (очищает и список опроса PUT /api/devices, в т.ч. в FRAM) 5=clear stats 10=factory reset | |||||||
| 64 | 0x0040 | Holding | 03/06/10 | R | нет | Статус команды | Статус команды: 0=idle 1=executing 2=success 3=error | |||||||
| 65 | 0x0041 | Holding | 03/06/10 | RW | нет | Терминатор RS-485 портов 1 | Адреса 65–67. Терминатор RS-485 портов 1..3 (0/1; заводские: 1,1,1) | |||||||
| 68 | 0x0044 | Holding | 03/06/10 | R | нет | Scan ports (0) | Адреса 68–70. Scan ports (0) | |||||||
| 71 | 0x0047 | Holding | 03/06/10 | RW | нет | Offline UID throttle (0=выкл 1=вкл | Offline UID throttle (0=выкл 1=вкл; заводской: 1). В прозрачном режиме при 0 порт молчит, если ведомый не ответил (таймаут держит мастер); при 1 на таймаут уходит синтетическое исключение 0x0B | |||||||
| 72 | 0x0048 | Holding | 03/06/10 | RW | нет | Line error filter (0=выкл 1=вкл | Line error filter (0=выкл 1=вкл; заводской: 0) | |||||||
| 4097 | 0x1001 | Holding | 03/06/10 | W | нет | FC06/FC16 | FC06/FC16: 0x424C — слот B бутлоадера (W25Q 0x00F70000, до 64 КиБ). Иное значение — приложение (W25Q 0x00F80000, 2..256 КиБ). Тип помнится до перезагрузки: без записи действует последний выбранный (после старта — приложение). | |||||||
| 4096 | 0x1000 | Holding | 03/06/10 | W | нет | FC16 ровно 16 рег | FC16 ровно 16 рег.: сигнатура «PI-02m», size LE, magic CRC2, CRC32 LE. Неверная сигнатура/размер/magic — exception 4. | |||||||
| 8192 | 0x2000 | Holding | 03/06/10 | W | нет | FC16 ровно 123 рег | FC16 ровно 123 рег. (246 Б). Одно окно без индекса: повтор текущего блока допустим (потерянный ACK), блок дальше объявленного размера — exception 4. Вектор сброса приложения — в 0x08020000..0x08060000, слота B — в коде слота B. CRC не сошлась — exception 4. Стирание W25Q ленивое, по сектору при записи. | |||||||
| 1004 | 0x03EC | Holding | 03/06/10 | W | нет | FC06/FC16 ≠ 0 после полного приложения | FC06/FC16 ≠ 0 после полного приложения: `fw_update_commit` и сброс — после ухода ACK (COM5: по TX complete + 20 мс; TCP: 0,2–0,7 с из poll). 0 — бездействие. | |||||||
| 4102 | 0x1006 | Holding | 03/06/10 | W | нет | FC06/FC16 ≠ 0 после полного слота B | FC06/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`) — путь не проверен. | |||||||
| 270 | 0x010E | Input | 04 | R | нет | Серийный номер (uint32 LE по парам регистров) | Адреса 270–271. Серийный номер (uint32 LE по парам регистров) | |||||||
| 290 | 0x0122 | Input | 04 | R | нет | Сигнатура ASCII (12 символов, по байту в младшем байте регистра) | Адреса 290–301. Сигнатура ASCII (12 символов, по байту в младшем байте регистра) | |||||||
| 320 | 0x0140 | Input | 04 | R | нет | Версия приложения (placeholder 0 до первого boot) | Адреса 320–325. Версия приложения (placeholder 0 до первого boot) | |||||||
| 330 | 0x014A | Input | 04 | R | нет | Версия бутлоадера (8 символов ASCII) | Адреса 330–337. Версия бутлоадера (8 символов ASCII) | |||||||
| 1003 | 0x03EB | Input | 04 | R | нет | Max app size, uint32 LE (256 KiB) | Max app size, uint32 LE (256 KiB) | |||||||
| 241 | 0x00F1 | Input | 04 | R | нет | Last info reject code (+ detail @ +1) | Last info reject code (+ detail @ +1) | |||||||
| 242 | 0x00F2 | Input | 04 | R | нет | Last data reject code | Last data reject code | |||||||
| 243 | 0x00F3 | Input | 04 | R | нет | Diag state bitfield (update/complete/bl_mode/staging) | Diag state bitfield (update/complete/bl_mode/staging) | |||||||
| 244 | 0x00F4 | Input | 04 | R | нет | App valid (1 = vectors OK, transfer not pending) | App valid (1 = vectors OK, transfer not pending) | |||||||
| 245 | 0x00F5 | Input | 04 | R | нет | Jump-fail counter (shared RAM, max 3) | Jump-fail counter (shared RAM, max 3) | |||||||
| 246 | 0x00F6 | Input | 04 | R | нет | App startup marker uint32 LE (app step before reset) | Адреса 246–247. App startup marker uint32 LE (app step before reset) | |||||||
| 248 | 0x00F8 | Input | 04 | R | нет | Fault marker (assert/Error_Handler) | Адреса 248–249. Fault marker (assert/Error_Handler) | |||||||
| 250 | 0x00FA | Input | 04 | R | нет | Flash/commit sticky step (BL progress) | Адреса 250–251. Flash/commit sticky step (BL progress) | |||||||
| 4103 | 0x1007 | Input | 04 | R | нет | Active BL slot | Active BL slot: 0=A, 1=B | |||||||
| 128 | 0x0080 | Holding | 03/06/10 | W | нет | Запись в зеркало FRAM (1 | Запись в зеркало FRAM (1..248 с BL 1.0.0.5; раньше 1..247). Слушатель recovery остаётся 247 | |||||||
| 1001 | 0x03E9 | Holding | 03/06/10 | W | нет | Factory reset link params (baud/parity/stop → defaults) | Factory reset link params (baud/parity/stop → defaults) | |||||||
| 1002 | 0x03EA | Holding | 03/06/10 | W | нет | Erase user EEPROM area (signature/serial in FRAM mirror) | Erase user EEPROM area (signature/serial in FRAM mirror) | |||||||
| 110 | 0x006E | Holding | 03/06/10 | W | нет | Baud / parity / stop (FRAM mirror, MR-02m tConfig layout) | Адреса 110–112. Baud / parity / stop (FRAM mirror, MR-02m tConfig layout) | |||||||
| 240 | 0x00F0 | Holding | 03/06/10 | W | нет | Select device by serial (2 рег SN) | Select device by serial (2 рег SN): после — только selected отвечает | |||||||
| 4096 | 0x1000 | Holding | 03/06/10 | W | нет | 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 | |||||||
| 8192 | 0x2000 | Holding | 03/06/10 | W | нет | Data | Data: Main — 123 рег (246 B); BL — 122/last рег (244 B variable) | |||||||
| 4097 | 0x1001 | Holding | 03/06/10 | W | нет | Тип | Тип: 0x424C («BL») — staging бутлоадера в W25Q | |||||||
| 4102 | 0x1006 | Holding | 03/06/10 | W | нет | Commit BL | Commit BL: 1 → inactive slot из W25Q, reboot | |||||||
| 1004 | 0x03EC | Holding | 03/06/10 | W | нет | Jump app | Jump app: !=0 → Main (вне прошивки / после complete / idle 120 s) | |||||||
| 1005 | 0x03ED | Holding | 03/06/10 | W | нет | Program serial (2 рег uint32 LE) | Program serial (2 рег uint32 LE) |
Условные обозначения
- R чтение
- RW чтение и запись
- W запись
- ⚡ событие Fast Modbus
- EEPROM значение хранится в EEPROM
- RAM значение хранится в RAM