Pull to refresh

Comments 47

А DBC файлы его софт понимает, чтобы трафик на сигналы разложить? А то сырые CAN сообщения это очень маленькая часть работы с CAN шиной.

Конечно же нет. В России мало кто вообще знает про формат dbc .

Сan матрицы тут и по сей день передают в Excel таблицах.

Да и потом, не все протоколы хорошо описываются dbc форматом.

Тот же uds как правило размазывает один параметр по множеству can пакетов.

Автопроизводители прекрасно знают про dbc, canoe, pcan explorer, и всё прочее минимум с 2017 года. Не просто знают, а активно пользуются. Есть лицензии, софт. HIL стенды, валидация. Не нужно экспертно заявлять, что только вот бывший сотрудник arrival знает про dbc, а остальные в лесу живут дремучем

От чего бы Вам тогда не взять и написать тут на habr методичку про то, как работать с dbc файлами?

Я еще не встречал российского клиентского ПО для CAN адаптеров, которое умеет анализировать CAN-трафик согласно импортированному *.dbc файлу.

Ровно как и код-генераторов способных по *.dbc файлу написать Cи-функции разбора CAN пакетов.

А почему так? В РФ на CAN новые системы не строят или какой-то другой подход используют? Там же куча данных передается, из сырого HEX же ничего не понять.

Ну вот взять хоть мой опыт в яндекс.драйве.
Там никто про .dbc файлы не слышал.
Вендоры легковых авто РФ свои .dbc файлы не выдают.
В результате разработчкики прошивки телематики MT-32K_LTE_V2 каршеринга просто делают реверс инжиниринг трафика CAN шины и заносят то, что поняли в Google таблицу.
https://docs.google.com/spreadsheets/d/1AGdPkWEUJpL-DqwfBiQXcp8iG4rBm2TTlbpR1-Ipi3c/edit?gid=0#gid=0
Потом в прошивку парсеры руками вписывают.

И форматы стабильные чтоли там?
Я просто помню, что когда в Tesla работал, там формат сигналов в CAN сообщениях мог меняться между билдами практически как угодно. По сути каждый билд для машины мог иметь несовместимые DBC файлы. Вся инфраструктура была заточена на нахождение нужных DBC в артифактах, чтобы раскодировать трейсы.

Что такое трейсы? Красивое слово. Как будто из физики.

Это по сути запись всех сообщений с CAN шины в файл. Потом через DBC файлы оно раскодируется в сигналы и можно смотреть на них как в многоканальном осциллографе. С любой машины их можно было запросить и в онлайне анализировать.

Что такое трейсы? Красивое слово. Как будто из физики.

ммм как бы в рамках jtag термин с таким же почти смыслом.

Вот это да! По меркам РФ фантастические технологии.

вопрос выбора инструмента... с одной стороны kviser etc. у нас продавали и продают, значит кто то покупает и использует. с другой стороны можно и портянку hex анализировать (как сказали в фильме Матрица "а мне так удобней"). и с учетом тут сказанного это похоже мировая тенденция

И форматы стабильные чтоли там?

Нет. По моим тогдашним наблюдениям в Рено Логан формат CAN сигналов менялся от года к году выпуска модели.

Работать приходилось по сути IT-медвежатником.

Производители любых авто просто так никому свои dbc не выдают. Более того - существующие CAN протоколы передаются от разработчика одной системы автомобиля разработчику другой за колоссальные деньги.
То что Яндекс не смог или не захотел купить описание сообщений у производителя - это проблемы Яндекса, а не всея Руси.

А почему так?

Я считаю что причины три
1--Не хотят покупать дорогие преобразователи от Vector и Kvaser.
2--Действие эмбарго.
3--В местном программировании МК много ригидности. Культура разработки не на самом высоком уровне. Хорошие практики не приживаются.

А почему так? В РФ на CAN новые системы не строят

Можно, а зачем? Колесо изобретать некогда, надо грузы тащить срочно-срочно. ГОСТа на эти дела нет, особенно на .dbc файлы. а парсить все это .dbc - то еще удовольствие, много когда , много отладки, много времени.

Конкретно эта штука сделана вполне в духе госпредприятий, не удивлюсь если ее начальное назначение было (весьма ) специфичным и довольно узким.

 а парсить все это .dbc - то еще удовольствие, много когда , много отладки, много времени.

Формат dbc текстовый.

BO_ 2583654654 IoStatusInputVoltage7: 8 Device
 SG_ VoltageStatus_25 : 0|16@1+ (0.001,0) [0|64.255] "V"  Host
 SG_ VoltageStatus_26 : 16|16@1+ (0.001,0) [0|64.255] "V"  Host
 SG_ VoltageStatus_27 : 32|16@1+ (0.001,0) [0|64.255] "V"  Host
 SG_ VoltageStatus_28 : 48|16@1+ (0.001,0) [0|64.255] "V"  Host

BO_ 2583654910 IoStatusInputVoltage8: 8 Device
 SG_ VoltageStatus_29 : 0|16@1+ (0.001,0) [0|64.255] "V"  Host
 SG_ VoltageStatus_30 : 16|16@1+ (0.001,0) [0|64.255] "V"  Host
 SG_ VoltageStatus_31 : 32|16@1+ (0.001,0) [0|64.255] "V"  Host
 SG_ VoltageStatus_32 : 48|16@1+ (0.001,0) [0|64.255] "V"  Host

