J1939 transportlīdzekļa simulators

Transportlīdzekļa simulators ar J1939 CAN atbalstu

Pārskats

Transportlīdzekļa simulators ( gva-vehicle-sim ) ir visaptverošs testēšanas un izstrādes rīks GVA (vispārējās transportlīdzekļu arhitektūras) platformai. Tas nodrošina reālistisku transportlīdzekļa dinamikas simulāciju ar integrētu J1939 CAN kopnes ziņojumu ģenerēšanu , nodrošinot aparatūras nepārtrauktu testēšanu, neprasot fizisku transportlīdzekļa aparatūru.

J1939 simulācijas priekšrocības ziņojumu ģenerēšanā

🎯 Izstrādes un testēšanas priekšrocības

  1. Aparatūras neatkarīga izstrāde

    • Izstrādāt un testēt GVA lietojumprogrammas bez fiziskas CAN aparatūras
    • Nav nepieciešami dārgi transportlīdzekļu vadības bloki vai testa stendi
    • Paralēla izstrāde vairākās komandās
  2. Reālistiska transportlīdzekļa uzvedība

    • Ģenerē autentiskus J1939 parametru grupu numurus (PGN) un aizdomīgo parametru numurus (SPN)
    • Simulē reālistisku transportlīdzekļa dinamiku (ātrumu, apgriezienus minūtē, pārnesumu pārslēgšanu, bremzēšanu)
    • Nodrošina laika sinhronizētus sensoru datus
  3. Izmaksu samazināšana

    • Novērš nepieciešamību pēc fiziskām testa automašīnām agrīnā izstrādes posmā
    • Virtuālā CAN saskarne ( vcan0 ) ļauj veikt testēšanu jebkurā Linux darbstacijā
    • Samazina fiziskās aparatūras nolietojumu
  4. Ātrā prototipēšana

    • Tūlītēja atgriezeniskā saite algoritmu izstrādei
    • Vienkārša scenāriju izveide un atkārtošana
    • Konfigurējami ziņojumu ātrumi un datu modeļi
  5. Integrācijas testēšana

    • J1939 vārtejas funkcionalitātes validēšana
    • Testa datu plūsma no CAN uz DDS tēmām
    • Pārbaudiet HMI reakciju uz transportlīdzekļa parametriem
  6. Reproducējama testēšana

    • Deterministiska transportlīdzekļa uzvedība
    • Atkārtojami testa scenāriji
    • Konsekventa regresijas testēšanas bāzes līnija

📊 J1939 ziņojumu atbalsts

✅ Pilnībā atbalstīti PGN (ieviesti transportlīdzekļa simulatorā)

Transportlīdzekļa simulators aktīvi ģenerē šādus J1939 ziņojumus, izmantojot CAN, un publicē tos DDS, izmantojot vārteju:

