بداية المراجعة
لذا ، زملائي الأعزاء ، نبدأ المراجعة بما نريد تسليط الضوء عليه هنا. في المقالة ، أود أن أعتبر العناصر النموذجية لبناء برنامج تحكم صناعي ، وأظهر كيف يمكن تطبيقها على أنظمة التشغيل الآلي للمنزل. والأهم من ذلك هو العثور على إجابة على السؤال - ما هو المطلوب لهذا الغرض.
أتمتة المنزل - التطبيقات
المنزل الحلو المنزل ... هل حقا بحاجة إلى وحدة تحكم؟ الجواب بسيط - كل هذا يتوقف على ما هو متاح في مثل هذا المنزل. بالطبع ، إذا كان لديك شقة فقط ، وتتألف الأتمتة من إدارة مركز الوسائط المنزلية وتكييف الهواء في الصيف ، فكل شيء مكتوب أدناه يمكن أن يكون غير مهتم على الإطلاق. لكن إذا كانت هوايتك لا تدفع الأريكة فقط (ما الذي تخفيه ، فقد لاحظت ذلك أحيانًا) ، يمكن أن تكون المقالة مفيدة جدًا.
لذلك ، دعونا نحاول أن نفهم كيف يمكن للوسائل البدائية تبسيط حياتنا الصعبة. على سبيل المثال ، نستخدم الوضع الحقيقي - مضخة واحدة في بئر بطول 70 مترًا ، وضعها جاران في حظيرة. قاموا بتثبيته في الربيع ، عندما كان هناك الكثير من الماء في البئر ، وبشكل عام ، كان الجو دافئًا وجيدًا. لكن الوقت يمر ، وتبدأ الأسئلة - لجمع المياه من هذا العمق ، فأنت بحاجة إلى الكهرباء ، التي يتعين عليك دفعها. غمرت المياه الطابق السفلي والطابق التقني عدة مرات - لقد نسوا فقط إيقاف المضخة ... نعم ، وليس من السهل جدًا التحكم فيها يدويًا - أنت بحاجة إلى إغلاق إحدى الصنابير ، وفتح أخرى ، ثم تشغيل المضخة ، ومشاهدة مستوى المياه في الخزان.
هل يستحق الأمر أن تقضي وقتك في ذلك ، والذي يفتقر إليه بالفعل؟ يبدأ العقل المستفسر في البحث عن حلول ، وبالطبع يجدها! يتم إنشاء قائمة مهام للتنفيذ.
- لا يجب أن يكون الدفع مقابل الكهرباء المستهلكة أمرًا شائعًا - وهذا يعني أننا سنقوم بتركيب مبتدئين ، كل منهما متصل بمقياس الكهرباء الخاص به.
- يجب ألا تتعطل المضخة بسبب نقص المياه - وهذا يعني أننا سنقوم بتركيب جهاز استشعار لسكتة دماغية "جافة". إذا لم يكن هناك ماء ، فلا تقم بتشغيل المضخة ، وإذا كانت تعمل ، فسنوقف الطوارئ.
- يجب ألا تعمل المضخة لفترة طويلة - على سبيل المثال ، أكثر من 25 دقيقة. يشير تجاوز هذا الوقت إلى أن النظام يترك وضع التشغيل العادي.
- يجب أن يتم ملء الحاويات دون تدخل بشري ، أي تلقائيًا ، وهذا يعني البدء من المستوى الأدنى والتوقف عند المستوى العلوي.
- يجب ملء خزان واحد فقط ، أي تركيب صمامين - لتوفير المياه لمجموعة في كل خزان.
- يجب أن يكون التوقف بين بدء المضخة 30 دقيقة على الأقل.
- يجب ألا يؤثر انقطاع الطاقة على خوارزمية التشغيل ، إذا كان نشطًا. على الرغم من كل شيء ، يجب إكمال الخوارزمية.
المهام بسيطة ، ويمكن حلها في مائة ، إن لم يكن ألف. لكن عنوان المقال يتحدث عن نفسه ، وسوف نسير في طريق شائك. لنستخدم وحدة تحكم افتراضية (حاليًا ، بالطبع) ، والتي ستقوم بكل هذا.
كيف تعمل وحدة التحكم الصناعية؟
بالطبع ، سنوضح على الفور - نحن نتحدث عن ما يسمى وحدات تحكم المنطق القابلة للبرمجة ، أو PLC لفترة قصيرة. ما الذي يختبئ تحت هذا الاختصار؟ وهنا ما هو مخفي - مجموعة متنوعة لا تصدق من حلول الأجهزة ، وعدد كبير من منتجات البرمجيات والأدوات المساعدة. يطرح سؤال معقول على الفور - كيف إذن استخدام كل هذا جيد؟ هل من الضروري حقًا دراسة الجزء المادي من نقطة الصفر وإيجاد الوقت والمال لكل جهاز جديد من أجل أخذ دورات تدريبية واكتساب المهارات اللازمة للعمل مع كل جهاز؟
الجواب هو لا ، ليس من الضروري. لقد تم كل شيء من قبلنا. يبقى فقط للدراسة وتعلم كيفية استخدامها. هذا ما أقترح القيام به أكثر - القليل من الانغماس في معيار IEC 61131. دعنا نكشف عن الأجزاء التي تحتوي عليها هذه المواصفة القياسية.
- IEC 61131-1: معلومات عامة.
- IEC 61131-2: متطلبات المعدات والاختبار.
- IEC 61131-3: لغات البرمجة.
- IEC 61131-4: دليل المستخدم.
- IEC 61131-5: الاتصالات.
- IEC 61131-6: السلامة الوظيفية.
- IEC 61131-7: برمجة التحكم الغامض.
- IEC 61131-8: مبادئ توجيهية لاستخدام وتنفيذ لغات البرمجة.
- IEC 61131-9: واجهة الاتصالات الرقمية أحادية النقطة لأجهزة الاستشعار الصغيرة والمحركات.
- IEC 61131-10: PLC تنسيق تبادل يستند إلى XML مفتوحة.
لكننا لن نتطرق إلى موضوع المعايير ، وببساطة ، تعمل وحدة التحكم عمومًا بشكل دوري - استقصاء لحالة المدخلات ، والمترجم الذي ينفذ برنامج التحكم ، وتحديد حالة المخرجات ، وأداء مهام الصيانة الداخلية ، والعودة مرة أخرى إلى استطلاع حالة المدخلات. إنه ممل بما فيه الكفاية ، لكنه فعال وفعال. برنامج التحكم هو رمز زائف يتم إنشاؤه باستخدام بيئة برمجة ، وعادةً ما يكون هذا الرمز الزائف تسلسلًا مشفرًا ثنائيًا ، ولا علاقة له بلغات البرمجة المعتادة. على الرغم من أنه يتم تقديمه للمستخدم في شكل مفهوم - بالنسبة لوحدة التحكم ، يتم استخدام طريقة عرض مختلفة تمامًا. مثال جيد هو برنامج صغير ، تم تقديمه في شكل IL ، LD وفي شكل ترميز ثنائي لوحدة التحكم (هم ، لا يوجد حتى مصطلح خاص). أدناه تحت المفسد ويرد مثال صغير.
إذن ما الذي يجعل هذا البرنامج مفيدًا؟ نعم ، إنها لا تفعل شيئًا - إذا كانت قيمة merker M8010 هي 1 ، فسيتم كتابة 1. إلى المخرج بعنوان Y377.
واحدة من أكبر مزايا هذا التطبيق هي القدرة على إلغاء تحميل البرنامج من ذاكرة وحدة التحكم ، وفتحه للتحرير في محرر بطريقة مفهومة للبشر ، وتجميعها (هذا المصطلح مشروط) وإعادة تحميله مرة أخرى في ذاكرة وحدة التحكم. علاوة على ذلك ، حتى بعض وحدات التحكم حفظ التعليقات والأسماء المتغيرة.
كيفية برمجة وحدة تحكم؟
بالطبع ، هناك حاجة إلى برامج متخصصة. بعد عمليات بحث وتجارب مطولة ، تم اختيار Autoshop v3.02 من Inovance Control. من اللافت للنظر أنه مجاني ومتاح للتحميل مجانًا ، كما أنه يدعم وحدات التحكم المتوافقة مع وحدات تحكم Mitsubishi. وهو يدعم العمل ليس فقط من خلال المنافذ التسلسلية ، ولكن أيضًا عبر الإيثرنت. رابط إلى النسخة المستخدمة من قبلنا ، تحت المفسد.
رابط للتنزيل من Yandex Disk حسنا ، لقد قمنا بتثبيت البرنامج والآن سؤال آخر - كيفية كتابة البرنامج إلى وحدة تحكم لدينا؟ نظرًا لأننا سنعمل مع جهاز معين ، فسنقوم بتثبيت برامج تشغيل محددة لمنفذ COM الظاهري. لحفظ الاستنتاجات وتبسيطها ، قررت استخدام منفذ USB الخاص باللوحة للاتصال. السائقين تحت المفسد.
بعد تثبيت برامج التشغيل وتوصيل اللوحة عبر mini-USB ، يمكنك التحقق من نجاح كل شيء معك. للقيام بذلك ، انقر بزر الماوس الأيمن على منافذ إدارة جهاز الكمبيوتر الخاص بي - إدارة (COM و LPT). يجب أن تشاهد نافذة مثل المفسد. قد يختلف رقم منفذ COM على نظامك.
يمكنك الآن تحديد Tools-Communication Setting في قائمة AutoShop ، وحدد Serial في النافذة التي تظهر ، وحدد رقم المنفذ وانقر فوق الزر Test. يجب أن يكون لديك نافذة مثل هذا تحت المفسد.
ولكن إذا لم ينجح شيء ما بالنسبة لك ، فاكتب إما في PM أو في تعليق. بالتأكيد سوف نساعد
عناصر البرنامج ، والتي بدونها سيكون حزينا
فيما يلي ، سننظر في لغة مخططات السلم ، أو ما يسمى LD. دعونا نفكر فقط في تلك العناصر التي سنستخدمها لاحقًا.
- المدخلات والمخرجات منفصلة. تم تخصيصها كـ X و Y. مصممة لاستقبال وإصدار إشارات منفصلة.
- مساحة ذاكرة M merkers M. قد تستغرق حالتين - متقطعة وإيقاف تشغيلها.
- تم تعيين مؤقتات T. مصممة لحساب الوقت من 0.1 إلى 3276.7 ثانية.
- مساحة السجلات D. لها بعد خلية يبلغ 16 بت ، ولكن يمكن معالجتها أيضًا على أنها خلية 32 بت.
حصان كروي في فراغ ، أو سجلات عنونة غير مباشرة
يتم تعيين سجلات العنونة غير المباشرة V و Z ويمكن معالجتها من V0 إلى V7 ومن Z0 إلى Z7. لماذا يمكن استخدامها؟ دعونا ننظر في كيفية عملها بشكل عام. سجل D1000V0 المجنون هذا يعني أن عنوان الخلية المحسوب كعنوان D1000 بالإضافة إلى القيمة المكتوبة في سجل العنونة غير المباشرة سيتم استخدامها. إذا كان هناك 15 ، فسنستخدم عنوان الخلية D1015. إنه مناسب للغاية عند العمل مع صفائف البيانات أو مع التحكم في الجدول - يكفي أن نغير قيمة سجل الفهرس ، ونحصل على القيم من خلايا الذاكرة التي تم معالجتها. ولكن على الرغم من أننا لن نطبقها ، فسنتطرق إلى ذلك في المنشور التالي.
قليلا عن التصور للبرنامج ، أو تصحيح الأخطاء عبر الإنترنت
إذا كنت مبرمجًا وقد انتهيت للتو من كتابة برنامج ، فإن الخطوة التالية هي تصحيح الأخطاء. وهنا السؤال الذي يطرح نفسه - كيف نفعل ذلك. مرة أخرى ، هناك الكثير من الخيارات ، لكنني سأتحدث عن الخيار الذي سنستخدمه أكثر. يسمح لك محرر بيئة البرمجة بإظهار قيم البتات والمتغيرات الموجودة في ذاكرة وحدة التحكم عن طريق الضغط على زر واحد بشكل مرئي. ومن الأمثلة الواضحة للغاية - أسفل المخربون في وضع عدم الاتصال بالإنترنت وعرض البرنامج في المحرر عبر الإنترنت.
زر للتبديل إلى وضع العرض المتغير اكتب البرنامج في وضع عرض قيم المتغيرات نوع البرنامج في وضع التحرير المزيد حول العمليات التي تحدث عند النقر فوق الزر عبر الإنترنت. البرنامج يجمع بسرعة قائمة من المتغيرات المرئية ، وعند الانتهاء ، يكتبه إلى مخزن مؤقت وحدة تحكم محددة. بعد ذلك ، تعد وحدة التحكم البيانات من هذه القائمة وتضعها في مخزن مؤقت آخر. يقرأ البرنامج القيم من هذا المخزن المؤقت ويعرضها كقيم في الرسم التخطيطي المقلد. إذا قمت بالتمرير قليلاً من البرنامج في نافذة العرض وتغيير المتغيرات المرئية ، فستكرر هذه الدورة مرة أخرى ...
الذي يدعو هاملت ، أو على خشبة المسرح BluePill x405
هل لاحظت أن السوق لا يصادف اللوحات الأم البسيطة مثل الكمبيوتر اللوحي الأزرق ، ولكن مجهزة بمعالجات مثل F405 وأعلى؟ صادفت شخصياً أحجار F401 فقط ، لكن هذا مستوى مختلف قليلاً ... يسهل علي الصعود ، وللتجارب التي أجريتها ، دون التفكير مرتين ، قمت بالدفع في P-CAD القديمة الجيدة 2006 وطلبت من الصينيين في أحد مواقع الطلبات السريعة. بالطبع ، هو لون أخضر لوحي ، لكن من حيث المعنى قررت ترك اسم BluePill ، لكن الإشارة إلى أنه بالفعل x405. النتيجة تحت المفسدين هي صورة للوحة BluePill x405.
قليلا عن لماذا هذا المنتدى هو ملحوظ جدا؟ بعد كل شيء ، كان هناك فقط الآلاف من محاولات إنشاء الحيوانات المستنسخة الزرقاء! لكن الاختلاف هو: أرفق البرنامج الثابت بهذه اللوحة ، والتي ستحولها إلى نواة تدير برنامجًا متوافقًا مع وحدات التحكم الصناعية Mitsubishi في نظام القيادة. يتم حساب هذه المعجزة على 16 المدخلات ، 16 الإخراج ، 2 المدخلات التناظرية ، 3 UART مع دعم DE ل RS485 ، 1 الحافلة الرئيسية onewire. UART يمكن أن تعمل بمثابة ناقل رئيسي modbus RTU ، وكعبد. ويمكن أن تعمل بشكل مستقل تماما.
ولكن هذا ليس كل شيء - إذا قمت بتوصيل بطارية 3V بلوحة VBAT ، فلن يقتصر الأمر على مدار الساعة فقط ، ولكن أيضًا الموقتات والعدادات ودمج الشركات وأول 1000 من السجلات العامة للأغراض D ستحتفظ بقيمها ، وهناك 8000 سجل هنا.
توقعًا للأسئلة ، سأقول على الفور - نعم ، يعتمد البرنامج على نظام تشغيل في الوقت الفعلي. نعم ، يتم استخدام DMA كلما أمكن ذلك. تتيح هذه الميزات العمل دون تغييرات كبيرة في وقت الدورة في أحمال اتصالات عالية. هذا الإصدار هو المراجعة الثانية ، المنقحة والمكتملة.
يمكن برمجة هذه اللوحة بالكامل بواسطة كل من GX FXDeveloper و IEC Developer و GX Works.
مصير المضخة وخزانين
دعونا الآن نحل هذه المشكلة - خاصة وأن جميع الأدوات اللازمة لذلك متوفرة. من أجل عدم السحب كثيرًا ، كتبت برنامجًا وقسمته إلى أجزاء (ما يسمى الشبكات أو سلاسل العمل) ، وسأعرض كل منها هنا وأقدم تعليقات.
صافي 1 - التشغيل الأول للبرنامج سجل D1000 يخزن الوقت اللازم لقمع ترتد الاتصال. في الواقع ، هذا موجود بالفعل في البرنامج - لكنني أرغب في إظهاره بشكل أكثر وضوحًا. سجل D1001 هو المسؤول عن وقت حماية المضخة. فيه نكتب 15000 ، أو 1500 ثانية. بعد ذلك ، لدينا سلسلة لإعادة النسخ الاحتياطي - إذا حدث خطأ ما ، يمكنك إرسال الإشارة 1 لإدخال X14 وإعادة تشغيل اللوحة. في هذه الحالة ، تتم كتابة 0 إلى السجلات D0 و D1 ، وتتم إعادة تعيين وحدات دمج M98 و M99.
صافي 2 - معالجة إشارة الإدخال هنا ، بمساعدة أجهزة ضبط الوقت ، نتخلص من ارتداد جهات الاتصال. للقيام بذلك ، استخدم تأخير 200 مللي ثانية. للتأكد من أنه في البرنامج المستقبلي عند تغيير عنوان إدخال جهة الاتصال ، ليس من الضروري إعادة كتابة الكثير من السلاسل ، استخدم الوسطاء الوسيطين (على سبيل المثال ، M102). تجدر الإشارة أيضًا إلى أن تاجر النظام M8003 يستخدم هنا - يتم تشغيله بعد انقضاء الدورة الأولى من تنفيذ البرنامج. لكن M8002 Merker نشطة فقط في الدورة الأولى من البرنامج ، ويمكن وينبغي استخدام هذا لتعيين القيم الأولية.
تعبئة الخزان 1 مطابق تمامًا لملء الخزان 2 باستثناء العناوين. لم يكن الرسم مناسبًا - لكنك نظرت إليه بشكل أفضل بمجرد فتح المشروع. ما هو ملحوظ حول وحدة التحكم هذه؟ وجود وسائل حماية وطرق مسدود تسمح ببدء تشغيل وإيقاف آليات التشغيل. على سبيل المثال ، بعد فتح صمام 1 ، فقط بعد 700 مللي ثانية ، سيتم إصدار أمر لبدء التشغيل ، والذي يقوم بتشغيل المضخة.
الإدارة هنا لا توفر الوضع اليدوي. أيضا ، يتم تنفيذ حماية ضد الجفاف والحماية ضد تشغيل المضخة لفترة طويلة.
صافي 5-6 - إدارة المخرجات وهنا نتحكم في المخرجات وفقًا للأقفال.
من بين المهام ، بقي فقط اتصال فاصل الحماية لمدة 30 دقيقة قبل إعادة التشغيل لم يتحقق. يجب أن أقول على الفور - في هذا الإصدار فقط يتم تنفيذ المدخلات X0-X3 والإخراج Y0-Y3 ، وهو ما يكفي تماما لاختبار المواد في هذه المقالة. الربط هو PA4-X0 و PA5-X1 و PA6-X2 و PA7-X3 و PB4-Y0 و PB5-Y1 و PB6-Y2 و PB7-Y3.
سرعة دورة البرنامج - طرق قياس الجد
عندما نسأل أنفسنا هذا السؤال ، يتبادر إلى الذهن على الفور القيام بذلك - لكتابة برنامج تحكم كبير جدًا من عدد معين من العناصر المتطابقة ، والحصول على وقت التنفيذ والحصول على وقت تنفيذ أمر واحد. يقال - القيام به ، في إطار برنامج المفسد وباسم وقت تنفيذ المفسد.
7995 خطوات - 2.6 ميلي ثانية هنا ، كل خطوة هي أمر واحد ، ونحصل على 2.6 / 7995 = 0.325 ميكروثانية. ليست سريعة جدا ، ولكن ليس سيئا.
FPU - أن تكون أو لا تكون؟
الآن دعونا نحدد مدى سرعة عمل تعليمات الفاصلة العائمة في البرامج الثابتة الخاصة بنا. هناك نوعان من البرامج الدائمة ، أحدهما يستخدم FPU المدمج والآخر مع محاكاة البرامج. البرنامج أدناه:
برنامج لحساب وقت تنفيذ التعليمات البرامج الثابتة أدناه تحت المفسد ، وليس لديهم قيود
عند استخدام جهاز FPU ، يكون وقت تنفيذ البرنامج 1.8 مللي ثانية أو 1.8 / 600 = 0.003 مللي ثانية أو 3 ميكروثانية.
الآن استبدال البرامج الثابتة - استخدام مضاهاة البرنامج. النتيجة مختلفة بالفعل - 2.5 مللي ثانية ، أو 2.5 / 600 = 0.0041 مللي ثانية ، أو 4.1 ميكروثانية. ليس سيئا ، ولكن الفرق ملحوظ جدا.
استنتاج
على الرغم من الحجم الكبير للمقال ، لا يزال هناك الكثير من المواد التي من الجيد تغطيتها. لذلك إذا كانت هذه المقالة تهمك ، فسيتبعها هذا المقال بآخر. ولكني أود أن أجد أشخاصًا متشابهين في التفكير والذين يرغبون في الانضمام إلى معبر الصناعيين والمحليين بهدف واحد فقط - بحيث تكون هذه الأدوات في متناول شخص عادي بسيط.