是的,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。