
Всем привет! Меня зовут Артём Сидоров. Я ведущий разработчик из ИТ-команды «Северстали». Сегодня хочу рассказать, как мы реализовали «Универсальный сервис по сбору телеметрии с CAN-шин на технике».
Что такое CAN-шина
Для начала разберёмся, что такое CAN-шина, для чего она нужна и как с ней работать. Если совсем просто, то CAN (Controller Area Network) шина – цифровая сеть в современных автомобилях, обеспечивающая обмен данными между различными электронными узлами (устройствами) управления. Передача происходит по двухпроводной витой паре.

Принцип работы
Совокупность устройств (узлов) подключается к одной линии связи по двухпроводной витой паре, причём каждое устройство может как передавать, так и принимать данные. Сигнал CAN можно представить следующей схемой:
идентификатор;
данные;
контрольная сумма.
CAN-шина имеет различные стандарты, в нашей работе почти всегда используется «SAE J1939» стандарт, так как это стандарт тяжёлых транспортных средств.
Для чего понадобился сервис?
Сервис нужен для сбора телеметрии транспортного средства (ТС). После сбора и расшифровки данных можно провести анализ и выяснить, в каком состоянии ТС и когда его нужно ремонтировать, и в каком узле. Наша команда сразу захотела подкинуть нейронку для обучения и на основании её предсказаний составлять планы на ремонт. На текущий момент это на стадии проектирования, но пока не об этом.

Также эта информация сильно поможет работе предприятия. Например, по работе подвески возможно вычислять плохие участки дороги, по весу в кузове можно узнать, сколько руды и породы было вывезено из определённого сектора и т. д.
Описание сервиса
Перейдём к главному: сервис разработан на языке программирования C# и является Windows Service, который получает настройки по приёму сигналов из базы данных на MS SQL Server и получает данные относительно этих настроек по протоколу TCP.
На стороне ТС находится устройство приёма, а именно CAN-преобразователь. Он получает данные с CAN-шины и отправляет их по Ethernet. Для работы был куплен промышленный CAN-преобразователь. Пример на картинке ниже:

После получения сигнала сервис проверяет, является ли значение критическим. Если нет, то проверяет, попадает ли в период забора. Часто сигналы отправляются с периодом в 10-100 мс для того, чтобы не засорять БД, мы ограничили забор относительно наших потребностей. Также в БД находится CANID и по каким параметрам расшифровывать сигналы. Например, в одном блоке данных и под одним CANID могут находиться несколько значений по разным сигналам, поэтому нужно знать, с какого по какой бит мы должны взять данные, а также, на какое значение мы должны умножить и прибавить значение.
Пример того, как выглядят настройки в системе
Наименование сигнала |
PGN |
Адрес отправителя |
с * байта |
по * байт |
Множитель |
Шаг |
Интервал записи |
Тип интервала записи |
Инклинометр Y |
0xF013 |
0x2B |
3 |
4 |
0,01 |
-90 |
15 |
минута |
После отбора нужных сигналов данные записываются в БД и расшифровываются.

В качестве примера работы сервиса можно поставить наш монитор работы автосамосвалов (АС). В этом мониторе сигналы разделены на группы ABC, что помогает быстро понять, в какой системе АС произошла проблема.

Итоги проведённой работы
По итогу сервис выглядит максимально просто, основная логика расшифровки находится на стороне сервера, для быстрой реализации чего-то нестандартного. На этапе планирования была идея паять CAN-преобразователи самим, но это было нецелесообразно, так как проще купить готовое решение. На рынке таких много, и почти все они работают по одному принципу. Есть достаточно дешёвые и крепкие образцы.
Этот сервис мы используем на многих видах карьерной техники и других устройствах, благодаря нему мы смогли предсказывать возможные поломки транспорта и устранять их до наступления более глобальных и дорогих неисправностей. Также мы получили доступ к большому количеству данных, с помощью которых мы можем улучшить работу предприятия и сократить затраты.

