基于C#开发的MODBUS RTUCommunicationProtocol封装包

付费 ¥6.99付费 ¥6.99

该内容已接入现有member/付费system,解锁后可View完整Resources或Download附件。

View解锁方式
基于C#开发的MODBUS RTUCommunicationProtocol封装包缩略图
🌐 This page is not yet available in English. Showing the Chinese version. Back to Chinese page.

根据传入的参数,创建 MODBUS RTU 实例:

/// <summary>
/// 建立 MODBUS RTU 串口业务
/// String comnum  =     串口号
/// int buad      =      串口的Baud rate
/// int dataLen   =      dataLength
/// String chklen    =      检验位
/// String stoplen   =      stop bit
/// </summary>
public ModbusRTU_Lib(String comnum,int buad,int dataLen,string chklen,string stoplen,int scantime)

 

添加一个 MODBUS RTU 扫描从站:

/// <summary>
/// Clear所有的从站列表
/// </summary>
public void clearAllModbusSalve()

/// <summary>
/// Delete扫描列表中的指定从站
/// </summary>
/// <param name="whichAddr"></param>
public void deletAllModbusSalve(int whichAddr)

Clear创建的 MODBUS RTU 多从站扫描列表:

 

/// <summary>
/// 增加 MODBUS 从站扫描列表
/// </summary>
/// <param name="xDeviceMdEnty"></param>
public void addModbusSlaveScanList(DeviceMdEnty xDeviceMdEnty)

打开一个 MODBUS RTU 的通讯串口

/// <summary>
/// Open the serial port
/// </summary>
/// <returns></returns>
public Boolean openUartOfModbus()

Close the serial port

/// <summary>
/// Close the serial port
/// </summary>
/// <returns></returns>
public Boolean closeUartOfModbus()

启动 MODBUS RTU 的定时扫描业务

/// <summary>
/// 启动 MODBUS 扫描业务
/// </summary>
public void startModbusWork()

 

send MODBUS RTU 指令

senddata
*
int slaveAddr = slave address
int addrTe = 读写的启始address
int cmdTe = function code
int lenTe =读出dataLength
byte[] msgBuf = 待写入的data的缓冲期,每个字占 2BYTE
int msgLen  = 写入的dataLength
return :
*   true = 已senddata,false = 未send
*
*********************************************************************/
/// <summary>
///
/// </summary>
public Boolean sendModbusMsg(int slaveAddr,int cmdTe, int addrTe, int lenTe, byte[]
msgBuf, int msgLen)

MODBUS RTU 的实例的回调方法,返回所有串口收到的data

Result =  "E00";表示"创建串口失败:"
Result =  "E01";表示"串口号未设置:"
Result =  "E02";表示"stop bit参数Error:"
Result =  "E03";表示"check digit参数Error:"
Result =  "F00";表示"check digit参数Error:"
Result =  "Y00";表示"创建串口成功:"
Result =  "M00";表示"receive到serial data :"

声明关于事件的委托,参数为要回传的data type,串口receivedata

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

 

MODBUS RTU 的实例的回调方法,返回所有串口收到的data且经过address和校验码验证的

Result =  "AE0";表示"创建串口失败:"
Result =  "CE0";表示"串口号未设置:"
Result =  "DE0";表示"stop bit参数Error:"
Result =  "D00";表示"receive到正确Parse的serial data :"
Result =  "D01";表示"function code 0x01--正确应答data! :"
Result =  "D02";表示"function code 0x02--正确应答data !"
Result =  "D03";表示"function code 0x03--正确应答data !"
Result =  "D04";表示"function code 0x04--正确应答data !"
Result =  "D05";表示"function code 0x05--正确应答data !"
Result =  "D06";表示"function code 0x06--正确应答data !"
Result =  "D0F";表示"function code 0x0F--正确应答data !"
Result =  "D10";表示"function code 0x10--正确应答data !"

 

声明关于事件的委托,参数为要回传的data type,串口receivedata并 MODBUS 验证

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

 

建立 1 个 MODBUS RTU 从站的列表;

DLL 会根据设备数自动扫描;对于没有的Function,指定Length为 0 即可;如 16 入 16 出数字量模块则可指 定输入register和保持registerLength为 0 

/// <summary>
/// 建立扫描列表
/// </summary>
/// <param name="SlaveAddr">设置当前从站的站号</param>
/// <param name="CoilLen">设置当前从站的输出线圈个数</param>        /// <param name="DiscLen">设置当前从站的输入数字量个数</param>      /// <param name="InputRegLen">设置当前从站的输入register个数</param>  /// <param name="HoldingRegLen">设置当前从站的保持register个数</param>
public DeviceMdEnty(int SlaveAddr,  int CoilLen,  int DiscLen,  int InputRegLen,  int
HoldingRegLen)

 

 

 

 

基于C#开发的MODBUS RTUCommunicationProtocol封装包¥6.99

基于C#开发的MODBUS RTUCommunicationProtocol封装包插图星耀member¥5.59
基于C#开发的MODBUS RTUCommunicationProtocol封装包插图1璀璨member¥4.19
曜钻memberfree
已付费?Loginrefresh
Technology术语(共 7 个)—— 点击展开
Modbus RTU基于串行链路的ModbusProtocol,使用binaryCoding和CRC check
function codeModbusfunction code指定读/写OperationType,如01读线圈、03读保持register
registerModbus register存储data单元,分线圈/离散输入/保持/输入register四类
Baud rate串行Communication每秒传输符号数,Modbus RTU常用9600/19200
串口计算机与外部设备进行串行Communication的物理Interface
线圈Modbus位可读写data,address从00001开始
保持registerModbus 16位可读写data,address从40001开始
来源/Tools信息 —— 点击展开
来源 Modbus Chinese Network(modbus.cn) —— China leadingModbuscommunication protocol technical community Category Modbus编程开发 字数 2773 字 · 阅读约 7 分钟 更新 2023-08-18 永久链接 https://www.modbus.cn/11809.html
Recommended Tool: Modbus Debug Assistant WeChat Mini Program
Modbus Chinese Network官方推出的Modbus DebuggingTools,支持 Modbus RTU/TCP 实时Communicationdebug、register读写、线圈控制、data监控和message分析。 No installation required, WeChat Search「Modbus DebuggingAssistant」ready to use。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
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 *.