一、安裝nmodbus4類庫
在使用nmodbus4類庫之前,我們首先需要安裝它,並將其引入我們的項目中。
下面是一個使用Visual Studio進行開發的示例:
//使用NuGet包安裝nmodbus4類庫 Install-Package Modbus -Version 4.3.0 //引入命名空間 using Modbus.Data; using Modbus.Device; using System.Net.Sockets;
二、創建Modbus主站
在我們的C#代碼中,需要通過TCP網路與從機建立連接,這些工作要由主站負責。首先,我們需要創建主站實例。
//創建TCP客戶端 TcpClient client = new TcpClient(host, port); //創建主站 ModbusIpMaster master = ModbusIpMaster.CreateIp(client);
準備好主站實例之後,我們就可以使用它來發送讀寫請求。
三、發送讀寫請求
1. 讀取線圈狀態(讀取線圈開關量)
讀取線圈狀態是指讀取從機設備的線圈開關量。在Modbus協議中,線圈的地址從0開始編號,長度則以位(b)為單位。
//輸入參數:起始地址、長度 //返回值:線圈狀態 bool[] coilStatus = master.ReadCoils(startingAddress, length);
2. 讀取離散輸入狀態(讀取位開關量)
與讀取線圈狀態類似,讀取離散輸入狀態指的是讀取從機設備的位開關量。
//輸入參數:起始地址、長度 //返回值:離散輸入狀態 bool[] discreteInputs = master.ReadInputs(startingAddress, length);
3. 讀取保持寄存器(讀取16位無符號整數)
讀取保持寄存器指的是讀取從機設備的16位無符號整數。
//輸入參數:起始地址、長度 //返回值:16位無符號整數 ushort[] holdingRegisters = master.ReadHoldingRegisters(startingAddress, length);
4. 讀取輸入寄存器(讀取16位無符號整數)
讀取輸入寄存器指的是讀取從機設備的16位無符號整數。
//輸入參數:起始地址、長度 //返回值:16位無符號整數 ushort[] inputRegisters = master.ReadInputRegisters(startingAddress, length);
5. 寫入單個線圈(寫入單個位開關量)
寫入單個線圈指的是向從機設備寫入單個位開關量。
//輸入參數:操作地址、開關量 //返回值:無 master.WriteSingleCoil(writeAddress, value);
6. 寫入多個線圈(寫入多個位開關量)
寫入多個線圈指的是向從機設備寫入多個位開關量。
//輸入參數:起始地址、開關量數組 //返回值:無 master.WriteMultipleCoils(startingAddress, values);
7. 寫入單個保持寄存器(寫入16位無符號整數)
寫入單個保持寄存器指的是向從機設備寫入單個16位無符號整數。
//輸入參數:操作地址、16位無符號整數 //返回值:無 master.WriteSingleRegister(writeAddress, value);
8. 寫入多個保持寄存器(寫入多個16位無符號整數)
寫入多個保持寄存器指的是向從機設備寫入多個16位無符號整數。
//輸入參數:起始地址、16位無符號整數數組 //返回值:無 master.WriteMultipleRegisters(startingAddress, values);
四、總結
本文介紹了使用nmodbus4類庫實現Modbus協議讀寫操作的指南,分別從安裝nmodbus4類庫、創建Modbus主站和發送讀寫請求三個方面進行了闡述,具體涉及讀取線圈狀態、離散輸入狀態、保持寄存器、輸入寄存器和寫入操作。希望能夠對使用Modbus協議的開發人員提供幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/237992.html