FLProg + Nextion HMI. الدرس 3



في الدروس السابقة ( الدرس 1 ، الدرس 2 ) ، تحدثت عن كيفية رسم واجهة لوحة Nextion HMI ، وكيفية التحكم في لوحة باستخدام Arduino. في هذا البرنامج التعليمي ، سأوضح لك كيفية حل المشكلة العكسية للتحكم في لوحة Arduino باستخدام لوحة Nextion HMI.
في الدرس ، سوف نقوم بتوسيع مشروع الدرس السابق ، وإضافة التحكم في المروحة ، والذي سيتم تشغيله عندما ترتفع درجة الحرارة فوق الحد المحدد مسبقًا ، ويتم إيقافه عندما تنخفض درجة الحرارة إلى ما دون الحد الثاني. سيتم ضبط الإعدادات من اللوحة ، وتخزينها في الذاكرة غير المتطايرة لوحدة تحكم Arduino. بالإضافة إلى ذلك ، سنقوم بعمل مفتاح ضوئي (on-off) على اللوحة وزرًا سنقوم بتشغيل المصباح (على سبيل المثال ، لإعطاء إشارة للأجانب).

مخطط معدّل من الدرس الأخير. سوف يحاكي مصباح يدوي والضوء والمروحة المصابيح.


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

صفحة الإدارة ("page3" ، المعرف = 3).


ضع في اعتبارك العناصر الموجودة في الصفحة.

  1. مجرد حقول نصية. لا شيء مثير للاهتمام.
  2. . , . . . .

    , ( “vscope” “global”). . “Touch Press Event” .

    4 .
    page4.evtemp.txt=onV.txt

    4 , .
    page4.varN.val=0

    .
    page page4


  3. . . .

    “Touch Press Event”.

    .
    page4.varN.val=1


  4. . . .

    “Touch Press Event”.


  5. (“Dual-state button”) – .
    .

    , ( “vscope” “global”). ( “sta” “image”). “pic0” 0 “pic1” 1.

  6. (“Button”) – . .

    . , . , Arduino UART ( , ). (7 8). , , ( ). (“Touch Press Event”) .

    (“Touch Release Event”) .

    FLProg.


نافذة لتحرير القيم ("page4" ، المعرف = 4).

النظر في ما هو مدرج فيه.
  1. مجال القيمة القابلة للتحرير. معلمات العنصر.

    سنقرأ قيمة هذا الحقل من وحدة التحكم ، على التوالي ، لنجعله عالميًا (السمة "vscope" هي "عام").

  2. أزرار إدخال القيمة. جميع هذه الأزرار متطابقة تقريبًا ، وتختلف في النقش والرمز في معالج الأحداث "Touch Press Event". عند النقر فوق أحد هذه الأزرار ، تتم إضافة الرمز المقابل إلى القيمة الحالية لحقل القيمة المحررة.
    الرمز الموجود في "Touch Press Event" لكل من الأزرار.
    “0”
    evtemp.txt=evtemp.txt+"0"

    “1”
    evtemp.txt=evtemp.txt+"1"

    “2”
    evtemp.txt=evtemp.txt+"2"

    “3”
    evtemp.txt=evtemp.txt+"3"

    “4”
    evtemp.txt=evtemp.txt+"4"

    “5”
    evtemp.txt=evtemp.txt+"5"

    “6”
    evtemp.txt=evtemp.txt+"6"

    “7”
    evtemp.txt=evtemp.txt+"7"

    “8”
    evtemp.txt=evtemp.txt+"8"

    “9”
    evtemp.txt=evtemp.txt+"9"

    “.”
    evtemp.txt=evtemp.txt+"."


  3. زر لمسح الحقل. عند الضغط عليه ، يتم حذف قيمة الحقل.
    الرمز في "Touch Press Event"
    evtemp.txt=""

  4. زر لحذف الحرف الأخير.
    الرمز في "Touch Press Event"
    evtemp.txt=evtemp.txt-1

    . . . .

  5. .
    , (“endPress” “ endRel”) .
    “Touch Press Event”
    page4.endPress.val=1

    “Touch Release Event”
    page4.endRel.val=1


  6. . .
    “Touch Press Event”
    page page3



