Files
Balsam_167/Doc/GAS_MODBUS_PROJECT_COMPARISON.md
Andrey 5d9818291b feat: add M95M02-only GAS and EEPROM profiles
Expose the existing registers through Modbus and service CAN using one GAS provider only in M95M02 builds.
Include the EEPROM layout/driver, LOAD protection and calibration, firmware identity and shared CCS build workflow.
Add transport/profile and SCI8 validation tests, documentation and the checked M95M02 firmware image.
2026-10-09 16:17:37 +03:00

41 KiB
Raw Blame History

GAS для всех проектов: сопоставление с Modbus, CAN и SETProtocol

Дата анализа: 9 октября 2026 года.

Вывод: GAS можно сделать общим способом описания и доступа к параметрам всех проектов. Практический вариант — единый реестр в templates, профили конкретных устройств и адаптеры существующих протоколов. Modbus, ProtoCAN, SET и старые пакеты TMS обращаются к одним источникам данных. Подключение GAS и замена регистратора — отдельные задачи.

Здесь GAS означает общее адресное пространство; в библиотеке используется название General Address Space. Это логические адреса данных, а не адреса RAM процессора. GAS сам по себе не задаёт UART, CAN ID, CRC, скорость линии или подтверждение команды.

Охват: проекты в K:/git_project, включая newProject и home_proj. Подробно проверены общая библиотека, экспериментальный GAS, ПМ35/167 и описания связанных протоколов. Для остальных проектов указана глубина проверки: наличие каталога или отдельного исходника не означает проверку всей прошивки. Пустые каталоги и непроверенные реализации отмечены явно. Для 167 после анализа реализован GAS только в сборке M95M02 (раздел 5.2); остальные проекты этим анализом не изменены.

1. GAS, протоколы и интерфейсы

Вариант Что задаёт Адресация Чтение / запись Каталог параметров Подтверждение Применение
GAS / ОАП Логическую карту и правила доступа 0x0000…0xFFFF внутри профиля устройства Внутренний API/callbacks; обмен зависит от оболочки Имена, типы, единицы — отдельный реестр Определяет протокол доступа Общая основа настроек, графиков и логгеров
Modbus RTU Запрос/ответ, функции, serial framing и CRC16 Устройство + таблица + нулевой адрес PDU FC03/04 чтение, FC06/16 запись; конкретная плата реализует подмножество Вне стандартного кадра Ответ/exception; broadcast-запись без ответа Существующие приборы; адаптер к GAS сохраняет старые адреса
Modbus TCP Modbus PDU в TCP с MBAP Соединение + Unit ID + таблица + адрес Аналогично RTU на уровне PDU Внешний каталог Ответ с Transaction ID Дополнительный адаптер; сервер на конкретных платах здесь не установлен
ProtoCAN GAS GAS-доступ в формате ProtoCAN Поля устройства/маршрута ID; MsgType=0x3, адрес в MsgBody До 4 слов в classic CAN; DLC=0 — расширение для чтения Отдельный каталог В текущем pcan_gas чтение с ответом, запись без прикладного ACK Устройства ProtoCAN и мост; команды требуют проверки результата
Legacy CAN Бальзам / ПМ35 Штатные технологические кадры Extended ID; адрес/маски в payload Технологический кадр ПМ35 — до 3 слов Таблицы проекта CAN ACK не подтверждает применение команды Сохранить формат, добавить адаптер к GAS
Служебный CAN УМП Расширенные регистровые запросы/ответы ID платы + 0x1F00 + token/function/адрес Функции 3/6; ответ по 2 слова в кадре Сигнатура/версия сервиса token и код результата Готовый путь к расширениям 167; отличается от ProtoCAN GAS
SETGUI v1 Потоковые кадры A5 5A, sequence, CRC32 Регистр/объект согласно сообщению READ/WRITE, каталог/watch при наличии обработчиков GAS_CATALOG: тип, масштаб, единица, имя sequence/ACK/NACK по контракту Мост, К1921ВК028, приборы DS18B20 с разными наборами сообщений
SETProtocol v2 Общий кадр, READ/WRITE, CATALOG, SUBSCRIBE/PUBLISH, firmware service source/destination + адрес/ID в payload сервиса По capabilities устройства Каталог и версия словаря sequence, response/status; политика задаётся сервисом Новые устройства/клиенты; GAS подключается к provider
Legacy TMS / ПУИ Исторические команды/телеметрия Номер параметра, индекс или адрес памяти по своему контракту Только операции конкретной прошивки Вне кадра По собственному протоколу Адаптер существующих полей к GAS
RS232 / RS485 / USB / Ethernet Физический интерфейс или транспорт Порт/соединение Передача кадров Не задают Зависит от стека RS485 не означает Modbus; CAN не означает ProtoCAN GAS

