J1939 Járműszimulátor

Járműszimulátor J1939 CAN támogatással

Áttekintés

A Vehicle Simulator ( gva-vehicle-sim ) egy átfogó tesztelési és fejlesztőeszköz a GVA (Generic Vehicle Architecture) platformhoz. Valósághű járműdinamikai szimulációt biztosít integrált J1939 CAN busz üzenetgenerálással , lehetővé téve a hardveres hurok tesztelést fizikai járműhardver igénye nélkül.

A J1939 szimuláció előnyei az üzenetgenerálásban

🎯 Fejlesztési és tesztelési előnyök

  1. Hardverfüggetlen fejlesztés

    • GVA alkalmazások fejlesztése és tesztelése fizikai CAN hardver nélkül
    • Nincs szükség drága járművezérlő egységekre vagy tesztpadokra
    • Párhuzamos fejlesztés több csapatban
  2. Realisztikus jármű viselkedés

    • Hiteles J1939 paramétercsoport-számokat (PGN) és gyanús paraméterszámokat (SPN) generál
    • Valósághű járműdinamikát szimulál (sebesség, fordulatszám, sebességváltás, fékezés)
    • Időszinkronizált érzékelőadatokat biztosít
  3. Költségcsökkentés

    • Szükségtelenné teszi a fizikai tesztjárműveket a korai fejlesztési szakaszban
    • A virtuális CAN interfész ( vcan0 ) lehetővé teszi a tesztelést bármely Linux munkaállomáson
    • Csökkenti a fizikai hardverek kopását
  4. Gyors prototípusgyártás

    • Azonnali visszacsatolási hurok az algoritmusfejlesztéshez
    • Egyszerű forgatókönyv-létrehozás és -visszajátszás
    • Konfigurálható üzenetsebességek és adatminták
  5. Integrációs tesztelés

    • J1939 átjáró működésének ellenőrzése
    • Teszt adatfolyam CAN-ból DDS témákba
    • HMI járműparaméterekre adott válaszának ellenőrzése
  6. Reprodukálható tesztelés

    • Determinisztikus járműviselkedés
    • Ismételhető tesztforgatókönyvek
    • Konzisztens alap a regressziós teszteléshez

📊 J1939 Üzenettámogatás

✅ Teljes mértékben támogatott PGN-ek (a Járműszimulátorban implementálva)

A járműszimulátor aktívan generálja a következő J1939 üzeneteket CAN-on keresztül, és az átjárón keresztül közzéteszi azokat a DDS-ben:

PGN Hex Név Arány SPN-ek Leírás
61443 0xF003 EEC2 - Elektronikus motorvezérlő 2 50 ms 91, 92 Gázpedál helyzete, motor százalékos terhelése
61444 0xF004 EEC1 - Elektronikus motorvezérlő 1 100 ms 190, 512, 513 Motorfordulatszám (RPM), vezető által igényelt nyomaték, tényleges motornyomaték
61445 0xF005 ETC2 - Elektronikus sebességváltó vezérlő 2 100 ms 522, 523, 524 Kuplung helyzete, kiválasztott fokozat, aktuális fokozat
61449 0xF009 VDC2 - Járműdinamikai Szabályozás 2 100 ms 1807, 1808 Kormánykerék szöge, elfordulási sebesség
65253 0xFEE5 ÓRÁK - Motor üzemórái 1-esek 247 Teljes motor üzemóra
65256 0xFEE8 VDS - Jármű iránya/sebessége 250 ms 517, 519, 586 Sebesség a talajhoz képest, iránytű iránya, útvonal
65258 0xFEEA ALT - Magasság 1-esek 580 GPS tengerszint feletti magasság
65262 0xFEEE ET1 - Motorhőmérséklet 1 1-esek 110, 174, 175 Motor hűtőfolyadék hőmérséklete, üzemanyag hőmérséklete, olajhőmérséklet
65263 0xFEEF EFLP - Motorfolyadék szint/nyomás 500 ms 96, 100, 94 Üzemanyagszint, olajnyomás, üzemanyag-szállítási nyomás
65265 0xFEF1 CCVS - Sebességtartó automatika/Járműsebesség 100 ms 84, 597, 598 Kerékalapú járműsebesség, fékkapcsoló, kuplungkapcsoló
65267 0xFEF3 VP - Jármű helyzete 250 ms 584, 585 GPS szélességi és hosszúsági fok
65269 0xFEF5 AMB - Környezeti feltételek 1-esek 108, 171 Légköri nyomás, környezeti levegő hőmérséklete
65271 0xFEF7 VEP1 - Jármű elektromos áram 1 1-esek 167, 168, 158 Akkumulátorfeszültség, generátorfeszültség, töltőrendszer feszültsége
65276 0xFEFC DD - Műszerfali kijelző 1-esek 182, 183 Üzemanyag-fogyasztás (L/h), pillanatnyi üzemanyag-fogyasztás
0xEF00 0xEF00 PROP_A - Saját tulajdonú A (IONNIC USM) 250 ms - LED vezérlés az IONNIC USM ES-Key panelhez

