פתרון בעיות MODBUS עבור SCADA חלק א’

פתרון בעיות MODBUS עבור SCADA / אילן שעיה

 diagram-scada-simple modbus

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

ה Modbus הוא פרוטוקול מאוד ישן ושיש לו פרשנויות רבות ויישומים רבים הניתנים על ידי ספקים שונים, מה שהופך אותו לאחד הפרוטוקולים הנפוצים והסטנדרטיים ואחד המסובכים להקמה. ישנם מספר היבטים שצריכים להלקח בחשבון כמו : המשתמש צריך להתחיל בכך שינסה להכניס תג  נתונים אחד או שני תגי נתונים עם סוג נתונים בסיסיים כמו 16Int) Register Holding) או Output Coil   (bool) ,  ולהוסיף תגים נוספים לפני שיתקדם לסוג נתונים מורכבים יותר כמו real32 או long32.

RTU / ASCII MODE

ניתן להשתמש ב Modbus כשהוא במצב תקשורת RTU או ASCII   מצד אחד RTU לרוב ובעיקר משמש  כהשוואה ל- ASCII מכיוון  שהנתונים מועברים בצורה בינארית ובמהירות. מצד שני ה ASCII נמצא בשימוש לעתים רחוקות, ויבחר לשימוש רק כאשר מהירות התקשורת (קצב שידור)  לא יכולה להיות מהירה בשל מגבלת מרחק או מכשיר תקשורת, המודם לדוגמה הם לא יכולים להיות בשימוש ברשת אחת במקביל.

חשוב גודל נתוני בייט עבור הגדרת יציאת Com הוא  8 ל RTU ו- 7 עבור ASCII.

(Master(s)/Slave(s

הקשר של  Master וSlave- בהקשר ל Modbus הוא כמו לקוחות ושרתים ברשת המחשב. רשת Modbus בתקשורת סריאלית יכולה להיות ראשית (Master) בלבד אחד עם אחד, או  משנית (Slave)  אחרת שבהם היא נקראת רשת ‘multidrop’.  בדרך כלל ה Master הוא מחשב או PLC (בקר לוגי) ואילו הSlaves- יכולים להיות כמה מכשירי מדידה או חיישנים. ה Master ייזום את כל סקרי הנתונים או את רצף הכתיבה וה Slave  יגיב בהתאם.  דבר זה הוא  לגמרי ההיפך מרשת מחשבים שלפיה יהיה, בדרך כלל, שרת אחד ללקוחות רבים אחרים, למרות הדמיון שהלקוח ייצור את כל הפעולות.

לתשומת לב

ניתן ליישם הגבלת Master  רק בתקשורת סריאלית כמו RS232 / 422/485.
Modbus על גבי רשת TCP / IP יכול לתמוך ב Masters ו-Slaves. טופולוגית רשת Multidrop זמינה רק עבור תצורת רשת RS485 & RS422, שכבה פיזית של  RS232 לא תומכת ברשת multidrop.

צומת מזהה/ Node ID

ניתן לחבר התקן Modbus ברשת Multidrop (סדרות). לכל התקן Modbus יש להקצות מזהה לצורך זיהוי אפילו אם יש רק מכשיר אחד שמחובר. בדרך כלל זוהי ברירת מחדל 1.

DATA Address

לכל נתון ונתון חייבת להיות כתובת משלו. הכתובת יכולה להיקרא אוגר (Register) או כתובת (Address). אינדקס כתובות הנתונים יכול להיות שונה מספק אחד למשנהו, כלומר, כתובת 1000 אצל ספק אחד עשויה להיות 1001 או 999 אצל ספק אחר. ערך הסטה של +1 או -1. ביישום PLC, הקידומות מתווספות בדרך כלל לבידול סוג נתונים. 4x עבורOutput Register,  ו- 3x עבור Input Register , ו 0x עבור Output Coil ו 1x עבור Input Coil. למשל מכשיר עם כתובת של 6 ספרות, 400100 – ב  SCADAיש צורך להזין כ-100 עם סוג הנתונים הנדרשים (int, float וכו’) אותו הדבר עם כתובת של 5 ספרות, 10012 ב- SCADA יש צורך להזין 12 ספרות  עם סוג הנתונים הנדרשים (בוליאני + קלט).

Address Arrangement

בהתקני Modbus סידור הכתובת הוא גמיש.  כתובת ההתחלה עבור כל סוג נתונים אינה קבועה, למשל הכתובת יכולה לייצג את הערכים הבאים 1, 1000, 4000 או כל ערך אחר ואין דפוס קבוע לסידור הכתובת (Address Arrangement). אין בהכרח להכניס את הכתובות לאותו הטווח, הכתובות יכולות להיות  בטווח של 1000 ~ 2000 4000 ~ 10000. סדר הכתובת הוא תלוי לחלוטין ביצרן המכשיר ויש לעיין בתיעוד.