opisy
pytania
pliki do pobrania


Emulacja CAN-box-a

Opublikowano: 2026-08-14


Poniższy poradnik opisuje uniwersalny proces analizy i emulacji urządzenia typu CAN-box, które pełni rolę mostu komunikacyjnego między szyną danych pojazdu a stacją multimedialną. Opisana metoda pozwala na zastąpienie fabrycznego modułu własnym rozwiązaniem (np. opartym na mikrokontrolerze), co umożliwia przesyłanie niestandardowych danych lub naprawę komunikacji w systemach typu Android.

Wymagany sprzęt (Hardware)

Do analizy i budowy emulatora niezbędny jest zestaw narzędzi pozwalający na "podsłuchiwanie" różnych magistral komunikacyjnych. Przykładowy zestaw może zawierać:
  • Mikrokontroler: np. Arduino (UNO R3), klon lub inny moduł zgodny z popularnymi środowiskami programistycznymi.
  • Moduły CAN Bus: Przykładowo moduł MCP2515 (SPI TJA1050). Można używać dwóch takich samych modeli lub różnych wersji sprzętowych, o ile są w stanie dostarczać surowe dane o ramkach bezpośrednio do terminala.
  • Konwertery USB-UART: np. modele oparte na układach FT232 lub CH340G. Są one niezbędne do przechwytywania dwustronnej komunikacji między Box-em a radiem.
  • Dzielnik napięcia: Ważny element przy łączeniu mikrokontrolera z radiem, służący do dopasowania poziomów napięć (np. obniżenie sygnału 5V do bezpiecznego poziomu ok. 3,5V akceptowanego przez stację).

Oprogramowanie i analiza danych

Wybór oprogramowania zależy od preferowanego sposobu analizy danych. W procesie inżynierii wstecznej stosuje się dwa główne podejścia:

1. Serial Port Monitor (zintegrowany podgląd)

Jest to narzędzie pozwalające na monitorowanie portów COM w czasie rzeczywistym. Jego główną zaletą jest to, że w jednym oknie dialogowym widzimy jednocześnie oba strumienie danych (RX i TX). Dzięki temu widać dokładnie, jak przebiega wymiana informacji – która strona wysyła zapytanie, a która i w jakim czasie odpowiada. Dane te są często oznaczane różnymi kolorami dla większej czytelności, co ułatwia zrozumienie logiki protokołu.

2. YAT (Yet Another Terminal) i analiza rozproszona

To darmowe i zaawansowane narzędzie, które świetnie sprawdza się przy zbieraniu dużej ilości danych do późniejszej analizy. W tym przypadku dane z linii RX i TX zbierane są zazwyczaj w oddzielnych oknach (sesjach) programu.
  • Konfiguracja znaczników czasowych: Aby dodać TimeCode w YAT, należy wejść w menu Terminal, wybrać Settings (lub Formatting), a następnie w sekcji dotyczącej formatowania tekstu zaznaczyć opcję TimeCode.
  • Sortowanie danych: Posiadając oddzielne logi z obu linii (np. "Box_TX.txt" i "Radio_TX.txt") wyposażone w znaczniki czasu, można poprosić sztuczną inteligencję (AI) lub użyć zewnętrznego skryptu sortującego o połaczenie plików. Posłużyć sę także można edytorem tekstu lub arkuszem kalkulacyjnym po skopiowaniu danych do jednego pliku. Narzędzia te, bazując na czasie wystąpienia ramki, poukładają je chronologicznie na przemian, oznaczając, który strumień jest który.

Metodyka pracy krok po kroku

Krok 1: Przechwytywanie ramek z pojazdu (Sniffing)

Pierwszym krokiem jest podłączenie się do szyny danych w aucie (np. CAN High i CAN Low w kostce radia). Wykorzystując moduł CAN i odpowiedni kod, należy zarejestrować konkretne "zdarzenia", takie jak włączenie świateł, zmianę obrotów czy otwarcie drzwi. Jest to proces uniwersalny dla różnych marek pojazdów.

Krok 2: Analiza komunikacji na biurku

