Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

Обзор протокола J1939 (или нервная система грузовиков)

Дата публикации: 12-08-2026 12:43:52

J1939 это высокоуровневый проприетарный протокол используемый поверх CAN. Появился в середине 198х годов. Этот протокол работает в груpовых автомобилях: автобусы, грузовики, самосвалы, фуры, БелАЗы и прочее. Протокол J1939 принципиально не применяется в легковых автомобилях.В автомобилях много датчиков: напряжения, температуры, давления масла, датчики дальномеры для помощи парковки, радары круиз конторля, давление в шинах. Все эти данные передаются в блок управления двигателем по протоколу J1939. По J1939 происходит управление трансмиссией, генератором, двигатели, форсунками, тормозами и прочим. Читать далее

Основное содержимое страницы с новостью.

Пролог

J1939 это высокоуровневый прикладной проприетарный протокол используемый поверх CAN. Появился в середине 198х годов. Этот протокол работает исключительно в больших грузовых автомобилях: комбайны, тракторы, танки, автобусы, троллейбусы, грузовики, лесовозы, самосвалы, фуры, БелАЗы и прочее. Протокол J1939 принципиально не применяется в легковых автомобилях.

Основная задача J1939 cтандартизированное взаимодействие и обмен данными между электронными блоками управления (ECU) для управления автомобилем в реальном времени. Передаются заранее определенные рабочие параметры (PGN/SPN), такие как скорость, обороты двигателя, давление в тормозной системе. Формат сообщений жестко стандартизирован.

Предыстория

Шина CAN — это лишь «основа» для связи, а не «язык» для общения. Труба для чисел. CAN - шина определяет только физические и канальный уровни модели OSI-7. J1939 же работает на прикладном уровне модули OSI. То есть придает смысл передаваемым числам. J1939 предлагает стандартизированный метод взаимодействия между электронными блоками управления. J1939 обеспечивает единый язык для всех производителей автоэлектроники.

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

Например, в тяжелом грузовике двигатель и трансмиссия обмениваются данными как раз по протоколу J1939.

Определения

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

Параметр - это переменная, которая помимо адреса в памяти, значения и размера несет в себе ещё и метаданные про физическую величину, размерность, тип данных, единицы измерения, множитель, тип доступа, формат записи, допустимый интервал значений и прочее, и прочее. Примером параметра может служить обороты двигателя. Это физическая переменная угловой скорости, представляется действительным числом, 4 байта, измеряемая в оборотах в секунду. Множитель тысячи (*1000). Её можно только читать. Может принимать только положительные значения. И так далее.

Атрибут параметра

Возможные варианты

ед. изм.

Тип доступа параметра

Read only, ReadWrite, WriteOnly, Write0_CLEAR, Write1_CLEAR и т. п.

1 2 3 4

Тип данных

uint8 int32 float string и т п

тип данных

Физическая величина

скорость, масса, ток, время

физ. величина

Сырой размер в памяти

1, 2, 4

байт

Диапазон допустимых значений

всё что угодно

bin value

Размерность

градусы или радианы, паскали, бары, атмосферы или сила на кв метр

единицы измерения

Размерный множитель

милли, пико, нано и т. п.

размерный множитель

Адрес в памяти

0x00000000-0xFFFFFFFF

uint32_t

Значение

всё что угодно

bin value

Значение по умолчанию

всё что угодно

bin value

Как видите метаданных может быть очень много. Для управления параметрами есть даже целые утилиты. Например TunerPRO.

Сигнал (Signal) - cигналы это те самые параметры, которые и передаются по протоколу J1939. Каждый параметр обладает своим SPN - номером.

Номер подозрительного параметра (SPN) — это 19-битное число, используемое для идентификации конкретного элемента, компонента или параметра, связанного с ЭБУ. Эта возможность особенно полезна для диагностики, позволяя ЭБУ, обнаружившему неисправность, связанную с конкретным компонентом, например, датчиком, передавать сообщение о неисправности, идентифицирующее неисправный компонент. Номера SPN присваиваются Комитетом SAE по управлению и связи грузовых автомобилей и автобусов и публикуются в SAE J1939DA. Первые 511 номеров SPN зарезервированы.

