Nmodbus4使用示例

Nmodbus4是一套开源的驱动程序,支持ModbusRTU,,ModbusASCII,ModbusTCP等,支持主从站模式,这里介绍基本的ModbusRTU主站的使用方法,详细的使用方法请参见帮助文档。

驱动文件和帮助文档下载地址:

链接:https://pan.baidu.com/s/1eK16kj9M19QvQwfT-Bvo1Q

提取码:o923

我们读取和写入个保持寄存器的的一个值。

代码如下:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.IO;

using System.IO.Ports;

using Modbus;

using Modbus.Data;

using Modbus.Device;

using Modbus.Extensions;

using Modbus.IO;

using Modbus.Message;

using Modbus.Utility;

using System.Threading;

 
 

namespace WindowsFormsApplication9

{

public
partial
class
Form1 : Form

{

public Form1()

{

InitializeComponent();

}

 
 

//定义主站

ModbusSerialMaster master = null;

private
void button1_Click(object sender, EventArgs e)

{

//读取保持寄存器0的值

ushort[] hr= master.ReadHoldingRegisters(1,0,1);

textBox1.Text = hr[0].ToString();

}

 
 

private
void Form1_Load(object sender, EventArgs e)

{

//初始化串口和主站

serialPort1.PortName = “COM5”;

serialPort1.BaudRate = 9600;

serialPort1.DataBits = 8;

serialPort1.StopBits = StopBits.One;

serialPort1.Parity = Parity.None;

serialPort1.Open();

 
 

master = ModbusSerialMaster.CreateRtu(serialPort1);

}

 
 

private
void button2_Click(object sender, EventArgs e)

{

//写入保持寄存器1,如从站返回错误,需要处理

try

{

master.WriteSingleRegister(1, 1, Convert.ToUInt16(textBox2.Text));

}

catch (SlaveException ex)

{

MessageBox.Show(ex.Message);

}

 
 

 
 

}

 
 

private
void Form1_FormClosed(object sender, FormClosedEventArgs e)

{

serialPort1.Close();

master.Dispose();

}

 
 

private
async
void button3_Click(object sender, EventArgs e)

{

//异步读取保持寄存器0的值

ushort[] hr = await master.ReadHoldingRegistersAsync(1, 0, 1);

textBox1.Text = hr[0].ToString();

}

}

}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注