J1939 transporto priemonės simuliatorius

Transporto priemonės simuliatorius su J1939 CAN palaikymu

Apžvalga

Transporto priemonės simuliatorius ( gva-vehicle-sim ) yra išsami GVA (bendrosios transporto priemonės architektūros) platformos testavimo ir kūrimo priemonė. Ji užtikrina realistišką transporto priemonės dinamikos modeliavimą su integruotu J1939 CAN magistralės pranešimų generavimu , leidžiančiu atlikti techninius bandymus be fizinės transporto priemonės aparatinės įrangos.

J1939 modeliavimo pranašumai pranešimų generavimui

🎯 Kūrimo ir testavimo privalumai

  1. Aparatinės įrangos nepriklausomas kūrimas

    • Kurti ir testuoti GVA programas be fizinės CAN įrangos
    • Nereikia brangių transporto priemonės valdymo blokų ar bandymų stendų
    • Lygiagretus kūrimas keliose komandose
  2. Realistiškas transporto priemonės elgesys

    • Generuoja autentiškus J1939 parametrų grupių numerius (PGN) ir įtariamų parametrų numerius (SPN)
    • Imituoja realią transporto priemonės dinamiką (greitį, apsukas, pavarų perjungimą, stabdymą)
    • Pateikia laiko sinchronizuotus jutiklių duomenis
  3. Sąnaudų mažinimas

    • Pašalina fizinių bandymų transporto priemonių poreikį ankstyvosiose kūrimo stadijose
    • Virtuali CAN sąsaja ( vcan0 ) leidžia testuoti bet kurioje „Linux“ darbo stotyje.
    • Sumažina fizinės įrangos nusidėvėjimą
  4. Greitas prototipų kūrimas

    • Momentinio grįžtamojo ryšio ciklas algoritmų kūrimui
    • Paprastas scenarijų kūrimas ir atkūrimas
    • Konfigūruojami pranešimų dažniai ir duomenų modeliai
  5. Integracinis testavimas

    • J1939 šliuzo funkcionalumo patvirtinimas
    • Duomenų srauto iš CAN į DDS temas bandymas
    • Patikrinkite HMI reagavimą į transporto priemonės parametrus
  6. Atkartojami tyrimai

    • Deterministinis transporto priemonės elgesys
    • Pakartotinai testuojami scenarijai
    • Nuoseklus regresinio testavimo bazinis taškas

📊 J1939 pranešimų palaikymas

✅ Visiškai palaikomi PGN (įdiegti transporto priemonės simuliatoriuje)

Transporto priemonės simuliatorius aktyviai generuoja šiuos J1939 pranešimus per CAN ir skelbia juos DDS sistemoje per šliuzą:

PGN Šešiakampis Vardas Įvertinkite SPN Aprašymas
61443 0xF003 EEC2 - Elektroninis variklio valdiklis 2 50 ms 91, 92 Akceleratoriaus pedalo padėtis, variklio apkrova procentais
61444 0xF004 EEC1 - Elektroninis variklio valdiklis 1 100 ms 190, 512, 513 Variklio sūkių skaičius (RPM), vairuotojo pageidaujamas sukimo momentas, faktinis variklio sukimo momentas
61445 0xF005 ETC2 - Elektroninis transmisijos valdiklis 2 100 ms 522, 523, 524 Sankabos padėtis, pasirinkta pavara, dabartinė pavara
61449 0xF009 VDC2 - Transporto priemonės dinaminis valdymas 2 100 ms 1807, 1808 m. Vairo kampas, posūkio greitis
65253 0xFEE5 VALANDOS – variklio valandos 1 sek. 247 Bendras variklio darbo valandų skaičius
65256 0xFEE8 VDS - transporto priemonės kryptis / greitis 250 ms 517, 519, 586 Greitis žemės atžvilgiu, kompaso kryptis, kursas
65258 0xFEEA ALT - Aukštis 1 sek. 580 GPS aukštis virš jūros lygio
65262 0xFEEE ET1 - Variklio temperatūra 1 1 sek. 110, 174, 175 Variklio aušinimo skysčio temperatūra, degalų temperatūra, alyvos temperatūra
65263 0xFEEF EFLP - variklio skysčio lygis / slėgis 500 ms 96, 100, 94 Kuro lygis, alyvos slėgis, kuro tiekimo slėgis
65265 0xFEF1 CCVS - Pastovaus greičio palaikymo sistema / Transporto priemonės greitis 100 ms 84, 597, 598 Ratų pagrindu veikiantis transporto priemonės greitis, stabdžių jungiklis, sankabos jungiklis
65267 0xFEF3 VP – transporto priemonės padėtis 250 ms 584, 585 GPS platuma, ilguma
65269 0xFEF5 AMB - aplinkos sąlygos 1 sek. 108, 171 Barometrinis slėgis, aplinkos oro temperatūra
65271 0xFEF7 VEP1 - Transporto priemonės elektros energija 1 1 sek. 167, 168, 158 Akumuliatoriaus įtampa, generatoriaus įtampa, įkrovimo sistemos įtampa
65276 0xFEFC DD - prietaisų skydelio ekranas 1 sek. 182, 183 Kuro sąnaudos (l/h), momentinės degalų sąnaudos
0xEF00 0xEF00 PROP_A - Nuosavybės teise priklausantis A (IONNIC USM) 250 ms - IONNIC USM ES-Key pulto LED valdymas

Išsamus SPN sąrašas (visi palaikomi parametrai)

SPN Parametro pavadinimas PGN Vienetas Rezoliucija Poslinkis Diapazonas
84 Ratų pagrindu veikiantis transporto priemonės greitis 65265 km/val. 1/256 km/val. 0 0–250 km/val.
91 Akceleratoriaus pedalo padėtis 61443 % 0,4% 0 0–100 %
92 Variklio procentinė apkrova esant dabartiniam greičiui 61443/61444 % 1% 0 0–100 %
94 Kuro tiekimo slėgis 65263 kPa 4 kPa 0 0–1000 kPa
96 Kuro lygis 65263 % 0,4% 0 0–100 %
100 Variklio alyvos slėgis 65263 kPa 4 kPa 0 0–1000 kPa
108 Barometrinis slėgis 65269 kPa 0,5 kPa 0 0–125 kPa
110 Variklio aušinimo skysčio temperatūra 65262 °C 1°C -40 Nuo -40 iki +210 °C
158 Įkrovimo sistemos įtampa 65271 V. 0,05 V 0 0–3212 V
167 Generatoriaus įtampa 65271 V. 0,05 V 0 0–3212 V
168 Baterijos įtampa 65271 V. 0,05 V 0 0–3212 V
171 Aplinkos oro temperatūra 65269 °C 0,03125 °C -273 nuo -273 iki +1735 °C
174 Kuro temperatūra 65262 °C 1°C -40 Nuo -40 iki +210 °C
175 Variklio alyvos temperatūra 65262 °C 0,03125 °C -273 nuo -273 iki +1735 °C
182 Kuro tarifas 65276 L/val. 0,05 l/val. 0 0–3212 l/val.
183 Momentinės degalų sąnaudos 65276 km/l 1/512 km/l 0 0–125 km/l
190 Variklio greitis 61444 RPM 0,125 aps./min. 0 0–8031 aps./min.
247 Bendras variklio darbo valandų skaičius 65253 val. 0,05 val. 0 0–210 554 060 val.
512 Vairuotojo pageidaujamas variklio sukimo momentas 61444 % 1% -125 -125 % iki +125 %
513 Tikrasis variklio sukimo momentas 61444 % 1% -125 -125 % iki +125 %
517 Greitis virš žemės 65256 km/val. 1/256 km/val. 0 0–250 km/val.
519 Kursas žemės atžvilgiu 65256 laipsnis 1/128 laipsnio 0 0–360°
522 Sankabos pedalo padėtis 61445 % 0,4% 0 0–100 %
523 Transmisijos srovės pavara 61445 įranga 1 -125 -125 iki +125
524 Pasirinkta transmisijos pavara 61445 įranga 1 -125 -125 iki +125
580 Aukštis 65258 m. 0,125 m -2500 nuo -2500 iki +5531 m
584 Platuma 65267 laipsnis 10⁻⁷ laipsnių -210 Nuo -90° iki +90°
585 Ilguma 65267 laipsnis 10⁻⁷ laipsnių -210 -180° iki +180°
586 Kompaso guolis 65256 laipsnis 1/128 laipsnio 0 0–360°
597 Stabdžių jungiklis 65265 - 2 bitai - Išjungta / Įjungta / Klaida / Nepasiekiama
598 Sankabos jungiklis 65265 - 2 bitai - Išjungta / Įjungta / Klaida / Nepasiekiama
899 Variklio sukimo momento režimas 61444 - 1 0 0–15 (išvardijimas)
1807 m. Vairo kampas 61449 rad 1/1024 rad -31,374 nuo -31,374 iki +31,374 rad
1808 m. Posūkio greitis 61449 rad/s 1/8192 rad/s -3,92 -3,92 iki +3,92 rad/s