Кадр (Frame) - последовательность битов данных, составляющих полное сообщение. Кадр подразделяется на ряд полей, каждое поле содержит предопределенный тип данных. См. Кадр данных CAN.

PGN (Parameter Group Number) - 18-ти битный номер группы данных, имеющая общий период передачи, поскольку они являются частью одного и того же контекста, называется группой параметров. Номер группы параметров (PGN) — это специальный номер, служащий идентификатором для каждой группы параметров. PGN является подмножеством 29-ти битного CAN ID. PGN служит уникальным идентификатором кадра в стандарте J1939. Это означает, что правила декодирования (интерпретации) необработанных данных J1939 указаны на уровне PGN, а не на уровне 29-битного идентификатора. Большинство сообщений J1939 передаются по шине CAN с фиксированной периодичностью

CAN - ID

CAN - ID

Важно отметить, что J1939 включает в себя только стандартизированные PGN/SPN, а не проприетарные PGN/SPN от OEM производителей.

Данные о сигналах и пакетах обычно хранятся в *.DBC файлах и открываются программой Vector DBC Editor ++. Хотя ничего не мешает и по старинке перечислить сигналы в Excel табличке.

Физический уровень
J1939 работает поверх интерфейса CAN. При этом J1939 определяет свой собственный тип разъема. Так называемый off-board diagnostic connector.

0bbcd3bc1f7df74231d052e63f59fe48.png

Особенности протокола J1939
1) Использует только расширенные идентификаторы.

ad12c73d5a4576e842351fe2c6be1e05.png

2) Идентификатор позволяет варьировать приоритет, содержит PGN и адрес того, кто испускает это сообщение. Для этого в CAN-ID зарезервировано три бита для манипуляции приоритетом.

b00501c5d8762d81832ec8cda0395c3e.png


3) Каждый узел сети передает свой адрес отправления.
4) Стандартные скорости передачи данных по протоколу CAN составляют 250 и 500 кбит/с.
5) Параметры транслируются непрерывно с определенным периодом.
6) Поддерживает как точечную, так и глобальную (адресацию сообщений) адресацию.
7) В многопакетной связи можно передавать до 1785 байт (7*255=1785). Многобайтовые сигналы передаются в порядке следования байтов от младшего к старшему (порядок следования байт Intel). PGN длиной до 1785 байт поддерживаются транспортным протоколом J1939

c2f46553449865d7288e95da0096a5be.png

Структура Parameter Group Number (PGN)

CAN ID в J1939 имеет составную структуру: 3-битный приоритет, 18-битный PGN и 8-битный адрес отправителя. В свою очередь PGN разлагается еще на PDU формат, поле PDU Specific, Data Page и бит EDP (25 бит).

4c426601c7ccffd2fde96f3d8f95fa12.png

Пакеты класса точка-точка
Если значение в разделе «Формат PDU» больше 240, то содержимое раздела «Специфический PDU» рассматривается как адрес назначения.

c87e944d6d0d1ef5d452a4f430f29006.png

Это называется PGN в формате PDU 1 или специфическим PGN. PGN в формате PDU 1 может быть отправлен непосредственно на адрес назначения с использованием связи «точка-точка».

8321246abcf8b59a1a032cf398c9d3e6.png

Набор устройств в автомобиле это статическая компьютерная сеть в которой адреса и топология сети были предопределены на момент сборки автомобиля. Это и понятно. Ведь у автомобиля во время езды не появится пятого колеса. Распределение адресов и топология такой сети остаются неизменными на протяжении всего жизненного цикла автомобиля.

Для каждого ЭБУ, который передает данные в формате J1939 n/w, требуется правильный адрес. Адрес узла представляет собой 8-битное число, которое может быть присвоено только одному узлу (статическая сеть).

Широко вещательные пакеты
Пакет также может быть отправлен глобально с использованием глобального адреса (255). Таким образом, специфический PGN может быть передан глобально всем узлам сети. Если значение сегмента PDU Format равно или больше 240, это указывает на то, что сегмент PDU Specific функционирует как групповое расширение. В этом случае адрес назначения отсутствует. Сообщение будет передано всем узлам сети. PDU Format и PDU Specific вместе образуют 16-битное значение, соответствующее номеру группы параметров (PGN). В упомянутом случае, когда PDU Format равен 2, это называется PGN.