Нулевую адресацию PDU, порядок байтов внутри Modbus-регистра и предел FC03 в 125 регистров задаёт спецификация Modbus V1.1b3. Фактические лимиты: GAS-логгер — 125 слов, set_regmap — 124, архив УМП/EEPROM 167 — 120. Порядок слов многорегистрового числа задаётся профилем отдельно.

2. Существующие реализации и общая архитектура

Реализация Уже реализовано Ограничение Предлагаемая роль
templates/c/set-protocol/pcan_gas Регионы, storage/callbacks, права, проверка карты, ProtoCAN GAS uint8_t; блоки могут выполняться частично; запись без ответа CAN-адаптер к словарю; C28x требует портирования
templates/c/set-protocol/set_regmap Регионы/каталог, dispatcher 3/6, RTU и служебный CAN Заголовок связан с byte ABI; C28x-компиляция не проходит Основа общего dispatcher после отделения word API
templates/c/gas-logger Два банка, capture, snapshot, generation/release, JSON-профиль Сервис регистрации; не весь словарь и не драйвер связи Опциональное расширение GAS
newProject/home/gas Стабильные ID, float + time/valid, parameters.def, HR→GAS, график Host-пример; нет UART/parser/CRC, записи HR и межпоточной защиты Пример связи измерения, меню и Modbus
SETGUI / Android + templates Клиенты, модели, каталоги, графики и порты Возможности зависят от устройства и ревизии Единое описание данных для всех клиентов

Объединять нужно контракт и реестр, затем общие части реализации: сейчас модули с названием GAS имеют разные API и модель хранения. Предлагаемый поток: источники данных → профиль GAS → адаптер RTU/ProtoCAN/SET/TMS → клиент; меню и логгеры читают тот же профиль. Простые параметры могут читаться callbacks из существующей RAM: массив на 65 536 регистров не требуется.

Поле общего профиля Назначение / правило
semantic_key Стабильный смысл, например ump.commands; имя на экране меняется отдельно
device/profile/version Область применимости адресов: 167, эмулятор и прибор датчиков имеют разные профили
gas_address, registers Логический адрес и ширина; u32 занимает два слова
type, unit, scale Знаковость и raw→физическая величина; неизвестный масштаб не выдумывать
access, range, command_policy RO/RW, диапазоны и проверка условий выполнения записи
modbus Таблица, FC и старый адрес PDU; GAS ID и Modbus-адрес могут различаться
can/set/legacy MsgBody, поле payload, индекс параметра и формат; это не один универсальный CAN ID
source, validity, time RAM/удалённый кэш, достоверность и давность выборки
word_order, limits, schema_id Порядок слов, максимальный блок, версия/CRC профиля

Для существующего ОАП нормативным источником остаётся doc/setcan/Протокол CAN и ОАП.xlsx. JSON GAS-логгера — отдельный экспериментальный профиль. При внедрении согласовать их и генерировать описания C/Python/клиентов из утверждённого источника. CRC карты обнаруживает несовместимость, но не подтверждает подлинность устройства.

3. Пригодность GAS по всем обнаруженным проектам

Сложность — предварительная инженерная оценка без сроков в днях. «Обзор» означает, что полная карта и сборка проекта не проверены.

Прошивки, стенды и библиотеки

