c#modbus tcp案例
时间: 2023-07-30 14:04:03 浏览: 62
这是一个使用C#和NModbus库实现Modbus TCP通讯的简单案例:
```csharp
using System;
using System.Net.Sockets;
using NModbus;
class Program
{
static void Main(string[] args)
{
// 创建Modbus TCP连接
TcpClient tcpClient = new TcpClient("192.168.1.1", 502);
ModbusFactory modbusFactory = new ModbusFactory();
IModbusMaster modbusMaster = modbusFactory.CreateMaster(tcpClient);
try
{
// 读取保持寄存器的值
ushort[] values = modbusMaster.ReadHoldingRegisters(1, 0, 10);
Console.WriteLine("读取到的寄存器值:");
for (int i = 0; i < values.Length; i++)
{
Console.WriteLine($"寄存器{i}: {values[i]}");
}
// 写入单个寄存器的值
modbusMaster.WriteSingleRegister(1, 0, 123);
Console.WriteLine("写入寄存器成功!");
// 再次读取寄存器的值,确认写入成功
values = modbusMaster.ReadHoldingRegisters(1, 0, 10);
Console.WriteLine("读取到的寄存器值:");
for (int i = 0; i < values.Length; i++)
{
Console.WriteLine($"寄存器{i}: {values[i]}");
}
}
catch (Exception ex)
{
Console.WriteLine("Modbus通讯发生异常:" + ex.Message);
}
finally
{
// 关闭Modbus TCP连接
modbusMaster?.Dispose();
tcpClient?.Close();
}
Console.ReadLine();
}
}
```
上述示例首先创建了一个Modbus TCP连接,然后使用ModbusMaster对象进行读取和写入操作。读取操作使用ReadHoldingRegisters方法,可以读取指定设备地址、起始寄存器地址和数量的寄存器值。写入操作使用WriteSingleRegister方法,可以将单个值写入指定设备地址和寄存器地址的寄存器中。
请根据实际情况修改IP地址、设备地址、寄存器地址和数量等参数,并根据需要处理异常情况。