在C#中实现Modbus TCP通信可以借助现有的Modbus TCP类库,例如NModbus库或EasyModbus库。这些库提供了封装好的Modbus TCP通信功能,可以方便地在C#程序中进行调用。
以下是一个简单的示例代码,演示如何使用NModbus库实现Modbus TCP通信:
using System;
using System.Net;
using Modbus.Device;
using System.Net.Sockets;
class Program
{
static void Main()
{
// 创建Modbus TCP主站
TcpClient client = new TcpClient("192.168.1.1", 502);
ModbusIpMaster master = ModbusIpMaster.CreateIp(client);
// 读取保持寄存器的值
ushort startAddress = 0;
ushort numRegisters = 1;
ushort[] registers = master.ReadHoldingRegisters(startAddress, numRegisters);
// 输出读取到的寄存器值
foreach (var reg in registers)
{
Console.WriteLine(reg);
}
// 关闭TCP连接
client.Close();
}
}
在这个示例中,我们首先创建了一个Modbus TCP主站对象,并连接到设备的IP地址和端口。然后使用主站对象的ReadHoldingRegisters方法读取指定地址的保持寄存器的值,并将结果输出到控制台。最后关闭TCP连接。
需要注意的是,实际使用时需要根据实际的设备IP地址、寄存器地址等进行调整。另外,还可以根据需要实现写寄存器、读输入寄存器等其他Modbus TCP通信功能。