1 ModbusTCP

1.1 参数说明

序号

名称

类型

说明

备注

1

Host

Byte

主机/站号

2

ReadCode

FunctionCodes

读取功能码

若点位地址未指定区域,则采用该功能码

(表1-2)

3

WriteCode

FunctionCodes

写入功能码

若点位地址未指定区域,则采用该功能码

(表1-2)

4

Timeout

Int32

网络超时

发起请求后等待响应的超时时间,默认3000ms

5

BatchStep

Int32

批间隔

两个点位地址小于等于该值时凑为一批,默认1

6

BatchSize

Int32

批大小

凑批请求时,每批最多点位个数

7

BatchDelay

Int32

批延迟

相邻请求之间的延迟时间,单位毫秒

表1-1


FunctionCodes:Byte 枚举类型说明

枚举值

枚举类型

说明

1

ReadCoil

01读单个线圈

2

ReadDiscrete

02读离散量输入

3

ReadRegister

03读保持寄存器

4

ReadInput

04读输入寄存器

5

WriteCoil

05写单个线圈

6

WriteRegister

06写保持寄存器

7

Diagnostics

08诊断

15

WriteCoils

15写多个线圈

16

WriteRegisters

16写多个保持寄存器

21

WriteFileRecord

21写文件

23

ReadWriteMultipleRegisters

23读写多个保持寄存器

43

ReadDevId

43读设备识别码




表1-2

1.2 代码示例

public enum FunctionCodes : Byte
{
    /// <summary>读单个线圈</summary>
    [Description("01读单个线圈")]
    ReadCoil = 1,
    /// <summary>读离散量输入状态</summary>
    [Description("02读离散量输入")]
    ReadDiscrete = 2,
    /// <summary>读保持寄存器</summary>
    [Description("03读保持寄存器")]
    ReadRegister = 3,
    /// <summary>读输入寄存器</summary>
    [Description("04读输入寄存器")]
    ReadInput = 4,
    /// <summary>写单个线圈</summary>
    [Description("05写单个线圈")]
    WriteCoil = 5,
    /// <summary>写单个保持寄存器</summary>
    [Description("06写保持寄存器")]
    WriteRegister = 6,
    /// <summary>诊断</summary>
    [Description("08诊断")]
    Diagnostics = 8,
    /// <summary>写多个线圈</summary>
    [Description("15写多个线圈")]
    WriteCoils = 15,
    /// <summary>写多个保持寄存器</summary>
    [Description("16写多个保持寄存器")]
    WriteRegisters = 16,
    /// <summary>写文件</summary>
    [Description("21写文件")]
    WriteFileRecord = 21,
    /// <summary>读写多个保持寄存器</summary>
    [Description("23读写多个保持寄存器")]
    ReadWriteMultipleRegisters = 23,
    /// <summary>读设备识别码</summary>
    [Description("43读设备识别码")]
    ReadDevId = 43,
}

1.3 参数示例

1.3.1 Json格式

{
    "Host": 1,
    "ReadCode":FunctionCodes.ReadCoil,
    "WriteCode":FunctionCodes.WriteCoil,
    "Timeout": 3000,
    "BatchStep": 1,
    "BatchSize": 1,
    "BatchDelay": 1000
}

1.3.2 XML格式

<ModbusParameter>
    <!--主机/站号-->
    <Host>1</Host>
    <!--读取功能码。若点位地址未指定区域,则采用该功能码-->
    <ReadCode>ReadRegister</ReadCode>
    <!--写入功能码。若点位地址未指定区域,则采用该功能码-->
    <WriteCode>WriteRegister</WriteCode>
    <!--网络超时。发起请求后等待响应的超时时间,默认3000ms-->
    <Timeout>3000</Timeout>
    <!--批间隔。两个点位地址小于等于该值时凑为一批,默认1-->
    <BatchStep>1</BatchStep>
    <!-- 批大小。凑批请求时,每批最多点位个数 -->
    <BatchStep>1</BatchStep>
    <!-- 批延迟。相邻请求之间的延迟时间,单位毫秒 -->
    <BatchDelay>1000</BatchStep>
</ModbusParameter>

2 ModbusRTU

2.1 参数说明

序号

名称

类型

说明

备注

1

PortName

String

串口


2

Baudrate

Int32

波特率


3

DataBits

Int32

数据位

默认8

4

Parity

Parity

奇偶校验位

默认None无校验

5

StopBits

StopBits

停止位

默认One

6

ByteTimeout

Int32

字节超时

默认10ms

2.2 代码类型示例

 public enum Parity
 {
    None = 0,
    Odd = 1,
    Even = 2,
    Mark = 3,
    Space = 4,
}
public enum StopBits
{
    None = 0,
    One = 1,
    Two = 2,
    OnePointFive = 3,
}

2.3 参数示例

2.3.1 json格式

{
    "Host": 11,
    "ReadCode": 3,
    "WriteCode": 6,
    "PortName": "/dev/ttyAMA1",
    "Baudrate": 4800
}

2.3.2 Xml格式

<ModbusRtuParameter>
  <!--主机/站号-->
  <Host>1</Host>
  <!--读取功能码。若点位地址未指定区域,则采用该功能码-->
  <ReadCode>ReadRegister</ReadCode>
  <!--写入功能码。若点位地址未指定区域,则采用该功能码-->
  <WriteCode>WriteRegister</WriteCode>
  <!--串口-->
  <PortName>/dev/ttyAMA1</PortName>
  <!--主机波特率站号-->
  <Baudrate>9600</Baudrate>
</ModbusRtuParameter>