Перейти к содержимому
Черновик: материал сгенерирован и ещё не вычитан.

Активные коды диагностики J1939 (aDTC)

Активные коды диагностики (aDTC) — это сообщения о текущих неисправностях, которые блоки управления передают в CAN-шину по протоколу SAE J1939. Алгоритм EasyLogic принимает их и упаковывает в тег пользовательского массива для передачи на сервер мониторинга.

Минимальные версии прошивки: 10 — 1.1, 7x — 38.25.

Если в конфигурации прибора есть раздел Протокол J1939DA, параметры по номерам SPN разбираются прошивкой без всяких алгоритмов — см. Настройка CAN: режимы и мастер. Этот алгоритм нужен именно для кодов неисправностей, а не для значений параметров.

  1. Подключите прибор к CAN-шине ТС — см. Подключение прибора к CAN-шине.

  2. В разделе Система конфигурации прибора включите модули CAN и Запись архива точек в память.

  3. В разделе Сканер CAN для порта, к которому подключена шина, задайте скорость из документации на ТС и режим EasyLogic: ⚙ Открыть настройки CAN.

  4. В разделе Протокол отметьте тег Массив пользователя для передачи на сервер.

  5. Загрузите алгоритм. По сети (нужен доступ прибора в интернет по GPRS или Wi-Fi):

    SCRIPT galileosky/j1939adtcp0 для порта CAN 0
    SCRIPT galileosky/j1939adtcp1 для порта CAN 1

    При локальном подключении алгоритм заливается бинарным файлом во вкладке EasyLogic.

  6. Примените настройки и перезагрузите прибор.

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

Ход работы виден во вкладке Диагностика при включённом канале Диагностика алгоритмов и скриптов.

Префикс can<N> в сообщениях — номер CAN-шины, с которой идёт приём.

СообщениеЧто означает
regime?не удаётся определить установленный режим CAN — обратитесь в поддержку
init!,br=<N> / init?,br=<N>инициализация порта прошла / не прошла. Исправьте параметры шины, освободите память, отключив неиспользуемые модули прошивки или удалив другие алгоритмы, и перезагрузите прибор
no infoнет потока CAN-сообщений 20 секунд — проверьте подключение и параметры шины
aDTC read?сообщения идут, но кодов в них нет 20 секунд — возможно, вы подключились не к той шине ТС (их бывает несколько)
er=<N>ошибка приёма aDTC (коды ниже)
a=<N>,lmpSt=<N>,flashL=<N>адрес источника, состояние включения и мигания диагностических ламп
spn 1=<N>,2=<N>,34=<N>;fmi=<N>,oc=<N>номера проблемных параметров (−1 — не определён), режим отказа и счётчик событий

Коды ошибок: -6 — прерывание последовательности сообщений (проблемы со связью); -7 — истекло время ожидания части сообщения (проблемы со связью или слишком плотный поток aDTC).

В теге массива пользователя универсальной структуры передаются: адрес источника диагностического сообщения, состояние включения четырёх диагностических ламп, состояние их мигания и одна или несколько групп aDTC. Каждая группа — это один или три SPN, идентификатор режима отказа (FMI) и счётчик событий.

БайтЗначениеОписаниеПараметр сервера
00x7Fтип данных — универсальная структура
10x21описатель группы — 3 однобайтных числа
2адрес источникаupar0
3состояние включения лампupar1
4состояние мигания лампupar2
50x04 / 0x24описатель — 1 или 3 четырёхбайтных числа
6SPN ver.4(3)upar3
10/ 0x10SPN ver.1 / описатель — пропуск 2 чиселupar4 / —
14 или 11/ 0x11SPN ver.2 / описатель — 2 однобайтных числаupar5 / —
18 или 120x11 /описатель — 2 однобайтных числа / FMI— / upar6
19 или 13FMI / счётчик событийupar6 / upar7
20 или 14счётчик событий / описатель следующей группыupar7 / —

Номера параметров сервера внутри группы N (нумерация групп с нуля):

Параметр aDTCФормулаПримеры
SPN ver.4(3)upar(5N+3)upar3, upar8, upar13, upar18…
SPN ver.1upar(5N+4)upar4, upar9, upar14, upar19…
SPN ver.2upar(5N+5)upar5, upar10, upar15, upar20…
FMIupar(5N+6)upar6, upar11, upar16, upar21…
счётчик событийupar(5N+7)upar7, upar12, upar17, upar22…