Проект / каталог Что подтверждено Применение GAS Требования / оценка
newProject/templates, SETGUI/third_party/templates Общие протоколы, карты и порты; разные checkout Реестр + независимое от MCU word-ядро Согласовать ревизию, отделить byte API C28x; средняя
Balsam_167_periph / ПМ35 / F28335 FC03/06, legacy/служебный CAN, УМП, паспорт, EEPROM; GAS 167/v1 для M95M02 GAS-регионы 0x5000…0x507F и 0x5F00…0x5F07 через RTU и служебный CAN Реализовано и проверено сборкой/host-тестами; AT25256B без GAS, его BIN совпадает побайтно
Balsam_166_periph Локальный каталог пуст Собственный профиль 166 Нужны исходники; текущая поддержка не установлена
BALZAM_167 / ПМ67 / F2812 Legacy CAN, Modbus-таблицы, CMD_STD в коде Фасад над таблицами/состояниями ПМ67 C28x-порт и политика записей; высокая
22220/ural, sibir, leningrad В ural/TMS_new_bus найдены исходники обмена; другие варианты не сверены Профиль каждого варианта; общие semantic keys Не переносить карту 167 по названию; аудит вариантов
K1921BK028/1921vk028 GUI transport и ProtoCAN в lib Object dictionary/RTC/diagnostics в карте Providers, синхронизация и карта; средняя
newProject/KONOR_ds18b20 GUI v1 для датчиков; ProtoCAN в src/can.c Температуры, качество, опрос, состояние Сохранить ROM-ID и команды датчиков; средняя
GUI_18b20 Каталог пуст; проект упоминается в документах SETGUI Профиль датчиков после восстановления кода Локальная реализация не проверена
newProject/home/gas Host-пример GAS→график/Modbus Прототип модели параметров Общее ядро, порт и проверка платы; средняя
Эмуляторы F407/G474 в templates/ports set_regmap, УМП/TMS/IGBT/DAC и MCU-порты Первый пилот на готовой карте/каталоге Порт не доказывает проверку конкретной платы; небольшая/средняя
newProject/g474/params_AD, winding_analyzer STM32-проекты/документы; GAS в обзорном поиске не найден Измерения, настройки, диагностика Сверить обмен и назначить профиль; предварительно средняя
newProject/online_logger, home_proj/stm32h755_logger/online_logger Архитектура H755; во второй копии есть OLGR GAS-настройки/статус, блоковый поток выборок Согласовать копии, DMA и владение данными; средняя/высокая
UKSI CAN/UART, FreeRTOS, переменные/модули Modbus Фасад над таблицами Согласованный доступ задач/ISR; средняя
can_rs485_do_di_test/tester_CAN_RS_DIO Собственные конфигурация/данные Modbus DO/DI и диагностика обмена Сохранить протокол испытаний; средняя
DC_DC_boost_103/DC_DC_DIMA_S, вариант G474 Собственные Modbus-модули, разные варианты Текущие значения, уставки, аварии Отдельные профили и проверка записей; средняя
diode_test/Diod_Test Собственные interfaces/rs_message, настройки тестера Состояние теста и результаты Wire-формат/FC не полностью проверены; средняя
ds128b20/new rev, john_proj, DS18B20_Library STM32 Modbus в new rev, отдельная библиотека датчиков Каналы/качество и конфигурация Сохранить 1-Wire/ROM-ID; средняя
UPP-master/upp Параметры и ссылки на Modbus в собственном коде Callback-карта существующих параметров Сверить обработчики и условия пуска; средняя
newProject/prolitarski_ups ПУИ↔МПСУ: команды 0x54/0x5D, CRC16/Modbus Номер параметра→semantic key Этот формат не Modbus RTU, несмотря на CRC; средняя
newProject/Optical_tester, test_optical STM32-проект/описание измерений первого; обзор второго Результаты и настройки Сначала профиль и аудит протокола
newProject/home/climate, remote_ds18b20_f103 Найдены прошивки, библиотеки и документы связи Температуры, клапаны, состояние Wire-адаптеры/адреса требуют отдельной сверки
Lamps-master, UKP Обзор каталогов; назначение UKP в README Параметры при наличии внешнего интерфейса Реализация GAS/конкретного протокола не установлена
stm32g474, моторные проекты home_proj Найдены проекты управления приводом Уставки и диагностика Аудит протокола/времени доступа; быстрый контур остаётся в приложении

