温馨提示×

C#中ModbusTCP异步通讯的实现

c#
小樊
157
2024-07-19 15:07:42
栏目: 编程语言

在C#中实现ModbusTCP异步通讯,可以使用第三方库如NModbus。以下是一个简单的示例代码:

using System;
using System.Net;
using System.Net.Sockets;
using NModbus;
using NModbus.IO;
using NModbus.Serial;
using NModbus.Utility;

namespace ModbusTCPExample
{
    class Program
    {
        static async Task Main(string[] args)
        {
            using (var client = new TcpClient("127.0.0.1", 502))
            {
                var factory = new ModbusFactory();
                var master = factory.CreateMaster(client);

                // 读取保持寄存器的值
                ushort startAddress = 0;
                ushort numRegisters = 5;
                ushort[] registers = await master.ReadHoldingRegistersAsync(1, startAddress, numRegisters);

                Console.WriteLine("Read result:");
                for (int i = 0; i < registers.Length; i++)
                {
                    Console.WriteLine($"Register {startAddress + i}: {registers[i]}");
                }

                // 写入保持寄存器的值
                ushort[] values = new ushort[] { 10, 20, 30, 40, 50 };
                await master.WriteMultipleRegistersAsync(1, startAddress, values);

                Console.WriteLine("Write successful");
            }
        }
    }
}

在上面的示例中,我们使用NModbus库创建了一个ModbusTCP主站,并使用了异步方法来读取和写入保持寄存器的值。需要注意的是,在实际使用中,需要根据具体的设备和寄存器地址来调整代码。

0