Сетевой уровень
Протокол определяет сетевой уровень модели ISO. У каждого устройства есть 8-битный адрес (SA). Этот адрес вкладывается в каждый отправляемый пакет.

Отправка огромных пакетов по J1939-21 (транспортный протокол)

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

7a00ca934c6d63ff0a62956e3a9907fd.png

На стороне назначения отдельные кадры сообщений должны быть приняты и проанализированы, а исходное сообщение должно быть собрано заново из полученных пакетов.
Когда для заданной группы параметров требуется от 9 до 1785 байт данных, передача этих данных осуществляется в нескольких кадрах данных CAN. Это многопакетный PGN. Когда конкретная группа параметров имеет 9 или более байт данных для передачи, используется «Функция транспортного протокола». Функция транспортного протокола обеспечивает управление потоком и квитирование для передачи данных в зависимости от пункта назначения. Все кадры данных CAN, связанные с конкретным многопакетным ответом, должны иметь DLC равный 8. Группы параметров определяются как многопакетные и используют транспортный протокол только тогда, когда количество отправляемых байтов данных превышает восемь. Интервал между пакетами для широковещательных сообщений Multipackets должен составлять от 50 до 200 мс.

Пакеты данных принимаются последовательно. Каждый пакет данных многопакетного сообщения должен быть собран в порядке порядковых номеров в единую строку байтов. Эта строка байтов передается приложению, ответственному за обработку большого сообщения. Управление соединениями занимается открытием, использованием и закрытием виртуальных соединений между узлами для передачи данных, специфичных для конкретного получателя.
Виртуальное соединение в среде SAE J1939 может рассматриваться как временное соединение двух узлов с целью передачи одного большого сообщения, описываемого одним параметром (номер группы)

В случаях, когда соединение осуществляется от одного узла ко многим, управление потоком или закрытие соединения не предусмотрены. Соединение устанавливается, когда узел отправляет сообщение «Запрос на отправку» (Request to Send) на адрес назначения. Сообщение «Запрос на отправку» содержит размер всего сообщения в байтах, количество отдельных сообщений, в которых оно будет передано, максимальное количество пакетов, которые могут быть отправлены в ответ на один запрос на отправку, и номер группы параметров (Parameter Group) передаваемого сообщения.

ca4d5f45a9319c6ae61c4f0bd942bf74.png

В процессе пакетизации сообщений пакетам для передачи по сети присваиваются порядковые номера, которые затем используются при приеме пакетов для их повторной сборки в сообщение. Отдельным пакетам присваиваются порядковые номера, начиная с единицы и продолжая последовательно до тех пор, пока все сообщение не будет упаковано и передано.

Пакет запрос на отправку подтверждается пакетом Clear to Send (CTS).

78cc6b6a1caf28614b070071df38e8d8.png

Пакеты отправляются последовательно в порядке возрастания, начиная с пакета 1. Для целей данного протокола большим сообщением считается группа параметров, связанная со строкой из 9 или более байтов. Первый пакет передачи данных содержит порядковый номер =1 и первые 7 байтов строки. Вторые 7 байтов помещаются в другой пакет.

Пакет End of Message Acknowledgment посылается приемником большого сообщения прямо передатчику, чтобы сказать, что полное сообщение принято и собрано корректно.

06acca741bbaa32ccc143aa55a5cfe1d.png

Вот так можно представить сессию передачи огромного PGN. Максимальный размер PGN может быть 1785 байт.

bb0ad9f4540ad4da88eba243e30135dd.png

Интерпретация данных

Параметры передаются как сигналы в поле полезных данных CAN пакета. У каждого сигнала есть метаданные, согласно которым в программе надо интерпретировать биты в пакете.

e99bb9f8df940c1baff6c74bd6b2ad05.png

Достоинства протокола J1939
1) Протокол построен по принципу "мультимастер", где все устройства (узлы) равноправны. Это означает, что выход из строя одного из них не парализует всю CAN сеть .
2) Универсальность.
3) Многие параметры передаются атомарно. Данные выдаются без запроса. Происходит трансляция. J1939 построен на модели широковещательной рассылки (broadcast) . Это как радио: каждый блок управления (ECU) постоянно передает свои параметры в общую сеть, а остальные просто слушают то, что им нужно. Для диагностики параметров автомобиля достаточно просто подключиться к CAN в любом месте и слушать шину в режиме read only. Красота!

