SAE J1939
SAE J1939 — это набор стандартов, определяющих, как обмениваются данными через шину CAN транспортных средствах большой грузоподъемности (общий протокол для всех производителей).
J1939 описывает протокол высокого уровня, основанный на CAN в качестве «физического уровня».
Основные характеристики J1939
- Скорость передачи данных 250 кбит/c (поддержка 500 кбит/c) и 29 бит идентификатор
- Согласно J1939, максимальная длина CAN-шины составляет 50 метров.
- Большинство сообщений широковещательные, хотя некоторые данные передаются по запросу
- Идентификатор состоит из 18 бит Parameter Group Numbers (PGN) номер группы параметров, где данные J1939 называются Suspect Parameter Numbers (SPN) Ожидаемыми номерами параметров.
- Механизм отправки сообщений размером более 8 байт (до 1785 байт) с использованием транспортного протокола.
- Возможность приложения-контроллера согласовывать уникальный адрес источника.
- PGN: 00FF00 по 00FFFF зарезервированны для частного испрользования
- Байт данных: 0xFF отсутствие данных, 0xFE ошибка
- SAE (Society of Automotive Engineers) Ассоциация Автомобильных Инженеров J1939 определяет процедуру назначения исходных адресов блокам управления J1939 после инициализации сети через 8-битный адрес динамическим способом.
PGN
Номер группы параметров PGN
J1939 PGN содержит 18-бит из 29-битного расширенного CAN ID.
Сообщение J1939 содержит все элементы протокольного блока данных (PDU).
- 3-bit Priority
- 1-bit Extended Data Page (EDP) ~ Reserved
- 1-bit Data Page (DP)
- 8-bit PDU Format (PF)
- 8-bit PDU Specific (PS)
- 8-bit Source Address (SA)
- Data Field up to 1785 bytes
Формат PDU (PF) определяет, может ли сообщение быть передано с адресом назначения или сообщение всегда передается как широковещательное сообщение.
PF >= 0xF0 ( 240), то есть это широковещательное сообщение PDU2
PF < 0xF0 ( 240), то есть адресное сообщение
Формат PDU 2 предназначен для широковещательных сообщений.
Формат PDU 1 предназначен для сообщений «адресных».
PDU1 или PDU2
- PDU1, PF < 240 : PS - это адрес назначения
- PDU2, PF > 240: PS - номер группы
SPN
Номер ожидаемого параметра J1939 SPN
служит идентификатором сигналов CAN (параметров), содержащихся в байтах данных.
SPN1 стартовый бит 4, длина 8 бит SPN2 стартовый бит 24, длина 16 бит
Пример сообщения
_ _ ________ ________ 18bit
CCB8006 X11_0_0_11001011_10000000_00000110
PF PS SA
P 3 (X11)
EDP 0
DP 0
PF CB (11001011) = 203 < 240 (PS это адрес назначения)
PS 80 (10000000)
SA 6 (00000110)
PGN CB00 Process Data Message
BAM/TP Сообщения
BAM (Broadcast Announcement Messages) Анонсирование широковещательных сообщений
Обработка CAN-идентификаторов
PRIORITY_MASK = 0x1C000000
EDP_MASK = 0x02000000
DP_MASK = 0x01000000
PF_MASK = 0x00FF0000
PS_MASK = 0x0000FF00
SA_MASK = 0x000000FF
PDU1_PGN_MASK = 0x03FF0000
PDU2_PGN_MASK = 0x03FFFF00