Каждое оборудование, передающее по J1939, имеет свой адрес; адреса назначены по отраслевым группам и функциям. Полный список — в стандарте SAE J1939.

Состояние включения и состояние мигания — по однобайтному числу на каждое. Биты идут от старшего к младшему (76 54 32 10), по 2 бита на лампу:

БитыЛампа
7, 6индикатор неисправности
5, 4красная стоп-лампа
3, 2жёлтая лампа предупреждения
1, 0лампа защиты

Значения в поле включения: 0 — выключена, 1 — включена, 2 — для лампы индикатора неисправности «закорочен для WWH OBD» (для остальных зарезервировано), 3 — зарезервировано.

Значения в поле мигания: 0 — медленное мигание, 1 — быстрое, 2 — для лампы индикатора неисправности DTC класса C (для остальных зарезервировано), 3 — мигания нет либо значение недоступно.

Пример: 99 = 01 10 00 11b → биты 7,6 = 1; биты 5,4 = 2; биты 3,2 = 0; биты 1,0 = 3.

SPN — идентификатор параметра ТС, по которому принят код. Число SPN в группе (один или три) зависит от версии стандарта SAE J1939, реализованной в конкретном ТС. Версия 4 совпадает с версией 3, поэтому они переданы одним значением SPN ver.4(3); при обнаружении версий 1 и 2 передаются все три значения, и отказ относится к одному из них. Расшифровка номеров — в актуальном SAE J1939-DA.

FMI — идентификатор режима отказа:

FMIЗначение
0данные действительны, но выше нормального диапазона — наиболее серьёзный уровень
1данные действительны, но ниже нормального диапазона — наиболее серьёзный уровень
2данные ошибочны, прерывисты или неверны
3напряжение выше нормального или замыкание на источник высокого напряжения
4напряжение ниже нормального или замыкание на цепь низкого напряжения
5ток ниже нормального или обрыв цепи
6ток выше нормального или заземлённая цепь
7механическая система не отвечает или не отрегулирована
8аномальная частота, ширина или период импульса
9аномальная скорость обновления
10аномальная скорость изменения
11основная причина неизвестна
12неисправное интеллектуальное устройство или компонент
13выход за пределы калибровки
14специальные инструкции
15выше нормального диапазона — наименее серьёзный уровень
16выше нормального диапазона — умеренно серьёзный уровень
17ниже нормального диапазона — наименее серьёзный уровень
18ниже нормального диапазона — умеренно серьёзный уровень
19полученные сетевые данные ошибочны
20данные смещены на высокий уровень
21низкий уровень данных
22…30зарезервировано SAE
31условие существует: другого применимого FMI нет, либо в SPN указан компонент и нестандартный режим отказа, либо SPN недоступен

Счётчик событий — сколько раз неисправность обнаруживалась независимо. Диапазон 0…126; значение 127 означает, что счётчик недоступен.

Рекомендуемая стандартом комбинация: состояние включения ламп = 0, состояние мигания = 255, SPN ver.4(3) = 0, FMI = 0, счётчик = 0.

Устаревшая комбинация: состояние включения = 0, состояние мигания = 255, SPN ver.4(3) = SPN ver.1 = SPN ver.2 = 524287, FMI = 31, счётчик = 127.

Данные тега (без идентификатора тега и длины, шестнадцатерично, пробелы для читаемости):

7F 21 00 01 FF 04 6E000000 10 11 03 01 04 66000000 10 11 03 02
24 69000000 00480300 48030000 11 03 01
  • 7F — тип данных, 21 — описатель: 3 однобайтных числа;
  • 00upar0, адрес источника 0 («Двигатель 1»);
  • 01upar1: включена лампа защиты, остальные выключены;
  • FFupar2: все лампы не мигают;
  • 04 — описатель: 1 четырёхбайтное число; 6E000000upar3, SPN = 0x6E = 110 («Температура жидкости в системе охлаждения двигателя»);
  • 10 — описатель: пропуск 2 чисел (значит, в upar3 SPN версии 4, версий 1 и 2 нет);
  • 11 — описатель: 2 однобайтных числа; 03upar6, FMI = 3; 01upar7, счётчик = 1;
  • далее по той же схеме идёт вторая группа (SPN 0x66 = 102, «Давление во впускном коллекторе №1») и третья, у которой описатель 24 — три четырёхбайтных числа, то есть переданы SPN всех трёх версий.

См. также: Настройка CAN: режимы и мастер · Подключение прибора к CAN-шине · Вопросы: алгоритмы EasyLogic