איך לחבר xLogic Micro PLC לברוקר MQTT למעקב מרחוק

שאל סוכן PLC על MQTT ותקבל מפת דרכים: "בשנה הבאה, אולי, על המודל הפרימיום." אז אתה מסתכל על האותיות הקטנות ומוצא שער, ממיר, או מנוי ענן שמסתתר מאחורי הפיצ'ר. התמיכה ב-MQTT על ה-xLogic CPUs של Ethernet אין בה את כל זה - היא קיימת בקושחה מאז גרסה 1.04, והיא מפרסמת ישירות מהבקר.

זה משנה מה מכונת תקציב יכולה לעשות, ורוב המשלבים לא שמו לב.

למה MQTT עבורMicro PLC

MQTT נבנה בדיוק למצב הזה: מכשיר ברשת לא אמינה, מפרסם הודעות קטנות לברוקר, עם מנויים שמגיעים והולכים. מכונה במפעל, תחנת משאבה בשדה, חממה שעתיים מהמשרד - כל אחת מפרסמת את הסטטוס שלה; לוח המחוונים בענן, אפליקציית הטלפון והמחשב הנייד של המהנדס כולם מנויים לאותו נושא. אין סקר, אין פורטים פתוחים למפעל, אין שרת SCADA שמטפל בקישור.

הברוקר מתמודד עם הכאוס. ה-PLC פשוט מפרסם.

מה שאתה באמת מגדיר

חסימות החיבור חיות בתוכנית: קבע את כתובת הברוקר, את הנושא, את מרווח הפרסום, ומפה אילו ערכים נכנסים בטעינה. ה-CPU מטפל במעגל חיי החיבור - מחבר מחדש לאחר ניתוק, מפרסם מחדש לאחר הפסקה - שזה החלק שמסבך יישומים שנעשו ביד.

שילוב עם השרת האינטרנטי וה-SMS של האזעקה ויש לך שלושה ערוצים מרוחקים עצמאיים על בקר אחד. לוח מחוונים בענן למשרד, דף דפדפן למפעיל, SMS למהנדס התורן. בחר את הערוץ שלך לפי קהל.

מקרה אמיתי: מעקב מרחוק על חממה

גן עם ארבעה מפרצים רצה נראות בענן מבלי לבנות מחדש את רשת האתר. כל בקר מפרץ פרסם טמפרטורה, לחות ומצב שסתום לברוקר על VPS שכור; לוח מחוונים פשוט נרשם והראה את כל ארבעת המפרצים על מסך אחד. כאשר האינטרנט נפל במשך אחר הצהריים, הבקרים המשיכו לפרסם לתור מקומי והערכים התאוששו עם החיבור מחדש.

סיכום החקלאי, מתורגם מהתלהבות: "צפיתי בגרף הטמפרטורה מהטלפון שלי בזמן חופשה. זה היה טוב יותר מלהיות שם."

איפה MQTT הוא התשובה הלא נכונה

תהיה כנה לגבי מגבלות. MQTT מיועד לאירועים וטלקומוניקציה - זה לא לולאת בקרת דטרמיניסטית. אם אתה צריך משלוח מובטח ותגובה במילישניות, השתמש ב-Modbus TCP מקומית. MQTT מיועד לפיקוח ודיווח, לא לאינטרלוקינג בטיחותי. עיצוב את זה כך וזה ישרת אותך במשך שנים.

ושמור על פרטי הברוקר ישרים. PLC שמפרסם לנושא ציבורי הוא PLC שמשדר את עסקיו. נושאים פרטיים, ברוקר מקומי, או לפחות TLS על הברוקר - עלות ההתקנה היא דקות, והבושה שנמנעת היא אמיתית.

התבנית ששווה לגנוב

עיצוב נושא שמתרחב

MQTT נקי רק כמו מבנה הנושא שלך, ומבנה הנושא הוא המקום שבו פרויקטים קטנים שקטים הופכים לבלתי ניתנים לניהול. הגישה התמימה - נושא אחד לכל מכשיר, טעינה אחת עם הכל בתוכה - עובדת עבור מכונה אחת ונופלת בעשר. כל מנוי מפרש מחדש כל טעינה, כל שינוי בטעינה שובר כל לוח מחוונים, ודיבוג הופך לחיפוש נושא אחר נושא.

עצב את ההיררכיה לפני הפרסום הראשון. תבנית ששירתה אותי היטב:אתר/מכשיר/קטגוריה/ערך. אזplant1/pump1/status/run, plant1/pump1/sensor/level, plant1/pump2/alarm/high-level. המנויים עם כוכבית - לוח מחוונים עבור plant1, דף עבור pump1, מאזין לאזעקות עבור הכל - כל אחד מנוי בדיוק על החלק שהם צריכים. מכשירים חדשים נכנסים מבלי לגעת בנושאים הישנים, והטעינות נשארות קטנות ומסודרות.

שמור על הטעינות פשוטות: ערך וחותמת זמן. אין בלובי JSON מקונן שמחזיק אחת עשרה שדות אלא אם כן אתה באמת צריך אותם. טעינות פשוטות ניתנות לדיבוג - אתה יכול לקרוא אחת בקונסולת הברוקר ולדעת מיד אם היא נכונה. וקבע את דגל השימור על נושאי סטטוס כך שמנוי חדש רואה מיד את המצב האחרון הידוע במקום לחכות לפרסום הבא. מצב שמור הוא ההבדל בין לוח מחוונים שנפתח מוכן ואחד שמביט ריק במשך דקות.

הכלל האחרון הוא זה שאנשים מתנגדים לו: גרסה לנושא כאשר פורמט הטעינה משתנה.plant1/pump1/status/v2. זה מכוער. זה מציל אותך מלשבור חמישה מנויים בייצור עם שינוי אחד. נושאים מכוערים שעובדים מנצחים נושאים נקיים שמתפוצצים.

הנתונים ששווים פרסום

פרסום הכל רע כמו פרסום כלום - זה שוטף את הברוקר, מנפח את הלוג, וקובר את הערכים שחשובים. התחל מהשאלה שהמנוי ישאל, לא מרשימת הרגיסטרים. מפעיל רוצה סטטוס, אזעקות וסכומים רצים. מהנדס רוצה מגמות: טמפרטורה, לחץ, שעות ריצה. מנהל רוצה זמן פעולה וספירות. פרסם את אלה, ורק את אלה.

שיעורים חשובים גם. מעברי אזעקה: פרסם מיד, תמיד. סטטוס: בשינוי בנוסף לדופק. ערכים אנלוגיים: במרווח שמראה באמת את התהליך - עשר שניות עבור טמפרטורת חממה איטית, שנייה אחת עבור מכונת כלים. כל נושא מהיר שאתה לא צריך הוא עומס ברוקר מבוזבז ונתוני SIM מבוזבזים על המודלים האלחוטיים.

ושמור את החשובים גם באופן מקומי. רישום הנתונים של ה-CPU בנוסף להודעות השמורות של הברוקר נותן לך שני עותקים של ההיסטוריה הקריטית. כאשר הברוקר עובר יום רע - כולם עושים זאת - הלוג בצד המכונה הוא מקור האמת, ושיחת ההתאוששות קצרה.

בקר מקומי על ה-CPU, נראות בענן מעל MQTT, והשניים לא מתערבים. ההפרדה הזו היא הארכיטקטורה של אוטומציה מודרנית קטנה, והיא מתאימה על מסילה DIN. מפת הדרכים של הסוכן לא הגיעה. הקושחה כבר נשלחה.