NModBus的使用

來源:互聯網
上載者:User

標籤:number   status   控制   wait   art   gis   nts   使用   puts   

  前言:最近在做一個項目,需要使用ModBus RTU與PLC進行通訊,現在將使用過程記錄,以便備查。

 

一、什麼是ModBus通訊協議

  Modbus協議是應用於電子控制器上的一種通用語言,此協議支援傳統的RS-232、RS-422、RS-485和乙太網路裝置。

  ModBus功能碼
01 READ COIL STATUS
02 READ INPUT STATUS
03 READ HOLDING REGISTER
04 READ INPUT REGISTER
05 WRITE SINGLE COIL
06 WRITE SINGLE REGISTER
15 WRITE MULTIPLE COIL
16 WRITE MULTIPLE REGISTER
 二、ModBus通訊協議的.Net實現

    因為實現並不困難,網上有許多網友自己的實現,但在這裡我推薦一個github的開源實作類別庫:NModBus4,github地址:https://github.com/NModbus4/NModbus4。針對TCP、UDP、RTU等的ModBus通訊方式都有實現。

    

    讀寫方法:

方法名 作用 所需參數 傳回值 對應功能碼
ReadCoils 讀取DO的狀態

從站地址(8位)

byte slaveAddress

起始地址(16位)

 

ushort startAddress

讀取數量(16位)

ushort numberOfPoints

bool[] 01
ReadInputs 讀取DI的狀態

從站地址(8位)

byte slaveAddress

起始地址(16位)

 

ushort startAddress

讀取數量(16位)

ushort numberOfPoints

bool[] 02
ReadHoldingRegisters 讀取AO的值

從站地址(8位)

byte slaveAddress

起始地址(16位) 

ushort startAddress

讀取數量(16位)

ushort numberOfPoints

ushort[] 03
ReadInputRegisters 讀取AI的值

從站地址(8 位)

byte slaveAddress

起始地址(16位)

 

ushort startAddress

讀取數量(16位)

ushort numberOfPoints

ushort[] 04
WriteSingleCoil 寫入值到DO

從站地址(8位)

byte slaveAddress

線圈地址(16位)

ushort coilAddress

寫入值(布爾型)

bool value

無傳回值 05
WriteSingleRegister 寫入值到AO

從站地址(8位)

byte slaveAddress

寄存器地址(16位)

ushort registerAddress

寫入值(16位)

ushort value

無傳回值 06
WriteMultipleCoils 寫多線圈寄存器

從站地址(8位)

byte slaveAddress

起始地址(16位)

ushort startAddress

寫入值(布爾型數組)

bool[] data

無傳回值 15
WriteMultipleRegisters 寫多個保持寄存器

從站地址(8位)

byte slaveAddress

 

起始地址(16位)

ushort startAddress,

寄存器值(16位整型數組)

ushort[] data

無傳回值 16
ReadWriteMultipleRegisters 讀寫多個保持寄存器

從站地址(8位)

byte slaveAddress

讀起始地址(16位)

ushort startReadAddress

 

讀取數量(16位)

ushort numberOfPointsToRead,

寫入起始地址(16位)

ushort startWriteAddress,

寫入值(16位整型數組)

ushort[] writeData

ushort[] 23

    每個方法都有各自的非同步方法呼叫實現。

 

    這裡以RTU展示其使用方法:

 

 1    /// <summary> 2          /// 建立 ModBus RTU 串連 3          /// </summary> 4          /// <param name="portName">連接埠號碼</param> 5          /// <param name="baudRate">傳輸速率</param> 6          /// <param name="parity">同位位元</param> 7          /// <param name="dataBits">資料位元</param> 8          /// <param name="stopBits">停止位</param> 9          /// <returns></returns>10          public  IModbusSerialMaster CreateModBusRtuConnection(string portName,int baudRate,Parity parity,int dataBits,StopBits stopBits)11          {12               return CreateModBusRtuConnect(new SerialPort(portName, baudRate, parity, dataBits, stopBits));13          }14 15          public  IModbusSerialMaster CreateModBusRtuConnection(SerialPort serialPort)16          {17             IModbusSerialMaster master = null;18             if (!serialPort.IsOpen)19             {20                 try21                 {22                     serialPort.Open();23                 }24                 catch (Exception e)25                 {26                     throw e;27                 }28             }29             try30             {31               master = ModbusSerialMaster.CreateRtu(serialPort);32               ///同時也可以配置master的一些參數33               master.Transport.ReadTimeout = 100;//讀取資料逾時100ms34               master.Transport.WriteTimeout = 100;//寫入資料逾時100ms35               master.Transport.Retries = 3;//重試次數36               master.Transport.WaitToRetryMilliseconds = 10;//稍候再試37 38             }39             catch(Exception e)40             {                 throw e;41             }42             return master;43         }44     }
View Code

 

    

NModBus的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.