溫馨提示×

C#中ModbusTCP異步通訊的實現

c#
小樊
300
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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女