Iš viso: aktyviai imituojami 15 PGN, 33 SPN

🔲 Nepalaikomi PGN (dar neįdiegti)

Šiuo metu transporto priemonės simuliatorius negeneruoja šių J1939 pranešimų. Tai galimi būsimi patobulinimai:

PGN Šešiakampis Vardas Prioritetas Naudojimo atvejis Sudėtingumas
61440 0xF000 ERC1 - Elektroninis lėtintuvo valdiklis 1 Žemas Lėtintuvo / variklio stabdžio valdymas Vidutinis
61441 0xF001 EBC1 - Elektroninis stabdžių valdiklis 1 Aukštas ABS, stabdžių sistemos būsena Aukštas
61442 0xF002 ETC1 - Elektroninis transmisijos valdiklis 1 Vidutinis Perdavimo režimas, vyksta perjungimas Vidutinis
64971 0xFDCB VDHR - Atstumas iki transporto priemonės (didelės skiriamosios gebos) Aukštas Odometras su 5 mm skiriamąja geba Žemas
64972 0xFDCC TCO1 – tachografas Vidutinis Vairuotojo kortelė, greitis iš tachografo Žemas
65132 0xFE6C TPMS - padangų slėgio stebėjimas Vidutinis Individualus padangų slėgis / temperatūra Vidutinis
65217 0xFEC1 PTODE - PTO pavaros įjungimas Žemas Galios paėmimo būsena Žemas
65248 0xFEE0 VDIST – didelės raiškos transporto priemonės atstumas Aukštas Bendras atstumas su 5 m skiriamąja geba Žemas
65251 0xFEE3 ECFG - variklio konfigūracija Žemas Variklio markė, modelis, serijos numeris Žemas
65252 0xFEE4 SHUTDN - Išjungimas Žemas Variklio išjungimo atšaukimas Žemas
65260 0xFEEC VI – Transporto priemonės identifikavimas Vidutinis Pilnas VIN perdavimas (dalinis impl.) Žemas
65279 0xFEFF CCVS1 - Pastovaus greičio palaikymo sistema / Transporto priemonės greitis 1 Vidutinis Patobulinti pastovaus greičio palaikymo duomenys Žemas
65098 0xFE4A EBC2 - Elektroninis stabdžių valdiklis 2 Aukštas Atskiro rato stabdžių būsena Aukštas
65099 0xFE4B EBC3 - Elektroninis stabdžių valdiklis 3 Vidutinis Stabdžių kaladėlių susidėvėjimas Vidutinis
65110 0xFE56 IC1 - Įleidimo / išmetimo sąlygos 1 Žemas Įsiurbimo kolektoriaus slėgis / temperatūra Vidutinis
65172 0xFE84 RQST – užklausa Žemas Paprašykite konkretaus PGN iš ECU Vidutinis
65226 0xFECA AT1I – 1 papildomo apdorojimo įsiurbimo dujos Žemas Dyzelino kietųjų dalelių filtro įleidimo anga Žemas
65227 0xFECB AT1O – 1 papildomo apdorojimo išleidimo dujos Žemas DPF išleidimo anga, NOx jutiklis Žemas
65247 0xFEDF EFL/P2 - Variklio skysčio lygis/slėgis 2 Žemas Papildomas skysčio slėgis Žemas
65266 0xFEF2 LFE - degalų ekonomija Vidutinis Vidutinės kelionės degalų sąnaudos Žemas
65270 0xFEF6 TD - turbokompresorius Žemas Slėgio padidinimas, turbinos greitis Vidutinis
65272 0xFEF8 VEP2 - Transporto priemonės elektros energija 2 Žemas Papildomi elektriniai autobusai Žemas

