ماذا يقول سطر SG_؟
يصف ملف DBC الرسائل على ناقل CAN. تبدأ كل رسالة بسطر BO_، ولكل إشارة داخلها سطر SG_. ويحمل سطر SG_ كل ما تحتاجه الأداة لتحويل البتات إلى قيمة.
SG_ EngineSpeed : 24|16@1+ (0.125,0) [0|8031.875] "rpm" Vector__XXX
| الجزء | في المثال | المعنى |
|---|---|---|
| الاسم | EngineSpeed | اسم الإشارة. حروف لاتينية وأرقام وشرطة سفلية. |
| بت البداية | 24 | في Intel: البت الأدنى أهمية. وفي Motorola: البت الأعلى أهمية. |
| الطول | 16 | عدد البتات. |
| ترتيب البايتات | @1 | الرقم 1 يعني Intel (الأدنى أولاً)، والرقم 0 يعني Motorola (الأعلى أولاً). |
| الإشارة | + | + بلا إشارة، و- بإشارة بالمتمم الثنائي. |
| المعامل والإزاحة | (0.125,0) | القيمة = الإزاحة + المعامل × الخام. |
| الحدان | [0|8031.875] | المدى الفيزيائي الصالح. |
| الوحدة والمستقبِل | "rpm" Vector__XXX | نص الوحدة والعقدة التي تقرأ الإشارة. |
Intel أم Motorola؟
يحدد ترتيب البايتات أي بايت يحمل الجزء الأعلى من القيمة متعددة البايتات. يضع Intel البايت الأدنى أولاً، ويضع Motorola البايت الأعلى أولاً. وإذا قُرئت البايتات نفسها بترتيب خاطئ قد تبتعد القيمة بالآلاف.
Intel 0|16@1
Motorola 7|16@0
مثال محلول: سرعة المحرك
ينشر شرح لإحدى شركات مسجلات CAN هذا المثال لرسالة J1939 المسماة EEC1، وهو العينة المحمّلة في الأداة.
- الحمولة
FF FF FF 68 13 FF FF FF. والإشارة24|16@1+: ترتيب Intel و16 بتاً بدءاً من البت 24. - البت 24 هو البت 0 في البايت 3، فتستخدم الإشارة البايتين 3 و4:
68و13. - يضع Intel البايت الأدنى أولاً، فالقيمة الخام
0x1368= 4968. - القيمة = 0 + 0.125 × 4968 = 621 دورة في الدقيقة.
لماذا يعرض محرري بت بداية مختلفاً؟
في إشارات Motorola عادتان. يحفظ ملف DBC البت الأعلى أهمية ليكون بت البداية. وتعرض بعض المحررات البت الأدنى أهمية لأنه أسهل في الرسم على الشبكة. وكلاهما يصف الإشارة نفسها. تقبل الأداة أياً منهما وتكتب دائماً صيغة DBC.
| الإشارة | البداية بالبت الأعلى، DBC | البداية بالبت الأدنى، بعض المحررات |
|---|---|---|
| 12 بتاً من البايت 0 | 7 | 12 |
| 16 بتاً من البايت 0 | 7 | 8 |
| 4 بتات في أعلى البايت 0 | 7 | 4 |
القيم السالبة والمعاملات
تستخدم الإشارة ذات الإشارة السالبة المتمم الثنائي على طولها هي، لا على بايت كامل. فالإشارة ذات الـ 12 بتاً التي بتها الأعلى 1 سالبة حتى لو بدا البايت المحيط بها موجباً. وبعد تحديد الإشارة يحوّل المعامل والإزاحة الرقم الخام إلى القيمة الفيزيائية.
ما الذي يسوء عادة؟
- القيمة كبيرة جداً. ترتيب البايتات خطأ. جرّبوا الترتيب الآخر وقارنوا بلوحة العدادات.
- إشارة Motorola منزاحة. نُسخ بت البداية من محرر يعرض البت الأدنى. غيّروا إعداد بت البداية.
- القيم السالبة تبدو ضخمة. الإشارة بإشارة لكنها قُرئت بلا إشارة.
- كل البتات 1. في J1939 وبروتوكولات كثيرة يعني ذلك أن القيمة غير متاحة.
- تمتد الإشارة إلى ما بعد الحمولة. الإطار أقصر مما يتوقعه التعريف، أو بت البداية خطأ.
المصادر والحدود
- صيغة SG_ وترتيب البايتات ومثال EngineSpeed: شرح ملفات DBC (من شركة مسجلات CAN). وحمولة EEC1: مدخل J1939 (من المصدر نفسه).
- تعريفات إشارات مركبتكم عليكم إدخالها. لا تتضمن الأداة أي تعريف غير المثال المنشور.
- لم نتمكن من مراجعة ترتيب إشارة سرعة المحرك في EEC1 (البايتان 4 و5 بالعد من 1، و0.125 دورة/دقيقة لكل بت) في نص SAE J1939 الرسمي لأنه مدفوع. آخر مراجعة 2026-11-03. استخدموه للتدريب وخذوا التعريفات الحقيقية من صانع المركبة.
- تُفك الإشارات متعددة الإرسال من الحمولة نفسها دون فحص قيمة المُبدِّل. ولا تشمل الأداة الإشارات العشرية العائمة.
- كل شيء يعمل في متصفحكم. وإذا طلبتم التقرير أو ملف CSV بالبريد تُرسل مدخلاتكم، ونص DBC إذا كان قصيراً، إلى خادمنا مع الطلب وتُحفظ مدة تصل إلى 45 يوماً. ويحمل رابط المشاركة النص فقط إذا كان قصيراً.
- لا تقول هذه الصفحة إن أي جهاز يقرأ إشارة CAN معينة. فهذا يتوقف على الطراز وإعداداته.