Qt Modbus עם חיבור TCP/IP

בבלוג זה, ברצוני לספק יישום Qt Quick קטן (qml) כדוגמה לחיבור Modbus באמצעות TCP/IP.
בדוגמאות Qt, מצאתי רק דוגמאות QWidget עבור חיבורי Modbus, ולאחר שיצרתי לאחרונה יישום Qt מהיר עבור זה, אני רוצה לספק גרסה רזה של זה כדוגמה.

המעבדה

כדי שתוכל לבדוק את היישום, אתה צריך שרת Modbus או תוכנית "מדמה" שרת כזה. השתמשתי "Modbus Server Pro" מ http://www.apphugs.com/modbus-server.html עבור זה. זה מאפשר לך לרוץ דרך כל התרחישים שאתה צריך.

יישום Qt

קודם כל: מכיוון שזה יהיה מרחיק לכת מדי לפרסם את כל הקוד כאן, אני אספק את הקוד כולו כקובץ ZIP (ראה להלן).

הגדרות

ראשית, יצרתי מחלקת SettingsDialog פשוטה המכילה את אפשרויות החיבור. בדוגמה פשוטה, זה רק "modbusServerUrl", "responseTime" ו "numberOfRetries".

    struct Settings {
        QString modbusServerUrl = "192.168.2.86:1502";
        int responseTime = 1000;
        int numberOfRetries = 3;
    };

הכינויים הם - אני חושב - מובנים מאליהם.

  • modbusServerUrl = מספר TCP/IP בתוספת יציאת שרת Modbus, למשל 192.168.2.86:502
  • responseTime = הזמן המרבי ב- ms שבו ממתינים לתגובה מהשרת
  • numberOfRetries = מספר הניסיונות הכושלים שיתקבלו.

יישום

onConnectButtonClicked()

הפונקציה onConnectButtonClicked() קוראת את נתוני החיבור מקובץ ההגדרות ויוצרת את החיבור לשרת Modbus.

onReadButtonClicked()

עם onReadButtonClicked() בקשות קריאה שונות מופעלות לאחר מכן והאוגרים המתאימים נקראים משרת Modbus. הערכים המוחזרים מועברים ל- qml Q_PROPERTY באמצעות אותות פולטים ומתעדכנים בממשק המשתמש.

הפונקציה Write

הפונקציה onWriteButtonClicked(int writeregister) משמשת לכתיבה לאוגרי שרת Modbus. כאן הוא חזה, כי אוגרים שונים ניתן לכתוב על שרת Modbus באמצעות המשתנה "writeregister".

אתה יכול להוריד את היישום כאן ix-modbus-tcp-example.zip.