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

Paid ¥6.99Paid ¥6.99

该内容已接入现有会员/付费系统,解锁后可查看完整资料或下载附件。

查看解锁方式
C#に基づくMODBUS RTUCommunicationプロトコルパッケージ

受信パラメータに基づいて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 RTUCommunicationポートを開く

//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";"Stopビット引数エラー"
Result = "D00";"正しくParseされたシリアルデータを受信しました"
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

 

 

 

 

Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.