Возможности
Black Magic Diag — инженерное рабочее место для UDS-диагностики по CAN и DoIP. Это не универсальный OBD-сканер: вы описываете ECU, DID, routines и форматы ошибок, которые нужны вашему проекту, и работаете с ними напрямую. Проекты хранятся в локальном [workspace](/ru/features/workspace), которым управляете вы.
Параметры ECU
- Чтение и запись идентификаторов данных (DID) через типизированные представления: unsigned, signed, ASCII, hex, enum и combined.
- Извлечение битов или диапазонов байт из упакованных payload; сырые байты остаются видимыми.
- Чтение всего ECU, группы параметров или одного значения.
- Поиск неизвестных идентификаторов в Incubator: загрузите список DID, просканируйте диапазон и изучите ответы.

Диагностика и DTC
- Чтение активных и сохранённых кодов неисправностей, их очистка и чтение списка поддерживаемых кодов.
- Просмотр snapshot (freeze-frame) данных, привязанных к каждому коду.
- Работа с форматами J2012, ISO 14229-1 и J1939-73.
- Загрузка глобальных или проектных баз DTC из JSON или TXT.
- Цветовая кодировка состояний: Active, Stored, Not Active.

Живые измерения
- Опрос измеряемых значений с периодом от 100 мс до 10 с.
- Построение нескольких сигналов одновременно: отдельные серии или нормализованные совмещённые графики.
- Настраиваемый буфер истории и запись в CSV.
- Значения читаются в той же UDS-сессии, что и остальная работа.

Подробнее о живых измерениях →
Инструменты UDS
- Tester present 0x3E с настраиваемым периодом.
- Session control 0x10, ECU reset 0x11, security access 0x27.
- Routine control 0x31 и IO control 0x2F.
- Прямое чтение 0x23 и запись 0x3D памяти с полями адреса, блока и размера.
- Security access через внешние Seed2Key DLL, задаваемые для каждого проекта.

Подробнее об инструментах UDS →
CAN и DoIP
- CAN через pass-through адаптеры J2534, 11-битные и 29-битные идентификаторы.
- Сканер шины: broadcast-запрос или последовательный диапазон ID, затем добавление найденных ECU в проект.
- DoIP (ISO 13400) по Ethernet: локальный интерфейс, адрес назначения, адрес тестера и discovery.
- Тип транспорта выбирается для каждого ECU внутри проекта.

Скрипты и автоматизация
- Lua API для параметров, routines, IO control, сырых UDS-запросов, доступа к памяти и работы с прошивками.
- Action buttons, задаваемые в JSON: отправка записи DID или запуск Lua-скрипта.
- MCP-сервер и чат-агент с областями read, write и live-write.
- AI-ассистент может вызывать те же инструменты, что и скрипт; каждый вызов виден в логе.

Подробнее о скриптах и автоматизации →
Отчёты и экспорт
- Генерация HTML-, Markdown- или PDF-отчёта по текущему проекту.
- Экспорт таблицы ECU в CSV, сохранение дампов данных и их повторная загрузка.
- Логи сессий пишутся в workspace с отметками времени.
Подробнее об отчётах и экспорте →
Прошивки
- Загрузка образов Intel HEX, Motorola S-record или сырого бинарного файла.
- Просмотр размера, CRC-32 и блоков адресов.
- Прошивка через окна, специфичные для автомобиля, или через Lua firmware API.
Модель проекта
- Workspace — это каталог с
data/,logs/иprojects/. - Проект (
.bmprj) содержит список ECU; каждый ECU хранится в отдельном файле.bmecu. - Дампы данных (
.bmdump) и списки DID (.bmdid) переносимы между машинами.
Подробнее о workspace и проектах →
Под капотом
Для инженеров, которым важно знать, что происходит под интерфейсом:
| Слой | Ответственность |
|---|---|
| Win32 + DirectX 10 + Dear ImGui | Окно, рендеринг, док-панели |
BmApp | Пути workspace, глобальное состояние, реестр окон |
Project | Загружает и сохраняет файлы .bmprj и .bmecu |
Ecu + Task | Один слот задачи на ECU, выполняемый в рабочем потоке |
View | Интерпретирует байты DID: uint, int, ascii, hex, enum, combined |
UdsTransport | UdsCan (J2534) или UdsDoip (TCP/TLS) |
- UI работает в главном потоке;
pollEcuTasks()запускает ожидающую работу каждый кадр, а результаты возвращаются через очередь UI. - Закрытие проекта прерывает, а затем ждёт задачи ECU. Один ECU никогда не выполняет две задачи одновременно.
- Измерения хранят кольцевой буфер на каждую серию;
Combinedнормализует каждую серию отдельно,Separateсохраняет реальные единицы. Короткая ошибка связи повторяется, длинная серия ошибок останавливает измерения. - Write DID, routine start, IO control, memory write и raw UDS проходят через единую точку подтверждения. AI и MCP используют ту же командную шину с областями
read/write/admin. - Lua выполняется в песочнице без произвольного доступа к файлам, процессам или ОС.
- Сборка:
msbuild BlackMagic.slnx /p:Configuration=Release /p:Platform=x86. Тесты:ctest --test-dir build_tests -C Debug --output-on-failure. UI-тесты:BlackMagic.exe --ui-test.