Kodėl jie nėra įgyvendinami

Priežastis Paveikti PGN Grafas
Nesusiję su pagrindiniu transporto priemonės simuliatoriumi ERC1, PTO, SHUTDN, ECFG, AT1I, AT1O, TD 7
Reikalingas padangų fizikos modelis Padangų slėgio kontrolės sistema (TPMS) 1
Reikalingas ABS/stabdžių modelis EBC1, EBC2, EBC3 3
Reikalingas pažangus perdavimas ETC1 1
Žemas prioritetas / kosmetinis VI (VIN), VDHR, VDIST, TCO1, LFE 5
Reikalingas išmetamųjų teršalų / emisijų modelis IC1, AT1I, AT1O 3
Protokolo lygmuo (ne transporto priemonės duomenys) RQST 1
Dublikatų / patobulintų versijų CCVS1, EFL/P2, VEP2 3

Iš viso: 22 nepalaikomi PGN

🛠️ Techninės savybės

  • „OpenDRIVE“ kelių tinklo palaikymas : sekite tikrovišką kelio geometriją
  • Automatinės pavarų dėžės modeliavimas : pavarų perjungimas pagal greitį ir droselį
  • Fizikos dėsniais paremta dinamika : greitėjimas, stabdymas, vairavimas su realiais apribojimais
  • DDS integracija : tiesioginis publikavimas J1939 automobilių PSM temose
  • Qt6 GUI : vizualizacija realiuoju laiku ir rankinis valdymas

J1939 į DDS šliuzo architektūrą

Šioje sekos diagramoje pavaizduotas visas duomenų srautas iš J1939 CAN magistralės pranešimų per šliuzą DDS abonentams:

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)

Sekos diagramos paaiškinimas

1. Pranešimų generavimo etapas

  • Transporto priemonės simuliatorius apskaičiuoja realius transporto priemonės parametrus pagal vairuotojo įvestis ir fizikinius duomenis
  • Koduoja parametrus į J1939 CAN kadrus su tinkama PGN/SPN struktūra
  • Perduoda į virtualią CAN sąsają (vcan0)

2. CAN priėmimo fazė

  • „SocketCanReader“ Qt gija nuolat skaito iš CAN sąsajos
  • Patvirtina CAN kadro formatą (29 bitų išplėstinis ID)
  • Skleidžia Qt signalą su neapdorotais kadro duomenimis

3. J1939 dekodavimo fazė

  • J1939Decoder išgauna protokolo informaciją iš CAN ID:
    • PGN : Parametrų grupės numeris (nurodo pranešimo tipą)
    • Šaltinio adresas : ECU identifikatorius (0–253)
    • Prioritetas : pranešimo skubumas (0 = didžiausias, 7 = mažiausias)
  • Dekoduoja duomenų apkrovą į atskirus SPN naudodamas konfigūraciją:
    • Bito padėtis ir ilgis
    • Mastelio koeficientas ir poslinkis
    • Inžineriniai vienetai

