基于c#开发一个modbus tcp实时通讯读写
时间: 2023-08-02 18:38:15 浏览: 703
基于stm32f407 和开源软件LwIP及Freemodbus实现的modbus_tcp,基于SysTick实时器实现的简洁任
5星 · 资源好评率100%
以下是一个基于C#的Modbus TCP实时通讯读写示例代码,你可以参考一下:
```csharp
using System;
using System.Threading;
using System.Net.Sockets;
using Modbus.Data;
using Modbus.Device;
using Modbus.Utility;
class Program
{
static void Main(string[] args)
{
// 创建Modbus TCP客户端
TcpClient client = new TcpClient("localhost", 502);
ModbusIpMaster master = ModbusIpMaster.CreateIp(client);
// 定义读写操作的数据
ushort address = 1;
ushort count = 1;
ushort[] readData = new ushort[count];
ushort[] writeData = new ushort[] { 12345 };
// 循环执行实时通讯读写
while (true)
{
// 读取保持寄存器(地址为0x0001)中的值
readData = master.ReadHoldingRegisters(address, count);
ushort value = readData[0];
Console.WriteLine("保持寄存器中的值为:" + value);
// 写入保持寄存器(地址为0x0001)中的新值
master.WriteMultipleRegisters(address, writeData);
Console.WriteLine("新值已写入保持寄存器中");
// 等待1秒钟
Thread.Sleep(1000);
}
// 关闭客户端
client.Close();
}
}
```
在代码中,我们首先创建了一个 Modbus TCP 客户端,并定义了读写操作的数据。然后,使用一个无限循环不断执行实时通讯读写操作,并使用 `Thread.Sleep` 方法暂停1秒钟。在实际应用中,可以根据需要设置读写的地址、数量和数据,并进行相应的操作。当然,在使用时也需要根据实际情况设置 Modbus TCP 服务器的 IP 地址和端口号。
需要注意的是,Modbus TCP 协议是一种基于连接的协议,因此需要在每次使用完成后关闭客户端。
阅读全文