現代の産業通信では、Modbusプロトコルはそのシンプルさと幅広いサポートから、さまざまなオートメーションシステムで広く使用されています。このプロトコルは、シリアルライン()やTCP/IPなど、の通信の形態をサポートします。以下の記事では、libmodbusライブラリを使用したModbusプロトコルのテストプログラムについて詳しく説明します。さまざまなModbus関数を実装してライブラリの機能を検証します。
完全なコード(中国語):
手順の概要
このテストプログラムの目的は、libmodbusライブラリがサポートするすべての主要機能(単一コイルへの書き込み、コイル状態の読み取り、複数コイルへの書き込み、単一レジスタへの書き込み、レジスタへの読み取り、複数レジスタへの書き込み、および複数レジスタへの読み書きなど)を検証することです。プログラムはTCPとRTUの2つのモードで実行され、コマンドライン引数で選択されます。
環境設定と初期条件
プログラムはまず、入力パラメータ(TCPまたはRTU)に従ってModbusコンテキスト(ctx)。TCPモードの場合、ローカルホストのポート1502に接続します。RTUモードでは、特定のシリアルポートを経由するように設定されます。/dev/ttyUSB0通信は19200ボーレートで行われる。
データ構造と初期化
テストを実行するために、プログラムはまず、テストで使用されるビットとレジスタ値を格納するいくつかの配列を割り当てて初期化します。
tab_rq_bitsそして、tab_rp_bits要求と応答を格納するためのコイル(ビット)状態。tab_rq_registers、tab_rp_registersそして、tab_rw_rq_registers要求と応答を格納するレジスタ値。
テストサイクル
プログラムは定義されたアドレス範囲内でループテストを行い、ループアドレスを1つずつ追加します。ADDRESS_START到着する。ADDRESS_ENDその範囲です。各アドレスで、プログラムは次のことを行います。
- シングルコイルを書く。:個々のコイルに正常に書き込みおよび読み取り戻すことを確認します。
- 複数のコイルを書く。:複数のコイルに正常に読み書きできることを確認します。
- 単一レジスタの書き込み:単一レジスタへの書き込みと読み取りが正常に行われることを確認します。
- 複数のレジスタを書く。:複数のレジスタに正常に読み書きできることを確認します。
- 複数のレジスタを同時に読み書き:1回の操作で複数のレジスタの読み書きに成功することを確認します。
例外処理
各Modbus 操作の後、プログラムは返された結果をチェックして操作が成功したかどうかを確認します。操作に失敗すると、プログラムはエラーメッセージを出力し、失敗カウンタをインクリメントします。テストはすべてのテストが完了するまで続けられます。
結果の出力
テストが終了すると、プログラムは成功または失敗した操作の総数を示すテスト結果を出力します。これは、要求データと応答データを比較することによって決定され、データの完全性と正確性を確保します。
清掃と閉鎖
テストが完了すると、プログラムは割り当てられたすべてのリソースを解放し、Modbus接続を閉じて終了します。
このようなテストプログラムにより、開発者はModbusライブラリの性能と信頼性をさまざまな設定で検証し、実際のアプリケーションで安定した動作を保証することができます。これは、開発者がModbusプロトコルの実装を深く理解するのに役立つだけでなく、潜在的な問題を特定する強力なツールを提供します。
发表回复