Комментарии (18)
Terranz
29.08.2025 12:00На чем обработка телеметрии написана? Какая шина внутри?
profesor464 Автор
29.08.2025 12:00Спасибо за комментарий! Сервис по сбору данных написан на C#, сервер для хранения MS SQL, обработка на T-SQL или машинное обучение (пока на стадии проектирования). Шина с протоколом J1939, больше рассказывать будет не корректно.
EmCreatore
29.08.2025 12:00Спорный подход. CAN был придуман не AI. Выборки будут с нестабильным интервалом и достаточно редкие чтобы реально распознавание по вибрациям делать.
Тут лучше бы подошел CAN FD.
Старый J1939 нужен конечно , но это же сплошные закрытые PGN/SPN .profesor464 Автор
29.08.2025 12:00Спасибо за комментарий! Данные с интервалом 10 мс, но да бывают и просадки. PGN/SPN закрыты, но мы или рассшифровываем, либо запрашиваем. Больше, конечно, мы используем для получения состояния транспорта или веса и другой телеметрии
almaz1c
29.08.2025 12:00сплошные закрытые PGN/SPN
Без расшифровки пакетов CAN в около автомобильной электронике никуда. Работал как-то в компании, выпускающей автомобильную сигнализацию - сотни моделей авто от десятков производителей и все их нужно поддерживать. Добавление каждой новой модели авто начиналось с реверс-инжиниринга протокола CAN шины. Вот тут можно глянуть как это происходит.
EmCreatore
29.08.2025 12:00Во-первых, реверс - это не законно. И никогда не знаешь в какой стране продавца такой продукции либо оштрафуют, либо привлекут.
Во-вторых, про реверс протоколов - сказки. Протоколы брутально восстанавливают из прошивок вскрытых чипов фирменных сервисных тулсов. Чипы вскрывают инвазивным способом в промышленных масштабах. И тоже незаконно.
И наконец постоянный головняк от смены PGN/SPN и постоянная гонка за актуальными версиями. Хуже дела трудно предствить себе.Еще, конечно, прикольно при чем тут Высоконагруженные системы
lelik363
29.08.2025 12:00Производители авто не предоставлял протоколы?
almaz1c
29.08.2025 12:00Нет, конечно. Сразу же упадут доходы самого автопроизводителя и официальных дилеров. Клиентская база на обслуживание, ТО и ремонт сразу же уйдет от официалов в гараж к дяде Васе. А там сразу же начнутся проблемы с надежностью и безопасностью автомобилей. Что сразу же потянет репутационные потери. Что сразу же приведет к падению продаж.
lelik363
29.08.2025 12:00Я, наверное, что то пропустил. Есть ТС, Есть преобразователь шины CAN. А где находится вычислитель, БД и как происходит взаимодействие?
legustarasov
29.08.2025 12:00Поддерживаю вопрос. Не понял из статьи: на каждое ТС (я так понимаю здоровенный грузовик) устанавливается миниатюрный компьютер, который занимается сбором телеметрии? Т.е. БД и обработка находятся на каждом ТС? Или информация с CAN шины через преобразователь сбрасывается по мобильной сети на сервер, который установлен в компании и там уже все обрабатывается с привязкой к конкретному ТС?
Indemsys
29.08.2025 12:00Я как понял, ничего там не обрабатывается.
AI еще не прекрутили и идей нет как прикрутить.
И не будет в ближайшем будущем, поскольку AI до сих пор хорошо работает только в дискретном пространстве слов, а в физическом аналоговом мире он полный дуб.
Да и отсчет в 10 мс - это ни о чем.
Поэтому просто строят графики и выводят таблицы. Как и наши деды.
aleex
Какие данные по работе подвески вам доступны через CAN?
profesor464 Автор
Спасибо за комментарий! Давление на опоры, благодаря анализу этих данных можем составлять карты неровности дорог
aleex
Вес груза видимо тоже оттуда как низкочастотная компонента?
profesor464 Автор
Да