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>