ModBusRTU和ModbusTCP的学习整理

第一、

Modbus RTU协议需要对数据进行校验,串行协议有奇偶校验,ASCII模式LRC校验,RTU模式用16位CRC校验.。其采用Maser/Slave方式。 
ModbusTCP模式没有规定校验,因为TCP协议是一个面向连接的可靠协议。其采用服务器和客户端方式,MODBUS TCP是
传输在TCP/IP网络上的,多了一个报文头,少了CRC校验,采用TCP的502端口。

         在一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数(端口,波特率等)或者选择IP+端口号(502),因此,如果要进行Modbus RTU协议和ModbusTCP协议的转换,需要物理转换器RS485 to Ethernet的转换模块。

第二、Modbus RTU协议

             1、基本格式:起始位(T1_T2_T3_T4)+设备地址+功能码+数据+CRC校验+结束符(T1_T2_T3_T4)

数据传输时注意:数据帧之间间隔必须大于3.5个字符,帧内数据间隔要小于1.5个字符(低位字节在前,高位字节在后)

ModbusRTU协议格式

设备地址功能码数据格式CRC校验LCRC校验H
8位8位N*8位8位8位

(N<=124,传输数据过大会引起通信错误)

               2、功能码介绍:

功能码

0x01

0x02

0x03

0x04

0x05

0x06

0x0F

0x10

含义

读线圈(PLC输出位(单或多位操作))

读离散输入状态(PLC输入位(单或多位操作)

读保持寄存器

(单或多字操作)

读输入寄存器

(单或多字操作)

写单个线圈

(单位操作)

写单个保持寄存器

(单字操作)

写多个线圈

(多个位操作)

写多个保持寄存器

(多个字操作)

 

               3、主对从写操作的数据帧格式:

从机地址功能码数据地址L数据地址H数据L数据HCRC_LCRC_H
0x010600010010

                 从机对主机响应: 

从机地址功能码数据地址L数据地址H数据L数据HCRC_LCRC_H
0x010600010010

               4、主机对从机读数据操作:

从机地址功能码数据地址L数据地址H数据L数据HCRC_LCRC_H
0x010300010001

                从机对主机响应:

从机地址功能码数据字节个数数据1数据2CRC_LCRC_H
0x0103020000

 第三、ModbusTCP协议格式

              发送:0x00  0x00  0x00  0x00  0x00  0x06  0x01  0x04  0x00  0x00  0x00  0x10

Byte1

Byte2

Byte3

Byte4

Byte5

Byte6

Byte7

Byte8

Byte9

Byte10

Byte11

Byte12

0x00

0x00

0x00

0x00

0x00

0x06

0x01

0x04

0x00

0x00

0x00

0x10

事务处理标识H

事务处理标识

L

协议标识符H

协议标识符L

长度H

长度L

设备地址

功能码

寄存器起始地址H

寄存器起始地址L

读输入寄存器个数H

读输入寄存器读输入寄存器L

           返回:0x00  0x00  0x00  0x00  0x00  0x22  0x01  0x04  0x20 +Bytes[32]

Byte1

Byte2

Byte3

Byte4

Byte5

Byte6

Byte7

Byte8

Byte9

Byte10~ Byte41

0x00

0x00

0x00

0x00

0x00

0x22

0x01

0x04

0x20

Bytes[32]

事务处理标识

H

事务处理标识

L

协议标识符H

协议标识符L

长度H

长度L

设备地址

功能码

返回寄存器数据长度

返回的寄存器的数据

      疑问:Byte9:如果表示数据长度,由于其是一个字节表示,所以其值最大位0xFF即255,所以返回数据长度有限制。搜索帖子有说长度不超124个,待验证....

                   

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值