SAE J1939 — это международный стандарт коммуникационной и диагностической сети, созданный для тяжелой техники: грузовых автомобилей, автобусов, сельскохозяйственных и лесных машин, строительной и горной техники, дизельных электростанций. В качестве канального уровня сеть использует шину CAN 2.0b с расширенными 29-битными идентификаторами; типовая скорость обмена — 250 кбит/с (в новых реализациях встречается 500 кбит/с).
На базе J1939 построен ряд отраслевых стандартов:
Благодаря этому один и тот же подход к диагностике работает на большинстве единиц тяжелого транспорта вне зависимости от марки — от магистрального тягача до зерноуборочного комбайна.
В сети J1939 неисправности передаются специальными диагностическими сообщениями. Активный код диагностики (active Diagnostic Trouble Code, далее — aDTC; в стандарте — сообщение DM1, «Active Diagnostic Trouble Codes») сигнализирует о неисправности, которая существует прямо сейчас. Это ключевое отличие от «накопленных» (ранее активных) кодов: aDTC показывает текущее, а не историческое состояние узлов.
Каждый активный код диагностики содержит:
| Элемент | Назначение |
|---|---|
| Адрес источника | Какой блок (ЭБУ) сообщил о неисправности: двигатель, КПП, тормозная система и т. д. Адреса закреплены за отраслевыми группами узлов стандартом SAE J1939. |
| SPN (Suspect Parameter Number) | Номер сбойного параметра — что именно неисправно (например, температура охлаждающей жидкости, давление во впускном коллекторе). |
| FMI (Failure Mode Identifier) | Идентификатор режима отказа — как именно проявляется неисправность (выход за диапазон, обрыв, замыкание, нет связи и т. д.). |
| Счетчик событий (Occurrence Count) | Сколько раз неисправность была обнаружена. |
| Состояние диагностических ламп | Включение и режим мигания четырех ламп приборной панели (см. ниже). |
Связка SPN + FMI однозначно описывает неисправность: SPN говорит «где», FMI — «что происходит». Например, SPN 110 (температура охлаждающей жидкости) + FMI 0 означает «температура выше нормального диапазона — наиболее серьезный уровень».
Вместе с кодами J1939 передает состояние четырех стандартных ламп водителя — это позволяет понять, насколько критична ситуация:
Для каждой лампы передается как факт включения (выключена / включена), так и режим мигания (медленное / быстрое / нет мигания).
FMI — это стандартизованный справочник из 32 значений, общий для всех производителей. Полная расшифровка:
| 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 отсутствует) |
Терминалы Galileosky умеют читать активные коды диагностики из шины CAN по протоколу SAE J1939 средствами встроенной технологии Easy Logic и передавать их на сервер мониторинга. Waliot выступает приемной стороной: принимает эти данные, разбирает их и выводит в ПО как готовую к использованию телеметрию.
30020 (нативный протокол GALILEOSKY, поддерживается в т. ч. передача по спутниковому каналу Iridium). Подробнее — в статье «Совместимое оборудование и протоколы».Для работы с Waliot терминал Galileosky должен быть прошит на хост
device.waliot.comс указанием порта30020.
Прием активных кодов диагностики поддерживается на программируемых терминалах Galileosky с актуальными прошивками. Полная поддержка SPN-кодов диагностических ошибок J1939 в Waliot — результат совместной работы с Galileosky.
После разбора структуры Waliot предоставляет по каждому объекту полный состав диагностической информации:
Эти данные доступны как атрибуты телеметрии объекта. В номенклатуре параметров Waliot им соответствуют, в частности:
| Параметр Waliot | Описание |
|---|---|
attributes[canDTC] |
Код неисправности CAN |
attributes[spnX_addrY] |
Коды SPN (X — код, Y — адрес источника) |
attributes[canFlags], attributes[canAlarms] |
Флаги состояния и аварийные индикаторы CAN |
Полный справочник соответствия имен CAN-параметров — в статье «Переход из других систем» → соответствие параметров (раздел «CAN-шина»).
Поскольку коды диагностики — это обычная телеметрия объекта, к ним применим весь арсенал платформы:
Подробная процедура описана в документации Galileosky — статья «Алгоритм для приема активных кодов диагностики SAE J1939» в базе знаний Galileosky. Здесь — только опорные шаги, чтобы понимать целостную картину:
SCRIPT galileosky/j1939adtcp0 (для CAN0) или SCRIPT galileosky/j1939adtcp1 (для CAN1).device.waliot.com, порт 30020, применить настройки и перезагрузить.Важно. Архив точек должен записываться во внутреннюю флеш-память терминала. При выборе microSD-карты диагностические данные могут не отправляться на сервер.
После этого активные коды диагностики начнут поступать в Waliot автоматически.
30020).