NModbus4项目1——使用NModbus进行简单的线圈和寄存器的读写操作
准备工作:
1、增加一对虚拟串口,COM4和COM5,如下所示:
2、使用Modbus Slave软件建立3个数据区,从左到右分别是线圈,寄存器(存放整数),寄存器(存放浮点数)
Modbus Slave的站地址为1,其他信息如下:
步骤1、创建一个串口
首先添加引用,using System.IO.Ports;
设置串口属性,要求与Modbus Slave的属性相同;
static SerialPort port = new SerialPort();
port.PortName = "COM4";
port.BaudRate = 9600;
port.Parity = Parity.None;
port.StopBits = StopBits.One;
port.DataBits = 8;
最后,打开串口
try
{
port.Open();
Console.WriteLine("串口 " + port.PortName + " 已打开");
}
catch (System.Exception)
{
throw new Exception("串口 " + port.PortName + " 已打开失败!");
}
步骤2、引入NModbus4,创建一个RTU主站
1、添加NeGet包,NModbus4
2、添加引用 using Modbus.Device;
3、创建一个Modbus主站
static IModbusSerialMaster master;
master = ModbusSerialMaster.CreateRtu(port);
master.Transport.ReadTimeout = 1000;//读超时
master.Transport.WriteTimeout = 1000;//写超时
master.Transport.Retries = 3;//尝试重复连接次数
master.Transport.WaitToRetryMilliseconds = 200;//尝试重复连接间隔
步骤3、进行数据读写操作
1、读数据
//读数据
bool[] coils = new bool[8];
coils = master.ReadCoils(1, 0, 8);//读多个线圈
ushort[] datas = new ushort[8];
datas = master.ReadHoldingRegisters(1, 0, 8);//读多个寄存器
2、写数据
//写数据
master.WriteSingleCoil(1, 0, false);//写单个线圈
master.WriteSingleRegister(1, 2, 515);//写单个寄存器
NModbus4,常用功能如下: