libmodbusの関数を用いた、基本的な事項について記述します。
プロジェクトの作成方法は各言語毎に異なりますので、プロジェクトの作成セクションを参照ください。
処理の流れ
libmodbusの関数を利用してModbusマスタ通信プログラムを作成する場合、以下のような処理が必要です。
具体的な関数の利用方法等は、各サンプル及び関数リファレンスを参照ください。
通信設定
TCP時:IPアドレス、ポート番号の指定
RTU時:COMポート指定、ボーレート、パリティ、スレーブID等の指定
それぞれ、modbus_new_tcp
関数、modbus_new_rtu関数をご利用ください。
上記関数では、modbus通信用の構造体を確保しますので、通信終了時には必ずメモリ開放処理を実行ください。
通信開始
接続処理(modbus_connect関数の利用)
データ送受信
各種functionコードの実行
データに応じて、変換処理を実行
通信終了
切断処理(modbus_close関数の利用)
メモリ開放処理(modbus_free関数の利用)
エラー内容の取得
libmodbusの関数では、戻り値にて関数の成否を判断し、詳細はerrnoにて表現しています。
errnoは各関数で共通となっていますので、エラー詳細を取得するときには、関数実行直後に取得ください。
※他関数が実行されると、errnoが上書きされる場合があります。
errno取得及び、エラー内容取得の具体的な方法は、各サンプルを参照ください。
エラー取得時の注意事項
libmodbusの仕様上、関数実行に失敗した際にerrnoを更新しない関数も存在します。
上記関数の実行に失敗した際、戻り値は失敗ですが、errnoは更新されず、
「No Error」と表示される場合や、前回のエラー詳細が表示される場合がございますが、ご了承ください。
また、関数成功時においてもerrnoは更新されません。