Мосты, адаптеры и клиенты

Проект / каталог Текущая роль / глубина проверки Использование GAS
newProject/can_to_rs / F407 Мост, собственные GAS-регистры, каталог/watch GUI v1 GAS уже есть для своих параметров; удалённые кадры маршрутизируются отдельно
newProject/esp_parser / ESP32 CAN485 CAN/RS485, текст USB/Web, CSV, консоль Передача GAS-кадров через адаптер кадров; собственный GAS-каталог не подтверждён
newProject/CANdle_stm32, CANdle_stm32g474 USB-CAN/gs_usb, CAN/FDCAN-порты Транспорт кадров; словарь живёт на целевом узле/в клиенте
newProject/SETGUI Каталоги/графики, Modbus/CAN/SET, экспериментальный GAS-клиент Основной клиент; общая логика в templates, UI выбирает параметр
newProject/GUI_Android TMS/CAN/SET-клиент, общие порты/ядро Тот же словарь; полнота нового GAS-логгера здесь не проверена
newProject/Set_Terminal_28335 Старый Delphi-клиент ПМ35 Сохранить legacy адреса; новые окна требуют обновления клиента
newProject/CAN_terminal, CANgaroo-0.16.0 CAN-клиенты/мониторы; обзор файлов/описаний Декодирование по профилю; просмотр кадра не доказывает GAS-команды
newProject/PySetTerminal-master Терминал; обзор каталога Клиент общего профиля после сверки parser
LogsView, newProject/LogsView Просмотр журналов; обзор каталогов Имена/единицы/масштаб из профиля, без собственного GAS-сервера
PANE_ROSMORPORT Прикладное ПО; обзор каталога Применимость зависит от данных; протокол не проверен

Остальные каталоги

Строки ниже включены для полноты инвентаризации. Применимость GAS здесь — архитектурная оценка, а не утверждение о найденной реализации.

Каталоги Рассмотрение / применимость
home_proj/altera, altera_loggerTK, altera_loggerTK_legacy_mixed_20260918, фдеукф; xilinx/cpld, omdazz_sp6; home_proj/zynq FPGA/CPLD: GAS через host/MCU-шлюз; быстрый поток со своим форматом. GAS HDL не проверен
home_proj/DCDC_KONOR, focIhm08M01, g474_nucl_3phase, stm32g474_IHM08, john103C6T6NewVer Дополнительные платы: собственные карты не сверены, нужны отдельные profiles
home_proj/GRBLSTM32F103, zigbeeWB55, HomeAssistant, Flipper, lamp_clock Собственные экосистемы; GAS возможен как дополнительная модель, необходимость не установлена
newProject/home/ChameleonUltra, puty, DSView Устройства/анализаторы: общий словарь на стороне клиента при необходимости
builds_labview, can_rs485_do_di_test/labview, newProject/matlab Клиенты/сборки: экспорт карты и клиентский адаптер; исходники доступны не для всех
newProject/SET_Publisher, TroubleshootingDB, embedded-catalog Публикация/документация: хранить версии и описания профилей
newProject/DOC, home_proj/site_Sveta Документы/сайт: публикация реестра; firmware-интеграция не требуется
newProject/Новая папка, newProject/home/Новая папка Организационные/пустые каталоги; поддерживаемый проект не установлен

4. Конкретные адреса GAS ↔ Modbus ↔ CAN: ПМ35

Это экспериментальный профиль gas_logger_maps/pm35.json, а не карта уже работающей прошивки 167. Семь новых alias — RO: ядро GAS-логгера не реализует запись в них. Управление УМП остаётся отдельной операцией старого протокола.