مع الانتهاء من اللوحة ، انتقل إلى برنامج FLProg. كما يستخدم المشروع من الدرس الأخير ، المعدل قليلاً. ملف المشروع موجود في الأرشيف ، يتم توفير رابط له في نهاية المشاركة.
كما هو الحال في الدرس الأخير ، سأعرض لوحات الدوائر الجاهزة وأخبر بما يحدث عليها.
اللوحة 7 - "إدارة الفانوس"



كل شيء بسيط هنا. Block B46 - "تتبع النقرات" (مكتبة العناصر ، المجلد "Nextion HMI Panel"). في ناتجه ، يتوافق مع حالة الزر الذي تتم مراقبته أو عنصر آخر من أحداث "Touch Press Event" و "Touch Release Event" على اللوحة. تتم كتابة هذه القيمة مباشرة إلى الإخراج المرتبط بالمصباح. تم تعيين معلمة الكتلة باستخدام محرر الكتلة.



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



يجب أن تتحول هذه الصورة.



كمتغير الضغط ، نختار المتغير الذي نكتب فيه الوحدة في زر "Touch Press Event" ، وكمتغير تحرير ، المتغير من زر "Touch Release Event".

لوحة 8 - "التحكم بالضوء".



لوحة بسيطة جدا. نقرأ هنا موضع المفتاح باستخدام الكتلة B47 - "معلمة Get" (مكتبة العناصر -> المجلد "Nextion HMI Panel" -> المجلد "Elements"). ثم يتم إرسال هذه القيمة مباشرة إلى وحدة الإخراج ، موصولة بالإضاءة. تم تعيين معلمة الكتلة باستخدام محرر الكتلة.



لتقليل الحمل على وحدة التحكم ، سنقدم طلبًا لحالة المفتاح مرة واحدة في الثانية.

اللوحة 9 - "نهاية معلمات التحرير".
في هذا المنتدى ، سنعالج النقر على زر "إنهاء" في صفحة تحرير المعلمات.



باستخدام الكتلة B48 - "نقرات التتبع" (مكتبة العناصر ، المجلد "Nextion HMI Panel") نحدد لحظة الضغط. في محرر هذه الكتلة ، سننشئ الصفحة 4 ونملأها بالعناصر التي تهمنا.



وقم بإعداد الكتلة.



باستخدام الكتلة B49 - "Rtrig" (مكتبة العناصر ، المجلد "المشغلات") ، حدد الحافة الأمامية للإشارة عند الضغط على زر "إنهاء" واكتبه في المتغير "نهاية التحرير".
في هذه الجبهة أيضًا ، سنقرأ قيمة المتغير الذي يخزن معرف الحقل المحرر باستخدام الكتلة B54 - "Get Parameter" (مكتبة العناصر -> المجلد "Nextion HMI Panel" -> المجلد "Elements"). حظر الإعدادات.



نضع القيمة التي تم الحصول عليها في المتغير "رقم الحقل المحرر".
وبنفس الدافع ، سنقرأ مباشرة القيمة الجديدة من حقل النص باستخدام كتلة B50 - "Get Parameter" (مكتبة العناصر -> المجلد "Nextion HMI Panel" -> المجلد "Elements"). حظر الإعدادات.



نقوم بتحويل القيمة الجديدة من السلسلة إلى رقم بتنسيق Float باستخدام كتلة B51 - "تحويل السلسلة" (مكتبة العناصر ، المجلد "نوع التحويل"). حظر الإعدادات.



نضرب الرقم في 10 باستخدام الكتلة B52 - "MUL (*)" (مكتبة العناصر ، المجلد "رياضيات") ، نغير النوع إلى عدد صحيح باستخدام الكتلة B53 - "تحويل Float إلى عدد صحيح" (مكتبة العناصر ، المجلد "تحويل النوع") ووضع المتغير "قيمة جديدة".

اللوحة 10 - "معالجة نتائج تحرير القيمة"



باستخدام B55 - كتلة "المقارنة" (مكتبة العناصر ، مجلد "المقارنة") نحدد أي حقل تم تحريره ، واعتمادًا على النتيجة ، اكتب القيمة من متغير "القيمة الجديدة" من خلال الزخم في متغير "نهاية التحرير" في أحد متغيرين ، في "Setpoint لإيقاف تشغيل المروحة x10" أو في "Setpoint لتشغيل المروحة x10". وبنفس الدافع أيضًا ، نعطي أمر اللوحة للانتقال إلى صفحة التحكم باستخدام الكتلة B58 - "الانتقال إلى الصفحة" (مكتبة العناصر ، المجلد "Nextion HMI Panel" -> "Page" folder). حظر الإعدادات.