Részletes SPN lista (összes támogatott paraméter)

SPN Paraméter neve PGN Egység Felbontás Eltolás Hatótávolság
84 Kerékalapú járműsebesség 65265 km/h 1/256 km/h 0 0-250 km/h
91 Gázpedál pozíciója 61443 % 0,4% 0 0-100%
92 Motor százalékos terhelése aktuális sebességnél 61443/61444 % 1% 0 0-100%
94 Üzemanyag-szállítási nyomás 65263 kPa 4 kPa 0 0–1000 kPa
96 Üzemanyagszint 65263 % 0,4% 0 0-100%
100 Motorolajnyomás 65263 kPa 4 kPa 0 0–1000 kPa
108 Légköri nyomás 65269 kPa 0,5 kPa 0 0–125 kPa
110 Motor hűtőfolyadék hőmérséklete 65262 °C 1°C -40 -40 és +210°C között
158 Töltőrendszer feszültsége 65271 V. 0,05 V 0 0-3212 V
167 Generátor feszültsége 65271 V. 0,05 V 0 0-3212 V
168 Akkumulátor feszültsége 65271 V. 0,05 V 0 0-3212 V
171 Környezeti levegő hőmérséklete 65269 °C 0,03125°C -273 -273 és +1735°C között
174 Üzemanyag hőmérséklete 65262 °C 1°C -40 -40 és +210°C között
175 Motorolaj hőmérséklete 65262 °C 0,03125°C -273 -273 és +1735°C között
182 Üzemanyagárak 65276 L/óra 0,05 l/óra 0 0-3212 l/óra
183 Azonnali üzemanyag-fogyasztás 65276 km/l 1/512 km/l 0 0-125 km/l
190 Motorfordulatszám 61444 FORDULAT 0,125 fordulat/perc 0 0-8031 fordulat/perc
247 Teljes motoróra 65253 h 0,05 óra 0 0–210 554 060 óra
512 Vezető által igényelt motornyomaték 61444 % 1% -125 -125%-tól +125%-ig
513 Tényleges motornyomaték 61444 % 1% -125 -125%-tól +125%-ig
517 Sebesség a talaj felett 65256 km/h 1/256 km/h 0 0-250 km/h
519 Útvonal a talaj felett 65256 fok 1/128 fok 0 0–360°
522 Kuplungpedál helyzete 61445 % 0,4% 0 0-100%
523 Átviteli áram fokozat 61445 felszerelés 1 -125 -125 és +125 között
524 Váltó Kiválasztott Fokozat 61445 felszerelés 1 -125 -125 és +125 között
580 Magasság 65258 m 0,125 méter -2500 -2500 és +5531 m között
584 Szélesség 65267 fok 10⁻⁷ fok -210 -90° és +90° között
585 Hosszúság 65267 fok 10⁻⁷ fok -210 -180° és +180° között
586 Iránytű irányszög 65256 fok 1/128 fok 0 0–360°
597 Fékkapcsoló 65265 - 2 bit - Ki/Be/Hiba/Nem elérhető
598 Kuplung kapcsoló 65265 - 2 bit - Ki/Be/Hiba/Nem elérhető
899 Motornyomaték mód 61444 - 1 0 0-15 (felsorolás)
1807 Kormánykerék szöge 61449 rad 1/1024 rad -31,374 -31,374 és +31,374 rad között
1808 elfordulási sebesség 61449 rad/s 1/8192 rad/s -3,92 -3,92 és +3,92 rad/s között

Összesen: 15 PGN, 33 SPN aktívan szimulálva

🔲 Nem támogatott PGN-ek (még nem implementálva)

A következő J1939 üzeneteket jelenleg nem generálja a járműszimulátor. Ezek a jövőbeli fejlesztések lehetséges változatait képviselik:

PGN Hex Név Prioritás Használati eset Bonyolultság
61440 0xF000 ERC1 - Elektronikus lassítófék-vezérlő 1 Alacsony Lassítófék/motorfék-vezérlés Közepes
61441 0xF001 EBC1 - Elektronikus fékvezérlő 1 Magas ABS, fékrendszer állapota Magas
61442 0xF002 ETC1 - Elektronikus sebességváltó vezérlő 1 Közepes Átviteli mód, váltás folyamatban Közepes
64971 0xFDCB VDHR - Jármű távolsága (nagy felbontású) Magas 5 mm-es felbontással rendelkező kilométeróra Alacsony
64972 0xFDCC TCO1 - Tachográf Közepes Járművezetői kártya, sebesség a tachográfból Alacsony
65132 0xFE6C TPMS - Gumiabroncsnyomás-felügyelet Közepes Egyedi gumiabroncsnyomás/hőmérséklet Közepes
65217 0xFEC1 TLT - TLT hajtás bekapcsolása Alacsony Teljesítményleadó tengely állapota Alacsony
65248 0xFEE0 VDIST - Nagy felbontású járműtávolság Magas Teljes távolság 5 méteres felbontással Alacsony
65251 0xFEE3 ECFG - Motorkonfiguráció Alacsony Motor márkája, modellje, sorozatszáma Alacsony
65252 0xFEE4 SHUTDN - Leállítás Alacsony Motorleállítás felülbírálása Alacsony
65260 0xFEEC VI - Járműazonosítás Közepes Teljes VIN átvitel (részleges impl) Alacsony
65279 0xFEFF CCVS1 - Sebességtartó automatika/Járműsebesség 1 Közepes Továbbfejlesztett sebességtartó automatika adatok Alacsony
65098 0xFE4A EBC2 - Elektronikus fékvezérlő 2 Magas Egyedi kerékfék állapota Magas
65099 0xFE4B EBC3 - Elektronikus fékvezérlő 3 Közepes Fékbetét kopás Közepes
65110 0xFE56 IC1 - Bemeneti/kipufogó feltételek 1 Alacsony Szívócső nyomás/hőmérséklet Közepes
65172 0xFE84 RQST - Kérés Alacsony Kérjen konkrét PGN-t az ECU-tól Közepes
65226 0xFECA AT1I - Utókezelés 1 Beszívott gáz Alacsony Dízel részecskeszűrő bemenet Alacsony
65227 0xFECB AT1O - Utókezelés 1 Kilépő gáz Alacsony DPF kimenet, NOx érzékelő Alacsony
65247 0xFEDF EFL/P2 - Motorfolyadék szint/nyomás 2 Alacsony További folyadéknyomások Alacsony
65266 0xFEF2 LFE - Üzemanyag-fogyasztás Közepes Átlagos/utazási üzemanyag-fogyasztás Alacsony
65270 0xFEF6 TD - turbófeltöltő Alacsony Feltöltőnyomás, turbina fordulatszáma Közepes
65272 0xFEF8 VEP2 - Jármű elektromos áram 2 Alacsony További elektromos buszok Alacsony

Miért nem valósítják meg ezeket

Ok Érintett PGN-ek Gróf
Nem releváns az alap járműszimulátorhoz ERC1, PTO, SHUTDN, ECFG, AT1I, AT1O, TD 7
Gumiabroncsfizikai modellt igényel TPMS 1
ABS/fék modellt igényel EBC1, EBC2, EBC3 3
Fejlett átvitelt igényel ETC1 1
Alacsony prioritású / kozmetikai VI (VIN), VDHR, VDIST, TCO1, LFE 5
Kipufogógáz-/emissziómodellt igényel IC1, AT1I, AT1O 3
Protokoll szintű (nem járműadatok) RQST 1
Másodpéldányok/bővített verziók CCVS1, EFL/P2, VEP2 3

Összesen: 22 nem támogatott PGN

🛠️ Műszaki jellemzők

  • OpenDRIVE úthálózat támogatása : Kövesse a valósághű útgeometriát
  • Automata sebességváltó szimuláció : Sebességváltás sebesség és gázadagolás alapján
  • Fizikán alapuló dinamika : Gyorsulás, fékezés, kormányzás realisztikus korlátozásokkal
  • DDS integráció : Közvetlen közzététel a J1939 Automotive PSM témákhoz
  • Qt6 GUI : Valós idejű vizualizáció és manuális vezérlés

J1939 a DDS átjáró architektúrájához

A következő szekvenciadiagram a J1939 CAN buszüzenetektől a gateway-en keresztül a DDS-előfizetőkig tartó teljes adatfolyamot szemlélteti:

