Qt Modbus dengan koneksi TCP/IP

Di blog ini, saya ingin menyediakan aplikasi Qt Quick kecil (qml) sebagai contoh koneksi Modbus melalui TCP / IP.
Dalam contoh Qt, saya hanya menemukan contoh QWidget untuk koneksi Modbus, dan setelah baru-baru ini membuat aplikasi Qt Quick untuk ini, saya ingin memberikan versi slimmed-down sebagai contoh.

Lab

Agar dapat menguji aplikasi, Anda memerlukan server Modbus atau program yang "mensimulasikan" server semacam itu. Saya menggunakan "Modbus Server Pro" dari http://www.apphugs.com/modbus-server.html untuk ini. Ini memungkinkan Anda untuk menjalankan semua skenario yang Anda butuhkan.

Aplikasi Qt

Pertama-tama: Karena akan terlalu jauh untuk memposting semua kode di sini, saya akan memberikan seluruh kode sebagai file ZIP (lihat di bawah).

Pengaturan

Pertama, saya membuat kelas SettingsDialog sederhana yang berisi opsi koneksi. Dalam contoh yang disederhanakan, ini hanya "modbusServerUrl", "responseTime" dan "numberOfRetries".

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

Penunjukannya - saya pikir - cukup jelas.

  • modbusServerUrl = nomor TCP/IP ditambah port server Modbus, misalnya 192.168.2.86:502
  • responseTime = waktu maksimum dalam ms di mana respons dari server ditunggu
  • numberOfRetries = jumlah upaya gagal yang akan diterima.

Aplikasi

onConnectButtonClicked()

Fungsi onConnectButtonClicked() membaca data koneksi dari file pengaturan dan membuat koneksi ke server Modbus.

onReadButtonClicked()

Dengan onReadButtonClicked() berbagai readRequests kemudian dimulai dan register yang sesuai dibaca dari server Modbus. Nilai yang dikembalikan diteruskan ke qml sebagai Q_PROPERTY melalui sinyal pemancar dan diperbarui di antarmuka pengguna.

Fungsi tulis

Fungsi onWriteButtonClicked(int writeregister) digunakan untuk menulis ke register server Modbus. Di sini dipertimbangkan bahwa register yang berbeda dapat ditulis di server Modbus melalui variabel "writeregister".

Anda dapat mengunduh aplikasinya di sini ix-modbus-tcp-example.zip.