PGN Sešpadsmit Vārds Vērtēt SPN Apraksts
61443 0xF003 EEC2 - elektroniskais dzinēja kontrolieris 2 50 ms 91, 92 Akseleratora pedāļa pozīcija, dzinēja slodze procentos
61444 0xF004 EEC1 - elektroniskais dzinēja kontrolieris 1 100 ms 190, 512, 513 Dzinēja apgriezieni (RPM), vadītāja pieprasītais griezes moments, faktiskais dzinēja griezes moments
61445 0xF005 ETC2 - Elektroniskā transmisijas kontrolieris 2 100 ms 522, 523, 524 Sajūga pozīcija, izvēlētais pārnesums, pašreizējais pārnesums
61449 0xF009 VDC2 - transportlīdzekļa dinamiskā vadība 2 100 ms 1807., 1808. Stūres rata leņķis, pagrieziena ātrums
65253 0xFEE5 STUNDAS - Dzinēja stundas 1 sekundes 247 Kopējais dzinēja darba stundu skaits
65256 0xFEE8 VDS - transportlīdzekļa virziens/ātrums 250 ms 517, 519, 586 Ātrums virs zemes, kompasa kurss, kurss
65258 0xFEEA ALT - Augstums 1 sekundes 580 GPS augstums virs jūras līmeņa
65262 0xFEEE ET1 - Dzinēja temperatūra 1 1 sekundes 110, 174, 175 Dzesēšanas šķidruma temperatūra, degvielas temperatūra, eļļas temperatūra
65263 0xFEEF EFLP - Dzinēja šķidruma līmenis/spiediens 500 ms 96, 100, 94 Degvielas līmenis, eļļas spiediens, degvielas padeves spiediens
65265 0xFEF1 CCVS - Kruīza kontrole/transportlīdzekļa ātrums 100 ms 84, 597, 598 Transportlīdzekļa ātrums uz riteņiem, bremžu slēdzis, sajūga slēdzis
65267 0xFEF3 VP - transportlīdzekļa pozīcija 250 ms 584, 585 GPS platums, garums
65269 0xFEF5 AMB - apkārtējās vides apstākļi 1 sekundes 108, 171 Barometriskais spiediens, apkārtējā gaisa temperatūra
65271 0xFEF7 VEP1 - Transportlīdzekļa elektriskā jauda 1 1 sekundes 167, 168, 158 Akumulatora spriegums, ģeneratora spriegums, uzlādes sistēmas spriegums
65276 0xFEFC DD - informācijas paneļa displejs 1 sekundes 182, 183 Degvielas patēriņš (l/h), momentānais degvielas ekonomija
0xEF00 0xEF00 PROP_A - Patentēts A (IONNIC USM) 250 ms - IONNIC USM ES-Key paneļa LED vadība

Detalizēts SPN saraksts (visi atbalstītie parametri)

SPN Parametra nosaukums PGN Vienība Izšķirtspēja Nobīde Diapazons
84 Transportlīdzekļa ātrums uz riteņiem 65265 km/h 1/256 km/h 0 0–250 km/h
91 Akseleratora pedāļa pozīcija 61443 % 0,4% 0 0–100%
92 Dzinēja procentuālā slodze pie pašreizējā ātruma 61443/61444 % 1% 0 0–100%
94 Degvielas padeves spiediens 65263 kPa 4 kPa 0 0–1000 kPa
96 Degvielas līmenis 65263 % 0,4% 0 0–100%
100 Dzinēja eļļas spiediens 65263 kPa 4 kPa 0 0–1000 kPa
108 Barometriskais spiediens 65269 kPa 0,5 kPa 0 0–125 kPa
110 Dzesēšanas šķidruma temperatūra 65262 °C 1°C -40 -40 līdz +210°C
158 Uzlādes sistēmas spriegums 65271 V 0,05 V 0 0–3212 V
167 Ģeneratora spriegums 65271 V 0,05 V 0 0–3212 V
168 Akumulatora spriegums 65271 V 0,05 V 0 0–3212 V
171 Apkārtējā gaisa temperatūra 65269 °C 0,03125°C -273 -273 līdz +1735°C
174 Degvielas temperatūra 65262 °C 1°C -40 -40 līdz +210°C
175 Dzinēja eļļas temperatūra 65262 °C 0,03125°C -273 -273 līdz +1735°C
182 Degvielas likme 65276 L/h 0,05 l/h 0 0–3212 l/h
183 Momentānā degvielas ekonomija 65276 km/l 1/512 km/l 0 0–125 km/l
190 Dzinēja apgriezienu skaits 61444 RPM 0,125 apgr./min 0 0–8031 apgr./min
247 Kopējais dzinēja stundu skaits 65253 h 0,05 stundas 0 0–210 554 060 stundas
512 Vadītāja pieprasījuma dzinēja griezes moments 61444 % 1% -125 -125% līdz +125%
513 Faktiskais dzinēja griezes moments 61444 % 1% -125 -125% līdz +125%
517 Ātrums virs zemes 65256 km/h 1/256 km/h 0 0–250 km/h
519 Kurss virs zemes 65256 grāds 1/128 grādi 0 0–360°
522 Sajūga pedāļa pozīcija 61445 % 0,4% 0 0–100%
523 Transmisijas strāva 61445 aprīkojums 1 -125 -125 līdz +125
524 Transmisijas izvēlētais pārnesums 61445 aprīkojums 1 -125 -125 līdz +125
580 Augstums 65258 m 0,125 m -2500 -2500 līdz +5531 m
584 Platums 65267 grāds 10⁻⁷ grādi -210 -90° līdz +90°
585 Garums 65267 grāds 10⁻⁷ grādi -210 -180° līdz +180°
586 Kompasa gultnis 65256 grāds 1/128 grādi 0 0–360°
597 Bremžu slēdzis 65265 - 2 biti - Izslēgts/Ieslēgts/Kļūda/Nav pieejams
598 Sajūga slēdzis 65265 - 2 biti - Izslēgts/Ieslēgts/Kļūda/Nav pieejams
899 Dzinēja griezes momenta režīms 61444 - 1 0 0–15 (uzskaitījums)
1807. gadā Stūres rata leņķis 61449 rad 1/1024 rad -31,374 -31,374 līdz +31,374 rad
1808. gadā Pagrieziena ātrums 61449 rad/s 1/8192 rad/s -3,92 -3,92 līdz +3,92 rad/s

