Nmodbus读写
两个Button控件分别为 读取和写入 分别使用控件的点击方法
①引用第三方《NModbus4》2.1.0版本
全局
public SerialPort port = new SerialPort("COM2", 9600, Parity.None, 8, (StopBits)1);
ModbusSerialMaster master;
public Form1()
port.Open();
master = ModbusSerialMaster.CreateAscii(port);
采用的nmdbus4实现ascii协议
使用寄存器写数据
打开寄存器Connection
读取
给寄存器指定位置添加数据
读取保存寄存器数据,返回类型ushort[] 列表
参数1.设备地址 2.起始地址 3.数量
ushort[] data = master.ReadHoldingRegisters(1, 0x004, 3);
显示
MessageBox.Show(data[0] + "-" + data[1] + "-" + data[2]);
写入:
注:在寄存器里F8可以更改设备地址
写入单个寄存器
参数1.地址 2.写入位置 3.写入数据
master.WriteSingleRegister(1, 7, 9600);
写入多个
参数 1.设备地址 2.起始地址 3.写入数据
master.WriteMultipleRegisters(1,0x000,new ushort[] {10,20,30,40,50,60,70,80,90,100});
更改后观看寄存器是否变化
EasyModbusTCP实现TCP协议的第三方
button 读取 写入 点击事件
添加第三方《EasyModbusTCP》5.6.0版本
注:三种报文
RTU报文: 01 03 00 00 00 01 084 0A
ASCII; :010300000001FB
TCP: 00 02 00 00 00 06 01 03 00 00 00 01
寄存器添加
给寄存器指定位置添加数据
全局变量:ModbusClient client;方法
client = new ModbusClient();
client.IPAddress = "127.0.0.1";
client.Port = 502;
client.Connect();
连接寄存器
读取
参数1.寄存器起始地址2.寄存器个数
int[] data = client.ReadHoldingRegisters(1,2);
MessageBox.Show(data[0] + "-" + data[1]);
提示框显示
写入
1.写入多个
参数1.起始地址 2.写入数据
client.WriteMultipleRegisters(3, new int[] { 200, 300 });
2.写入单个
client.WriteSingleRegister(7, 900);
写入后观看寄存器是否变化