Парсится синтаксическим разбором CSV строчек.

но почему то никто не сделал, ну по крайней мере открытое. как и методичку по .dbc

Можно, а зачем?

Если, что-то это наш местный автовазовский мем.

 А то сырые CAN сообщения это очень маленькая часть работы с CAN шиной.

Это верно подмечено. Согласен.

А DBC файлы 

Есть ли pdf спецификация с описанием текстового формата *.dbc файлов?
Описанием синтаксиса и семантики. Чтобы можно было понять как читать интерпретировать *.dbc файлы глазами.

Спасибо!

Чем-то напоминает XCP. Там тоже есть отдельные файлы *.A2L для метаданных про параметры.

Я вот про DBC файлы только что от вас узнал. Зато давно знал про DAT файлы, которые имеют особый бинарный формат описания шин, блоков на шинах и кодировки каждого ID.

Например, вот такой

Есть ненулевая вероятность, что каждый концерн и/или производитель использует вообще свои пропиетарные форматы.

В то время когда я в этой отрасли работал, мне казалось, что как Vector Group скажет работать тем и работают. Ну и PEAK-Systems еще, для тех груп кому бюджета не выдали.
И самописные скрипты конвертировать трейсы между PCAN-Explorer и CANape.

У меня коллега по яндексу до этого 5 лет в ФГУП НАМИ работал (головное предприятие российского автопрома, аналог европейского AVL).
Писал, что все те годы просил, чтобы ему преобразователь от Vector заказали. В итоге он его так и не увидел вживую. Ни разу.

просил

по хорошему это называется обосновывать. в общем то требует подходов и талантов, в том числе не технических, ну и не всегда просто, а тут - наоборот получилось, что вроде даже и не нужно.

Марафон выпускают линейку устройств с CANopen и CANwise предназначен работать с EDS-профилями для них, SDO и PDO обмен и прочее. На CANwise ставятся расширения функционала, но всё это работает только с их преобразователем. Вот для этого его и берут, использовать его как терминал и под запись трафика смысла нет, есть варианты и подешевле.

--Почему микроконтроллер LPC2366FBD100 и USB ASIC FTDI 2309-C FT2232HL соединены аж 16ю проводами? Это что за интерфейс такой их связывает вместе?

Обычный параллельный интерфейс. Х8 скорости по сравнению с UART, скорее всего подключен к FSMC и таким образом обращение к FTDI это атомарная команда LD/ST.

Да. Видимо подключены по MPSSE/ Multipurpose UART/FIFO Controller

Оно ещё и не чувствителен к настройкам COM порта в таком включении (всегда на максимальной скорости, практически на скорости USB конкретной реализации чипа) + можно управлять через либу D2xx, которая позволяет открывать устройство по серийнику (и пофигу, на каком логическом СОМ он определился) и работать с блоками данных а не побайтно, оптимизируя скорость на стороне ПК.

весь смысл подобных переходников только в привязанном к ним ПО, и то пока кетайцы клон не станут продавать в разы дешевле.

Можно вообще купить за 1500руб отладочную плату JZ-F407VET6 и портировать на нее open-source проект PCAN-Pro-X.

Вот репозитории на выбор
https://github.com/mkelehk/pcan_pro_x_g431

https://github.com/moonglow/pcan_pro_x

https://github.com/eeshuibuxing/pcan_pro_x

Далее устанавливаете клиентский софт от Peak Systems, получаете бесплатный драйвер, бесплатную нормальную Windows клиентскую программу (PCAN-View).

сколь я помню качал все без регистрации когда то...

а вообще поскольку виртуальный порт - разбираем протокол и пишем свой софт. или используя библиотеки производителя.

Не самый дорогой вариант

"Связь с компьютером: USB 2.0  Virtual COM Port, класс CDC"

Virtual COM Port позволяет подключаться к преобразователю одновременно из нескольких программ?

https://canhacker.ru/product/can-hacker-ch-p-fdl2/

Virtual COM Port позволяет подключаться к преобразователю одновременно из нескольких программ?

А зачем?

Для отладки.

Я думаю, что ни один не позволяет. А зачем отлаживать? Или что отлаживать?

У pcan , например, можно открыть хоть 10 экземпляров клиентской программы. Одна будет с правами отправки, а права приема будут у всех.

Так можно отлаживать потерю пакетов в custom утилитах, которые работают с преобразователем.

pcan работает через хуки? Потому что даже обычный железный СОМ порт при открытии в одной программе даже с SHARED атрибутом всё равно не позволял другим программам открывать его через create() потому что, видимо, всё равно требовалась запись, даже если её не использовать. Но в том же время всякие COM мониторы подключались к хукам и подслушивали трафик. Вероятно, множественные легальные подключения без танцев с бубном только у устройств работающих только на чтение, но я не проверял эту теорию.

Хотя, если pcan использует свой драйвер, то может там реализован и редиректор. Драйвер vCOM от ST это обычный системный \\.\СОМ, без изысков.

Sign up to leave a comment.

Articles