# Сквозная нумерация GAS: распределение адресов Дата: **9 октября 2026 года**. УКСС выделен диапазон **0…11999**: общий блок 0 и блоки узлов 1…11, по **1000 ID** каждый. Соответствие технологических слов Modbus текущему профилю 167/v1 и новым ID УМП приведено в [GAS_MODBUS_MAP.md](GAS_MODBUS_MAP_167.md). Новая нумерация назначена в документации; в прошивке пока действует профиль 167/v1. ## Диапазоны проектов В новой схеме числа без префикса `0x` — **десятичные**. Каждому номеру узла соответствует блок 1000 адресов с базой `номер × 1000`. | Проект / семейство | Первый ID | Последний ID включительно | Число адресов | Статус | |---|---:|---:|---:|---| | УКСС | 0 | 11999 | 12000 | Выделено: 12 блоков по 1000 ID | | Остальные проекты | 12000 | 65535 | 53536 | Свободно для последующего распределения | Границы УКСС в hex: `0x0000…0x2EDF`; свободная область начинается с `0x2EE0`. Резерв диапазона не означает, что каждый адрес уже реализован. Адреса обозначают логические 16-битные слова; память для незадействованных ID не выделяется. Параметр шириной 32 бита занимает два последовательных слова. Служебные слова также должны входить в выделенный диапазон проекта. ## Узлы УКСС Номера узлов: **1…11**; **5 и 6 — УМП**. Назначения 1…9 подтверждены в `package.h` (проект tms_periph/periph_167); служебные адреса 10/11 определены в `cntrl_adr.c` (проект tms_periph/periph_167). | Номер | Назначение в текущем коде | Обозначение | |---:|---|---| | 1 | Трансформаторный узел 1 | `adr_TRN1` | | 2 | Трансформаторный узел 2 | `adr_TRN2` | | 3 | Силовой узел 1 | `adr_POW1` | | 4 | Силовой узел 2 | `adr_POW2` | | 5 | УМП 1, LOAD | `adr_LOA1` | | 6 | УМП 2, LOAD | `adr_LOA2` | | 7 | Узел ENG1 | `adr_ENG1` | | 8 | Пульт | `adr_PULT` | | 9 | Шкаф | `adr_SHKF` | | 10 | Универсальный адрес / адрес общей посылки | `CNTRL_ADDR_UNIVERSAL`, `ADDR_FOR_ALL` | | 11 | Адрес терминала | `ADDR_TERMINAL` | Номер узла, тип платы `Desk` и ID параметра GAS — отдельные величины. Например, УМП 1 имеет `Mode = 5`, а тип обеих плат УМП равен `dsk_LOAD = 6`. Блок номера 10 зарезервирован для роли общего адреса; существующий номер 10 не идентифицирует отдельную физическую плату. ## Назначенные блоки УКСС Границы включительные. Все блоки содержат по 1000 слов, пересечений нет. | Область | Первый ID, dec | Последний ID, dec | База, hex | |---|---:|---:|---| | Блок 0: общий резерв УКСС | 0 | 999 | `0x0000` | | Трансформаторный узел 1, номер 1 | 1000 | 1999 | `0x03E8` | | Трансформаторный узел 2, номер 2 | 2000 | 2999 | `0x07D0` | | Силовой узел 1, номер 3 | 3000 | 3999 | `0x0BB8` | | Силовой узел 2, номер 4 | 4000 | 4999 | `0x0FA0` | | УМП 1, номер 5 | 5000 | 5999 | `0x1388` | | УМП 2, номер 6 | 6000 | 6999 | `0x1770` | | Узел ENG1, номер 7 | 7000 | 7999 | `0x1B58` | | Пульт, номер 8 | 8000 | 8999 | `0x1F40` | | Шкаф, номер 9 | 9000 | 9999 | `0x2328` | | Резерв роли общего адреса, номер 10 | 10000 | 10999 | `0x2710` | | Терминал, номер 11 | 11000 | 11999 | `0x2AF8` | Правило адресации: ```text GAS_ID = номер_узла × 1000 + смещение номер_узла = 0…11 смещение = 0…999 ``` ## Технологические слова УМП Для штатного технологического Modbus-адреса `n = 0…127` в новой карте назначено смещение `n`: ```text УМП 1, номер 5: GAS_ID = 5000 + n → 5000…5127 УМП 2, номер 6: GAS_ID = 6000 + n → 6000…6127 ``` | Параметр | Штатный Modbus, hex | УМП 1: новый GAS, dec | УМП 2: новый GAS, dec | |---|---|---:|---:| | Первое технологическое слово | `0x0000` | 5000 | 6000 | | `DAC_go` | `0x0050` | 5080 | 6080 | | `DAC_stop` | `0x0051` | 5081 | 6081 | | `LOAD_CAN_TIMEOUT` | `0x0052` | 5082 | 6082 | | `LOAD_STATUS` | `0x007C` | 5124 | 6124 | | `LOAD_ATTEMPTS` | `0x007D` | 5125 | 6125 | | `LastMode` | `0x007E` | 5126 | 6126 | | `Commands` | `0x007F` | 5127 | 6127 | Смещения **128…999** в каждом блоке остаются резервом для расширений. Служебные параметры и новые данные в этих смещениях пока не назначены. Полная таблица всех 128 технологических слов: [GAS_MODBUS_MAP.md](GAS_MODBUS_MAP_167.md). ## Связь с текущей прошивкой В существующей реализации база технологических GAS-регистров равна **`0x5000` = 20480**, а дескриптор находится на **`0x5F00` = 24320**. Это локальное окно профиля 167/v1, выбранное независимо от новой схемы сквозной нумерации. Текущее `0x5000` не означает `5 × 1000`: последнее вычисление даёт **5000 десятичных = `0x1388`**. Для адресации УМП 1 и УМП 2 по номеру узла потребуются разные базы, определяемые по `Mode`. Штатные адреса Modbus, служебные окна регистратора, паспорта, защиты и EEPROM уже имеют собственные значения. При переносе сквозной карты нужно определить соответствие GAS ↔ адрес протокола: глобальный ID может отличаться от прежнего Modbus-адреса. Это позволяет отдельно согласовать новую нумерацию и совместимость существующих клиентов. Диапазон УКСС и размеры блоков назначены. Перенос этих ID в обработчики прошивки и размещение служебных параметров в резерве — отдельные изменения реализации.