TCP/IP bağlantılı Qt Modbus

Bu blogda, TCP / IP üzerinden Modbus bağlantısına örnek olarak küçük bir Qt Hızlı uygulaması (qml) sunmak istiyorum.
Qt örneklerinde, sadece Modbus bağlantıları için QWidget örnekleri buldum ve yakın zamanda bunun için bir Qt Quick uygulaması oluşturduktan sonra, örnek olarak bunun inceltilmiş bir versiyonunu sunmak istiyorum.

Lab

Uygulamayı test edebilmek için, bir Modbus sunucusuna veya böyle bir sunucuyu "simüle eden" bir programa ihtiyacınız vardır. Bunun için http://www.apphugs.com/modbus-server.html'dan "Modbus Server Pro" yu kullandım. Bu, ihtiyacınız olan tüm senaryoları gözden geçirmenizi sağlar.

Qt uygulaması

Her şeyden önce: Tüm kodu buraya göndermek çok ileri gideceğinden, tüm kodu bir ZIP dosyası olarak sağlayacağım (aşağıya bakın).

Ayarlar

İlk olarak, bağlantı seçeneklerini içeren basit bir SettingsDialog sınıfı oluşturdum. Basitleştirilmiş örnekte, bu sadece "modbusServerUrl", "responseTime" ve "numberOfRetries" dir.

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

Tanımlamalar - bence - kendi kendini açıklayıcıdır.

  • modbusServerUrl = TCP/IP numarası artı Modbus sunucu bağlantı noktası, örneğin 192.168.2.86:502
  • responseTime = ms cinsinden sunucudan gelen bir yanıtın beklendiği maksimum süre
  • numberOfRetries = kabul edilecek başarısız denemelerin sayısı.

Uygulama

onConnectButtonClicked()

onConnectButtonClicked() işlevi, ayarlar dosyasından bağlantı verilerini okur ve Modbus sunucusuna bağlantı kurar.

onReadButtonClicked()

Daha sonra onReadButtonClicked() ile çeşitli readRequests başlatılır ve ilgili kayıtlar Modbus sunucusundan okunur. Döndürülen değerler, yayma sinyalleri aracılığıyla Q_PROPERTY olarak qml'ye iletilir ve kullanıcı arayüzünde güncellenir.

Yazma işlevi

onWriteButtonClicked(int writeregister) işlevi, Modbus sunucu kayıtlarına yazmak için kullanılır. Burada Modbus sunucusuna "writeregister" değişkeni üzerinden farklı yazmaçların yazılabilmesi öngörülmektedir.

Uygulamayı buradan indirebilirsiniz ix-modbus-tcp-example.zip.