Параметр GAS Modbus FC03 alias ProtoCAN GAS MsgBody Источник / legacy индекс Формат
Команды УМП 0x5000 0x5000 = 20480 0x5000 modbus[0x007F] = 127 Маска 16 бит, чтение команд
Расчётное задание тока 0x5001 0x5001 = 20481 0x5001 modbus[0x001C] = 28 0.1 мА; не измеренный ток выхода
Код ЦАП 0x5002 0x5002 = 20482 0x5002 modbus[0x007B] = 123 Исходный код
Начальная уставка 0x5003 0x5003 = 20483 0x5003 modbus[0x0050] = 80 мА по текущему контракту
Конечная уставка 0x5004 0x5004 = 20484 0x5004 modbus[0x0051] = 81 мА по текущему контракту
ЗПТ1 0x5005 0x5005 = 20485 0x5005 Кэш ПМ67; legacy CAN индекс 305 Raw u16, масштаб отдельно
ЗПТ2 0x5006 0x5006 = 20486 0x5006 Кэш ПМ67; legacy CAN индекс 8 Raw u16, свежесть отдельно

Равенство трёх новых адресов — выбор профиля. Старые Modbus-адреса другие. MsgBody — часть ProtoCAN ID, а 305/8 — индексы старого payload; подставлять одно вместо другого нельзя.

В home/gas сопоставление отличается: напряжение GAS ID 0x0123 → Modbus PDU-адрес 1000; ток 0x0124 → 1001, 1.25 A кодируется как 125. Это демонстрационные адреса, не назначение общих регистров всех приборов.

Занятые и экспериментальные окна

Профиль Диапазон Назначение / следствие
167 0x0000…0x007F Технологические регистры: сохранить адреса/проверки записи
167 0x1000…0x100F, 0x1010…0x1087, 0x1100…0x117B Статус, курсорное окно, онлайн УМП
167 0x1200…0x120B Паспорт прошивки, 12 слов
167 0x1300…0x1307 Защита нагрузки, действующий проверяющий handler
167 / AT25256B 0x8000…0xBFFF RO-окно EEPROM, пересекает тестовый GAS-снимок
167 / M95M02 0x8000…0xFFFF + частное quantity/bank Банковое EEPROM-чтение: не обычный плоский массив Modbus/GAS
Тест GAS ПМ35 0x5000…0x5006 Семь alias; в firmware 167 не подключены
Тест GAS ПМ35 Статус 0x6000…0x6011, команды 0x6012…0x6014, снимок 0x6100…0x849F Снимок конфликтует с EEPROM 167
Эмулятор set_emu_server 0x1300 DAC, 0x1400 IGBT, 0x1500 TMS, 0x2000 архив, 0xA000 таблица DAC Другой профиль: одинаковое число адреса может означать другой сервис

Расчёт полного тестового окна: 0x6000 + 0x0100 + 760 × (7 + 5) = 0x84A0 — конец, не включая. Проверять нужно весь сервис, а не только регистры команд.

Для 167 возможен, например, кандидат base 0x2000: данные такого снимка заняли бы 0x2100…0x449F. Это предложение только для нового профиля 167, не общий назначенный адрес: нужны сверка с ОАП/полной картой, новый JSON/C-профиль и CRC. В эмуляторе 0x2000 уже занят.

5. Ограничения и результаты проверки

