C#に基づくMODBUS RTU通信プロトコルパッケージ

有料 ¥6.99有料 ¥6.99

该内容已接入现有会員/有料系统,解锁后可完全な情報を見る或添付ファイルのダウンロード。

表示解锁方式
C#に基づくMODBUS RTU通信プロトコルパッケージ

受信パラメータに基づいてMODBUS RTUインスタンスを作成します。

//summary>
///MODBUS RTUサービスの確立
/// String comnum =     シリアルポート番号
/// int buad      =      シリアルポートのボーレート
/// int dataLen   =      データ長さ
/// String chklen    =      テストビット。
/// String stoplen   =      ストップ·ビット
////summary>
public Modbus_Lib String comint buad int dataLen string chkstring stopint scantime

 

MODBUS RTUスキャンスレーブを追加する:

//summary>
//すべてのスレーブリストを削除する
////summary>
public void clearAllModbusSalve

//summary>
//スキャンリストから指定したスレーブを削除する
////summary>
///param name="whichAddr"/param>
public void deletAllModbusSalve int whichAddr

作成されたMODBUS RTUマルチスレーブスキャンのリストをクリアします。

 

//summary>
//MODBUSスレーブスキャンリストを追加
////summary>
///param name="xDeviceMdEnty"/param>
public void addModbusSlaveScanList DeviceMdEnty xDeviceMdEnty

MODBUS RTU通信ポートを開く

//summary>
///シリアルポートを開く
////summary>
///returns/returns>
public openUart

シリアルポートを閉じる

//summary>
///シリアルポートを閉じる
////summary>
///returns/returns>
public eUart

MODBUS RTUのタイミングスキャンサービスを開始

//summary>
///Modbusスキャンサービス開始
////summary>
public ModbusWork

 

MODBUS RTUコマンドの送信

データの送信
*
int slaveAddr =スレーブアドレス
int addrTe =読み書きの開始アドレス
int cmdTe =機能コード
int lenTe =読み取りデータ長
byte[] msgBuf =書き込みされるデータのバッファ期間、各ワードは2 BYTE
int msgLen =書き込まれるデータの長さ
return
*   true =データ送信済み、false =送信なし
*
*********************************************************************/
//summary>
///
////summary>
public Boolean sendModbusMsg int slaveAddr int cmdTe int addrTe int lenTe byte[]
msgBuf int msgLen

MODBUS RTUインスタンスのコールバックメソッドで、すべてのシリアルポートで受信したデータを返します。

Result = "E00";"シリアルポートの作成に失敗しました"
Result = "E01";"シリアル番号が設定されていません"
Result = "E02";"ストップビットパラメータエラー"を示す
Result = "E03";“チェックビットパラメータエラー”を示す
Result = "F00";“チェックビットパラメータエラー”を示す
Result = "Y00";"シリアルポートの作成に成功しました"
Result = "M00";"シリアルデータを受信しました"

イベントについての委任を宣言し、パラメータは返送するデータ型、シリアルポート受信データ

public delegate void ModbusRTU_EventHandler(string result, byte[] msg) ;

 

MODBUS RTUインスタンスのコールバックメソッドで、すべてのシリアルポートで受信し、アドレスとチェックコードで検証されたデータを返します。

Result = "AE0";"シリアルポートの作成に失敗しました"
Result = "CE0";"シリアル番号が設定されていません"
Result = "DE0";"停止ビット引数エラー"
Result = "D00";"正しく解析されたシリアルデータを受信しました"
Result =“D01”;関数コード0 x 01--データに正しく応答します! :"
Result =“D02”;関数コード0x02--データに正しく応答します! "
Result =“D03”;関数コード0x03--データに正しく応答します! "
Result =“D04”;関数コード0 x 04--データに正しく応答します! "
Result =“D05”;関数コード0 x 05--データに正しく応答します! "
Result =“D06”;関数コード0 x 06--データに正しく応答します! "
Result = "D 0F";"関数コード0x0F--データに正しく応答! "
Result =“D 10”;関数コード0 x 10--データに正しく応答します。"

 

イベントに関する委任を宣言し、パラメータを送り返すデータ型とし、シリアルポートでデータを受信し、MODBUS検証を行う

public delegate void ModbusRTU_DecodeHandler(string result, byte[] msg) ;

 

1 MODBUS RTUスレーブ局のリストを作成する。

DLLはデバイスの数に応じて自動的にスキャンします。機能がない場合は、長さを0に指定できます。16から16のデジタルモジュールなど、入力レジスタを指定し、レジスタ長を0に保つことができます。

//summary>
//スキャンリストを作成する
////summary>
//param name="SlAddr"のスレーブ局の局番号を/param>
///param name= CoilLen"現在のスレーブの出力コイル数/paramを設定>        ///param name="DiscLen"現在のスレーブの入力数値の数/paramを設定>      //param name="InputRegLen"現在のスレーブの入力レジスタ数を設定/param///param name="HoldingRegLen"現在のスレーブの保持レジスタ数を設定/param>
public DeviceMdEnty int SlaveAddr int CoilLen int DiscLen int InputRegLen int
HoldingRegLen

 

 

 

 

この資料を実際のプロジェクトに活用しませんか?

ツールセンターで電文解析、CRCチェック、デバイスデバッグを行うか、要件を送信して選定と接続のアドバイスを受けましょう。

エンジニア会員

この記事を実行可能なデバッグ資料に

登録すると、高度な電文解析、資料パックのダウンロード、コード例、エンジニアリングケース、優先技術サポートが利用可能に。実際のプロジェクト納品に最適です。

高度なツール無制限
資料パックとコードパック
完全なエンジニアリングケースライブラリ
優先技術サポート窓口

发表回复

あなたのメールアドレスアドレス不会被公开。 必須項目已用 * 标注