اللوحة 11 - "كتابة قيم الإعداد إلى اللوحة و EEProm"



باستخدام الكتلة B59 - "كاشف لتغيير الرقم" (مكتبة العناصر ، المجلد "العناصر الأساسية") ، نحدد حقيقة تغيير القيمة عن طريق المتغير "Fan Enable setting x10". يتم تشكيل دفعة قصيرة عند خرج الكتلة في لحظة تغيير القيمة عند إدخال "القيمة". بواسطة هذه النبضة ، تتم كتابة القيمة إلى الذاكرة غير المتطايرة لجهاز التحكم. يمكن القيام بذلك باستخدام الكتلة B65 - "الكتابة إلى EEPROM" (مكتبة العناصر ، المجلد "EEPROM"). تم تكوين الكتلة باستخدام محرر الكتلة.



قبل كتابة متغير إلى EEPROM ، تحتاج إلى إنشائه هناك. للقيام بذلك ، انقر فوق الزر "إنشاء" في محرر الكتلة. تفتح نافذة إنشاء متغير.



فيه نعين اسم المتغير ونوعه. بعد النقر فوق الزر جاهز ، سيتم إرفاق الكتلة بهذا المتغير.



أيضًا ، بإشارة حول تغيير متغير ، يتم تقسيم قيمته على ثابت من النوع Float يساوي 10 باستخدام الكتلة B61 - "DIV (/)" (مكتبة العناصر ، المجلد "رياضيات") ، يتحول إلى سلسلة باستخدام الكتلة B62 - "تحويل السلسلة" (مكتبة العناصر ، المجلد "نوع التحويل") ، وإرسالها إلى اللوحة في الحقل المقابل باستخدام الكتلة B63 - "Set Parameter" (مكتبة العناصر ، المجلد "Nextion HMI Panel" -> "Elements" folder). إعدادات هذه الكتلة.



منطق التحكم بواسطة المتغير "Fan off setting x10" هو نفسه ، إعدادات Block هي كما يلي.

مجمع B65.



مجمع B68.



الآن سوف نتأكد من قراءة الإعدادات من EEPROM في وقت بدء وحدة التحكم. للقيام بذلك ، قم بإدراج لوحة جديدة في أعلى المشروع بحيث يتم تنفيذ الدائرة الموجودة عليه أولاً. للقيام بذلك ، حدد المقدمة وانقر على زر "أدخل بطاقة أمام البطاقة المحددة".



دعونا تسمية المجلس الجديد "قراءة الإعدادات من EEPROM". اللوحة

1.



باستخدام الكتلة 72 - "Rtrig" (مكتبة العناصر ، المجلد "Triggers") نقوم بإنشاء نبضة واحدة قصيرة عند تشغيل وحدة التحكم. وفقًا لهذا الدافع ، يتم تسجيل القيم التي تمت قراءتها من الذاكرة غير المتطايرة في المتغيرات "Setpoint لتشغيل المروحة x10" و "Setpoint لإيقاف المروحة x10" يحدث هذا باستخدام الكتل B71 و B73 - "القراءة من EEPROM" (مكتبة العناصر ، المجلد "EEPROM"). يتم تعيين معلمات الكتل باستخدام محرر الكتلة.



معلمات الكتلة B71.



يتم تحديد متغير القراءة في EEPROM بالضغط على الزر "تحديد". تفتح نافذة التحديد المتغيرة.



معلمات الكتلة B73.



حسنًا ، آخر لوحة في المشروع.

اللوحة 12. "التحكم في المروحة"



إذا تجاوزت درجة الحرارة الحالية الإعداد "المروحة على نقطة ضبط 10 ×" ، فسوف تكتشفها وحدة المقارنة B69 وتضبط المشغل B70 على الحالة 1 ، وعندما تنخفض درجة الحرارة إلى أقل من الإعداد "المروحة × 10 إيقاف التشغيل" ، سيتم اكتشافها بواسطة الكتلة B71 ، والتي يضبط الزناد B70 على الحالة 0. يتم توفير حالة الزناد إلى وحدة الإخراج المرتبطة بالمروحة.

أرشيف مع أكواد مصدر المشاريع.

عرض فيديو

Source: https://habr.com/ru/post/ar392865/


All Articles