ما هو Factory I/O؟ 

Factory I/O هو محاكي للمصانع صُمّمَ للتّعامل مع وحدات التّحكم PLC للتعلّم والتدرُّب عليها في بيئةٍ افتراضية؛ يتضمّن مشاهدوسيناريوهات scenes مُعدّة مُسبقاً، كما يُمكنك إنشاء مصنعكَ الخاص لبرمجته وللتعلُّم، وقد استخدمنا هذه البرمجيّة كثيراً مع متحكمات PLC، ولكن إن أردنا استخدامها مع لوح الأردوينو سنواجه مشكلة أنَّ Factory I/O لا يدعم الأردوينو، لذلك سوف نعمل في هذا المشروع على الربط بين Factory I/O والأردوينو. 

من المهم ذكر أن Factory I/O ليس مجانياً ولكن يتوفّر منه إصدارٌ محدودُ الميزاتِ مجانيٌّ لمدة 30 يوماً، وهو إصدار مناسب، حيث لا تحتاج إلى إعطاء أيّة معلومات عن بطاقة الائتمان. 

يمكنك تحميل Factory I/O ومعرفة المزيد عنه من خلال زيارة موقع الويب التالي: https://factoryio.com/ 


فيديو تعليمي 

يمكنك مشاهدة هذا الفيديو للبدء ويمكنك العثور على دليل خطوات مفصل أدناه . 

http://https://youtu.be/QnlU2VomHNo

 

  

كيفية توصيل الأردوينو مع Factory I/O؟ 

ذكرنا من قبل أن Factory I/O لا يدعم الأردوينو ولكن يمكن استخدام خادم Modbus TCP/IP، حيث تتوفّر مكتبة برمجية Modbus مُعدّة  الأردوينو.

Modbus هو بروتوكول اتصال يستخدم في الأتمتة لسرعته، تتوفر معلومات أشمل عنه في مقالات أخرى ولن نركز عليه في مقالنا هذا. 

(الشكل1: شعار Modbus، مصدر الصورة: موقع huckster.io)
(الشكل1: شعار Modbus، مصدر الصورة: موقع huckster.io)

عند محاولة معرفة كيفية توصيل الأردوينو بخادم Modbus ضمن Factory I/O نستنتج أنه من غير الممكن إجراء اتصال مباشر، وذلك لأن Arduino Modbus يعتمد على كابل USB لذلك يجب أن يكون الاتصال تسلسلياً، بينما على الرغم من أن الخادم الذي يستخدمه Factory I/O هو أيضاً Modbus ولكنه يستخدم Modbus عبر TCP/IP. 

أردنا استخدام الأردوينو العادي للقيام بذلك، لذلك بحثنا عن أداة برمجية لتحويل إشارة Modbus التسلسلية من الأردوينو إلى Modbus TCP/IP ولكن ليس هناك أدوات مجانية متاحة. 

 

لحل المشكلة كتبنا برنامج بلغة البايثون، قد لا يرقى الكود البرمجي إلى معايير المحترفين، ولكنه ينجز المهمة، ومن المتعب أيضاً التبديل المستمر بين اللغتين Python و++C، والنتيجة النهائية هي ملف تنفيذي  exe لبرنامج ذو حجم (MB8) عليك تنزيله وتشغيله وستصبح جاهز لتوصيل الأردوينو و Factory I/O معاً. 

إعداد Factory I/O 

أولا، قم بتنزيل وتثبيت Factory I/O على حاسوبك من خلال الرابط: https://factoryio.com/start-trial 

بعد ذلك افتح Factory I/O.  ثم في شاشة البدء انقر فوق “مشاهد (Scenes)” ثم اختر المشهد “2- from A to B (Set and Reset)”. 

سيفتح المشهد الآن، إذا لم تستخدم Factory I/O مُطلقاً، فيُمكنك البدء باستكشاف إعدادات الكاميرا وإلقاء نظرة على البرنامج، كما تشرح أدلة استخدام Factory I/O كيفية استخدام الكاميرا بشكلٍ جيد ولا تستغرق سوى دقيقة واحدة حيث ستحتاج فقط إلى وظائف الكاميرا الأساسية. https://docs.factoryio.com/manual/navigation/ 

 

يجب عليك تمكين الخيارين في الزاوية اليمنى للمتابعة (“إظهار علامات المستشعر/الحساس (show sensor tags)” و”إظهار علامات المشغل (show actuator tags)”). ثم اضغط على زر التشغيل وستلاحظ أن البساط الناقل (السير) يعمل تلقائياً لأنه مضبوط مسبقاً ليعمل. هذا ليس خطأ بل ميزة وجزء من التمرين. 

