طبيب أسنان ذكي
اتصال البيانات في الوقت الفعلي لأنظمة الدفاع
البرمجيات الوسيطة التي تدعم منصات المركبات ذات المهام الحرجة
نظام DDS كامل الميزات مع أنواع X. نظام DDS من فئة الأسلحة للدفاع.
Powering defence
يُعدّ برنامج Astute DDS وسيط توزيع البيانات الذي يُمثّل جوهر حلّ Astute Systems المتكامل لهندسة المركبات العامة (GVA) وفقًا لمعيار DEF-STAN 23-009. من أجهزة الاستشعار إلى الشاشات، تربط منصة موحدة واحدة جميع الأنظمة الفرعية في مركبتك العسكرية.
Why Publish/Subscribe
مشكلة البنى التقليدية
تستخدم أنظمة المركبات القديمة اتصالات مباشرة بين نقطتين. عند إضافة نظام فرعي جديد، يجب تعديل كل نظام يتصل به. ينتج عن ذلك ما يلي:
- ❌ تكامل مكلف — يتطلب كل مكون جديد برمجة مخصصة
- ❌ الأنظمة الهشة — يمكن أن يؤدي عطل واحد إلى سلسلة من التداعيات في جميع أنحاء الشبكة
- ❌ التقييد بالمورد — تُجبرك البروتوكولات الاحتكارية على التعامل مع مورد واحد
- ❌ ترقيات بطيئة — تغيير نظام فرعي واحد يعني إعادة اختبار كل شيء
حل النشر/الاشتراك
في بنية النشر/الاشتراك الخاصة بنظام DDS، تقوم الأنظمة الفرعية ببساطة بنشر البيانات إلى مواضيع محددة. أي نظام يحتاج إلى هذه البيانات يشترك في الموضوع. لا توجد اتصالات مباشرة بين نقطتين. لا حاجة إلى رمز تكامل مخصص.
| الفائدة التجارية | كيف تُقدّم خدمة Pub/Sub خدماتها |
|---|---|
| 💰 انخفاض تكاليف التكامل | إضافة أنظمة فرعية جديدة دون تعديل الأنظمة الموجودة |
| 🔧 صيانة أسهل | استبدل أو حسّن المكونات بشكل مستقل |
| 🛡️ مرونة أكبر | تستمر الأنظمة في العمل حتى عندما تتعطل أنظمة أخرى. |
| 🏭 حرية تعدد البائعين | قم بدمج المعدات من موردين مختلفين على ناقل بيانات واحد |
| ⏱️ سرعة أكبر في طرح المنتج في السوق | تعني الواجهات القياسية تقليل الحاجة إلى التطوير المخصص |
مصدر واحد لمجموعة أدوات GVA الكاملة
تُعد شركة Astute Systems المورد الوحيد الذي يوفر حزمة برمجية متكاملة وكاملة للمركبات العسكرية المتوافقة مع معايير GVA:
| عنصر | ما يفعله |
|---|---|
| بوهيمي | عرض نماذج SysML والتحقق من صحتها، وإنشاء تعريفات الواجهات. |
| LDMX | أفضل محرر ومدقق لنموذج بيانات الأراضي (LDM v10.0.0) |
| ToolX | أدوات توليد التعليمات البرمجية الآلية، وتكامل البناء، والنشر |
| طبيب أسنان ذكي | قم بتوصيل جميع الأنظمة الفرعية بتوزيع بيانات آمن وفي الوقت الفعلي |
| نموذج بيانات الأراضي الإصدار 10.0.0 | أنواع بيانات متوافقة مع GVA مُجهزة مسبقًا لجميع مجالات المركبات |
| واجهة مستخدم ذكية | برنامج عرض الطاقم الذي يفي بمتطلبات DEF-STAN 23-009 |
مزايا التكامل الكامل
| فائدة | تأثير |
|---|---|
| 🎯 نقطة مسؤولية واحدة | عقد واحد، فريق دعم واحد، شريك تكامل واحد |
| 📋 امتثال مثبت | تم التحقق من صحتها مسبقًا وفقًا لمتطلبات DEF-STAN 23-009 |
| 🔄 تحديثات سلسة | قم بترقية أي مكون دون إتلاف المكونات الأخرى. |
| 💰 تكاليف قابلة للتنبؤ | لا توجد رسوم تكامل مفاجئة أو عوائق ترخيص غير متوقعة |
| ⏱️ توصيل أسرع | ابدأ ببرامج عاملة، وليس بأطر عمل فارغة. |
Comparison
اعتبارات الشراء
| عامل | طبيب أسنان ذكي | RTI Connext | CycloneDDS | OpenDDS | نظام DDS سريع |
|---|---|---|---|---|---|
| نموذج الترخيص | خيارات مرنة | إعلان تجاري لكل مقعد | إكليبس إي بي إل 2.0 | إل جي بي إل | أباتشي 2.0 |
| تكلفة الترخيص | تنافسي | مبلغ مالي لكل عملية نشر | حر | حر | حر |
| نموذج الدعم | عقد مورد أسترالي | مؤسسة عالمية | مؤسسة إكليبس | شركة OCI التجارية | إعلان إي بروسيما |
| الدعم من أستراليا | ✅ نعم | ❌ مقرها في الولايات المتحدة | ❌ لا | ❌ مقرها في الولايات المتحدة | ❌ مقرها في إسبانيا |
| التكامل المسبق لقيمة GVA | ✅ مدمج | ❌ أعمال مخصصة | ❌ اصنعها بنفسك | ❌ اصنعها بنفسك | ❌ اصنعها بنفسك |
| متوفر برنامج تطوير متكامل | ✅ مصدر واحد: واجهة المستخدم الرسومية + شاشة العرض الرقمية + نظام العرض الرقمي + الأدوات | ❌ برامج وسيطة فقط | ❌ برامج وسيطة فقط | ❌ برامج وسيطة فقط | ❌ برامج وسيطة فقط |
| أدوات SysML | ✅ بوهيميان + إل دي إم إكس + تول إكس | ❌ لا شيء | ❌ لا شيء | ❌ لا شيء | ❌ لا شيء |
| ضوابط التصدير | الاختصاص القضائي الأسترالي | اعتبارات قانون مراقبة الأسلحة الأمريكية (ITAR) | الاتحاد الأوروبي | نحن | الاتحاد الأوروبي |
مقارنة الميزات التقنية
| ميزة | طبيب أسنان ذكي | RTI Connext | CycloneDDS | OpenDDS | نظام DDS سريع |
|---|---|---|---|---|---|
| DDSI-RTPS 2.5 | ✅ كامل | ✅ كامل | ✅ كامل | ✅ كامل | ✅ كامل |
| أمان DDS 1.1 | ✅ كامل | ✅ كامل | ⚠️ جزئي | ✅ كامل | ✅ كامل |
| إكس-تايب 1.3 | ✅ كامل | ✅ كامل | ⚠️ جزئي | ⚠️ جزئي | ⚠️ جزئي |
| واجهة برمجة تطبيقات البيانات الديناميكية | ✅ كامل | ✅ كامل | ❌ لا شيء | ⚠️ أساسي | ⚠️ أساسي |
| خدمة البحث عن نوع البيانات | ✅ كامل | ✅ كامل | ❌ لا شيء | ❌ لا شيء | ⚠️ جزئي |
| تصفية المحتوى | ✅ كامل | ✅ كامل | ✅ كامل | ✅ كامل | ✅ كامل |
| نقل الذاكرة المشتركة | ✅ كامل | ✅ كامل | ✅ كامل | ❌ لا شيء | ✅ كامل |
| بروتوكول نقل TCP | ✅ كامل | ✅ كامل | ✅ كامل | ✅ كامل | ✅ كامل |
| نسخ صفرية | ✅ مدعوم | ✅ مدعوم | ✅ مدعوم | ❌ لا شيء | ✅ مدعوم |
الامتثال للمعايير
| معيار | طبيب أسنان ذكي | RTI Connext | CycloneDDS | OpenDDS | نظام DDS سريع |
|---|---|---|---|---|---|
| يا إلهي DDS 1.4 | ✅ | ✅ | ✅ | ✅ | ✅ |
| يا إلهي DDSI-RTPS 2.5 | ✅ | ✅ | ✅ | ✅ | ✅ |
| OMG DDS-XTypes 1.3 | ✅ | ✅ | ⚠️ | ⚠️ | ⚠️ |
| OMG DDS Security 1.1 | ✅ | ✅ | ⚠️ | ✅ | ✅ |
| يا إلهي، IDL 4.2 | ✅ | ✅ | ✅ | ✅ | ✅ |
| DEF-STAN 23-009 (GVA) | ✅ | ❌ | ❌ | ❌ | ❌ |
| نموذج بيانات الأراضي الإصدار 10.0.0 | ✅ | ❌ | ❌ | ❌ | ❌ |
دعم اللغات والمنصات
| القدرة | طبيب أسنان ذكي | RTI Connext | CycloneDDS | OpenDDS | نظام DDS سريع |
|---|---|---|---|---|---|
| لغة سي++ | C++20 | C++11 | غلاف C99 | C++11 | C++11 |
| ج | عبر لغة C++ | ✅ أصلي | ✅ أصلي | ❌ | ✅ أصلي |
| بايثون | ✅ | ✅ | ✅ | ✅ | ✅ |
| الصدأ | ✅ | ❌ | ✅ | ❌ | ❌ |
| لينكس | ✅ | ✅ | ✅ | ✅ | ✅ |
| ويندوز | ✅ | ✅ | ✅ | ✅ | ✅ |
| VxWorks | خارطة الطريق | ✅ | ⚠️ | ✅ | ⚠️ |
| أنظمة التشغيل المدمجة/أنظمة التشغيل في الوقت الحقيقي | ✅ مصمم لـ | ✅ متغير دقيق | ⚠️ | ⚠️ | ⚠️ |
| الربط الثابت | ✅ مكتبة واحدة | ⚠️ | ⚠️ المكتبات المشتركة | ⚠️ المكتبات المشتركة | ⚠️ المكتبات المشتركة |
لماذا يفوز طبيب الأسنان الذكي
| ضد آر تي آي كونيكست | مقارنة مع نظام توصيل الأدوية السيكلوني | مقارنة مع OpenDDS | مقارنة بين نظام توصيل الأدوية السريع |
|---|---|---|---|
| خيارات ترخيص مرنة | دعم كامل لأنواع X | واجهة برمجة تطبيقات البيانات الديناميكية الكاملة | دعم مقره أستراليا |
| مورد أسترالي، لا توجد مخاوف بشأن لوائح الاتجار الدولي بالأسلحة | أمان مدمج | خدمة البحث عن نوع البيانات | الامتثال الكامل لقانون القيمة المضافة العالمي |
| مجموعة أدوات GVA كاملة من مصدر واحد | أفضل برنامج LDMX + ToolX في فئته | أفضل برنامج LDMX + ToolX في فئته | نشر أبسط |
| يتضمن LDM الإصدار 10.0.0 | الدعم التجاري | الاختصاص القضائي الأسترالي | سيارات X كاملة |
Why Astute DDS
"لقد قلصنا الجدول الزمني لتكامل القيمة المضافة العالمية بنسبة 40% باستخدام حزمة Astute. إن وجود مورد واحد مسؤول عن البرمجيات الوسيطة وواجهة المستخدم الرسومية ونموذج البيانات قد قضى على تبادل الاتهامات الذي كان يعيق البرامج السابقة."
— مدير برنامج، رئيس قسم الدفاع البريطاني
ضمان قابلية التشغيل البيني
يتوافق نظام Astute DDS تمامًا مع جميع تطبيقات DDS الرئيسية. يمكن لسيارتك التواصل بسلاسة مع:
لا يوجد احتكار من قبل المورد. إذا كان نظام الشريك يستخدم تطبيق DDS مختلفًا، فسيتصل Astute DDS دون تعديل.
الامتثال لمعايير الدفاع
صُممت لتلبية المتطلبات العسكرية
| معيار | حالة |
|---|---|
| DEF-STAN 23-009 | ✅ امتثال كامل لقانون القيمة المضافة العالمي |
| نموذج بيانات الأراضي الإصدار 10.0.0 | ✅ أنواع النطاقات الكاملة |
| معيار الناتو STANAG | ✅ جاهز للتوافق التشغيلي |
| أساسيات الأمن السيبراني | ✅ معتمد أمنياً |
أمان يمكنك الوثوق به
- 🔐 اتصالات مشفرة — جميع البيانات محمية أثناء النقل
- 🎫 المصادقة القائمة على الشهادات — لا تتصل إلا الأنظمة المصرح لها
- 📋 سياسات التحكم في الوصول — حدد من يمكنه النشر أو الاشتراك في كل موضوع
- 📝 تسجيل التدقيق الكامل — سجل كامل لمراجعات الأمان
مثبتة في الإنتاج
تم نشرها عبر برامج متعددة
تحظى شركة أستوت دي دي إس بثقة كبرى شركات الدفاع في أستراليا والمملكة المتحدة والدول الحليفة:
| اِختِصاص | التطبيقات |
|---|---|
| 🎖️ المركبات المدرعة | شاشات عرض الطاقم، ودمج أجهزة الاستشعار، وتكامل الأسلحة |
| 🤖 الروبوتات والأنظمة المستقلة | المركبات الأرضية غير المأهولة، والمنصات الروبوتية، والملاحة الذاتية |
| 🛡️ مكافحة الطائرات بدون طيار (CUAS) | أنظمة الكشف عن الطائرات بدون طيار وتتبعها وإبطالها |
| ✈️ محطات التحكم الأرضية | قيادة وتحكم الطائرات بدون طيار، وبيانات أجهزة الاستشعار |
| 🚢 الأنظمة البحرية | شاشات عرض الجسر، ومكافحة الأضرار، والملاحة |
| 🏭 التدريب والمحاكاة | بيئات اصطناعية، مراجعة ما بعد العمل، جلسة استخلاص المعلومات |
🎬 اطلب عرضًا تجريبيًا
شاهد برنامج Astute DDS ومجموعة GVA الكاملة أثناء العمل. تعرف على المزيد حول مجموعتنا أو اطلب عرضًا توضيحيًا الآن.
Frequently Asked Questions
أهم الأسئلة التي يطرحها المطورون في أغلب الأحيان عند اعتماد Astute DDS.
1. ما هو طبيب الأسنان الذكي (Astute DDS)؟
Astute DDS هو تطبيق C++20 لخدمة توزيع البيانات OMG
(DDS) DCPS API، بروتوكول الأسلاك DDSI-RTPS 2.5، نظام النوع DDS-XTypes 1.3،
إضافات DDS-Security 1.1/1.2، وIDL 4.2. يتم تسليمها كملف ثابت.
مكتبة libastutedds.a (بالإضافة إلى روابط C و Python و Rust) وتأتي مع
واجهة المستخدم الرسومية للتشخيص astutedds-inspect وعرض توضيحي للأشكال قابل للتشغيل البيني.
2. كيف أنشر موضوعًا وأشترك فيه؟
قم بإنشاء DomainParticipant ، و Topic ، ثم DataWriter (من جانب الناشر).
أو DataReader (من جانب المشترك):
using namespace astutedds::dcps;
auto dpf = DomainParticipantFactory::get_instance();
auto dp = dpf->create_participant(0, PARTICIPANT_QOS_DEFAULT, nullptr, 0);
auto topic = dp->create_topic("Hello", "HelloMsg", TOPIC_QOS_DEFAULT, nullptr, 0);
// Publisher
auto pub = dp->create_publisher(PUBLISHER_QOS_DEFAULT, nullptr, 0);
auto writer = pub->create_datawriter(topic, DATAWRITER_QOS_DEFAULT, nullptr, 0);
writer->write(sample, HANDLE_NIL);
// Subscriber
auto sub = dp->create_subscriber(SUBSCRIBER_QOS_DEFAULT, nullptr, 0);
auto reader = sub->create_datareader(topic, DATAREADER_QOS_DEFAULT, nullptr, 0);انظر قسم "البدء" › "التطبيق الأول" .
3. ما الفرق بين read() والدالة take() ؟
- تقوم
read()بإرجاع العينات ولكنها **تتركها في ذاكرة التخزين المؤقت للقارئ**، بحيث يمكن للمكالمات اللاحقة (أو القراء الآخرين في نفس المشترك) قراءتها مرة أخرى. -
take()بإرجاع العينات و **إزالتها** من ذاكرة التخزين المؤقت.
استخدم read() عندما يمثل الموضوع حالة مشتركة تريد فحصها
استخدم take() بشكل متكرر؛ عندما يمثل الموضوع الأحداث التي تريدها
استهلك مرة واحدة فقط.
4. لماذا لا يحصل المشتركون الذين ينضمون متأخراً على عينات مبكرة؟
بشكل افتراضي، تكون DURABILITY VOLATILE ، لذا فإن العينات التي تُكتب قبل المشترك
لا يتم تسليم العينات المتطابقة. لتسليم العينات التاريخية للمنضمين المتأخرين،
قم بتهيئة الكاتب والقارئين المطابقين باستخدام TRANSIENT_LOCAL
المتانة (التي تتطلب أيضاً موثوقية RELIABLE ):
DataWriterQos qos;
writer->get_qos(qos);
qos.durability().kind = TRANSIENT_LOCAL_DURABILITY_QOS;
qos.reliability().kind = RELIABLE_RELIABILITY_QOS;
writer->set_qos(qos); لضمان استمرارية البيانات بعد إعادة تشغيل الكاتب، استخدم
خدمة المثابرة أو خدمة TRANSIENT / PERSISTENT
أنواع المتانة.
5. ما وظيفة جودة الخدمة (QoS) RELIABILITY ؟
-
BEST_EFFORT(الوضع الافتراضي للعديد من المواضيع المدمجة): لا يتم إعادة إرسال العينات المفقودة أثناء النقل. أقل قدر من الحمل الزائد. -
RELIABLE: يقوم الكاتب بتتبع إشعارات الاستلام (ACKNACK/ نبضات القلب) من كل قارئ مطابق، ويعيد إرسال أرقام التسلسل المفقودة حتى
يلحق القارئ بالركب أو أن التاريخ ممتلئ.
تعتمد الموثوقية على كل كاتب/قارئ ويجب أن تكون متوافقة: BEST_EFFORT
يمكن للقارئ أن يضاهي الكاتب RELIABLE ، ولكن ليس العكس.
6. ما الذي يفعله نظام DURABILITY ؟
تحدد DURABILITY ما إذا كانت العينات ستُحتفظ بها لتسليمها إلى القراءتلك الوصلة بعد كتابة العينة:
| عطوف | هل هذا العرض متاح لمن ينضمون متأخراً؟ |
|---|---|
VOLATILE | لا |
TRANSIENT_LOCAL | نعم، طالما أن الكاتب على قيد الحياة |
TRANSIENT | نعم، طوال حياة الكاتب (عبر خدمة الاستمرارية) |
PERSISTENT | نعم، عبر عمليات إعادة التشغيل (على القرص) |
7. ما الفرق بين HISTORY DURABILITY ؟
يتحكم HISTORY ( KEEP_LAST(depth) أو KEEP_ALL ) في عدد العينات التي يحتفظ مخزن الكتابة/القراءة بالبيانات في أي لحظة. وتتحكم DURABILITY في ما إذا كان
يقدم الكاتب نماذج للقراء تتناسب مع ما يقدمونه لاحقاً. إنهم يعملون معاً ولكن
حل مشاكل مختلفة: لا يوفر خيار KEEP_ALL وحده عينات.
للمنضمين المتأخرين.
8. كيف يمكنني تحديد معرّف النطاق؟
قم بتمرير معرف النطاق كأول وسيطة إلى create_participant :
auto dp = DomainParticipantFactory::get_instance()
->create_participant(42, PARTICIPANT_QOS_DEFAULT, nullptr, 0); لا يتواصل المشاركون في نطاقات مختلفة. منفذ DDSI-RTPS
تحدد الصيغة 7400 + 250 * domain_id منافذ UDP الأساسية المستخدمة لـ
اكتشاف.
9. لماذا لا يكتشف الناشر والمشترك بعضهما البعض؟
السبب المشترك:
- معرفات نطاقات مختلفة - يجب على كلا المشاركين استخدام نفس المعرف.
- تم حظر البث المتعدد — يستخدم بروتوكول SPDP البث المتعدد UDP على العنوان
239.255.0.1بواسطة
الوضع الافتراضي. تحقق من جدار الحماية الخاص بالمضيف ووظيفة مراقبة بروتوكول إدارة مجموعات الإنترنت (IGMP) الخاصة بالمحول. - واجهة الشبكة غير صحيحة — على الأجهزة المضيفة متعددة المنافذ، اضبط
ASTUTEDDS_NETWORK_INTERFACE=أو قم بتكوينه في ملف تعريف اكتشاف JSON / XML (انظر تكوين اكتشاف JSON ). - جودة الخدمة غير المتوافقة - انظر السؤال 15.
- وسائل نقل مختلفة — تحقق من أن كلا الطرفين يستخدمان UDPv4 (أو UDPv6)،
بروتوكول التحكم بالنقل (TCP)، وتقنية إدارة الأجهزة المشتركة (SHM).
قم بتمكين تسجيل التتبع باستخدام ASTUTEDDS_LOG_LEVEL=trace وافحص حزمة البيانات
التقاط باستخدام astutedds-inspect .
10. ما هي ميزات IDL المدعومة؟
يقوم مُجمِّع astutedds-idl المُضمَّن بتنفيذ OMG IDL 4.2 بما في ذلك:
- الأنواع الأولية (الأنواع
boolean،octet، وأنواع الأعداد الصحيحةint8–uint64،float/double/long double،char/wcharالطويل،string/wstring). - الهياكل، والاتحادات، والتعدادات، وأقنعة البت، وتعريفات الأنواع.
- المتتابعات المحدودة وغير المحدودة، والمصفوفات، والخرائط.
-
@key,@id,@optional,@default,@range,@min,@max,@unit,@extensibility(FINAL|APPENDABLE|MUTABLE),@nested. - الثوابت ومساحات أسماء
module.
يستخدم C++ المُولّد XCDR2 افتراضيًا مع XCDR1 اختياريًا للتوافق.
11. كيف يمكنني تصفية العينات التي نشرتها بنفسي؟
خياران:
- تجاهل على مستوى المشارك : استدعاء
dp->ignore_publication(handle)
تمريرInstanceHandle_tالخاص بالكاتب المحلي. - قم بتصفية دالة الاستدعاء الخاصة بالقارئ باستخدام
SampleInfo::publication_handle
ومقارنتها بـget_instance_handle()الخاص بالكاتب.
يمكن للموضوع الذي تم تصفيته حسب المحتوى أن يستبعد أيضاً حقل المفتاح المنشور ذاتياً.
12. ما هي الأحرف المسموح بها في أسماء المواضيع؟
قد تحتوي أسماء المواضيع على أحرف أبجدية رقمية ASCII، و _ ، و / كـ
فاصل هرمي. الحد الأقصى للطول ٢٥٦ حرفًا. تجنب استخدام الأحرف الكبيرة في بداية السطر.
الأرقام والبادئات المضمنة المحجوزة في DDS ( DCPS ، dds ). أسماء الأنواع تلي ذلك
نفس القاعدة.
13. كيف يمكنني اكتشاف متى يتوقف كاتب أو قارئ عن بُعد عن العمل؟
قم بتثبيت DataReaderListener وقم بتنفيذ on_subscription_matched /
on_liveliness_changed ، أو poll reader->get_subscription_matched_status() . current_count_changeتكون قيمة الحقل سالبة عندما لا يتطابق أحد النظراء.
تُحكم الحيوية بواسطة معيار LIVELINESS QoS) - المُحدد
kind = AUTOMATIC_LIVELINESS_QOS مع lease_duration للكشفأقران صامتون خلال فترة زمنية محددة.
14. كيف يمكنني تلقي إشعار عند وصول بيانات جديدة؟
قم بإرفاق مستمع باستخدام قناع DATA_AVAILABLE_STATUS :
class MyListener : public DataReaderListener {
void on_data_available(DataReader* reader) override {
// call reader->take(...) here
}
};
reader->set_listener(&listener, DATA_AVAILABLE_STATUS); يتم تشغيل on_data_available لكل من العينات الجديدة ودورة حياة المثيل التغييرات؛ تحقق دائمًا SampleInfo::valid_data قبل إلغاء مرجعها
حمولة العينة.
15. ماذا يعني مصطلح "جودة الخدمة غير المتوافقة"؟
لا يتطابق الكاتب والقارئ إلا عندما تكون كل طلبات/عروض جودة الخدمة
متناسق:
| سياسة | المطلوب ≤ المعروض |
|---|---|
RELIABILITY | يبذل القارئ BEST_EFFORT ≤ الكاتب RELIABLE |
DURABILITY | نوع القارئ ≤ نوع الكاتب (في ترتيب المواصفات) |
DEADLINE | period القراءة ≥ period الكتابة |
LATENCY_BUDGET | duration القراءة ≥ duration الكتابة |
OWNERSHIP | يجب أن تكون متساوية ( SHARED أو EXCLUSIVE ) |
PARTITION | يجب أن يتداخل اسم قسم واحد على الأقل |
استمع إلى on_offered_incompatible_qos / on_requested_incompatible_qos
للعثور على معرّف السياسة الدقيق في وقت التشغيل.
16. كيف يمكنني إرسال عينات أكبر من حزمة بيانات UDP؟
يقوم برنامج Astute DDS تلقائيًا بتقسيم العينات الأكبر من الحجم المُكوّن
fragment_size (الافتراضي 1344 بايت لبروتوكول IPv4) ويعيد تجميعها على قارئ يستخدم رسائل فرعية من نوع DDSI-RTPS DATA_FRAG . بروتوكول الموثوقية
يستعيد الأجزاء المفقودة دون إعادة إرسال العينة بأكملها.
بالنسبة للعينات الكبيرة جدًا (≥ 1 ميجابايت)، قم بزيادة مخازن مقبس نظام التشغيل:
sudo sysctl -w net.core.rmem_max=8388608
sudo sysctl -w net.core.wmem_max=8388608وفكر في التحول إلى نقل الذاكرة المشتركة للقراء المحليين.
17. كيف يمكنني تحديد واجهة الشبكة المستخدمة؟
ثلاثة خيارات، حسب ترتيب الأولوية:
- متغير البيئة:
ASTUTEDDS_NETWORK_INTERFACE=eth0. - إعدادات اكتشاف JSON — انظر إعدادات اكتشاف JSON .
- ملف تعريف جودة الخدمة XML — انظر ملفات تعريف جودة الخدمة DDS-XML .
إذا لم يتم تعيين أي منها، فإن Astute DDS يختار أول واجهة غير حلقية تحتوي على
عنوان يدعم البث المتعدد.
18. هل يمكنني استخدام Astute DDS على شبكة بدون بث متعدد؟
نعم. هناك بديلان:
- قائمة نظراء SPDP أحادي البث : قم بتوفير قائمة بأزواج المضيف/المنفذ النظير في
تكوين الاكتشاف؛ يقوم برنامج Astute DDS بإرسال إعلانات SPDP أحادية البث إلى كل نظير. - نقل TCP : تحويل المشارك إلى نقل TCP RTPS لـ
البيئات التي تحظر بروتوكول UDP تمامًا. انظر
جهاز توجيه نطاق DDS لعبور الشبكات المعزولة.
19. كيف يمكنني ضبط الإعدادات لتقليل زمن الاستجابة؟
- استخدم خاصية الموثوقية
RELIABLEمع الاحتفاظ بآخر سجلKEEP_LAST(1)على كلا الطرفين،
عمليات إعادة الإرسال ضئيلة. - قم بتمكين نقل الذاكرة المشتركة للمشاركين الموجودين في نفس الموقع.
- قم بتثبيت خيوط Astute DDS باستخدام تقارب وحدة المعالجة المركزية واستخدم جدولة الوقت الحقيقي
(SCHED_FIFO) على عمليات الناشر والمشترك. - قم بتعطيل Nagle باستخدام UDP (الوضع الافتراضي).
- قم بزيادة مخازن المقابس (انظر السؤال 16) لامتصاص الاندفاعات.
- قم بتعيين
LATENCY_BUDGET = 0لتعطيل أي تأخير في التجميع.
20. لماذا ألاحظ ارتفاعات مفاجئة في زمن الاستجابة عند نشر عينات كبيرة؟
عندما تتجاوز العينات حجم المخزن المؤقت الافتراضي لنظام التشغيل (غالباً 208 كيلوبايت على نظام لينكس)،
تقوم النواة بإسقاط الحزم، ويجب على البروتوكول الموثوق إعادة الإرسال، مما يتسبب في
ارتفاعات مفاجئة. رفع قيمة net.core.rmem_max / net.core.wmem_max إلى الحد الأدنى
حجم العينة يحل هذه المشكلة. ضع في اعتبارك التجزئة باستخدام حجم تجزئة أصغر fragment_size
على الشبكات ذات الفقد العالي.
21. كيف يمكنني ربط نطاقين من نطاقات DDS؟
استخدم موجه نطاق Astute DDS - وهي خدمة تربط اثنين أو أكثر
تقوم النطاقات والمواضيع المُهيأة بين بعضها البعض، مع إمكانية اختيارية.
تصفية المفاتيح/المحتوى وترجمة جودة الخدمة. انظر
موجه نطاق DDS .
22. ما هي روابط اللغات المتاحة؟
| لغة | حالة | ملحوظات |
|---|---|---|
| C++20 | مستقر | واجهة برمجة التطبيقات الأساسية — libastutedds.a |
| ج | مستقر | واجهة برمجة تطبيقات Flat C لـ FFI، انظر include/astutedds/c/astutedds.h |
| بايثون | مستقر | روابط pybind11، CPython 3.10 – 3.13 |
| الصدأ | بيتا | مكتبة astutedds (غلاف آمن لواجهة برمجة تطبيقات C) |
23. ما هي المنصات وإصدارات أنظمة التشغيل المدعومة؟
| منصة | الإصدارات المختبرة |
|---|---|
| لينكس | أوبونتو 22.04 / 24.04، ريد هات لينكس 9 / 10، ألما لينكس 9 / 10، ديبيان 12 |
| ويندوز | ويندوز 10، ويندوز 11، ويندوز سيرفر 2022 |
تم وسم حزم بايثون الخاصة بنظام لينكس بالوسم manylinux_2_28 (glibc ≥ 2.28) وتعمل
على أي توزيعة متوافقة.
24. كيف أقوم بتفعيل أمان DDS؟
- توفير الهوية (X.509) والأذونات (ملف XML موقع).
- قم بتكوين خاصية جودة الخدمة للمشارك باستخدام المصادقة والتحكم في الوصول و
خصائص إضافة التشفير (شهادة المرجع المصدق، شهادة/مفتاح الهوية، ملف الأذونات،
ملف الحوكمة). - الربط مع Astute DDS الذي تم إنشاؤه باستخدام
-DASTUTEDDS_ENABLE_SECURITY=ON.
راجع قسم أمن DDS للاطلاع على التعليمات الكاملة و
نموذج الحوكمة/الصلاحيات.
25. كيف يمكنني الاحتفاظ بالبيانات بعد إعادة التشغيل؟
قم بتشغيل خدمة الثبات بجانب نطاقك. وهي تشترك في
مواضيع TRANSIENT / PERSISTENT ، تخزن العينات محليًا
قاعدة البيانات (SQLite افتراضيًا)، ثم تعيد نشرها إلى قاعدة البيانات المتأخرة الانضمام.
المشتركون - بمن فيهم أولئك الذين ينضمون بعد رحيل الكاتب الأصلي.
انظر خدمة الاستمرارية .
26. كيف يمكنني تسجيل وإعادة تشغيل حركة المرور؟
استخدم أداة astutedds-record المرفقة لالتقاط نطاق في
.astdb ، و astutedds-replay لإعادة نشره مع إمكانية التعديل تغيير مقياس الوقت. التسجيل مُدرك لنوع البيانات ويستخدم XCDR2 داخليًا. انظر
التسجيل والإعادة .
27. كيف يمكنني تطوير نوع بيانات دون الإخلال بالمشتركين؟
قم بتعليق نوع IDL باستخدام @extensibility(MUTABLE) (أو APPENDABLE ) و
قم بتمييز كل عضو باستخدام @id(N) . تسمح تدفقات XCDR2 القابلة للتغيير بما يلي:
- إضافة أعضاء جدد إلى أي من الطرفين.
- إزالة الأعضاء الاختياريين.
- إعادة ترتيب الأعضاء.
يتم تخطي الأعضاء غير المتطابقين عبر قواعد قابلية التعيين لأنواع X.
@extensibility(FINAL) يُقفل التخطيط ويجب استخدامه عند التعامل مع الملفات الثنائيةالتوافق مع أجهزة قراءة XCDR1 القديمة أمر مهم.
28. كيف أستخدم المواضيع التي يتم تصفيتها حسب المحتوى؟
أنشئ موضوعًا ContentFilteredTopic من موضوع عادي باستخدام مُرشِّح يشبه SQL
قم بتعبير البيانات وربط DataReader به:
std::vector params{"42"};
auto cft = dp->create_contentfilteredtopic(
"HighSeverity", topic, "severity > %0", params);
auto reader = sub->create_datareader(cft, DATAREADER_QOS_DEFAULT, nullptr, 0); يتم تقييم المرشح على جانب الكاتب كلما أمكن ذلك لتوفير عرض النطاق الترددي.
29. كيف يمكنني ضبط جودة الخدمة (QoS) من ملف XML؟
استخدم XmlQosLoader لقراءة ملف تعريف DDS-XML وتطبيقه عند الإنشاء
الكيانات:
XmlQosLoader loader;
loader.load_file("qos_profiles.xml");
auto qos = loader.get_datawriter_qos("MyLib", "ReliableProfile");
auto writer = pub->create_datawriter(topic, qos, nullptr, 0); راجع ملفات تعريف جودة الخدمة DDS-XML للاطلاع على المخطط والطريقة المستخدمة
أمثلة.
30. كيف يمكنني تصحيح أخطاء التوافق أو مشاكل الاكتشاف؟
- قم بتشغيل
astutedds-inspectعلى النطاق لعرض النتائج المكتشفة
المشاركون، ونقاط النهاية، وحالة المطابقة في الوقت الفعلي. - التقط حركة البيانات باستخدام
tcpdump -i any -w dds.pcap 'udp port 7400 or portrange 7400-7500'وافتحها في برنامج Wireshark — محلل بروتوكول RTPS
يقوم بفك تشفير SPDP و SEDP وبيانات المستخدم. - تفعيل سجلات التتبع:
ASTUTEDDS_LOG_LEVEL=trace ASTUTEDDS_LOG_FILE=/tmp/astutedds.log. - التحقق من معرفات الكيانات والمنافذ:
- كاتب/قارئ SPDP:
00:01:00:c2/00:01:00:c7 - منشور SEDP:
00:00:03:c2/00:00:03:c7 - اشتراك SEDP:
00:00:04:c2/00:00:04:c7 - المنفذ الأساسي:
7400 + 250 × domain_id.
- كاتب/قارئ SPDP:
- تأكد من أن كلا الجهازين يعلنان عن معرفات البائع المتوافقة وإصدار البروتوكول
(DDSI-RTPS 2.5).