محاكي المركبات J1939
محاكي مركبات يدعم بروتوكول J1939 CAN
ملخص
يُعدّ برنامج محاكاة المركبات ( gva-vehicle-sim ) أداة شاملة للاختبار والتطوير لمنصة GVA (معمارية المركبات العامة). وهو يوفر محاكاة واقعية لديناميكيات المركبات مع توليد رسائل ناقل CAN J1939 مدمج، مما يتيح اختبار الأجهزة في الحلقة دون الحاجة إلى أجهزة مركبة فعلية.
فوائد محاكاة J1939 في توليد الرسائل
🎯 مزايا التطوير والاختبار
تطوير مستقل عن الأجهزة
- قم بتطوير واختبار تطبيقات GVA بدون أجهزة CAN فعلية
- لا حاجة لوحدات تحكم إلكترونية باهظة الثمن للسيارات أو منصات اختبار.
- التطوير المتوازي عبر فرق متعددة
سلوك واقعي للمركبة
- يقوم بإنشاء أرقام مجموعات المعلمات الأصلية J1939 (PGNs) وأرقام المعلمات المشتبه بها (SPNs).
- يحاكي ديناميكيات المركبات الواقعية (السرعة، عدد دورات المحرك في الدقيقة، تغييرات التروس، الكبح)
- يوفر بيانات المستشعرات المتزامنة مع الوقت
خفض التكاليف
- يلغي الحاجة إلى مركبات اختبار مادية في المراحل المبكرة من التطوير
- تتيح واجهة CAN الافتراضية (
vcan0) إجراء الاختبارات على أي محطة عمل تعمل بنظام Linux - يقلل من تآكل وتلف الأجهزة المادية
النموذج الأولي السريع
- حلقة تغذية راجعة فورية لتطوير الخوارزميات
- إنشاء السيناريوهات وإعادة تشغيلها بسهولة
- معدلات الرسائل وأنماط البيانات القابلة للتكوين
اختبار التكامل
- التحقق من وظائف بوابة J1939
- اختبار تدفق البيانات من CAN إلى مواضيع DDS
- تحقق من استجابة واجهة المستخدم الرسومية لمعايير المركبة
اختبار قابل للتكرار
- سلوك المركبة الحتمي
- سيناريوهات اختبار قابلة للتكرار
- خط أساس ثابت لاختبار الانحدار
📊 دعم الرسائل J1939
✅ دعم كامل لملفات PGN (مُطبقة في محاكي المركبات)
يقوم جهاز محاكاة المركبة بإنشاء رسائل J1939 التالية عبر CAN وينشرها إلى DDS عبر البوابة:
| PGN | عرافة | اسم | معدل | SPNs | وصف |
|---|---|---|---|---|---|
| 61443 | 0xF003 | وحدة التحكم الإلكترونية للمحرك 2 ( EEC2 ) | 50 مللي ثانية | 91، 92 | موضع دواسة الوقود، نسبة حمل المحرك |
| 61444 | 0xF004 | EEC1 - وحدة التحكم الإلكترونية للمحرك 1 | 100 مللي ثانية | 190، 512، 513 | سرعة المحرك (دورة في الدقيقة)، عزم الدوران المطلوب من السائق، عزم دوران المحرك الفعلي |
| 61445 | 0xF005 | ETC2 - وحدة التحكم الإلكترونية في الإرسال 2 | 100 مللي ثانية | 522، 523، 524 | وضع القابض، الترس المحدد، الترس الحالي |
| 61449 | 0xF009 | VDC2 - نظام التحكم الديناميكي للمركبة 2 | 100 مللي ثانية | 1807، 1808 | زاوية عجلة القيادة، معدل الانعراج |
| 65253 | 0xFEE5 | ساعات تشغيل المحرك | 1 ثانية | 247 | إجمالي ساعات تشغيل المحرك |
| 65256 | 0xFEE8 | VDS - اتجاه/سرعة المركبة | 250 مللي ثانية | 517، 519، 586 | السرعة على الأرض، اتجاه البوصلة، المسار |
| 65258 | 0xFEEA | الارتفاع - ALT | 1 ثانية | 580 | الارتفاع المحدد بنظام تحديد المواقع العالمي (GPS) فوق مستوى سطح البحر |
| 65262 | 0xFEEE | ET1 - درجة حرارة المحرك 1 | 1 ثانية | 110، 174، 175 | درجة حرارة سائل تبريد المحرك، درجة حرارة الوقود، درجة حرارة الزيت |
| 65263 | 0xFEEF | EFLP - مستوى/ضغط سائل المحرك | 500 مللي ثانية | 96، 100، 94 | مستوى الوقود، ضغط الزيت، ضغط توصيل الوقود |
| 65265 | 0xFEF1 | نظام تثبيت السرعة / سرعة السيارة | 100 مللي ثانية | 84، 597، 598 | سرعة المركبة ذات العجلات، مفتاح الفرامل، مفتاح القابض |
| 65267 | 0xFEF3 | نائب الرئيس - منصب المركبة | 250 مللي ثانية | 584، 585 | خط العرض وخط الطول لنظام تحديد المواقع العالمي (GPS) |
| 65269 | 0xFEF5 | الظروف المحيطة - AMB | 1 ثانية | 108، 171 | الضغط الجوي، درجة حرارة الهواء المحيط |
| 65271 | 0xFEF7 | VEP1 - الطاقة الكهربائية للمركبة 1 | 1 ثانية | 167، 168، 158 | جهد البطارية، جهد المولد، جهد نظام الشحن |
| 65276 | 0xFEFC | DD - شاشة عرض لوحة القيادة | 1 ثانية | 182، 183 | معدل استهلاك الوقود (لتر/ساعة)، معدل استهلاك الوقود اللحظي |
| 0xEF00 | 0xEF00 | PROP_A - الملكية الخاصة A (IONNIC USM) | 250 مللي ثانية | - | التحكم في مؤشر LED للوحة مفاتيح IONNIC USM ES |
قائمة SPN التفصيلية (جميع المعلمات المدعومة)
| خارق للطبيعة | اسم المعلمة | PGN | وحدة | دقة | إزاحة | يتراوح |
|---|---|---|---|---|---|---|
| 84 | سرعة المركبات ذات العجلات | 65265 | كم/ساعة | 1/256 كم/ساعة | 0 | من 0 إلى 250 كم/ساعة |
| 91 | وضع دواسة الوقود | 61443 | % | 0.4% | 0 | 0-100% |
| 92 | نسبة حمل المحرك عند السرعة الحالية | 61443/61444 | % | 1% | 0 | 0-100% |
| 94 | توصيل الوقود | 65263 | كيلو باسكال | 4 كيلو باسكال | 0 | 0-1000 كيلو باسكال |
| 96 | مستوى الوقود | 65263 | % | 0.4% | 0 | 0-100% |
| 100 | ضغط زيت المحرك | 65263 | كيلو باسكال | 4 كيلو باسكال | 0 | 0-1000 كيلو باسكال |
| 108 | الضغط الجوي | 65269 | كيلو باسكال | 0.5 كيلو باسكال | 0 | 0-125 كيلو باسكال |
| 110 | درجة حرارة سائل تبريد المحرك | 65262 | درجة مئوية | 1 درجة مئوية | -40 | من -40 إلى +210 درجة مئوية |
| 158 | جهد نظام الشحن | 65271 | V | 0.05 فولت | 0 | 0-3212 فولت |
| 167 | جهد المولد | 65271 | V | 0.05 فولت | 0 | 0-3212 فولت |
| 168 | جهد البطارية | 65271 | V | 0.05 فولت | 0 | 0-3212 فولت |
| 171 | درجة حرارة الهواء المحيط | 65269 | درجة مئوية | 0.03125 درجة مئوية | -273 | من -273 إلى +1735 درجة مئوية |
| 174 | درجة حرارة الوقود | 65262 | درجة مئوية | 1 درجة مئوية | -40 | من -40 إلى +210 درجة مئوية |
| 175 | درجة حرارة زيت المحرك | 65262 | درجة مئوية | 0.03125 درجة مئوية | -273 | من -273 إلى +1735 درجة مئوية |
| 182 | معدل استهلاك الوقود | 65276 | لتر/ساعة | 0.05 لتر/ساعة | 0 | 0-3212 لتر/ساعة |
| 183 | اقتصاد فوري في استهلاك الوقود | 65276 | كم/لتر | 1/512 كم/لتر | 0 | 0-125 كم/لتر |
| 190 | سرعة المحرك | 61444 | عدد دورات المحرك في الدقيقة | 0.125 دورة في الدقيقة | 0 | 0-8031 دورة في الدقيقة |
| 247 | إجمالي ساعات تشغيل المحرك | 65253 | ح | 0.05 ساعة | 0 | 0-210,554,060 ساعة |
| 512 | عزم دوران المحرك حسب طلب السائق | 61444 | % | 1% | -125 | من -125% إلى +125% |
| 513 | عزم دوران المحرك الفعلي | 61444 | % | 1% | -125 | من -125% إلى +125% |
| 517 | السرعة على الأرض | 65256 | كم/ساعة | 1/256 كم/ساعة | 0 | من 0 إلى 250 كم/ساعة |
| 519 | مسار فوق الأرض | 65256 | درجة | 1/128 درجة | 0 | 0-360 درجة |
| 522 | وضع دواسة القابض | 61445 | % | 0.4% | 0 | 0-100% |
| 523 | تروس التيار الناقل | 61445 | معدات | 1 | -125 | من -125 إلى +125 |
| 524 | ناقل الحركة - الترس المحدد | 61445 | معدات | 1 | -125 | من -125 إلى +125 |
| 580 | ارتفاع | 65258 | م | 0.125 متر | -2500 | من -2500 إلى +5531 مترًا |
| 584 | خط العرض | 65267 | درجة | 10⁻⁷ درجة | -210 | من -90 درجة إلى +90 درجة |
| 585 | خط الطول | 65267 | درجة | 10⁻⁷ درجة | -210 | من -180 درجة إلى +180 درجة |
| 586 | اتجاه البوصلة | 65256 | درجة | 1/128 درجة | 0 | 0-360 درجة |
| 597 | مفتاح الفرامل | 65265 | - | 2 بت | - | إيقاف/تشغيل/خطأ/غير متوفر |
| 598 | مفتاح القابض | 65265 | - | 2 بت | - | إيقاف/تشغيل/خطأ/غير متوفر |
| 899 | وضع عزم دوران المحرك | 61444 | - | 1 | 0 | 0-15 (التعداد) |
| 1807 | زاوية عجلة القيادة | 61449 | راد | 1/1024 راديان | -31.374 | من -31.374 إلى +31.374 راديان |
| 1808 | معدل الانعراج | 61449 | راد/ثانية | 1/8192 راديان/ثانية | -3.92 | من -3.92 إلى +3.92 راديان/ثانية |
المجموع: 15 شبكة عصبية شبكية، 33 شبكة عصبية شبكية ذاتية المحاكاة بشكل فعال
🔲 ملفات PGN غير مدعومة (لم يتم تنفيذها بعد)
لا يقوم محاكي المركبات حاليًا بإنشاء رسائل J1939 التالية. تمثل هذه الرسائل تحسينات مستقبلية محتملة:
| PGN | عرافة | اسم | أولوية | حالة الاستخدام | تعقيد |
|---|---|---|---|---|---|
| 61440 | 0xF000 | وحدة التحكم الإلكترونية في المثبط 1 (ERC1 ) | قليل | نظام التحكم في فرامل المحرك/المثبط | واسطة |
| 61441 | 0xF001 | EBC1 - وحدة التحكم الإلكترونية في الفرامل 1 | عالي | نظام منع انغلاق المكابح (ABS) وحالة نظام الفرامل | عالي |
| 61442 | 0xF002 | ETC1 - وحدة التحكم الإلكترونية في الإرسال 1 | واسطة | وضع الإرسال، عملية التحويل جارية | واسطة |
| 64971 | 0xFDCB | VDHR - مسافة المركبات (عالية الدقة) | عالي | عداد المسافات بدقة 5 مم | قليل |
| 64972 | 0xFDCC | TCO1 - جهاز تسجيل السرعة | واسطة | بطاقة السائق، السرعة من جهاز تسجيل السرعة | قليل |
| 65132 | 0xFE6C | نظام مراقبة ضغط الإطارات ( TPMS ) | واسطة | ضغط/درجة حرارة كل إطار على حدة | واسطة |
| 65217 | 0xFEC1 | PTODE - تفعيل محرك PTO | قليل | حالة مأخذ الطاقة | قليل |
| 65248 | 0xFEE0 | VDIST - مسافة المركبات عالية الدقة | عالي | المسافة الإجمالية بدقة 5 أمتار | قليل |
| 65251 | 0xFEE3 | ECFG - تكوين المحرك | قليل | نوع المحرك، طرازه، رقمه التسلسلي | قليل |
| 65252 | 0xFEE4 | SHUTDN - إيقاف التشغيل | قليل | تجاوز إيقاف تشغيل المحرك | قليل |
| 65260 | 0xFEEC | السادس - تحديد هوية المركبة | واسطة | نقل كامل لرقم تعريف المركبة (تنفيذ جزئي) | قليل |
| 65279 | 0xFEFF | CCVS1 - مثبت السرعة / سرعة السيارة 1 | واسطة | بيانات محسّنة للتحكم في السرعة | قليل |
| 65098 | 0xFE4A | EBC2 - وحدة التحكم الإلكترونية في الفرامل 2 | عالي | حالة فرامل كل عجلة على حدة | عالي |
| 65099 | 0xFE4B | EBC3 - وحدة التحكم الإلكترونية في الفرامل 3 | واسطة | تآكل بطانة الفرامل | واسطة |
| 65110 | 0xFE56 | IC1 - شروط الدخول/الخروج 1 | قليل | ضغط/درجة حرارة مشعب السحب | واسطة |
| 65172 | 0xFE84 | طلب - RQST | قليل | اطلب رقم تعريف المنتج (PGN) المحدد من وحدة التحكم الإلكترونية (ECU). | واسطة |
| 65226 | 0xFECA | AT1I - المعالجة اللاحقة 1 لسحب الغاز | قليل | مدخل مرشح جسيمات الديزل | قليل |
| 65227 | 0xFECB | AT1O - المعالجة اللاحقة 1 مخرج الغاز | قليل | مخرج مرشح جسيمات الديزل، مستشعر أكاسيد النيتروجين | قليل |
| 65247 | 0xFEDF | EFL/P2 - مستوى/ضغط سائل المحرك 2 | قليل | ضغوط السوائل الإضافية | قليل |
| 65266 | 0xFEF2 | LFE - اقتصاد الوقود | واسطة | متوسط استهلاك الوقود لكل رحلة | قليل |
| 65270 | 0xFEF6 | TD - الشاحن التوربيني | قليل | زيادة الضغط، سرعة التوربين | واسطة |
| 65272 | 0xFEF8 | VEP2 - الطاقة الكهربائية للمركبة 2 | قليل | حافلات كهربائية إضافية | قليل |
لماذا لا يتم تطبيق هذه الأمور؟
| سبب | الخلايا العصبية المتأثرة | عدد |
|---|---|---|
| غير ذي صلة بمحاكاة المركبات الأساسية | ERC1، PTODE، SHUTDN، ECFG، AT1I، AT1O، TD | 7 |
| يتطلب نموذج فيزيائي للإطارات | نظام مراقبة ضغط الإطارات (TPMS) | 1 |
| يتطلب طراز ABS/الفرامل | EBC1، EBC2، EBC3 | 3 |
| يتطلب ناقل حركة متطور | ETC1 | 1 |
| أولوية منخفضة / تجميلية | السادس (VIN)، VDHR، VDIST، TCO1، LFE | 5 |
| يتطلب نموذج العادم/الانبعاثات | IC1، AT1I، AT1O | 3 |
| مستوى البروتوكول (وليس بيانات المركبة) | RQST | 1 |
| نسخ مكررة/محسّنة | CCVS1، EFL/P2، VEP2 | 3 |
المجموع: 22 ملف PGN غير مدعوم
🛠️ الميزات التقنية
- دعم شبكة الطرق في OpenDRIVE : اتبع هندسة الطرق الواقعية
- محاكاة ناقل الحركة الأوتوماتيكي : تغييرات التروس بناءً على السرعة ودواسة الوقود
- ديناميكيات قائمة على الفيزياء : التسارع، والكبح، والتوجيه مع قيود واقعية
- تكامل DDS : النشر المباشر لمواضيع J1939 الخاصة بإدارة سلامة العمليات في قطاع السيارات
- واجهة المستخدم الرسومية Qt6 : عرض مرئي في الوقت الفعلي وتحكم يدوي
J1939 إلى بنية بوابة DDS
يوضح مخطط التسلسل التالي تدفق البيانات الكامل من رسائل ناقل J1939 CAN عبر البوابة إلى مشتركي DDS:
(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)
شرح مخطط التسلسل
1. مرحلة توليد الرسائل
- يقوم برنامج محاكاة المركبات بحساب معايير واقعية للمركبة بناءً على مدخلات السائق وقوانين الفيزياء.
- يقوم بتشفير المعلمات في إطارات J1939 CAN باستخدام بنية PGN/SPN المناسبة
- يرسل إلى واجهة CAN الافتراضية (vcan0)
2. مرحلة استقبال CAN
- يقوم مؤشر ترابط SocketCanReader Qt بالقراءة باستمرار من واجهة CAN
- يتحقق من صحة تنسيق إطار CAN (معرف موسع 29 بت)
- يُصدر إشارة Qt مع بيانات الإطار الخام
3. مرحلة فك تشفير J1939
- يقوم برنامج J1939Decoder باستخراج معلومات البروتوكول من معرف CAN:
- PGN : رقم مجموعة المعلمات (يحدد نوع الرسالة)
- عنوان المصدر : مُعرّف وحدة التحكم الإلكترونية (0-253)
- الأولوية : مدى إلحاح الرسالة (0 = الأعلى، 7 = الأدنى)
- يقوم بفك تشفير حمولة البيانات إلى أسماء الخدمة الفردية (SPNs) باستخدام التكوين:
- موضع البت وطوله
- عامل المقياس والإزاحة
- وحدات هندسية
4. مرحلة نشر DDS
- تنشر البوابة
C_Parameter_Group_Definition(بيانات تعريف PGN) عند أول ظهور لها - لكل اسم خدمة رئيسي (SPN) في الرسالة:
- يقوم بإنشاء رسالة
C_Parameterمع القيمة والحالة - يضيف الطابع الزمني وتحديد المصدر
- ينشر في موضوع DDS
- يقوم بإنشاء رسالة
- تحديثات الحالة الدورية (1 هرتز) تنشر حالة البوابة
5. مرحلة الاستهلاك
- تشترك تطبيقات GVA (HMI، LDMX) في مواضيع J1939 DDS
- تلقي تحديثات المعلمات عبر برنامج DDS الوسيط
- تحديث عناصر واجهة المستخدم (عداد السرعة، عداد دورات المحرك، شاشة عرض التروس)
تفاصيل البروتوكول
بنية معرف CAN J1939 (29 بت)
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
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)بداية سريعة
1. بناء محاكي المركبات
cd build
cmake ..
make gva-vehicle-sim2. إعداد شبكة CAN الافتراضية
sudo scripts/test/j1939/setup-vcan.sh3. ابدأ تشغيل محاكي المركبات
# 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 \
--headless4. بدء تشغيل بوابة J1939
./build/bin/gva-j1939-gateway \
--domain=0 \
--interface=vcan0 \
--config=/etc/gva/j1939-config.json5. المراقبة باستخدام LDMX
./build/bin/ldmx
# Navigate to J1939 tab to see live parametersإعدادات
تكوين محاكي المركبات
إنشاء ملف 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
راجع /etc/gva/j1939-config.json للاطلاع على تعريفات PGN/SPN ومعلمات التحجيم.
حالات الاستخدام
1. تطوير واجهة الإنسان والآلة
- تطوير لوحة تحكم المركبة بدون مركبة فعلية
- عرض ورسوم متحركة لمجموعة أدوات الاختبار
- التحقق من عتبات التحذير/الإنذار
2. اختبار الخوارزميات
- اختبار خوارزميات القيادة الاقتصادية مع محاكاة استهلاك الوقود
- التحقق من صحة منطق الصيانة التنبؤية
- اختبار اتخاذ القرارات في القيادة الذاتية
3. اختبار التكامل
- تحقق من تدفق البيانات من البداية إلى النهاية: CAN → DDS → التطبيق
- اختبار أداء البوابة تحت الحمل
- التحقق من مزامنة البيانات عبر الأنظمة الفرعية
4. التدريب والعرض التوضيحي
- بيئة آمنة لتدريب المشغلين
- عروض توضيحية للعملاء بدون مركبة
- أداة تعليمية لهندسة القيمة المضافة العالمية
خصائص الأداء
| متري | قيمة |
|---|---|
| معدل توليد إطارات CAN | يصل إلى 100 هرتز لكل PGN |
| زمن استجابة نشر DDS | أقل من 5 مللي ثانية (محليًا) |
| معدل نقل البيانات عبر البوابة | > 1000 PGNs/ثانية |
| استخدام وحدة المعالجة المركزية (المحاكي + البوابة) | أقل من 10% (نظام رباعي النواة) |
| بصمة الذاكرة | حوالي 50 ميجابايت (مجمعة) |
مقارنة: الواقعي مقابل المحاكاة
| وجه | مركبة مادية | محاكي |
|---|---|---|
| تكلفة الأجهزة | 50,000 دولار أمريكي أو أكثر | 0 دولار (للبرنامج فقط) |
| وقت الإعداد | ساعات (التوصيلات، التكوين) | دقائق |
| قابلية التكرار | محدود (تباين السائق) | مثالي (حتمي) |
| أمان | خطر التلف/الإصابة | مخاطرة معدومة |
| التحكم في السيناريو | صعب (الطقس، حركة المرور) | سيطرة كاملة |
| تسجيل البيانات | يتطلب معدات | مدمج |
| الاختبار المتوازي | مركبة واحدة في كل مرة | حالات متعددة |
استكشاف الأخطاء وإصلاحها
المشاكل الشائعة
لم يتم العثور على واجهة CAN
# Verify vcan0 exists
ip link show vcan0
# Recreate if needed
sudo scripts/test/j1939/setup-vcan.shلا توجد رسائل DDS
# 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البوابة لا تقوم بفك تشفير الرسائل
# Check CAN frames are being sent
candump vcan0
# Verify configuration file
cat /etc/gva/j1939-config.jsonاطلب عرضًا توضيحيًا اليوم.