Po zebraniu danych z auta, należy podłączyć fizyczny CAN-box ze stacją multimedialną poza samochodem. Za pomocą konwerterów USB-UART podsłuchujemy, jak Box interpretuje dane i jak "rozmawia" z radiem. Na tym etapie identyfikujemy kluczowe momenty, takie jak:
  • Inicjalizacja: Moment, w którym Box przedstawia się radiu (np. za pomocą komend AT, takich jak przykładowe AT#RC...).
  • Przesyłanie parametrów: Identyfikacja nagłówków ramek odpowiedzialnych za konkretne dane (na przykładzie protokołu Rise: 2EA2 dla obrotów lub F0040018 dla hamulca ręcznego).

Krok 3: Implementacja w mikrokontrolerze

Ostatnim etapem jest stworzenie programu, który będzie udawał fizyczny Box przed radiem. Zamiast symulować całą szynę CAN pojazdu, często prościej jest wpiąć się bezpośrednio w piny UART stacji multimedialnej i przesyłać odpowiednio sformatowane ramki danych, które radio rozpozna jako sygnały z oryginalnego urządzenia.

Objaśnienia: Rozróżnienie sprzętu i metodologii emulacji

Kluczem do sukcesu w projektach inżynierii wstecznej systemów CAN-bus jest zrozumienie, że moduły do przechwytywania danych UART oraz moduły CAN to dwa zupełnie niezależne narzędzia, które pełnią inne role w zależności od etapu prac.

1. Moduły USB-UART vs Moduły CAN (MCP2515)

  • Interfejsy USB-UART (np. CH340G, FT232): Służą wyłącznie jako most komunikacyjny między badanym układem (liniami TX/RX) a komputerem. Ich zadaniem jest zebranie surowych danych do terminala, abyśmy mogli je przeanalizować. Są one niezbędne na etapie "podsłuchiwania" komunikacji między fizycznym Box-em a radiem.
  • Moduł CAN (np. MCP2515): To nakładka sprzętowa dla mikrokontrolera (np. Arduino), która pozwala mu "rozmawiać" w języku szyny CAN pojazdu. Jest on niezbędny, gdy chcemy pobrać ramki bezpośrednio z samochodu lub gdy na biurku chcemy symulować działanie auta dla fizycznego urządzenia CAN-box.

2. Dwie drogi do celu – kiedy co jest potrzebne?

Po zebraniu odpowiednich danych i przygotowaniu programu, oba typy modułów stają się opcjonalne, zależnie od wybranej strategii:
  • Strategia A: Emulacja szyny CAN. Wykorzystujemy Arduino z modułem CAN (MCP2515), aby wysyłać ramki symulujące samochód do fizycznego CAN-boxa. W tym przypadku fizyczny Box jest nadal potrzebny, ponieważ to on zamienia sygnały CAN na ramki UART zrozumiałe dla radia.
  • Strategia B: Bezpośrednia emulacja CAN-boxa. Wpinamy Arduino bezpośrednio w piny UART radia (z pominięciem fizycznego Box-a). W tym scenariuszu moduł CAN (MCP2515) staje się całkowicie zbędny, ponieważ Arduino samo generuje odpowiednio sformatowane ramki UART, udając oryginalne urządzenie.

3. Mapowanie parametrów i analiza porównawcza

Moduł CAN (MCP2515) dopięty do Arduino jest niezwykle przydatny w procesie "mapowania" danych. Pozwala on na stworzenie kontrolowanego środowiska na biurku:
  • Arduino przez moduł CAN wysyła do fizycznego Box-a konkretny sygnał (np. symulację 3000 obr./min). Tym celu musimy mieć odpowiednio skonfigurowane Arduino i moduł CAN - fizyczne połaczenie przewodami oraz program (algorytm) na Arduino. Przykładowy kod znajduje się tutaj: Download → .
  • W tym samym czasie interfejsy UART (np. CH340G) przechwytują to, co Box wysyła do radia.
  • Dzięki temu precyzyjnie wiemy, że ramka CAN o danym ID odpowiada konkretnej ramce UART (np. zaczynającej się od 2EA2).

4. Wyzwania analizy w samochodzie

Możliwe jest również przechwytywanie danych UART bezpośrednio w samochodzie na żywej szynie CAN. Należy jednak pamiętać, że jest to zadanie znacznie trudniejsze. Na aktywnej szynie CAN występuje ogromna ilość danych i zmiennych parametrów jednocześnie (napięcie, obroty, statusy systemowe), co sprawia, że wyłapanie pojedynczej zależności między konkretną ramką CAN a jej odpowiednikiem w UART jest procesem bardzo żmudnym i podatnym na błędy.
Wybór między podsłuchem na żywo, a kontrolowaną symulacją na biurku warsztatowym zależy od stopnia skomplikowania protokołu danej marki pojazdu i dostępności dokumentacji konkretnego modelu CAN-boxa.

Dokładny opis standardu UART

Sposób analizy i wykorzystania danych UART - jednego z najpowszechniejszych standardów komunikacji szeregowej oraz przykłady zastosowań, a także wskazówki implementacyjne w aplikacjach Android, zostały opisane w osobnym artykule: UART – analiza i implementacja → .

Podsumowanie

Choć powyższe przykłady bazują na protokołach CAN i konkretnych modelach samochodów (jak Golf 6) oraz modułach (jak Rise), opisana strategia jest uniwersalna. Można ją stosować dla różnych modeli CAN-boxów, różnych marek pojazdów oraz przy użyciu dowolnego oprogramowania terminalowego, które pozwala na rzetelny zapis i analizę ruchu szeregowego.
× Powiększony obrazek
Do góry