欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 7670|回復(fù): 1
收起左側(cè)

C#教程之NModBus的使用

[復(fù)制鏈接]
ID:741093 發(fā)表于 2020-4-29 17:15 | 顯示全部樓層 |閱讀模式

一、什么是ModBus通訊協(xié)議
  Modbus協(xié)議是應(yīng)用于電子控制器上的一種通用語(yǔ)言,此協(xié)議支持傳統(tǒng)的RS-232、RS-422、RS-485和以太網(wǎng)設(shè)備。
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通訊協(xié)議的.Net實(shí)現(xiàn)
    因?yàn)閷?shí)現(xiàn)并不困難,網(wǎng)上有許多網(wǎng)友自己的實(shí)現(xiàn),但在這里我推薦一個(gè)github的開源實(shí)現(xiàn)類庫(kù):NModBus4,github地址:https://github.com/NModbus4/NModbus4。針對(duì)TCP、UDP、RTU等的ModBus通訊方式都有實(shí)現(xiàn)。

    讀寫方法:
  
方法名
  
作用
所需參數(shù)
返回值
對(duì)應(yīng)功能碼
ReadCoils
讀取DO的狀態(tài)
從站地址(8位)
  
byte slaveAddress
  
起始地址(16位)
  
  
ushort startAddress
  
讀取數(shù)量(16位)
  
ushort  numberOfPoints
bool[]
01
ReadInputs
讀取DI的狀態(tài)
從站地址(8位)
  
byte slaveAddress
  
起始地址(16位)
  
  
ushort startAddress
  
讀取數(shù)量(16位)
  
ushort  numberOfPoints
bool[]
02
ReadHoldingRegisters
讀取AO的值
從站地址(8位)
  
byte slaveAddress
  
起始地址(16位)
  
ushort startAddress
  
讀取數(shù)量(16位)
  
ushort  numberOfPoints
ushort[]
03
ReadInputRegisters
讀取AI的值
從站地址(8  位)
  
byte slaveAddress
  
起始地址(16位)
  
  
ushort startAddress
  
讀取數(shù)量(16位)
  
ushort  numberOfPoints
ushort[]
04
WriteSingleCoil
寫入值到DO
從站地址(8位)
  
byte slaveAddress
  
線圈地址(16位)
  
ushort coilAddress
  
寫入值(布爾型)
  
bool value
無(wú)返回值
05
WriteSingleRegister
寫入值到AO
從站地址(8位)
  
byte slaveAddress
  
寄存器地址(16位)
  
ushort  registerAddress
  
寫入值(16位)
  
ushort value
無(wú)返回值
06
WriteMultipleCoils
寫多線圈寄存器
從站地址(8位)
  
byte slaveAddress
  
起始地址(16位)
  
ushort startAddress
  
寫入值(布爾型數(shù)組)
  
bool[] data
無(wú)返回值
15
WriteMultipleRegisters
寫多個(gè)保持寄存器
從站地址(8位)
  
byte slaveAddress
  
  
起始地址(16位)
  
ushort  startAddress,
  
寄存器值(16位整型數(shù)組)
  
ushort[] data
無(wú)返回值
16
ReadWriteMultipleRegisters
讀寫多個(gè)保持寄存器
從站地址(8位)
  
byte slaveAddress
  
讀起始地址(16位)
  
ushort  startReadAddress
  
  
讀取數(shù)量(16位)
  
ushort  numberOfPointsToRead,
  
寫入起始地址(16位)
  
ushort  startWriteAddress,
  
寫入值(16位整型數(shù)組)
  
ushort[] writeData
ushort[]
23
    每個(gè)方法都有各自的異步方法實(shí)現(xiàn)。

    這里以RTU展示其使用方法:
1    /// <summary>
2          /// 創(chuàng)建 ModBus RTU 連接
3          /// </summary>
4          /// <paramname="portName">端口號(hào)</param>
5          /// <paramname="baudRate">波特率</param>
6          /// <paramname="parity">奇偶校驗(yàn)位</param>
7          /// <paramname="dataBits">數(shù)據(jù)位</param>
8          /// <paramname="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                 try
21                 {
22                     serialPort.Open();
23                 }
24                 catch (Exception e)
25                 {
26                     throw e;
27                 }
28             }
29             try
30             {
31               master =ModbusSerialMaster.CreateRtu(serialPort);
32               ///同時(shí)也可以配置master的一些參數(shù)
33               master.Transport.ReadTimeout = 100;//讀取數(shù)據(jù)超時(shí)100ms
34               master.Transport.WriteTimeout = 100;//寫入數(shù)據(jù)超時(shí)100ms
35               master.Transport.Retries = 3;//重試次數(shù)
36              master.Transport.WaitToRetryMilliseconds = 10;//重試間隔
37
38             }
39             catch(Exception e)
40             {                 throw e;
41             }
42             return master;
43         }
44     }


回復(fù)

使用道具 舉報(bào)

ID:741093 發(fā)表于 2020-4-29 17:18 | 顯示全部樓層
上傳背景色有點(diǎn)問(wèn)題,不好意思
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表