Kopā: 15 PGN, 33 SPN aktīvi simulēti

🔲 Neatbalstīti PGN (vēl nav ieviesti)

Transportlīdzekļa simulators pašlaik neģenerē šādus J1939 ziņojumus. Tie atspoguļo potenciālus turpmākus uzlabojumus:

PGN Sešpadsmit Vārds Prioritāte Lietošanas gadījums Sarežģītība
61440 0xF000 ERC1 - elektroniskais palēninātāja kontrolieris 1 Zems Palēninātājs/dzinēja bremzes vadība Vidējs
61441 0xF001 EBC1 - elektroniskais bremžu kontrolieris 1 Augsts ABS, bremžu sistēmas stāvoklis Augsts
61442 0xF002 ETC1 - Elektroniskā transmisijas kontrolieris 1 Vidējs Pārraides režīms, notiek pārslēgšana Vidējs
64971 0xFDCB VDHR - transportlīdzekļa attālums (augsta izšķirtspēja) Augsts Odometrs ar 5 mm izšķirtspēju Zems
64972 0xFDCC TCO1 - Tahogrāfs Vidējs Vadītāja karte, ātrums no tahogrāfa Zems
65132 0xFE6C TPMS - riepu spiediena kontrole Vidējs Individuāls riepu spiediens/temperatūra Vidējs
65217 0xFEC1 PTODE - PTO piedziņas ieslēgšana Zems Jaudas noņemšanas vārpstas statuss Zems
65248 0xFEE0 VDIST — augstas izšķirtspējas transportlīdzekļa attālums Augsts Kopējais attālums ar 5 m izšķirtspēju Zems
65251 0xFEE3 ECFG - Dzinēja konfigurācija Zems Dzinēja marka, modelis, sērijas numurs Zems
65252 0xFEE4 IZSLĒGŠANA — Izslēgšana Zems Dzinēja izslēgšanas ignorēšana Zems
65260 0xFEEC VI — Transportlīdzekļa identifikācija Vidējs Pilna VIN pārraide (daļēja impl) Zems
65279 0xFEFF CCVS1 - Kruīza kontrole/transportlīdzekļa ātrums 1 Vidējs Uzlaboti kruīza kontroles dati Zems
65098 0xFE4A EBC2 - elektroniskais bremžu kontrolieris 2 Augsts Atsevišķu riteņu bremžu statuss Augsts
65099 0xFE4B EBC3 - elektroniskais bremžu kontrolieris 3 Vidējs Bremžu uzliku nodilums Vidējs
65110 0xFE56 IC1 - Ieplūdes/izplūdes apstākļi 1 Zems Ieplūdes kolektora spiediens/temperatūra Vidējs
65172 0xFE84 RQST — pieprasījums Zems Pieprasīt konkrētu PGN no ECU Vidējs
65226 0xFECA AT1I — 1. pēcapstrādes ieplūdes gāze Zems Dīzeļdegvielas daļiņu filtra ieplūdes atvere Zems
65227 0xFECB AT1O — 1. pēcapstrādes izplūdes gāze Zems DPF izvads, NOx sensors Zems
65247 0xFEDF EFL/P2 - Dzinēja šķidruma līmenis/spiediens 2 Zems Papildu šķidruma spiedieni Zems
65266 0xFEF2 LFE - degvielas ekonomija Vidējs Vidējais degvielas patēriņš brauciena laikā Zems
65270 0xFEF6 TD - turbokompresors Zems Pūtes spiediens, turbīnas ātrums Vidējs
65272 0xFEF8 VEP2 - Transportlīdzekļa elektriskā jauda 2 Zems Papildu elektriskie autobusi Zems