لذلك عليك فقط أن تهتم بتشغيل البساط الناقل عندما يصل الصندوق إلى المستشعر A وجعل البساط الناقل يتوقف عند قراءة المستشعر B. لاحظ أن أجهزة الاستشعار برتقالية اللون، هذا لأنهم لديهم قيمة “1” أو “true” (مستوى جهد مرتفع) عندما يرون العاكس ولديهم “0” أو “false” (مستوى جهد منخفض) عندما يكون هناك صندوق أمامهم. 

يمكنك في الوقت الحالي الضغط على زر الإيقاف والنقر فوق الزر “ملف (File)” في الجهة اليسرى من النافذة  ثم اختيار “برامج التشغيل (Drivers)” (أو يمكنك استخدام الاختصار F4). 

برامج التشغيل هي التي ستقود المشهد، ويمكنك تحديد جميع أنواع PLC ولكن للاتصال بالأردوينو عليك تحديد خادم Modbus TCP/IP. 

(الشكل3 :برامج التشغيل (Drivers)، مصدر الصورة: موقع huckster.io)

 

بعد ذلك ننقر على التهيئة (configuration) يجب عليك ضبط التهيئة كما في الصورة التالية  

 

إذا عُدت إلى الوراء، فيجب أن يبدو برنامج تشغيل خادم Modbus هكذا. 

 

إذاً يُوصل المستشعر A إلى الدخل 0 (Input 0) والمستشعر B إلى الدخل 1 (Input 1) والبساط الناقل يُوصل إلى الملف/الخرج 0 (Output 0/Coil). 

ملاحظة: الملفات هي نفسها المخرجات الرقمية. إنها آثار من الأيام التي عملت فيها الآلات المؤتمتة مع الريليه، فأُطلق مسمى “ملفات (Coils)” على “المخرجات الرقمية” للانتقال من منطق الـ relay إلى منطق الـ PLC. وعندها اُختُرِعَ Modbus للتواصل بين العديد من PIC، وبالتالي استخدموا أيضاً مصطلح “ملفات”. 

الآن انتهينا من تهيئة إعدادات Factory I/O. يمكن استخدام إعداد برنامج التشغيل (driver) لجميع المشاهد ضمن قيود متمثلة بعدد المداخل والمخارج وهم  16 مدخلاً و16 مخرجاً و8 مدخلات ومخرجات تناظرية. 

إعداد الأردوينو 

ستحتاج إلى ملف بصيغة ZIP المقدم في هذا المشروع لأجل إعداد الأردوينو. 

إذا كنت ترغب في معرفة مبدأ عمل المشهد بنفسك، فاستخدم الملف: “Arduino_Link_To_FactoryIO_Firmware”. 

يجب تذكر أنه لا يمكنك استخدام تابع التأخير (delay) في التعليمات البرمجية لأنها ستؤثر على زمن اتصال Modbus حيث قد تنتهي مهلته. 

إذا كنت ترغب في ربطه على الفور، فقم بتنزيل ملف:“Arduino_Link_To_FactoryIO_Scene2” 

لا تنس فك ضغطه، وإذا قمت فقط بفتحه، فإن الكود المرفق غير موجود وستحصل على أخطاء أثناء تنفيذ البرنامج. 

إذا فتحت البرنامج النصي، فسترى بعض علامات التبويب ولكن علامة التبويب الوحيدة التي تحتاجها هي البرنامج النصي الرئيسي حيث يمكنك رؤية الكود الخاص بمعالجة الاتصال في علامات التبويب الأخرى. شكر كبير لأندريه سارمنتو باربوسا لكتابة كود المكتبة المسؤولة عن اتصالات Modbus. 

 

للبدء، يمكنك تخزين المدخلات في متغير.
ننصح باستخدام نفس المتغيرات المستخدمة في Factory I/O ولكن تأكد من أنهم كلمة واحدة، على سبيل المثال: اضغط لتحميل
الكود البرمجي

ثم نقوم برفع الكود البرمجي على Arduino Uno أو Nano أو Mega. 

الربط بين الأردوينو و Factory I/O 

لقد ذكرت سابقاً أنه لا توجد طريقة لتوصيل الأردوينو مباشرةً ب Factory I/O لأن الاتصال بين الأردوينو والحاسوب يحدث عبر USB اتصال تسلسلي بينما الخادم يعمل على Modbus TCP/IP. 

لذلك كتبت برنامجاً بلغة البايثون يحلل البيانات من الأردوينو إلى الخادم الذي يعمل عميل مستخدم للـ Modbus. لتحميلبرنامج البايثون النصي للمهتمين هنا، ولكن كما ذكرنا سابقاً ليس لدي تدريب رسمي على كتابة برامج بطريقة احترافية (ولكن البرنامج يعمل). ثم حولنا الكود في ملف قابل للتنفيذ بحجم 8MB هنا

