تحيات حبر! ذات مرة كتبت
مقالًا عن نكهات التفاعل. لقد مر الكثير من الوقت ، عدت إلى هذا السؤال.
في هذه المقالة ، لن أخوض في تفاصيل التكنولوجيا لتطوير نكهات التفاعل ، لكن سأتحدث عن تجربتي في أتمتة ساعات العمل ومشاركة رمز قد يكون مفيدًا. صادفت مفاعل كيميائي مختبري صيني الصنع ، ولسوء الحظ ، كان يفتقر إلى أدوات لأتمتة التبريد وقراءة وكتابة البيانات وأنماط البرمجة ، وهو أمر مهم للغاية. كان المفاعل نفسه عبارة عن معدن عادي فارغ على حامل ثلاثي القوائم ، مع سخان يصل إلى 350 درجة. تحكم
Yudian AI518 هو المسؤول عن التحكم في درجة الحرارة.

كان الخبر السار بالنسبة لي هو وجود منفذ RS-485 فيه.
نعم ، يوجد في Yudian AI518 أجهزة ضبط الوقت وبعض البرامج البسيطة للغاية ، ولكن أولاً ، كان من المثير للاهتمام للغاية أن تصنع "لعبة ورق" بنفسك مع النوافذ والأزرار ، وثانياً ، ليس من المناسب للغاية وضع جهاز التحكم بشكل منتظم ، أود ذلك القيام به على الكمبيوتر.
نظرًا لأنني اكتسبت خبرة في العمل مع وحدات التحكم في Arduino ، فقد قررت في البداية إجراء الاتصالات والتحكم فيها ، ثم كانت لدي فكرة عن كتابة برنامج على Qt سيكون مسؤولاً عن التحكم والأتمتة ، و Arduino Mega عن تشكيل وفك تشفير الحزم باستخدام AI518.
نظرًا لأن صمام تمكين الماء البارد يمكن أن يقع على مسافة من الكمبيوتر والتثبيت نفسه ، فقد تقرر إنشاء وحدة تحكم إضافية تعمل على تشغيل / إيقاف تشغيل صمام الماء البارد في القيادة وقراءة وإرسال درجة حرارة التبريد. نعم ، في نهاية المشروع ، أدركت أن الإنشاءات قد تراكمت ، سيكون من الممكن التخلص من صافرة RS485 على جهاز كمبيوتر واستخدام برنامج واحد ، لكن الطموح لإنشاء اهتمام خاص بك قد زاد من الاهتمام.
المجموع في حفنة لدينا:
- تحكم الأصلي Yudian AI518.
- محولات Arduino Mega + 2 RS485 (MAX485)
- اردوينو نانو + 1 RS485 (MAX485) محول + الحرارية + 12V الترانزستور.
- 12V صمام الماء البارد.
بادئ ذي بدء ، تم كتابة بنية التواصل بين ميجا ونانو.
struct packet_arduino_pomp // Arduino nano { byte start_byte_one;
عندما كان كل شيء يعمل بشكل مستقر ، بدأت في قراءة الكثير عن بروتوكولات نقل البيانات المختلفة ، لكن لم أتمكن من العثور على البروتوكول الذي أحتاجه. الحقيقة هي أن وحدة التحكم Yudian AI518 القياسية تتواصل مع العالم الخارجي عبر بروتوكول AIBUS ، كما أفهمها هي التماثلية الصينية لـ MODBUS. (
التوثيق ) فعلت هذا للمرة الأولى وركزت على التوثيق ومساعدة جميع المنتديات الممكنة.
بنية الحزمة الصادرة لـ Yudian AI518:
struct tagREQ_FRM_T { uint8_t u8DevAddr1; uint8_t u8DevAddr2; uint8_t u8ReqType; uint8_t u8DevPara; uint8_t u8LoParam; uint8_t u8HiParam; uint8_t u8LoSumCheck; uint8_t u8HiSumCheck; } ;
هيكل الحزمة الواردة لـ Yudian AI518:
struct tagANS_FRM_T { uint8_t u8LoPV; uint8_t u8HiPV; uint8_t u8LoSV; uint8_t u8HiSV; uint8_t u8MV; uint8_t u8ALm; uint8_t u8LoParam; uint8_t u8HiParam; uint8_t u8LoSumCheck; uint8_t u8HiSumCheck; };
في الأساس ، اتضح أن الحزم من جميع الأجهزة تأتي إلى Mega (من nano مع درجات حرارة التبريد ، من AI518 مع درجة حرارة مفاعل محدثة والقيم والأوامر الأخرى من الكمبيوتر). ثم توحدت Mega كل شيء في حزمة واحدة وأرسلتها إلى جهاز كمبيوتر ، حيث قرأها برنامج QT.
بنية حزمة الكمبيوتر الضخمة:
struct packet_big // PC { byte start_byte_one;
نظرًا لأن البروتوكول الصيني صامت ، إذا كانت الحزمة المرسلة لا تتناسب مع الوصف ، واختيار الهيكل ، فقد بدأت عمومًا أعتقد أنه قد تم كسره ، ولكن في النهاية تم حل كل شيء. عندما رأيت أول الأرقام الصحيحة في السجل ، كان هناك سعادة ...
من أجل حماية وحدة التحكم في Arduino nano من الرطوبة ، قررت حفر لوحتي ووضعها في العلبة. هذا ليس بالأمر الصعب ، فهناك العديد من الأوصاف حول كيفية القيام بذلك ، لكنني اخترت تقنية LUT. (
لوت ). أصعب شيء كان اختيار ورق نفث الحبر المصقول المناسب ، الذي يطبع عادة طابعة ليزر. ولكن بعد كل التجربة والخطأ ، حصلنا على مثل هذا الجهاز.

ولكن ماذا عن البرنامج على الكمبيوتر ، مع الأزرار والنوافذ. لحسن الحظ ، من السهل جدًا القيام بهذه الأشياء على Qt. نحن قادرون على صياغة الطلبات وقراءتها من جهاز "Basurmanian" ، والآن من الضروري أن نتمكن من ضبط الأوضاع ، ورسم رسم بياني لدرجة حرارة الوقت ، وإعطاء في نهاية التفاعل تقريرا عن معدل التسخين إلى درجة الحرارة المحددة ، ووقت رد الفعل نفسه ، ومعدل التبريد إلى درجة حرارة معينة و إلخ عند دمج كل هذا في بنية منفصلة ، وفقًا لـ QSerialPort ، من خلال منفذ COM الذي يتصل به Arduinka نفسه ، فإننا نرسل ونقبل القيم.
أصعب شيء كان تجميع المشروع النهائي تحت نظام التشغيل Windows XP. لسوء الحظ ، هذه الأنظمة تعمل وقد اضطررت للرقص مع الدف لبضعة أيام لجعلها تعمل. نظرًا لأنني فعلت هذا بالفعل في اليوم الثاني ، لم أضع التعليمات الدقيقة دون تعمد وفرز جميع الخيارات المقترحة من المنتديات.
كانت النتيجة برنامجًا يساعدني ويساعدني في مكان عملي ويوفر الكثير من الوقت (لن أقوم بنشر مشروع كيو تي ، لأنه لا يوجد شيء مثير للاهتمام هناك. نقل البيانات عبر QSerialPort ، ومن ثم كل ما تريده قلبك).
الروابط إلى البرامج الثابتة ل Arduinok:
→
للحصول على نانو→
للحصول على ميجا