Kāpēc tie netiek ieviesti

Iemesls Ietekmētie PGN Grāfs
Neattiecas uz pamata transportlīdzekļa simulatoru ERC1, PTODE, SLĒDZENES ATSLĒDZENES ATSLĒDZENES AIZSTĀDES ATSEVIŠĶAIS IEKĀRTAS ... 7
Nepieciešams riepu fizikas modelis TPMS 1
Nepieciešams ABS/bremžu modelis EBC1, EBC2, EBC3 3
Nepieciešama uzlabota pārraide ETC1 1
Zema prioritāte / kosmētiskais efekts VI (VIN), VDHR, VDIST, TCO1, LFE 5
Nepieciešams izplūdes gāzu/emisiju modelis IC1, AT1I, AT1O 3
Protokola līmenis (nevis transportlīdzekļa dati) RQST 1
Dublētas/uzlabotas versijas CCVS1, EFL/P2, VEP2 3

Kopā: 22 neatbalstīti PGN faili

🛠️ Tehniskās īpašības

  • OpenDRIVE ceļu tīkla atbalsts : sekojiet reālistiskai ceļa ģeometrijai
  • Automātiskās pārnesumkārbas simulācija : pārnesumu maiņa, pamatojoties uz ātrumu un droseles stāvokli
  • Uz fiziku balstīta dinamika : paātrinājums, bremzēšana, stūrēšana ar reālistiskiem ierobežojumiem
  • DDS integrācija : tieša publicēšana J1939 automobiļu PSM tēmās
  • Qt6 GUI : reāllaika vizualizācija un manuāla vadība

J1939 uz DDS vārtejas arhitektūru

Šī secības diagramma ilustrē pilnīgu datu plūsmu no J1939 CAN kopnes ziņojumiem caur vārteju līdz DDS abonentiem:

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)

Secības diagrammas skaidrojums

1. Ziņojumu ģenerēšanas fāze

  • Transportlīdzekļa simulators aprēķina reālistiskus transportlīdzekļa parametrus, pamatojoties uz vadītāja ievadi un fizikas datiem
  • Kodē parametrus J1939 CAN kadros ar atbilstošu PGN/SPN struktūru
  • Pārraida uz virtuālo CAN saskarni (vcan0)

2. CAN uztveršanas fāze

  • SocketCanReader Qt pavediens nepārtraukti lasa no CAN saskarnes
  • Validē CAN kadra formātu (29 bitu paplašināts ID)
  • Izstaro Qt signālu ar neapstrādātiem kadra datiem

3. J1939 dekodēšanas fāze

  • J1939Decoder iegūst protokola informāciju no CAN ID:
    • PGN : Parametru grupas numurs (identificē ziņojuma veidu)
    • Avota adrese : ECU identifikators (0–253)
    • Prioritāte : Ziņojuma steidzamība (0 = augstākā, 7 = zemākā)
  • Dekodē datu vērtumu atsevišķos SPN, izmantojot konfigurāciju:
    • Bita pozīcija un garums
    • Mēroga koeficients un nobīde
    • Inženiertehniskās vienības