Недостатки протокола J1939
1) Отсутствие безопасности. Нет диагностических сессий. Нет ключей-паролей для опасных операций.
2) Низкая пропускная способность.
3) Платный стандарт: Полный доступ к официальной документации и спецификациям SAE является платным, что создает дополнительный финансовый барьер для разработчиков.

Итоги

Удалось получить начальное представление о том, что такое протокол J1939. Рассмотрена структура J1939-пакетов. Разобран транспортный протокол в стандарте J1939.

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

Словарь в контексте протокола J1939

Сокращение

Расшифровка

SAE

Society of Automotive Engineers

BAM

Broadcast Announce Message

DBC

CAN database

DA

Destination Address

CTS

Clear to Send

SA

Source Address

PG

Parameter Groups

DTC

диагностические коды неисправностей

DM

Diagnostics Messages

PDU

Protocol Data Unit

SAE 

Society of Automotive Engineers

RTS

Request to Send, Запрос на отправку

OEM

Original Equipment Manufacturer

CAN

Controller Area Network

OSI

Open System Interconnect

ECU (ЭБУ)

electronic control units

SLOT 

Scaling, Limit, Offset and Transfer Function

ЭБУ

Электронный блок управления

SPN

Suspect Parameter Number

PGN

Parameter Group Number

Ссылки

Вопросы
1) Какой транспортный протокол использует протокол J1939? Свой собственный. Это не ISO-TP. Совсем другое.
2) Используется ли в J1939 протокол ISO-TP? Нет.
3) Где можно скачать *.DBC файл для протокола J1939 со всеми стандартизованными PGN и SPN для всех ключевых параметров колёсного транспорта?

4) Почему J1939 не используется в легковых автомобилях? OBD-II для массовых авто: Для легковых автомобилей и легких грузовиков стандартом де-факто является OBD-II (On-Board Diagnostics, version II) . Его внедрение в середине 1990-х годов было продиктовано законодательными требованиями (EPA, CARB) по контролю выбросов вредных веществ . OBD-II — это, в первую очередь, диагностический протокол, а не система управления всеми узлами автомобиля. Использование J1939 в легковом автомобиле было бы неоправданно сложным и дорогим. Легковые автомобили пошли по пути OBD-II, который оказался более простым, дешевым и идеально подходящим для решения главной задачи — контроля токсичности выхлопа, которая и была основной причиной его появления.

5) Зачем потребовался протокол UDS, когда уже существовал J1939?
6) Зачем потребовался протокол XCP, когда уже существовал J1939?
7) Есть ли консольная утилита, которая по введенному CAN ID указывает на то, что лежит в CAN пакете и по каким отступам и с какими метаданными для интерпретации?
8) Есть ли *.dbc файл, который содержит внутри себя все стандартные PGN номера для CAN пакетов и SPN параметров протокола J1939?

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Проголосовали 3 пользователя. Воздержавшихся нет.

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1✖️ «Не парь мозги, отключи эту Евро-5!» Половина владельцев современных ...08.2612-08-2026
2"Камаз" планирует начать выпуск грузовиков К5 в феврале 2023 года0026-11-2022
3В УрФО в четырех регионах ограничили движение грузовиков из-за жары016.2931-07-2026
4China’s New Energy Heavy-Duty Truck Fleet to Exceed 1.6 Million by 2030014.2223-07-2026
5Росстандарт ограничил продажу грузовиков Dongfeng и Zoomlion в России09.0405-08-2026
6Продажи грузовиков в России снизились на 7–19% в первом полугодии0707-07-2026
7Росстандарт ввел запрет на продажу сразу нескольких китайских грузовиков в РФ012.9106-08-2026
8Европейские авто и так стоят несуразных денег, несмотря на большую ...-5608-07-2026
9В Минпромторге ожидают сокращения продаж автомобилей в России в 2019 году максимум на 3%0025-12-2019

Классификация: . Схожих патентов: 0. Схожих новостей: 9. Тональность: 0. Информативность: 7.96. Источник: habr.com.