Всем привет! Меня зовут Артём Сидоров. Я ведущий разработчик из ИТ-команды «Северстали». Сегодня хочу рассказать, как мы реализовали «Универсальный сервис по сбору телеметрии с CAN-шин на технике».

Что такое CAN-шина

Для начала разберёмся, что такое CAN-шина, для чего она нужна и как с ней работать. Если совсем просто, то CAN (Controller Area Network) шина – цифровая сеть в современных автомобилях, обеспечивающая обмен данными между различными электронными узлами (устройствами) управления. Передача происходит по двухпроводной витой паре.

 

Пример объединения узлов автомобиля в CAN-шине
Пример объединения узлов автомобиля в CAN-шине

Принцип работы

Совокупность устройств (узлов) подключается к одной линии связи по двухпроводной витой паре, причём каждое устройство может как передавать, так и принимать данные. Сигнал CAN можно представить следующей схемой: 

  1. идентификатор;

  2. данные;

  3. контрольная сумма. 

CAN-шина имеет различные стандарты, в нашей работе почти всегда используется «SAE J1939» стандарт, так как это стандарт тяжёлых транспортных средств.

Для чего понадобился сервис?

Сервис нужен для сбора телеметрии транспортного средства (ТС). После сбора и расшифровки данных можно провести анализ и выяснить, в каком состоянии ТС и когда его нужно ремонтировать, и в каком узле. Наша команда сразу захотела подкинуть нейронку для обучения и на основании её предсказаний составлять планы на ремонт. На текущий момент это на стадии проектирования, но пока не об этом.

Ох уж эти нейросети
Ох уж эти нейросети

Также эта информация сильно поможет работе предприятия. Например, по работе подвески возможно вычислять плохие участки дороги, по весу в кузове можно узнать, сколько руды и породы было вывезено из определённого сектора и т. д.

 Описание сервиса

Перейдём к главному: сервис разработан на языке программирования C# и является Windows Service, который получает настройки по приёму сигналов из базы данных на MS SQL Server и получает данные относительно этих настроек по протоколу TCP. 

На стороне ТС находится устройство приёма, а именно CAN-преобразователь. Он получает данные с CAN-шины и отправляет их по Ethernet. Для работы был куплен промышленный CAN-преобразователь. Пример на картинке ниже: 

CAN-преобразователь
CAN-преобразователь

После получения сигнала сервис проверяет, является ли значение критическим. Если нет, то проверяет, попадает ли в период забора. Часто сигналы отправляются с периодом в 10-100 мс для того, чтобы не засорять БД, мы ограничили забор относительно наших потребностей. Также в БД находится CANID и по каким параметрам расшифровывать сигналы. Например, в одном блоке данных и под одним CANID могут находиться несколько значений по разным сигналам, поэтому нужно знать, с какого по какой бит мы должны взять данные, а также, на какое значение мы должны умножить и прибавить значение.  

Пример того, как выглядят настройки в системе

Наименование сигнала

PGN

Адрес отправителя

с * байта

по * байт

Множитель

Шаг

Интервал записи

Тип интервала записи

Инклинометр Y

0xF013

0x2B

3

4

0,01

-90

15

минута

После отбора нужных сигналов данные записываются в БД и расшифровываются. 

Примерно так это можно изобразить на схеме
Примерно так это можно изобразить на схеме

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

Монитор работы АС
Монитор работы АС

Итоги проведённой работы

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

Этот сервис мы используем на многих видах карьерной техники и других устройствах, благодаря нему мы смогли предсказывать возможные поломки транспорта и устранять их до наступления более глобальных и дорогих неисправностей. Также мы получили доступ к большому количеству данных, с помощью которых мы можем улучшить работу предприятия и сократить затраты.