Ограничение Проверенный факт Решение
C28x ядро gas_logger.c, PM35 source-port, C28x IRQ-port скомпилированы TI 22.6 без ошибок Ядро использовать можно; требуется полная firmware-компоновка
C28x byte API pcan_gas.c, set_regmap.c: identifier "uint8_t" is undefined Отделить word-map; octet-порт хранит 8-битные значения подходящим типом и явно сериализует
Размер C-byte C28x CHAR_BIT=16; обычный ARM/PC — 8 Простого typedef uint8_t=uint16_t недостаточно: проверить ABI/размеры/packing
Адреса Тестовый снимок до 0x849F пересекает EEPROM Отдельный профиль и проверка пересечений
BIN 167 Текущее дерево пересобрано: 32472 байта при лимите AT25256B 32508; запас 36 байт. Проба GAS-алиасов: 32524 байта, превышение 16 При сохранении всех функций проверенный GAS-вариант не помещается; подробности ниже
RAM УМП 2 × 760 × 42 = 63840 слов внутри logs_block[64000] / .logg Новые банки нельзя одновременно размещать в той же памяти
RAM GAS-логгера 2 × 760 × 12 = 18240 слов = 36480 физических байт, без контекста/стека Другая подтверждённая RAM, меньшая ёмкость или взаимно исключающие варианты
Состав записи УМП 42 слова, тестовый GAS 12 Сокращение трафика также связано с удалением полей; это не измерение ускорения одинакового журнала
Snapshot Закреплён до RELEASE; нет STOP/автоосвобождения Согласовать отмену/возобновление, BUSY и одного управляющего клиента
CAN-запись Текущий ProtoCAN GAS без прикладного ACK Проверять статус/поколение выполнения
Источники PM35 source-port читает локальный кэш; не отправляет CAN-запрос Только быстрые RAM-чтения под блокировкой; отдельные time/validity
Dispatcher 167 receive_ump() перехватывает адреса от 0x1000 Явная маршрутизация GAS-окон без попадания в чужой provider
Две copies templates HEAD: third_party 86ece3ea907c, соседний eab8dc5e0a7f Зафиксировать ревизию; старые документы/пути не доказывают поддержку текущей сборкой

5.1. Предварительная проба EEPROM 167 до внедрения GAS

Условие: сохранить функции проекта, текущую EEPROM AT25256B, настройки сборки и штатные протоколы. Замена регистратора, сокращение полей и переход на другую EEPROM в эту проверку не входят.

Показатель Физические байты Результат
Полная EEPROM AT25256B 32768 32 KiB
Параметры и исторически неиспользуемое последнее слово 260 129 слов × 2 + 2
Лимит загрузочного образа SCI8 32508 0x7EFC
Полная пересборка текущих исходников 32472 Свободно 36 байт
Проба GAS-алиасов к существующим 128 регистрам 32524 Добавлено 52 байта; превышение лимита 16 байт
Только общий словарь и преобразование адресов на ПК/шлюзе +0 в прошивке Существующий образ помещается; новая GAS-служба на устройстве не появляется

Проба сделана во временном каталоге: 28 исходных файлов, TI C2000 22.6.0.LTS, текущие -O2 --opt_for_speed=0 --gen_func_subsections=on, FPU32/COFF, существующий generated firmware identity. Использованы действующие linker-файлы и hex2000 -boot -sci8 -b. Контроль SHA-256 подтвердил, что все 28 исходных файлов остались без изменений. Конфигурация и рабочие BIN не изменялись.

Временная копия message.c добавляет чтение/запись тех же регистров через Modbus FC03/FC06 по демонстрационному окну 0x5000…0x507F, сохраняя старые адреса, проверки и обработчики. Это окно используется только для оценки размера и не назначает адреса общего профиля. Каталог GAS, новый CAN-handler и GAS-логгер не добавлялись.

Вывод: проверенная компактная реализация GAS-алиасов при сохранении проекта не помещается в AT25256B. Расход полноценного общего provider и ProtoCAN-доступа пока не измерен. 52 байта — результат конкретной реализации, а не теоретический минимум любого GAS. Поэтому гарантировать размещение GAS в текущем запасе 36 байт нельзя. Общий словарь на ПК/шлюзе можно добавить без увеличения прошивки.

Испытание на плате и полная интеграция библиотек GAS не выполнялись. Другие старые BIN имеют другие размеры; вывод выше относится к пересборке текущего дерева.

Изолированная проверка 09.10.2026: TI cl2000 22.6.0.LTS, --compile_only -v28 -ml -mt --float_support=fpu32 --abi=coffabi --c99 -O2 --opt_for_speed=0, исходники из SETGUI/third_party/templates. Получены три успешных объекта и две неудачи byte API. Результаты создавались во временном каталоге. Это не проверка размера BIN или аппаратных таймингов.

Особенности типов C28x подтверждены также руководством TI, разделы 6.3 и J.3.4.

5.2. Реализовано: GAS только для M95M02

