نظرة عامة على المشروع
تناول المشروع تطبيق تحكم إشرافي يعمل على Windows لمعدات عمليات أشباه الموصلات. يتصل نظام Qt/C++ بمتحكمات الحرارة وصمام إبرة ومقاييس تفريغ ووحدات تحكم بالحواجز وكاميرا صناعية، بينما تحفظ SQLite عينات الأجهزة وأحداث الأوامر وبيانات إطارات الكاميرا. ركز العمل على تشخيص انقطاع بيانات الحرارة ونقص تأكيد الأوامر وتراجع معدل إطارات الكاميرا وتوقف التسجيل من دون رسالة، مع عدم تعطيل البرنامج الجاري في الموقع.
قُسّم التسليم إلى مسارين معزولين. طبّق مسار الصيانة تغييرات محدودة يمكن الرجوع عنها على التطبيق الحالي وأنشأ حزمة تثبيت Windows x64. واستخدم مسار v2 دليلاً وAppId منفصلين لاختبار ملكية المنافذ التسلسلية واتصالات قاعدة البيانات وعمال الكاميرا وتنفيذ النصوص. حُفظت الإعدادات والبيانات التاريخية، ولم يُشغّل برنامج قد يتصل بالمعدات قبل اعتماد نافذة أمان من المشغل.
نطاق النظام والتقنيات
| المجال | التقنية أو الجهاز | العمل المنفذ |
|---|---|---|
| تطبيق التحكم | Windows 10/11 x64 وQt 5.12.12 وC++ وMSVC | تشخيص وتعديلات استقرار وبناء Release وحزمة تثبيت |
| التحكم الحراري | عشرة متحكمات Modbus RTU بسرعة 9600 baud | قراءات أقصر ومعاملات متسلسلة واستجابة كتابة وقراءة SP |
| الصمام والحواجز | EI-BISYNCH واستجابات خاصة بالأجهزة | تحليل البروتوكول وACK/NAK والتحقق من الحالة |
| الكاميرا الصناعية | Galaxy SDK وتعريض مرجعي 125 ms | أحدث إطار وتصحيح ACK ومراقبة الالتقاط والتخزين |
| البيانات والنصوص | SQLite وJPEG ونصوص العملية | مسار كتابة واحد وأزمنة منفصلة ومحاكاة وحدود فشل |
تشخيص قائم على الأدلة
غطى فحص للقراءة فقط نحو 8.89 ساعة من السجلات وقواعد البيانات التاريخية. سجل COM5 عدد 5,168 عملية مسح للمخزن بعد تجاوز الاستقبال 128 بايت، وكانت تحديثات عشرة متحكمات حرارة أبطأ بوضوح من فترة الثانيتين المضبوطة. أظهر فحص الشيفرة أن كل استعلام متكرر يقرأ نحو 35 مسجلاً ويستقبل عادةً قرابة 75 بايت. زادت جدولة الواجهة ودفعات قاعدة البيانات البطيئة ونافذة انتظار 150 ms احتمال اختلاط استجابة متأخرة بطلب جديد.
وفرت سجلات كاميرا تاريخية من الحاسوب نفسه مقارنة أخرى. كتب الإصدار المرجعي ملفات JPEG بمعدل 8.006 FPS، بينما كتب الإصدار المتراجع بمعدل 3.919 FPS، ولم تتضمن العينتان ملفين متجاورين متطابقين. كان ACK للإطار الخام يعود إلى طابور عامل الكاميرا؛ وقد يبدأ التقاط حاجب قبل ACK، فيُتجاوز إطار جديد بينما يبقى السابق معلماً كقيد الانتظار. تثبت الأرقام التراجع وسياق تشخيصه، ولا تمثل نتيجة قبول ميداني بعد الإصلاح.
صيانة محدودة للتطبيق الحالي
حافظ مسار الصيانة على الواجهة وإعدادات الأجهزة ومجلدات البيانات ومداخل نصوص العملية. نُسخت الملفات قبل استبدالها، وسُجلت قيم SHA-256 لأرشيف التصحيح وحزمة التثبيت. تحتفظ الحزمة بمجلدات MBE_Data وScriptfile والإعدادات القائمة، ولا تشغّل تطبيق التحكم تلقائياً بعد التثبيت.
- اقتصر الاستعلام الحراري المتكرر على مسجلات PV وSP وWorking SP، فانخفضت الاستجابة المعتادة من نحو 75 إلى نحو 15 بايت.
- تطابق كتابة حرارة Sub استجابة Modbus
0x06ثم تقرأ SP؛ ويُبلغ عن غياب الاستجابة أو اختلاف القيمة كفشل. - يقود العامل التقاط الكاميرا، ويسمح كل من العرض والتسجيل الخام بإطار واحد قيد المعالجة ويستخدم أحدث إطار.
- لم تعد قيم الحرارة الهندسية بالدرجة المئوية تُقسم مرة ثانية على عشرة في الحالة أو مسار التحكم القديم.
قراءة Ramp Rate من الجهاز
تبدأ خانة Ramp Rate بالرمز -- بدلاً من قيمة ثابتة يصنعها البرنامج. ثم يقرأ التطبيق مسجل الجهاز 0x0023. أثناء التشغيل المستقر يُقرأ متحكم واحد كل ثلاث ثوانٍ وتكتمل دورة عشرة أجهزة في نحو 30 ثانية. تبقى Ramp Rate خارج طلب PV/SP المتكرر كي لا تطيل جميع الاستجابات على ناقل 9600 baud.
يصحح التغيير مصدر القيمة المعروضة: لا يظهر رقم إلا بعد وصول بيانات الجهاز. ما زال تزامن القيمة بعد تعديلها من لوحة الجهاز بحاجة إلى تشغيل 1.0.3 على العتاد، ولذلك لا يُعرض التنفيذ كقبول عتاد مكتمل.
مسار التقاط الكاميرا وتخزينها
يستخدم العرض والتسجيل أحدث إطار. إذا كانت الواجهة أو مشفر JPEG أبطأ مؤقتاً، يمكن استبدال الإطارات الوسطية بدلاً من إنشاء طابور يتزايد باستمرار. يحرر ACK للإطار الخام العلم الذري مباشرة ولا ينتظر خلف استدعاء كاميرا حاجب آخر. تستخدم أسماء الملفات وحقول القاعدة وقت الالتقاط الفعلي، بينما يُسجل بدء الحفظ واكتماله منفصلين.
يضيف الإصدار 1.0.3 مساري مراقبة. إذا كانت الكاميرا مفتوحة ولم يصل إطار خام خلال ثلاث ثوانٍ، يغلق التطبيق الالتقاط ويفتحه مجدداً مع مهلة عشر ثوانٍ بين محاولات إعادة التشغيل. وإذا تجاوزت مهمة الحفظ أو المدة منذ آخر حفظ ثلاث ثوانٍ، تُفك حالة التعليق وتُعاد المحاولة بالإطار الحالي. يعالج ذلك التوقف الصامت لكنه لا يحل محل تشخيص برنامج التشغيل وUSB وسرعة القرص وأخطاء قاعدة البيانات في الموقع.
مسار اختبار بنية v2 المعزول
يستخدم v2 شجرة مصدر وAppId ودليل تثبيت منفصلين ولا يستبدل التطبيق القديم. افتراضياً لا يصل المنافذ ولا يبدأ المراقبة ولا يفتح الكاميرا ولا يرسل أوامر الحواجز عند البدء. يمتلك PortWorker واحد كل منفذ فعلي، وتدخل الاستعلامات وأوامر المشغل والنصوص في طابور معاملات واحد ذي أولوية.
لـSQLite اتصال كتابة واحد. تُثبت عينات الأجهزة وبيانات الكاميرا حسب الزمن أو حجم الدفعة، وتستخدم الاستعلامات التاريخية اتصال قراءة فقط مستقلاً. التقاط الكاميرا والعرض وتسجيل JPEG مسؤوليات منفصلة. يتقدم نص العملية بخطوات قصيرة لآلة حالات ويتوقف عند فشل الاستجابة أو قراءة القيمة الهدف.
البناء والتغليف وحفظ البيانات
بُني الإصدار 1.0.3 بواسطة CMake وMSVC بوضع Release x64 وغُلّف باستخدام Inno Setup 6.7.3. حجم الملف التنفيذي 1,727,488 بايت. تضمنت مرحلة التثبيت 78 ملفاً بإجمالي 66,292,772 بايت. أكد الفحص وجود Galaxy SDK ومكتبات Qt ومشغل SQLite وVC Runtime وإعدادات الأجهزة، من دون Qt Debug DLL.
إصدار الحزمة هو 1.0.3.20260728 وحجمها 19,884,961 بايت. حُفظت قيم SHA-256 الكاملة للبرنامج وأرشيف التصحيح والحزمة في سجل التسليم. الحزمة غير موقعة بـAuthenticode، وقد يعرض Windows إشعار ناشر غير معروف.
أدلة التحقق وحدودها
| بند التحقق | النتيجة المسجلة | الحد |
|---|---|---|
| التشخيص التاريخي | 8.89 ساعة و5,168 مسحاً لمخزن COM5 | يثبت العطل القديم لا نتيجة الإصلاح |
| مقارنة الكاميرا التاريخية | مرجع 8.006 FPS وتراجع 3.919 FPS | لتشخيص ACK وليست تجربة 1.0.3 ميدانية |
| Release الصيانة | اكتمل بناء Windows x64 وستة فحوص ثابتة | بناء ومسارات شيفرة وليست قبول عتاد |
| CTest للصيانة | رمز الخروج صفر لكن الناتج No tests were found | مسجل كعدم وجود اختبارات آلية |
| برنامج اختبار v2 | بناء Debug كامل وCTest 1/1 و11 مجموعة بلا عتاد | بروتوكول وحالة ونص وتخزين؛ الأجهزة غير موصولة |
| عتاد الموقع | لم يُشغل 1.0.3 أو v2 مع الأجهزة | Ramp Rate والاستعادة وكتابة Sub وتشغيل 8 ساعات ما زالت معلقة |
سلامة الموقع وخطة القبول
بعد البدء قد يتصل التطبيق بالأجهزة والكاميرا ويرسل أوامر تحكم. لذلك لم تشغل الجلسة البعيدة الإصدار الجديد على سطح مكتب غير مراقب ولم توقف العملية الحالية. بعد تأكيد المشغل للحالة الآمنة، ينبغي الانتقال من المراقبة إلى الأوامر المنفردة ثم الكاميرا والصمام والحواجز والنصوص والتشغيل المشترك.
- المراقبة 30 دقيقة وحساب فاصل العينات ونسبة انتهاء المهلة وأكبر فجوة لكل متحكم.
- كتابة عدة أهداف Sub آمنة ومقارنة استجابة
0x06وقراءة SP ولوحة الجهاز وPV. - تثبيت التعريض والدقة ودليل التخزين وقياس FPS للالتقاط والحفظ والإطارات المتجاوزة وزمن الطرف إلى الطرف.
- قطع رابط الكاميرا واستعادته وفحص سجل المراقبة وعودة العرض والتسجيل.
- تسجيل ثماني ساعات من التشغيل المشترك قبل قرار استبدال التطبيق القديم.
منهج هندسي قابل لإعادة الاستخدام
يناسب المنهج تطبيقات Windows الصناعية القائمة التي يجب أن تظل متاحة وقابلة للرجوع أثناء التحسين، مثل معدات أشباه الموصلات وأنظمة التفريغ والتحكم الحراري والكاميرات الصناعية وجمع البيانات متعدد المنافذ ومعدات المختبر ونصوص العمليات. تبدأ العملية بدليل قابل للتكرار من السجلات والقواعد ومسارات البروتوكول، ثم تُختار التعديلات المحدودة أو بنية الاختبار المعزولة وفق المخاطر.
مدخلات مشروع مماثل
تحتاج المراجعة الأولية عادةً إلى بروتوكولات الأجهزة وبنية المنافذ وخرائط المسجلات وSDK الكاميرا وعيناتها والمصدر وبيئة البناء والسجلات والقواعد التاريخية وحدود السلامة وطريقة الرجوع وأهداف قابلة للقياس لفترة العينات ونجاح الأوامر ومعدل الإطارات والتأخير والتشغيل المستمر. يمكن إجراء التشخيص الثابت والاختبارات بلا عتاد وفحص الحزمة وخطة القبول قبل توفر نافذة للأجهزة، لكنها لا تستبدل القبول الميداني.
أسئلة متكررة
هل كان العمل تطويراً جديداً أم صيانة لنظام قائم؟
استُخدم المساران. أنتجت الصيانة تعديلات محدودة وحزمة 1.0.3. أما v2 فهو مسار منفصل لفحص ملكية الخيوط والمعاملات والبيانات ولا يستبدل التطبيق القديم.
لماذا لم يُشغل الإصدار الجديد عبر SSH؟
قد يشغل البدء الكاميرا والمنافذ ويرسل أوامر. من دون تأكيد حالة آمنة اقتصر العمل على المصدر والبناء والتغليف والفحوص الثابتة.
هل 8.006 FPS نتيجة القياس بعد الإصلاح؟
لا. إنها قيمة مرجعية تاريخية على الحاسوب نفسه، و3.919 FPS تخص الإصدار المتراجع. استُخدمت المقارنة لتحديد مشكلة جدولة ACK. ما زال الإصدار المصحح يحتاج إلى قياس مضبوط.
هل غطت الاختبارات جميع وظائف الأجهزة؟
لا. مشروع الصيانة لم يسجل اختبارات آلية. غطى برنامج v2 واحد 11 مجموعة من فحوص البروتوكول والحالة والنص والتخزين بلا عتاد. الأجهزة الحقيقية والتشغيل الطويل عناصر قبول معلقة.
كيف حُميت بيانات وإعدادات الموقع؟
نُسخت الملفات قبل التعديل وسُجلت القيم، وتحافظ الحزمة على البيانات والنصوص والإعدادات، ويستخدم v2 AppId ودليلاً منفصلين. يتوقف تبديل الإصدار على القبول الميداني.

Online
Phone
WeChat
Top