库介绍
EasyModbus是用于 .NET 和 Java 平台上的Modbus TCP/UDP/RTU通讯协议库,支持多种编程语言,如C#、VB.NET、Java、C ++与更多C#的变体,如Unity、Mono、.NET Core等等。
EasyModbus的Java版本至少需要Java 7,而C#版本兼容 .NET Framework 4.0和更高版本。
库的优势
1、EasyModbus 通过简单易用的 API 提供 Modbus 套接字功能并可轻松地扩展自己的库。
2、EasyModbus 有多种语言版本,并可与多种平台配合使用,最适合需要跨平台功能的项目。
3、EasyModbus 的速度和效率也值得称赞。 库支持 Modbus 操作代码 1,2,3,4,5,6,15,16,22和23,包括读写线圈(位)/输入状态、读写保持/输入寄存器、读写多个位/多个保持寄存器等。
应用场景
EasyModbus 库适用于许多 Modbus 协议 TCP/UDP/RTU 的控制任务。 它可以在监控和控制网络设备诸如传感器、测量仪表和定时器方面大有作为。 这使得它成为许多工业和自动化项目中不可或缺的一部分。
EasyModbus库使用方法
EasyModbus库提供了一些常用的方法,以实现Modbus TCP和RTU通信。下面介绍一些常用的方法及其用法。
1. ModbusClient类
ModbusClient类用于创建Modbus客户端对象,以实现Modbus通信。使用该类需要先引用EasyModbus.dll程序集。
// 创建Modbus TCP客户端对象 网口
ModbusClient modbusClient = new ModbusClient("192.168.1.1", 502);
// 创建Modbus RTU客户端对象 串口
ModbusClient modbusClient = new ModbusClient("COM1");
// 网口 串口区别 读取或设置值
使用串口时 读取或设置值 第一次获取不到返回值 会连续发送4次,如果还是获取不到就报错失败
使用网口时,读取或设置值只会发送一次,获取不到就报错
2. Connect方法
Connect方法用于连接Modbus设备。该方法需要在创建Modbus客户端对象后调用。
// 连接Modbus设备
modbusClient.Connect();
3. Disconnect方法
Disconnect方法用于断开Modbus设备连接。
// 断开Modbus设备连接
modbusClient.Disconnect();
4. ReadCoils方法 01功能码
ReadCoils方法用于读取线圈状态,即输出线圈的状态。该方法需要传入起始地址和长度参数。
// 读取线圈状态
bool[] coils = modbusClient.ReadCoils(0, 8);
5. ReadDiscreteInputs方法 02功能码
ReadDiscreteInputs方法用于读取离散输入状态,即输入线圈的状态。该方法需要传入起始地址和长度参数。
// 读取离散输入状态
bool[] inputs = modbusClient.ReadDiscreteInputs(0, 8);
6. ReadHoldingRegisters方法 03功能码
ReadHoldingRegisters方法用于读取保持寄存器的内容。该方法需要传入起始地址和长度参数。
// 读取保持寄存器的内容
int[] registers = modbusClient.ReadHoldingRegisters(0, 8);
7. ReadInputRegisters方法 04功能码
ReadInputRegisters方法用于读取输入寄存器的内容。该方法需要传入起始地址和长度参数。
// 读取输入寄存器的内容
int[] inputs = modbusClient.ReadInputRegisters(0, 8);
8. WriteSingleCoil方法 05功能码
WriteSingleCoil方法用于写入单个线圈的状态。该方法需要传入线圈地址和状态参数。
// 写入单个线圈的状态
modbusClient.WriteSingleCoil(0, true);
9. WriteSingleRegister方法 06功能码
WriteSingleRegister方法用于写入单个寄存器的值。该方法需要传入寄存器地址和值参数。
// 写入单个寄存器的值
modbusClient.WriteSingleRegister(0, 123);
10. WriteMultipleRegisters方法 16功能码
WriteSingleRegister方法用于写入多个寄存器的值。该方法需要传入寄存器地址和值参数。
modbusClient.WriteMultipleRegisters(0, new int[2] { 3,8 });
总结
EasyModbus提供了丰富的方法,以简化Modbus TCP和RTU通信的开发。开发人员可以根据需要选择相应的方法,并按照上述使用方法进行调用。