Активные коды диагностики J1939 (aDTC)
Активные коды диагностики (aDTC) — это сообщения о текущих неисправностях, которые блоки управления передают в CAN-шину по протоколу SAE J1939. Алгоритм EasyLogic принимает их и упаковывает в тег пользовательского массива для передачи на сервер мониторинга.
Минимальные версии прошивки: 10 — 1.1, 7x — 38.25.
Если в конфигурации прибора есть раздел Протокол J1939DA, параметры по номерам SPN разбираются прошивкой без всяких алгоритмов — см. Настройка CAN: режимы и мастер. Этот алгоритм нужен именно для кодов неисправностей, а не для значений параметров.
Подготовка
Заголовок раздела «Подготовка»-
Подключите прибор к CAN-шине ТС — см. Подключение прибора к CAN-шине.
-
В разделе Система конфигурации прибора включите модули CAN и Запись архива точек в память.
-
В разделе Сканер CAN для порта, к которому подключена шина, задайте скорость из документации на ТС и режим EasyLogic: ⚙ Открыть настройки CAN.
-
В разделе Протокол отметьте тег Массив пользователя для передачи на сервер.
-
Загрузите алгоритм. По сети (нужен доступ прибора в интернет по GPRS или Wi-Fi):
SCRIPT galileosky/j1939adtcp0 для порта CAN 0SCRIPT galileosky/j1939adtcp1 для порта CAN 1При локальном подключении алгоритм заливается бинарным файлом во вкладке EasyLogic.
-
Примените настройки и перезагрузите прибор.
Как работает алгоритм
Заголовок раздела «Как работает алгоритм»Алгоритм фильтрует сообщения шины по наличию в них 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) и счётчик событий.
Раскладка байт
Заголовок раздела «Раскладка байт»| Байт | Значение | Описание | Параметр сервера |
|---|---|---|---|
| 0 | 0x7F | тип данных — универсальная структура | |
| 1 | 0x21 | описатель группы — 3 однобайтных числа | |
| 2 | адрес источника | upar0 | |
| 3 | состояние включения ламп | upar1 | |
| 4 | состояние мигания ламп | upar2 | |
| 5 | 0x04 / 0x24 | описатель — 1 или 3 четырёхбайтных числа | |
| 6 | SPN ver.4(3) | upar3 | |
| 10 | / 0x10 | SPN ver.1 / описатель — пропуск 2 чисел | upar4 / — |
| 14 или 11 | / 0x11 | SPN ver.2 / описатель — 2 однобайтных числа | upar5 / — |
| 18 или 12 | 0x11 / | описатель — 2 однобайтных числа / FMI | — / upar6 |
| 19 или 13 | FMI / счётчик событий | upar6 / upar7 | |
| 20 или 14 | счётчик событий / описатель следующей группы | upar7 / — |
Номера параметров сервера внутри группы N (нумерация групп с нуля):
| Параметр aDTC | Формула | Примеры |
|---|---|---|
| SPN ver.4(3) | upar(5N+3) | upar3, upar8, upar13, upar18… |
| SPN ver.1 | upar(5N+4) | upar4, upar9, upar14, upar19… |
| SPN ver.2 | upar(5N+5) | upar5, upar10, upar15, upar20… |
| FMI | upar(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, FMI и счётчик событий
Заголовок раздела «SPN, FMI и счётчик событий»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 0224 69000000 00480300 48030000 11 03 017F— тип данных,21— описатель: 3 однобайтных числа;00—upar0, адрес источника 0 («Двигатель 1»);01—upar1: включена лампа защиты, остальные выключены;FF—upar2: все лампы не мигают;04— описатель: 1 четырёхбайтное число;6E000000—upar3, SPN = 0x6E = 110 («Температура жидкости в системе охлаждения двигателя»);10— описатель: пропуск 2 чисел (значит, вupar3SPN версии 4, версий 1 и 2 нет);11— описатель: 2 однобайтных числа;03—upar6, FMI = 3;01—upar7, счётчик = 1;- далее по той же схеме идёт вторая группа (SPN 0x66 = 102, «Давление
во впускном коллекторе №1») и третья, у которой описатель
24— три четырёхбайтных числа, то есть переданы SPN всех трёх версий.
См. также: Настройка CAN: режимы и мастер · Подключение прибора к CAN-шине · Вопросы: алгоритмы EasyLogic