4. DDS publikavimo etapas

  • Šliuzas pirmą kartą pasirodžius skelbia C_Parameter_Group_Definition (PGN metaduomenis)
  • Kiekvienam pranešime esančiam SPN:
    • Sukuria C_Parameter pranešimą su reikšme ir būsena
    • Pridedamas laiko žyma ir šaltinio identifikavimas
    • Skelbiama DDS temoje
  • Periodiniai būsenos atnaujinimai (1 Hz) skelbia šliuzo būklę

5. Vartojimo etapas

  • GVA programos (HMI, LDMX) prenumeruoja J1939 DDS temas
  • Gaukite parametrų atnaujinimus per DDS tarpinę programinę įrangą
  • Atnaujinti vartotojo sąsajos elementus (spidometrą, tachometrą, pavarų ekraną)

Protokolo detalės

J1939 CAN ID struktūra (29 bitų)

 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)

CAN rėmelio dekodavimo pavyzdys

 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)

Greitas paleidimas

1. Sukurkite transporto priemonės simuliatorių

 cd build
cmake ..
make gva-vehicle-sim

2. Nustatykite virtualų CAN

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

3. Paleiskite transporto priemonės simuliatorių

 # 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. Paleiskite J1939 šliuzą

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

5. Stebėjimas naudojant LDMX

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

Konfigūracija

Transporto priemonės simuliatoriaus konfigūracija

Sukurkite vehicle-sim-config.json :

 {
  "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 šliuzo konfigūracija

PGN/SPN apibrėžimus ir mastelio keitimo parametrus žr. faile /etc/gva/j1939-config.json .

Naudojimo atvejai

1. HMI kūrimas

  • Sukurkite transporto priemonės prietaisų skydelį be fizinės transporto priemonės
  • Prietaisų skydelio atvaizdavimo ir animacijų bandymas
  • Patvirtinti įspėjimo / aliarmo slenksčius

2. Algoritmų testavimas

  • Išbandykite ekovairavimo algoritmus su imituotomis degalų sąnaudomis
  • Nuspėjamosios priežiūros logikos patvirtinimas
  • Išbandykite autonominio vairavimo sprendimų priėmimą

3. Integracinis testavimas

  • Patikrinkite duomenų srautą nuo galo iki galo: CAN → DDS → Taikomoji programa
  • Šliuzo veikimo bandymas esant apkrovai
  • Duomenų sinchronizavimo posistemėse patvirtinimas

4. Mokymai ir demonstravimas

  • Saugi aplinka operatorių mokymui
  • Klientų demonstracijos be transporto priemonės
  • GVA architektūros edukacinė priemonė

Veikimo charakteristikos

Metrika Vertė
CAN kadrų generavimo dažnis Iki 100 Hz vienam PGN
DDS publikavimo delsa < 5 ms (vietinis)
Šliuzo pralaidumas > 1000 PGN/sek.
CPU naudojimas (simuliatorius + šliuzas) < 10 % (4 branduolių sistema)
Atminties pėdsakas ~50 MB (iš viso)

Palyginimas: fizinis ir imitacinis

Aspektas Fizinė transporto priemonė Simuliatorius
Aparatinės įrangos kaina 50 000 USD ir daugiau 0 USD (tik programinė įranga)
Nustatymo laikas Valandos (laidų pajungimas, konfigūracija) Minutės
Atkuriamumas Ribotas (vairuotojo kintamumas) Tobulas (deterministinis)
Saugumas Sužalojimo / sužalojimo rizika Nulinė rizika
Scenarijų valdymas Sudėtinga (oras, eismas) Visiška kontrolė
Duomenų registravimas Reikalinga įranga Įmontuotas
Lygiagretus testavimas Po vieną transporto priemonę vienu metu Keli atvejai

Trikčių šalinimas

Dažnos problemos

CAN sąsaja nerasta

 # Verify vcan0 exists
ip link show vcan0

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

Nėra DDS pranešimų

 # 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

Šliuzas nedekoduoja pranešimų

 # Check CAN frames are being sent
candump vcan0

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

Paprašykite demonstracijos šiandien.