Qt Modbus with TCP/IP 接続

このブログでは、TCP/IPを介したModbus接続の例として、小さなQtクイックアプリケーション(qml)を提供したいと思います。 Qtの例では、Modbus接続のQWidgetの例しか見つかりませんでしたが、最近Qt Quickアプリケーションを作成した後、例としてスリム化されたバージョンを提供したいと思います。

ラボ

アプリケーションをテストできるようにするには、Modbusサーバーまたはそのようなサーバーを「シミュレート」するプログラムが必要です。私はこのために http://www.apphugs.com/modbus-server.html の「Modbus Server Pro」を使用し ました 。これにより、必要なすべてのシナリオを実行できます。

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 = サーバーからの応答が待機する最大時間 (ミリ秒単位)
  • 再試行回数 = 受け入れられる失敗した試行の数。

アプリケーション

onConnectButtonClicked()

onConnectButtonClicked() 関数は、設定ファイルから接続データを読み込み、Modbus サーバーへの接続を確立します。

onReadButtonClicked()

onReadButtonClicked()を使用すると、さまざまな読み取りリクエストが開始され、対応するレジスタがModbusサーバーから読み取られます。返された値は、Q_PROPERTY出力シグナルを介してqmlに渡され、ユーザーインターフェイスで更新されます。

書き込み機能

関数 onWriteButtonClicked(int writeregister) は、Modbus サーバレジスタへの書き込みに使用されます。ここでは、変数 "writeregister"を介してModbusサーバーに異なるレジスタを書き込むことができることが想定されています。

あなたはここでアプリケーションをダウンロードすることができます ix-modbus-tcp-example.zip.