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>