4. DDS publicēšanas fāze

  • Vārteja publicē C_Parameter_Group_Definition (PGN metadatus) pirmajā reizē
  • Katram ziņojumā norādītajam SPN:
    • Izveido C_Parameter ziņojumu ar vērtību un statusu
    • Pievieno laika zīmogu un avota identifikāciju
    • Publicē DDS tēmā
  • Periodiski statusa atjauninājumi (1 Hz) publicē vārtejas stāvokli

5. Patēriņa fāze

  • GVA lietojumprogrammas (HMI, LDMX) abonē J1939 DDS tēmas
  • Saņemt parametru atjauninājumus, izmantojot DDS starpprogrammatūru
  • Atjaunināt lietotāja interfeisa elementus (spidometru, tahometru, pārnesumu displeju)

Protokola detaļas

J1939 CAN ID struktūra (29 biti)

 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 kadra dekodēšanas piemērs

 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)

Ātrā sākšana

1. Izveidojiet transportlīdzekļa simulatoru

 cd build
cmake ..
make gva-vehicle-sim

2. Virtuālā CAN iestatīšana

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

3. Sāciet transportlīdzekļa simulatoru

 # 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. Sāciet J1939 vārteju

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

5. Uzraudzīšana ar LDMX

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

Konfigurācija

Transportlīdzekļa simulatora konfigurācija

Izveidojiet 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 vārtejas konfigurācija

PGN/SPN definīcijas un mērogošanas parametrus skatiet failā /etc/gva/j1939-config.json .

Lietošanas gadījumi

1. HMI izstrāde

  • Izstrādāt transportlīdzekļa informācijas paneli bez fiziska transportlīdzekļa
  • Instrumentu paneļa renderēšanas un animāciju pārbaude
  • Brīdinājuma/trauksmes sliekšņu validēšana

2. Algoritmu testēšana

  • Ekobraukšanas algoritmu pārbaude ar simulētu degvielas patēriņu
  • Paredzošās apkopes loģikas validēšana
  • Testa autonomās braukšanas lēmumu pieņemšana

3. Integrācijas testēšana

  • Pilna datu plūsmas pārbaude: CAN → DDS → Lietojumprogramma
  • Vārtejas veiktspējas pārbaude slodzes apstākļos
  • Datu sinhronizācijas validēšana starp apakšsistēmām

4. Apmācība un demonstrācija

  • Droša vide operatoru apmācībai
  • Klientu demonstrācijas bez transportlīdzekļa
  • Izglītojošs rīks GVA arhitektūrai

Veiktspējas raksturlielumi

Metrika Vērtība
CAN kadru ģenerēšanas ātrums Līdz 100 Hz uz PGN
DDS publicēšanas latentums < 5 ms (lokāli)
Vārtejas caurlaidspēja > 1000 PGN/sekundē
CPU noslodze (simulators + vārteja) < 10% (4 kodolu sistēma)
Atmiņas nospiedums ~50 MB (kopā)

Salīdzinājums: Fizisks vs. Simulēts

Aspekts Fizisks transportlīdzeklis Simulators
Aparatūras izmaksas 50 000 ASV dolāru+ 0 ASV dolāri (tikai programmatūra)
Iestatīšanas laiks Stundas (elektroinstalācija, konfigurācija) Minūtes
Reproducējamība Ierobežota (vadītāja mainība) Perfekts (deterministisks)
Drošība Bojājumu/traumu risks Nulles risks
Scenāriju kontrole Grūti (laika apstākļi, satiksme) Pilnīga kontrole
Datu reģistrēšana Nepieciešams aprīkojums Iebūvēts
Paralēlā testēšana Viens transportlīdzeklis vienlaikus Vairāki gadījumi

Problēmu novēršana

Bieži sastopamas problēmas

CAN saskarne nav atrasta

 # Verify vcan0 exists
ip link show vcan0

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

Nav DDS ziņojumu

 # 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

Vārteja neatšifrē ziņojumus

 # Check CAN frames are being sent
candump vcan0

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

Pieprasiet demonstrāciju jau šodien.