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,常用功能如下:

 

posted on 2022-11-16 14:40  hanzq_go  阅读(5129)  评论(0编辑  收藏  举报

导航