# Modbus-Library **Repository Path**: inkgn/modbus-library ## Basic Information - **Project Name**: Modbus-Library - **Description**: modbus通信库编写实践 RTU/TCP - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-24 - **Last Updated**: 2026-02-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Modbus-Library #### 介绍 modbus通信库编写实践 RTU/TCP #### 软件架构 # 📦 modbus-library 仓库核心解析 ## ✅ 结论 这是一个 **C# 实现的 Modbus 通信库**,同时支持 **RTU(串口)** 和 **TCP(网口)** 两种通信模式,采用面向对象架构设计,提供了统一的读写接口。 --- ## 🏗️ 架构概览 ``` ┌─────────────────────────────────────────────────────┐ │ modbus-library │ ├─────────────────────┬────────────────────────────────┤ │ modbusRTU (核心库) │ modbus_demo (示例应用) │ ├─────────────────────┴────────────────────────────────┤ ``` ### 核心模块(modbusRTU 项目) | 层级 | 文件 | 职责 | |------|------|------| | **入口类** | `ModbusRTU.cs` | RTU 串口通信实现,继承 `SerialDeviceBase` | | **入口类** | `ModbusTCP.cs` | TCP 网口通信实现,继承 `PortDeviceBase` | | **基类** | `ReadWriteBase.cs` | 读写操作基类,实现 `IReadWrite` 接口 | | **基类** | `SerialDeviceBase.cs` | 串口设备基类 | | **基类** | `PortDeviceBase.cs` | 网口设备基类 | | **辅助** | `ModbusHelper.cs` | Modbus 地址解析(如 "0"、"1"、"3"、"4" 区) | | **辅助** | `ParityHelper.cs` | CRC16 校验计算 | | **存储区** | `ModbusStoreArea.cs` | 定义 X0/X1/X3/X4 四类 Modbus 存储区 | | **枚举** | `Enum.cs` | 功能码、数据格式等枚举定义 | | **锁** | `SimpleHybirdLock.cs` | 线程安全锁 | | **消息** | `ModbusRTUMessage.cs` | RTU 消息封装 | | **接口** | `IReadWrite.cs` | 读写接口抽象 | | **接口** | `Imessage.cs` | 消息接口 | --- ## 🔑 核心功能 ### 1. 支持的 Modbus 存储区 | 区域 | 名称 | 读功能码 | 写功能码 | |------|------|----------|----------| | X0 | 输出线圈 | 0x01 | 0x0F | | X1 | 输入线圈 | 0x02 | ❌ | | X3 | 输入寄存器 | 0x04 | ❌ | | X4 | 保持寄存器 | 0x03 | 0x10 | ### 2. 支持的通信模式 - **Modbus RTU** → 串口通信(RS485/RS232) -csharp // 读取 bool[] ReadBoolArray(string ``` address, ushort length) // 读线圈/离散输入 byte[] ReadByteArray(string address, ushort length) // 读寄存器 // 写入 OperateResult WriteBoolArray(string address, bool[] value) // 写多线圈 OperateResult WriteByteArray(string address, byte[] value) // 写多寄存器 ``` --- ## 🛠️ 技术栈 - **.NET 8.0**(C#) - **依赖库**:`thinger.DataConvertLib`(数据转换)、`System.IO.Ports`(串口) --- ## 📝 建议 1. **完善异常处理**:TCP 连接失败场景可增加重试机制 2. **扩展性**:可考虑增加 ASCII 模式支持 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)