sequenceDiagram participant Sim as Vehicle Simulator participant CAN as CAN Bus (vcan0) participant Reader as SocketCanReader participant Decoder as J1939Decoder participant Gateway as J1939Gateway participant DDS as DDS Topic participant HMI as GVA HMI/LDMX Note over Sim,CAN: Message Generation Phase Sim->>Sim: Calculate vehicle state
(speed, RPM, gear) Sim->>CAN: Send PGN 61444
(EEC1: Engine Speed) Sim->>CAN: Send PGN 65265
(CCVS: Vehicle Speed) Sim->>CAN: Send PGN 61445
(ETC2: Transmission) Note over CAN,Decoder: CAN Reception Phase CAN->>Reader: Read CAN frame (29-bit ID) Reader->>Reader: Validate frame Reader->>Decoder: emit canFrameReceived() Note over Decoder,Gateway: J1939 Decode Phase Decoder->>Decoder: Extract PGN from CAN ID
(bits 24-8) Decoder->>Decoder: Extract source address
(bits 7-0) Decoder->>Decoder: Extract priority
(bits 28-26) Decoder->>Decoder: Decode SPNs from payload
(bit position, scale, offset) Decoder->>Gateway: emit j1939MessageDecoded() Note over Gateway,DDS: DDS Publishing Phase Gateway->>Gateway: Create C_Parameter_Group_Definition
(if first time) Gateway->>DDS: Publish PGN definition loop For each SPN in message Gateway->>Gateway: Create C_Parameter message
(sourceID, PGN, SPN, value) Gateway->>Gateway: Set metadata
(timestamp, status) Gateway->>DDS: Publish parameter end Note over DDS,HMI: Consumption Phase DDS->>HMI: onSampleReceived()
(C_Parameter) HMI->>HMI: Update speedometer HMI->>HMI: Update tachometer HMI->>HMI: Update gear indicator Note over Gateway: Status Reporting (1 Hz) Gateway->>Gateway: Update data source status Gateway->>DDS: Publish C_Data_Source
(gateway health)

Szekvenciadiagram magyarázata

1. Üzenetgenerálási fázis

  • A Járműszimulátor a vezető bemenetei és a fizika alapján számolja ki a valósághű járműparamétereket
  • Paramétereket kódol J1939 CAN keretekbe megfelelő PGN/SPN struktúrával
  • Virtuális CAN interfészre továbbít (vcan0)

2. CAN vételi fázis

  • A SocketCanReader Qt szál folyamatosan olvas a CAN interfészről
  • CAN keretformátum érvényesítése (29 bites kiterjesztett azonosító)
  • Qt jelet bocsát ki nyers képkockaadatokkal

3. J1939 dekódolási fázis

  • A J1939Decoder protokollinformációkat nyer ki a CAN ID-ből:
    • PGN : Paramétercsoport száma (az üzenet típusát azonosítja)
    • Forráscím : ECU azonosító (0-253)
    • Prioritás : Üzenet sürgőssége (0=legmagasabb, 7=legalacsonyabb)
  • Az adatcsomagot egyedi SPN-ekbe dekódolja a konfiguráció használatával:
    • Bit pozíciója és hossza
    • Léptéktényező és eltolás
    • Mérnöki egységek

4. DDS publikálási fázis

  • Az átjáró az első előforduláskor közzéteszi C_Parameter_Group_Definition (PGN metaadatok) értéket.
  • Az üzenetben szereplő minden egyes SPN-hez:
    • C_Parameter üzenetet hoz létre értékkel és állapottal
    • Időbélyegző és forrásazonosító hozzáadása
    • Közzététel a DDS témában
  • Időszakos állapotfrissítések (1 Hz) közzéteszik az átjáró állapotát

5. Fogyasztási fázis

  • A GVA alkalmazások (HMI, LDMX) feliratkoznak a J1939 DDS témákra
  • Paraméterfrissítések fogadása DDS köztes szoftveren keresztül
  • Felhasználói felület elemeinek frissítése (sebességmérő, fordulatszámmérő, fokozatkijelző)

Protokoll részletei

J1939 CAN ID struktúra (29 bites)

 Bits 28-26: Priority (0-7)
Bit  25:    Reserved
Bit  24:    Data Page (DP)
Bits 23-16: PDU Format (PF)
Bits 15-8:  PDU Specific (PS) - group extension or destination
Bits 7-0:   Source Address (SA)

PGN = (DP << 16) | (PF << 8) | (PS if PF >= 240 else 0)

Példa CAN keret dekódolására

 CAN ID: 0x18F00400
Binary: 00011000111100000000010000000000