По последующему запросу GAS добавлен в проект под EEPROM_M95M02=1. Оба обработчика — RTU и служебный CAN УМП — используют один word-provider. Новые адреса 0x5000…0x507F отображают существующие 128 регистров, 0x5F00…0x5F07 публикуют сигнатуру и версию профиля 167/v1. Штатные адреса, защита, параметры и логгер сохранены.

Сборка До GAS После GAS Добавочный размер Лимит EEPROM для образа Запас
AT25256B 32472 32472 0 32508 36
M95M02 32764 33174 410 261884 228710

Единицы — физические байты SCI8. AT25256B проверен сравнением с кодом до внедрения при одинаковом generated identity: BIN идентичен по SHA-256, GAS-символов в MAP нет. RAML0 M95M02 имеет запас 831 слов / 1662 байта. Настройки компилятора и размещение секций не менялись.

Проверены обе целевые сборки TI, валидность boot-таблиц, host-тесты реальных RTU/CAN обработчиков, границы/RO/timeout, CRC и полный 124-словный CAN-снимок. Аппаратное испытание не выполнялось.

Это профиль конкретного устройства поверх его действующих транспортов. Нативный ProtoCAN MsgType=0x3 и GAS-логгер не интегрировались. Полная карта, ограничения и готовый BIN: GAS_167_M95M02.md.

6. Порядок внедрения

Этап Результат Критерий готовности
1. Реестр/профили Общие semantic keys, типы/масштабы/права, старые transport alias Нет пересечений; источники/направления определены; ОАП согласован
2. Общее ядро Word-map/callbacks отдельно от byte ABI; C28x и ARM/PC-порты Совпадают значения, ошибки, границы и операции
3. STM32/host пилот Чтение одной карты через RTU и существующий CAN/SET Один источник даёт одинаковые данные через оба транспорта
4. ПМ35/167 GAS-фасад над штатными регистрами/сервисами Старый терминал совместим, BIN/MAP проверены, управление/защита работают
5. Остальные MCU Отдельные профили 166/ПМ67/стендов/приборов Для каждого проверены адреса, типы, права, память, тайминги
6. Все клиенты SETGUI/Android/CLI/просмотр журналов используют экспорт профиля Имена/единицы/версия совпадают, неподдерживаемые сервисы обнаруживаются
7. Логгеры/потоки GAS-логгер для snapshot; GAS-настройки для OLGR/FPGA Поля/триггеры сохранены; измерены RAM, IRQ и скорость

Начать с общего словаря поверх существующих данных, затем подключать транспорты, после этого решать замену логгеров. Высокочастотные выборки передавать блоками со своей временной базой и sequence; GAS описывает каналы, настройки и состояние.

Источники

Источник Что проверялось
main.c, message.c, ecan.c Реальные dispatcher/handlers 167
UMP_LOGGER.md, EEPROM_LAYOUT.md, FIRMWARE_IDENTITY.md, UMP_VOLTAGE_PROTECTION.md Карта, состав записи, паспорт и защита
F28335.cmd, log_to_mem.c, manifest Память и размер сохранённого образа
GAS Logger, gas_logger.c, pm35_map.h, pm35.json Точный экспериментальный профиль/реализация
GAS.md, pcan_gas.h ProtoCAN GAS и ограничения
EMULATOR_SERVICES, set_regmap.h Каталог, dispatcher, byte ABI
ОАП, устройства Нормативный источник и идентичность узла
Host GAS, gas.h Пример ID/значений/HR
PROJECT_RELATIONS, FIRMWARE_PROTOCOL_AUDIT, GAS_LOGGER_EXPERIMENT Клиенты, связи и статус эксперимента
CAN_to_RS485, ESP32, KONOR Мосты/каталоги/датчики
CanBalzam7.c, UKSI, ПУИ Существующие CAN/Modbus/legacy реализации
Online Logger Параметры отдельно от потока OLGR

Ссылки отражают локальную структуру на дату анализа. HEAD не описывает незакоммиченные изменения. Для строк «обзор» использованы инвентаризация и поиск в собственных исходниках; отсутствие совпадения не доказывает отсутствие протокола.