Pull to refresh

Comments 14

отличный мануал, который самому приходится по сути пересказывать в работе. (копаю CAN-шины, в том числе J1939 с обратной стороны — расшифровываю логи, собираю DBC)

отличный мануал

Спасибо!

Не уверен насчёт отличного. Всё как обычно смешано в кучу.

Пример со скоростью вращения двигателя: множитель 1000, 4 байта. Это пример чего? Эта величина в 1939 имеет другой множитель и не занимает 4 байта.

Часть сообщений не транслируется непрерывно, а отправляется только по запросу.

ISO-TP может передаваться поверх 1939, никаких ограничений на это нет.

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

ISO-TP может передаваться поверх 1939, никаких ограничений на это нет.

Да. Мультиплексирование между ISO-TP или J1939 происходит как раз в структуре CAN-ID двумя битами (24 и 25): Extended Data Page (bit 25) и Data Page (bit 24) .

https://habr.com/ru/articles/798489/
Обзор Протокола ISO-TP [ISO 15765-2]

Очень доступно, интересно и познавательно. Работал с этим достаточно давно и изучал, но из статьи познал несколько моментов, которых до этого не знал.

Спасибо большое!

Спасибо большое!

Пожалуйста.

240 адресов хватает в современных реалиях?

Да, 254 адресов в J1939 более чем достаточно: в реальной технике обычно одновременно работает порядка 15–30 электронных блоков управления.

На практике ограничением современных систем является не адресное пространство, а пропускная способность классической CAN-шины — как правило, 250 или 500 кбит/с. Поэтому при увеличении количества устройств и объёма передаваемых данных сеть разделяют на несколько независимых CAN-сегментов, соединённых шлюзами. Каждый сегмент работает как отдельная сеть и использует собственное адресное пространство J1939.

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

да, так и делают — разводят критичное и второстепенку по разным шинам.

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

Плюс критическую сеть часто делают с резервированием или на более надёжной топологии, а «шляпу» — попроще и подешевле.

240 адресов хватает в современных реалиях?

В одном пролете CAN шины может быть максимум 127 трансиверов.
Далее емкость между проводами CAN_L и CAN_H становится слишком высокой и электрические фронты смазываются.

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

(адреса нужно назначать, легко возникает путаница, можно придумать каку нибуть автоматизацию раздачи адресов, но оно тоже может глючить).

Протокол DHCP для CAN.

Или как -то вручную прописывать J1939 адрес в NVRAM.

вот вот. подключил и оно как то само. DHCP кстати тоже не идеален и вместо него есть всякие другие придумки.

в dronecan вроде тоже вручную прописывать nodeid надобно, но там есть доп. конфигураторы. и исходники

Sign up to leave a comment.

Articles