c#如何读取Modbus中Slave和Poll的值
虚拟串口
Modbus Slave
右击设置slave定义
设置好地址后,设置连接。点击Connection–选择Connect
Modbus Poll
右击选择设置定义
设置的内容要和slave一致
设置连接,点击Connection—选择Connect
Poll和Slave连接之后,可以获取slave的值。我们在使用c#读取信息时,读取的是Poll的端口号,此处是"COM3"。但是在读取的时候,一定要将slave打开,Poll关闭。Poll不关闭的话会引起"对端口“COM3”的访问被拒绝。"
。这样可以通过Poll的串口读取slave设置的值。
public static void ModbusSerialRtuMasterReadRegisters()
{
using(SerialPort port = new SerialPort("COM3"))
{
port.BaudRate = 9600;//比特率
port.DataBits = 8;//数据位
port.Parity = Parity.None;//校验位
port.StopBits = StopBits.One;//停止位
port.Open();
// create modbus master 创建一个master 里面有一个串行的ModbusSerialMaster,直接调用
IModbusSerialMaster master = ModbusSerialMaster.CreateRtu(port);
//IModbusSerialMaster master1 = ModbusSerialMaster.CreateAscii(port);
byte slaveId = 1;//slave地址
ushort startAddress = 1;//起始地址
ushort registerNUM = 10;
//同步
ushort[] data = master.ReadHoldingRegisters(slaveId, startAddress, registerNUM);
if (data != null && data.Length > 0)
{
for (int i = 0; i < data.Length; i++)
{
Console.WriteLine($"Register {startAddress + i}: {data[i]}");
}
}
else
{
Console.WriteLine("No data received.");
}
//异步线程读取数据
//master.ReadHoldingRegisters
}
}