电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> 单片机 >> 正文

Modbus RTU与Modbus TCP的区别

作者:佚名    文章来源:本站原创    点击数:    更新时间:2022-09-08

Modbus通信协议具有多个变种,支持串口(主要是RS-485总线),以太网多个版本,其中最著名的是Modbus RTU,Modbus ASCII和Modbus TCP三种。

在工业现场一般都是采用Modbus RTU协议,一般而言,大家说的基于串口通信的Modbus通信协议都是指Modbus RTU通信协议。与Modbus RTU协议相比较,

Modbus TCP协议则是在RTU协议上加一个MBAP报文头,并且由于TCP是基于可靠连接的服务,RTU协议中的CRC校验码就不再需要,所以在Modbus TCP协

议中是没有CRC校验码的,所以就常用一句比较通俗的话来说:Modbus TCP协议就是Modbus RTU协议在前面加上五个0以及一个6,然后去掉两个CRC校验码

字节就OK。虽然这句话说得不是特别准确,但是也基本上把RTU与TCP之间的区别说得比较清楚了。

  Modbus的功能码有:

功能码 含义 功能码 含义
0x01 读线圈 0x04 读输入寄存器
0x05 写单个线圈 0x03 读保持寄存器
0x0F 写多个线圈 0x06 写单个保持寄存器
0x02 读离散量输入 0x10 写多个保持寄存器

 

 

 

 

一、Modbus RTU

  RTU协议中的指令由地址码(一个字节),功能码(一个字节),起始地址(两个字节),数据(N个字节),校验码(两个字节)五个部分组成。

数据由数据长度(两个字节,表示的是寄存器个数,假定为M)和数据正文(M乘以2个字节)组成。

发:01 03 01 8E 00 04 25 DE //读(0x03),从寄存器地址01 8E 开始读,读4个寄存器00 04

回:01 03 08 00 01 00 01 00 01 00 01 28 D7 // 08表示数据长度 ,00 01 00 01 00 01 00 01读到的数据

发:00 10 00 20 00 01 02 00 00 AC A0 // 写(0x10),从寄存器地址 00 20开始写,写一个寄存器 00 01,写入值 00 00

回:00 10 00 20 00 01 01 D2

二、Modbus TCP

  Modbus TCP协议是在RTU协议前面添加MBAP报文头,由于TCP是基于可靠连接的服务,RTU协议中的CRC校验码就不再需要,所以在Modbus TCP协议中是没有CRC校验码。

MBAP报文头:

事务处理标识 协议标识 长度 单元标识符
2字节 2字节 2字节 1字节

 

 

 

事务处理标识 可以理解为报文的序列号,一般每次通信之后就要加1以区别不同的通信数据报文
协议标识符 00 00表示ModbusTCP协议
长度 表示接下来的数据长度,单位为字节
单元标识符 可以理解为设备地址

 

 

 

 

发:00 00 00 00 00 06 00 03 00 20 00 01
回:00 00 00 00 00 05 00 03 02 00 00

发:00 00 00 00 00 06 00 04 00 30 00 01
回:00 00 00 00 00 05 00 04 02 00 08

发:00 00 00 00 00 09 00 10 00 20 00 01 02 00 00

回:00 00 00 00 00 06 00 10 00 20 00 01

三、总结(注:16进制发送)

1、读指令对比(0x04)

MBAP报文头 地址码 功能码 寄存器地址 寄存器数量 CRC校验
Modbus RTU 无 01 04 00 00 00 16 71 C4
Modbus TCP 00 00 00 00 00 06 01 04 00 00 00 16 无

 

 

 

2、写指令对比(0x10)

MBAP报文头 地址码 功能码 寄存器地址 寄存器数量 数据长度 正文 CRC校验
Modbus RTU 无 00 10 00 20 00 01 02 00 00 AC A0
Modbus TCP 00 00 00 00 00 09 00 10 00 20 00 01 02 00 00 无

 

 

 

 

Tags:Modbus,通信协议  
责任编辑:admin
  • 上一篇文章:
  • 下一篇文章: 没有了
  • 相关文章列表
    西门子plc S7-200SMART通过MODBUS通信控制变频器启停如何看电流频
    西门子plc梯形图编程实例 西门子200smart与电流表Modbus RTU通讯
    使用西门子plc的Modbus通讯 串口调试助手与S7-200SMART PLC从站通
    Modbus 调试助手的使用(一) Modsim32使用详解Modbus Poll
    【工具使用】Modsim32软件使用详解 串口调试软件
    什么是Modbus网关?modbus网关有什么作用?
    西门子S7-200PLC ModbusTCP通讯,ModScan32使用
    Modbus协议详解 科普Modbus通讯协议
    Modbus通讯简单测试—Modscan32使用简介
    Modbus Scan32模拟软件使用,Modscan32使用教程
    Modbus协议的数据模型和地址模型
    西门子PLC通信编程MODBUS通信梯形图实例编程 modbus地址扫描
    西门子plc Modbus 地址和 S7-200 存储区地址的映射,从站地址与S
    Modbus RTU 从站常见问题
    如何看懂Modbus数据帧?Modbus RTU数据帧格式
    Modbus协议中寄存器40001,30001是什么意思?
    MODBUS协议用03功能码为什么既能读又能写寄存器地址?
    梯形图实例 仪表与西门子PLC Modbus通讯实例称重仪表 指令MBUS_M
    西门子plc与modbus设备进485通信详解(modbus多机轮询)读取仪表
    手把手带你搞懂Modbus通信协议 报文格式详解
    寄存器PLC地址与寄存器modbus协议地址 三菱FX系列西门子s7系列pl
    Modbus协议基本知识 Modbus地址范围对应表
    Modbus-RTU协议解析
    MODBUS常用功能码学习及实例 modbus报文格式
    Modbus如何远距离传输? Modbus物联网
    Modbus和RS485的关系是什么?
    Modbus RS485接线方法  modbus接线方法 终端电阻
    MODBUS调试工具(modscan32)使用说明-MODBUS调试工具(modscan32)如
    RS-485终端电阻怎么接?485终端电阻接法解析
    modbus通讯 RS-485终端电阻的重要性
    请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
    1分 2分 3分 4分 5分

    还可以输入 200 个字
    [ 查看全部 ] 网友评论
    关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
    返回顶部
    刷新页面
    下到页底
    晶体管查询