是的,C#中的Modbus串口通信可以支持多個設備。要實現這一點,您需要為每個設備分配一個唯一的Modbus地址,并在通信時指定要與之交互的設備地址。
以下是一個使用Modbus庫(如ModbusMaster)在C#中實現與多個設備通信的示例:
using ModbusMaster;
using System;
namespace ModbusMultiDeviceExample
{
class Program
{
static void Main(string[] args)
{
// 創建Modbus串口實例
ModbusSerialMaster master = new ModbusSerialMaster("COM3", 9600, Parity.None, 8, StopBits.One);
// 添加設備并指定地址
master.AddDevice(0x01, "Device1");
master.AddDevice(0x02, "Device2");
// 讀取設備寄存器值
byte[] readData1 = master.ReadHoldingRegisters(0x01, 0, 10);
byte[] readData2 = master.ReadHoldingRegisters(0x02, 0, 10);
// 處理讀取到的數據
Console.WriteLine("Device1 registers:");
foreach (byte b in readData1)
{
Console.Write(b + " ");
}
Console.WriteLine("\nDevice2 registers:");
foreach (byte b in readData2)
{
Console.Write(b + " ");
}
// 關閉串口連接
master.Dispose();
}
}
}
在這個示例中,我們創建了一個Modbus串口實例,并添加了兩個設備,分別分配了地址0x01和0x02。然后,我們讀取了這兩個設備的寄存器值,并將它們打印到控制臺。
請注意,這個示例僅用于演示目的,實際應用中可能需要根據您的需求進行調整。另外,您可能需要安裝相應的Modbus庫,如ModbusMaster。