Qt Modbus dengan sambungan TCP/IP

Dalam blog ini, saya ingin menyediakan aplikasi Pantas Qt kecil (qml) sebagai contoh sambungan Modbus melalui TCP / IP.
Dalam contoh Qt, saya hanya menemui contoh QWidget untuk sambungan Modbus, dan selepas baru-baru ini membuat aplikasi Qt Quick untuk ini, saya ingin memberikan versi pelangsingan bawahnya sebagai contoh.

Makmal

Untuk dapat menguji aplikasi, anda memerlukan pelayan Modbus atau program yang "mensimulasikan" pelayan sedemikian. Saya menggunakan "Modbus Server Pro" dari http://www.apphugs.com/modbus-server.html untuk ini. Ini membolehkan anda menjalankan semua senario yang anda perlukan.

Permohonan Qt

Pertama sekali: Oleh kerana terlalu jauh untuk menyiarkan semua kod di sini, saya akan memberikan keseluruhan kod sebagai fail ZIP (lihat di bawah).

Tetapan

Mula-mula, saya mencipta kelas SettingsDialog ringkas yang mengandungi opsyen sambungan. Dalam contoh yang dipermudahkan, ini hanyalah "modbusServerUrl", "responseTime" dan "numberOfRetries".

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

Penamaan itu - saya fikir - penjelasan diri.

  • modbusServerUrl = nombor TCP/IP ditambah port pelayan Modbus, contohnya 192.168.2.86:502
  • responseTime = masa maksimum dalam ms di mana respons daripada pelayan sedang menunggu
  • numberOfRetries = bilangan percubaan gagal yang akan diterima.

Permohonan

onConnectButtonClicked()

Fungsi onConnectButtonClicked() membaca data sambungan dari fail tetapan dan menetapkan sambungan ke pelayan Modbus.

onReadButtonClicked()

Dengan onReadButtonClicked() pelbagai readRequests kemudiannya dimulakan dan daftar yang sepadan dibaca dari pelayan Modbus. Nilai yang dikembalikan diserahkan kepada qml sebagai Q_PROPERTY melalui isyarat pemancar dan dikemas kini dalam antara muka pengguna.

Fungsi tulis

Fungsi onWriteButtonClicked(int writeregister) digunakan untuk menulis kepada daftar pelayan Modbus. Di sini dijangkakan bahawa daftar yang berbeza boleh ditulis pada pelayan Modbus melalui pembolehubah "writeregister".

Anda boleh memuat turun aplikasi di sini ix-modbus-tcp-example.zip.