Priority:  0x6 (bits 28-26) = 6 (normal priority)
Reserved:  0   (bit 25)
DP:        0   (bit 24)
PF:        0xF0 (bits 23-16) = 240 (broadcast)
PS:        0x04 (bits 15-8)  = 4 (group extension)
SA:        0x00 (bits 7-0)   = 0 (engine controller)

PGN = (0 << 16) | (240 << 8) | 4 = 61444 (EEC1 - Engine Controller 1)

Gyorsindítás

1. Járműszimulátor építése

 cd build
cmake ..
make gva-vehicle-sim

2. Virtuális CAN beállítása

 sudo scripts/test/j1939/setup-vcan.sh

3. Indítsa el a Járműszimulátort

 # GUI mode with OpenDRIVE track
./build/bin/gva-vehicle-sim \
  --domain=0 \
  --opendrive=data/opendrive/ZalaZONE_full.xodr \
  --can-interface=vcan0

# Headless mode with J1939 only
./build/bin/gva-vehicle-sim \
  --domain=0 \
  --can-interface=vcan0 \
  --headless

4. Indítsa el a J1939 Gateway-t

 ./build/bin/gva-j1939-gateway \
  --domain=0 \
  --interface=vcan0 \
  --config=/etc/gva/j1939-config.json

5. Monitorozás LDMX-szel

 ./build/bin/ldmx
# Navigate to J1939 tab to see live parameters

Konfiguráció

Járműszimulátor konfigurációja

Hozd létre vehicle-sim-config.json fájlt:

 {
  "j1939": {
    "enabled": true,
    "sourceAddress": 0,
    "gatewayResourceId": 1000,
    "updateRateHz": 10
  },
  "vehicle": {
    "maxSpeed": 120.0,
    "maxRpm": 6000,
    "gearRatios": [3.5, 2.5, 1.8, 1.3, 1.0, 0.8],
    "engineIdleRpm": 800
  }
}

J1939 átjáró konfigurációja

A PGN/SPN definíciókat és skálázási paramétereket lásd /etc/gva/j1939-config.json fájlban.

Használati esetek

1. HMI fejlesztés

  • Jármű műszerfalának fejlesztése fizikai jármű nélkül
  • Műszerfal renderelés és animációk tesztelése
  • Figyelmeztetési/riasztási küszöbértékek validálása

2. Algoritmus tesztelés

  • Környezetbarát vezetési algoritmusok tesztelése szimulált üzemanyag-fogyasztással
  • Prediktív karbantartási logika validálása
  • Önvezető döntéshozatal tesztelése

3. Integrációs tesztelés

  • Végpontok közötti adatfolyam ellenőrzése: CAN → DDS → Alkalmazás
  • Átjáró teljesítményének tesztelése terhelés alatt
  • Adatszinkronizáció validálása az alrendszerek között

4. Képzés és bemutató

  • Biztonságos környezet a kezelők betanításához
  • Ügyfélbemutatók jármű nélkül
  • Oktatási eszköz a GVA architektúrához

Teljesítményjellemzők

Metrika Érték
CAN keretgenerálási sebesség Akár 100 Hz PGN-enként
DDS közzétételi késleltetés < 5 ms (helyi)
Átjáró átviteli sebessége > 1000 PGN/másodperc
CPU-használat (szimulátor + átjáró) < 10% (4 magos rendszer)
Memórialábnyom ~50 MB (kombinált)

Összehasonlítás: Fizikai vs. szimulált

Vonatkozás Fizikai jármű Szimulátor
Hardverköltség 50 000 dollár+ 0 dollár (csak szoftver)
Beállítási idő Órák (kábelezés, konfiguráció) Jegyzőkönyv
Reprodukálhatóság Korlátozott (vezetői változékonyság) Tökéletes (determinisztikus)
Biztonság Sérülés/károsodás kockázata Nulla kockázat
Forgatókönyv-vezérlés Nehéz (időjárás, forgalom) Teljes kontroll
Adatnaplózás Felszerelést igényel Beépített
Párhuzamos tesztelés Egy jármű egyszerre Több példány

Hibaelhárítás

Gyakori problémák

CAN interfész nem található

 # Verify vcan0 exists
ip link show vcan0

# Recreate if needed
sudo scripts/test/j1939/setup-vcan.sh

Nincsenek DDS üzenetek

 # Check gateway is running
pgrep -a gva-j1939-gateway

# Verify domain ID matches
./build/bin/gva-j1939-gateway --domain=0
./build/bin/gva-vehicle-sim --domain=0

Az átjáró nem dekódolja az üzeneteket

 # Check CAN frames are being sent
candump vcan0

# Verify configuration file
cat /etc/gva/j1939-config.json

Kérjen bemutatót még ma.