目录
1 传输方式不同
2 硬件接口不同
3 校验码不同
4 指令内容不同
4.1 Modbus RTU
4.1.1 功能码为03,表示读寄存器
4.1.2 功能码为10,表示写多个寄存器
4.2 Modbus TCP
4.2.1 功能码为03,表示读寄存器
4.2.2 回复异常报文
5 传输速度不同
6 补充说明
7 术语解读
RTU协议需要将控制器设置成RTU模式,用二进制数据的传输方式就可以直接传送数据。
遵循3.5T时间间隔。集体可以查看modbus rtu通讯-T1.5以及T3.5时间间隔。
TCP协议在以太网的物理层上工作,是传输层第四层的协议,它先将每字节进行二进制传输再转换为十六进制的两个字节,依次这样操作将转换好的字节串联在一起。
RTU协议使用的是233、422、485的串行接口(serial port)。
串行接口整个操作过程比较方便,通过两个引脚就可以通迅,这两个引脚分别为Rx和Tx,它们的用途是用来传送和接收数据。
串行接口默认的波特率为9600、奇偶校验为否、数据位为8、 停止位为1。
从表现形式和结构来看,RTU协议的使用度比TCP协议更广泛。
TCP协议使用的是以太网接口,能直接连接网络,连接后它可以自行与其他的网络设备联系并确定一种目前最简便的工作方式。
以太网接口的工作模式分为全双工模式和半双工模式。
以太网接口根据类型可以分为传统接口和快速接口,具体有SC光纤的接口、RJ45的接口、AUI的接口、FDDI的接口、BNC的接口和Console的接口。
RTU协议中为了检验整个数据的内容要用到16位的CRC校验,这个校验分别计算传输端的和接收端的帧内容,两个CRC值比较出来是相符合的就接收数据,若不相符就拒收这个数据并报告到上级设备。
TCP协议在连接时有着“确认对方信息”、“排序数据”、“控制数据流量”、“避免阻塞”的四个步骤,这样的连接协议相对来说会比较可靠,所以不需要再用额外的校验码去检验数据的帧内容。
RTU协议的指令内容有五个字节,分别为从站地址、功能码、数据起始地址、数据数量量和CRC检验。
例如01、03、00 00、00 02、C4 0B。
TCP协议的指令内容在RTU指令内容的基础上增加了一个MBAP报文头,删除了CRC校验。
例如00 00 00 00 00 06 ff 03 00 00 00 02,其中00 00 00 00 00 06 ff七个字节为MBAP报文头。
详细介绍如下
简介:RTU协议中的指令由地址码(1字节),功能码(1字节),起始地址(2字节),数据(N个字节),校验码(2字节)五个部分组成
1、发送指令:01 03 76 83 00 0C AE 6F
解析:
01为从机地址(地址码),
03 为功能码(03表示:读),
76 83 为寄存器地址[起始地址][真实的寄存器地址-1],
00 0C 为读取寄存器的个数,
AE 6F 为CRC校验。
2、接收指令:01 03 18 00 55 00 AA FF FF FF FF 01 2D FF FF FF FF FF FF 00 55 FF FF FF FF FF FF BA 58
解析:
01 为从机地址(地址码),
03 为功能码,
18 为数据长度[表示24(转换为十进制)],24个字节的数据正文(即12个寄存器,每个寄存器占两个字节),
00 55 00 AA FF FF FF FF 01 2D FF FF FF FF FF FF 00 55 FF FF FF FF FF FF 为每个寄存器数据,
BA 58 为校验码。
1、发送指令:01 10 8C BD 00 08 10 53 47 39 4B 54 4C 2D 4D 00 00 00 00 00 00 00 00 39 2F
解析:
01 为从机地址(地址码),
10 为功能码(10表示:写),
8C BD 为寄存器地址[起始地址],
00 08 为写入寄存器的个数,
10 为数据长度,表示数据长度为16个字节,数据长度是寄存器个数的2倍,
53 47 39 4B 54 4C 2D 4D 00 00 00 00 00 00 00 00 为写入寄存器的数据[16个字节],
39 2F 为校验码
2、接收指令:01 10 8C BD 00 08 7B 7B FF FF FF FF FF FF FF FF
解析:
01 为从机地址,
10 为功能码,
8C BD 为寄存器地址,
00 08 为数据长度,
7B 7B FF FF FF FF FF FF 为寄存器数据,
FF FF 为校验
简介:Modbus TCP协议是在RTU协议前面添加MBAP报文头,由于TCP是基于可靠连接的服务,RTU协议中的CRC校验码就不再需要,所以在Modbus TCP协议中是没有CRC校验码
1、发送指令:68 68 00 00 00 06 01 03 33 65 00 04
解析:
68 68 为报文序列号,
00 00 为协议标识(00 00表示ModbusTCP协议),
00 06 为后续字节数(数据长度,单位为字节),
01 为从机地址,
03 为功能码,
33 65 为寄存器地址[起始地址],
00 04 为寄存器个数。
2、接收指令:68 68 00 00 00 0B 01 03 08 00 01 00 AA 00 00 00 AA
解析:
68 68 为报文序列号,
00 00 为协议标识,
00 0B 为后续字节数,
01 为从机地址,
03 为功能码,
08 为数据长度,
00 01 00 AA 00 00 00 AA 为寄存器数据
68 68 00 00 00 03 F7 90 02
解析:
68 68 为报文序列号,
00 00 为协议标识,
00 03 为后续字节数,
F7 为从机地址,
90 为功能码,
02 为异常码
使用RTU协议因使用的是232、422、485这样的串行接口,因此在传输速度上会比较慢,
使用TCP协议时的传输速度较快,如果想要更快的速度可以连接PLC总线的方式去扩展以太网模块的范围,但对于许多设备来说并不需要这么快的速度,速度过快,设备向上级设备报告数据的次数就会变多间接增加了设备的工作量。
Modbus 协议是一种应用层报文传输协议,包括ASCII、RTU、TCP三种报文类型,协议本身并没有定义物理层,只是定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。
Modbus 协议使用串口传输时可以选择RTU或ASCII模式,并规定了消息、数据结构、命令和应答方式并需要对数据进行校验。ASCII 模式采用LRC校验,RTU模式采用16 位CRC校验。通过以太网传输时使用TCP,这种模式不使用校验,因为TCP协议是一个面向连接的可靠协议。
校验码:校验码通常是一组数字的最后一位,由前面的数字通过某种运算得出,用以检验该组数据的正确性。代码作为数据在向计算机或其它设备进行输入时,容易产生输入错误,为了减少这种输入错误,编码专家发明了各种校验检错方法,并依据这些方法设置了校验码。常用的校验有:累加和校验SUM、字节异或校验XOR、纵向冗余校验LRC、循环冗余校验CRC。