Комментарии (18)


  1. aleex
    29.08.2025 12:00

    Какие данные по работе подвески вам доступны через CAN?


    1. profesor464 Автор
      29.08.2025 12:00

      Спасибо за комментарий! Давление на опоры, благодаря анализу этих данных можем составлять карты неровности дорог


      1. aleex
        29.08.2025 12:00

        Вес груза видимо тоже оттуда как низкочастотная компонента?


        1. profesor464 Автор
          29.08.2025 12:00

          Да


  1. Terranz
    29.08.2025 12:00

    На чем обработка телеметрии написана? Какая шина внутри?


    1. profesor464 Автор
      29.08.2025 12:00

      Спасибо за комментарий!  Сервис по сбору данных написан на C#, сервер для хранения MS SQL, обработка на T-SQL или машинное обучение (пока на стадии проектирования). Шина с протоколом J1939, больше рассказывать будет не корректно.


      1. Terranz
        29.08.2025 12:00

        Не, я про шину типа кафка-стримов или что-то такое, шина сообщений


      1. SaNNy32
        29.08.2025 12:00

        А почему Windows? А как же импортозамещение?


  1. EmCreatore
    29.08.2025 12:00

    Спорный подход. CAN был придуман не AI. Выборки будут с нестабильным интервалом и достаточно редкие чтобы реально распознавание по вибрациям делать.
    Тут лучше бы подошел CAN FD.
    Старый J1939 нужен конечно , но это же сплошные закрытые PGN/SPN .


    1. profesor464 Автор
      29.08.2025 12:00

      Спасибо за комментарий! Данные с интервалом 10 мс, но да бывают и просадки. PGN/SPN закрыты, но мы или рассшифровываем, либо запрашиваем. Больше, конечно, мы используем для получения состояния транспорта или веса и другой телеметрии


    1. almaz1c
      29.08.2025 12:00

      сплошные закрытые PGN/SPN

      Без расшифровки пакетов CAN в около автомобильной электронике никуда. Работал как-то в компании, выпускающей автомобильную сигнализацию - сотни моделей авто от десятков производителей и все их нужно поддерживать. Добавление каждой новой модели авто начиналось с реверс-инжиниринга протокола CAN шины. Вот тут можно глянуть как это происходит.


      1. EmCreatore
        29.08.2025 12:00

        Во-первых, реверс - это не законно. И никогда не знаешь в какой стране продавца такой продукции либо оштрафуют, либо привлекут.
        Во-вторых, про реверс протоколов - сказки. Протоколы брутально восстанавливают из прошивок вскрытых чипов фирменных сервисных тулсов. Чипы вскрывают инвазивным способом в промышленных масштабах. И тоже незаконно.
        И наконец постоянный головняк от смены PGN/SPN и постоянная гонка за актуальными версиями. Хуже дела трудно предствить себе.

        Еще, конечно, прикольно при чем тут Высоконагруженные системы


        1. almaz1c
          29.08.2025 12:00

          реверс - это не законно

          Вот так вот безапелляционно?)


      1. lelik363
        29.08.2025 12:00

        Производители авто не предоставлял протоколы?


        1. almaz1c
          29.08.2025 12:00

          Нет, конечно. Сразу же упадут доходы самого автопроизводителя и официальных дилеров. Клиентская база на обслуживание, ТО и ремонт сразу же уйдет от официалов в гараж к дяде Васе. А там сразу же начнутся проблемы с надежностью и безопасностью автомобилей. Что сразу же потянет репутационные потери. Что сразу же приведет к падению продаж.


  1. lelik363
    29.08.2025 12:00

    Я, наверное, что то пропустил. Есть ТС, Есть преобразователь шины CAN. А где находится вычислитель, БД и как происходит взаимодействие?


    1. legustarasov
      29.08.2025 12:00

      Поддерживаю вопрос. Не понял из статьи: на каждое ТС (я так понимаю здоровенный грузовик) устанавливается миниатюрный компьютер, который занимается сбором телеметрии? Т.е. БД и обработка находятся на каждом ТС? Или информация с CAN шины через преобразователь сбрасывается по мобильной сети на сервер, который установлен в компании и там уже все обрабатывается с привязкой к конкретному ТС?


      1. Indemsys
        29.08.2025 12:00

        Я как понял, ничего там не обрабатывается.
        AI еще не прекрутили и идей нет как прикрутить.
        И не будет в ближайшем будущем, поскольку AI до сих пор хорошо работает только в дискретном пространстве слов, а в физическом аналоговом мире он полный дуб.
        Да и отсчет в 10 мс - это ни о чем.
        Поэтому просто строят графики и выводят таблицы. Как и наши деды.