بعض الأشياء الأساسية التي يجب عليك التحقق منها للتأكد من أن كل شيء سيعمل: 

  • تأكد من فتح Factory I/O وأن برنامج التشغيل مُهيأ. 
  • تأكد من كتابة البرنامج على الأردوينو ومعرفة رقم منفذ COM. 
  • تأكد من توصيل الأردوينو بجهاز الحاسوب الخاص بك. 
  • لا تستخدم واجهة العرض التسلسلي  في الأردوينو لأن الاتصال التسلسلي مطلوب للاتصال بالحاسوب. 

ثم تقوم بتشغيل البرنامج، سيعطي إشعاراً لأن البرنامج غير معروف لنظام التشغيل Windows. ولكن في الوقت الحالي عليك النقر فوق “مزيد من المعلومات/ More info”. 

انقر فوق “تشغيل على أي حال/ Run Anyway”. 

من الممكن أن يقوم برنامج مكافحة الفيروسات الخاص بك بحظره لأنه ملف بصيغة exe. ولكن هذه هي الطريقة. ثم بعد ذلك، ستظهر واجهة المستخدم بأصغر حجم: 

 

حدد منفذ COM الذي يتصل به الأردوينو ويجب أن يكون عنوان IP جاهزاً (عنوان IP الافتراضي في Factory I/O). بعد ذلك، تغلق النافذة وعلى الطرفية (terminal) يجب أن ترى ما يلي. 

 

تظهر “read Input 0” لأن برنامج البايثون النصي سيقرأ المدخلات من Factory I/O إذا تم تغييرها فقط. سوف يُكتشف التغيير لأن جميع المدخلات في البداية هي 0 ولأن المستشعريّن A وB هما 1 عندما لا يوجد صندوق. لم أستخدم نفس العملية مع الأعداد الصحيحة، لأنه إذا استخدمت مدخلاً تناظرياً الأردوينو كمدخل إلى Factory I/O سترسل قيم عشوائية بالكامل بسبب عدم الاستقرار. 

يجب أن يومض ضوءا RX و TX على الأردوينو بسرعة عند الاتصال. إذا كنت ترغب في إيقاف الاتصال، فأغلق واجهة الـ terminal، لاحظ أيضاً أنه يجب عليك إيقاف الاتصال لتنزيل البرنامج على الأردوينو. 

إذا واجهت خطأً، فيرجى قراءته بتمعن وتأكد من: 

تهيئة برنامج التشغيل في Factory I/O، تحميل البرنامج بنجاح على الأردوينو، لم يُنشأ أي اتصال تسلسلي بالأردوينو (مثل الشاشة التسلسلية)، قبول مضاد الفيروسات الخاص بك البرنامج النصي (يمكنك تعطيله للاختبار)، كتابة البرنامج بشكل صحيح (إذا شككتَ في صحة كتابتك للبرنامج، استخدم البرنامج المكتوب للمشهد 2 المرفق بهذا المشروع)، Factory I/O في وضع التشغيل (وليس في وضع التوقف)، ليس لديك خوادم Modbus أخرى تعمل على حاسوبك. 

الآن يجب أن تكون متصلاً ب Factory I/O، وبنفس الطريقة يمكنك كتابة الأكواد البرمجية لجميع المشاهد أو يمكنك إنشاء المشهد الخاص بك. 

إذا كنت ترغب في معرفة المزيد عن Factory I/O في الأتمتة الصناعية، فيمكنك التحقق من قناتي على YouTube: أنا أركز على مشاريع الأردوينو ومنطق التحكم الصناعي. 

لأنني الآن قادر على ربط الأردوينو أيضاً ب Factory I/O، سأقارن PLC (وحدات التحكم الصناعية المصممة للأتمتة) و الأردوينو للغوص أكثر في الاختلافات. إذا كنت مهتم بذلك يمكنك تفقد الرابط التالي: https://www.youtube.com/c/seafoxc 

نصيحة إضافية 

من السهل جداً أن يتضمن الكود البرمجي الخاص بك مدخلات ومخرجات الأردوينو. بهذه الطريقة يمكنك إنشاء لوحة تحكم للتحكم بالمشهد الخاص بك. مثل استخدام زر الضغط (Push Button) للبدء أو ضوء الحالة. 

في المشروع التالي، سنعالج المشهد 3 ونستخدم الأزرار الفيزيائية كوسيلة للتحكم في المشهد. إذا كنت ترغب في الحصول على تحدٍ، فيمكنك محاولة حل المشهد 3 بنفسك.

يمكنك معرفة كيفية عمل المشهد في وثائق الشرح ل Factory I/O:

https://docs.factoryio.com/manual/scenes/filling-tank/


المصدر : هنا

ترجمة : غدير سليمان، مراجعة :يارا قاضون، تدقيق لغوي :حنين غالية، تصميم: علي العلي،  تحرير :حسين اسعد