דלג לתוכן הראשי

ממשק Modbus

מערכת ההפעלה של Limelight כוללת שרת Modbus TCP הפועל בכתובת (ipaddress):502

  • מספרים שלמים: המספרים השלמים הם עם סימן (SIGNED) ומקודדים באמצעות משלים לשתיים. שיטה זו מוכרת באופן אוניברסלי ומבטיחה פרשנות נכונה של הסימן.

  • מספרים בנקודה צפה: מספרים בנקודה צפה מקודדים באמצעות תקן IEEE 754. כדי לעמוד במגבלת הרגיסטר של 16 סיביות של פרוטוקול Modbus, מספרים בנקודה צפה מחולקים לשני חלקים:

    • 16 הסיביות העליונות מאוחסנות ברגיסטר השני, ו-16 הסיביות התחתונות ברגיסטר הראשון.
    • פורמט little-endian מבטיח תאימות עם מפרט Modbus.

ניתן לבדוק את Limelight בחיבור USB ו-Ethernet באמצעות ModbusTool

Modbus מאפשר תמיכה במקרי שימוש של בדיקת חלקים ואוטומציה תעשייתית. כדי להתחיל עם Modbus, עליך לבצע את הפעולות הבאות:

  1. התחבר ל-Limelight שלך דרך Ethernet או USB-C והגדר צינור עיבוד (pipeline).

    • בעוד שכל צינורות העיבוד יפיקו תוצאות דרך modbus, צינורות העיבוד של python snapscript שלנו הם ורסטיליים במיוחד למקרי שימוש תעשייתיים מכיוון שהם תומכים בקלט ופלט נתונים מותאמים אישית.
  2. תן ל-Limelight שלך כתובת IP סטטית

  3. חבר את ה-Limelight שלך לרשת modbus.

מפרט רגיסטרים Modbus

רגיסטרי קלט / קריאה בלבד

רגיסטרמפתחסוגתיאור
0hbintערך דופק. עולה פעם אחת בכל פריים
1pipelineIndexintאינדקס צינור העיבוד הפעיל הנוכחי (0 .. 9).
2validTargetint1 אם קיימת מטרה תקפה, 0 אחרת.
3resultsCountintסך כל ספירת התוצאות. כולל את כל זיהויי הסימנים, זיהויי הרשת העצבית וכו'
4IDintמזהה / מספר קבוצה
5modbusModeintמצב פלט שרת Modbus.
6cpuTempintטמפרטורת המעבד במעלות צלזיוס.
7cpuUsageintאחוז ניצול המעבד.
8ramUsageintאחוז ניצול הזיכרון.
9currentFPSintמספר הפריימים לשנייה הנוכחי.
10captureLatencyintהשהיית לכידה. (מילישניות)
11targetLatencyintהשהיית עיבוד. (מילישניות)
12-15שמורint

אם מצב הפלט מוגדר ל-0:

רגיסטרמפתחסוגתיאור
16,17txfloat32היסט זוויתי אופקי למטרה במעלות
18,19tyfloat32היסט זוויתי אנכי למטרה במעלות
20,21txncfloat32היסט זוויתי אופקי למטרה (ביחס לפיקסל העיקרי) במעלות
22,23tyncfloat32היסט זוויתי אנכי למטרה (ביחס לפיקסל העיקרי) במעלות
24,25tafloat32 (0-1)שטח המטרה כאחוז מגודל התמונה
26fiducialIDintמזהה AprilTag נוכחי
27classifierClassintאינדקס המחלקה של פלט צינור הסיווג הנוכחי. -1 אם אין תוצאות סיווג
28detectorClassintאינדקס המחלקה של פלט צינור הגילוי הנוכחי. -1 אם אין תוצאות גילוי
29שמורint
30,31python[0]float32מערך פלט python מותאם אישית [0]
32,33python[1]float32מערך פלט python מותאם אישית [1]
34,35python[2]float32מערך פלט python מותאם אישית [2]
36,37python[3]float32מערך פלט python מותאם אישית [3]
38,39python[4]float32מערך פלט python מותאם אישית [4]
40,41python[5]float32מערך פלט python מותאם אישית [5]
42,43python[6]float32מערך פלט python מותאם אישית [6]
44,45python[7]float32מערך פלט python מותאם אישית [7]

רגיסטרי החזקה / כתיבה בלבד

רגיסטרמפתחסוגתיאור
0unlockedintמשחרר את צינור העיבוד. הגדר ל-1 כדי לאפשר החלפת צינור עיבוד ונתוני קלט מותאמים אישית
1pipeIndexintקובע את אינדקס צינור העיבוד אם "unlocked" מוגדר ל-1
2outputModeintקובע את מצב הפלט. 0 - סטנדרטי, 1 - מטרות גולמיות (בפיתוח)
3שמורint
4שמורint
5שמורint
6שמורint
7שמורint
8pythonInput[0]intמערך קלט python מותאם אישית [0]
9pythonInput[1]intמערך קלט python מותאם אישית [1]
10pythonInput[2]intמערך קלט python מותאם אישית [2]
11pythonInput[3]intמערך קלט python מותאם אישית [3]
12pythonInput[4]intמערך קלט python מותאם אישית [4]
13pythonInput[5]intמערך קלט python מותאם אישית [5]
14pythonInput[6]intמערך קלט python מותאם אישית [6]
15pythonInput[7]intמערך קלט python מותאם אישית [7]
16,17pythonInput[8]float32מערך קלט python מותאם אישית [8]
18,19pythonInput[9]float32מערך קלט python מותאם אישית [9]
20,21pythonInput[10]float32מערך קלט python מותאם אישית [10]
22,23pythonInput[11]float32מערך קלט python מותאם אישית [11]
24,25pythonInput[12]float32מערך קלט python מותאם אישית [12]
26,27pythonInput[13]float32מערך קלט python מותאם אישית [13]
28,29pythonInput[14]float32מערך קלט python מותאם אישית [14]
30,31pythonInput[15]float32מערך קלט python מותאם אישית [15]