文章目录

  • Modbus技术背景
  • Modbus OSI分布
  • Moudbus分类
  • 通讯过程
  • Moudbus协议
  • 通信过程以及报文解析
  • RTU 与 ASCII 收发数据区别

Modbus技术背景

Modbus是一种串行通信协议。
1971年,Modicon公司首次退出Modbus协议,ModbusRTU和Modbus ASCII诞生于此。
后来施耐德电气(SchneiderElectric)收购了Modicon公司,并在1997年推出了ModbusTCP协议。2004年,中国国家标准委员会正式把Modbus作为了国家标准。
Modbus成为工业领域通信协议的业界标准,并且现在是工业电子设备之间常用的连接方式。


Modbus OSI分布

Moudbus工作在osi的应用层、数据链路层、物理层


Moudbus分类

Moudbus-RTU、Moudbus-ASCII、Moudbus-TCP

ModbusRTU和ModbusASCII主要用于串行通信领域。
ModbusTCP则常用于以太网通信。
Moudbus规定Moudbus-RTU是设备必须支持的协议也是默认选项。


通讯过程

Modbus是主从方式通讯,不能同步进行通信,总线上每次只有一个数据进行传输。
主机发送,从机应答,主机不发送,总线上就没有数据通讯。
MODBUS 协议允许在各种网络体系结构内进行简单通信。

每种设备(PLC、HMI、控制面板、驱动程序、动作控制、输入/输出设备)都能使用 MODBUS协议来启动远程操作。


Moudbus协议

Modbus使用一种简单的MasterandSlave主从协议(客户机/服务器协议)进行通信。客户机作为主站,向服务器发送请求;服务器(从站)接到请求后,对请求进行分析并作出应答。
其中使用的通信帧被称为应用数据单元(Application Data Unit,ADU),它包括通信地址段、功能代码段、数据段和校验段。

通讯格式:Address(8 bit)+ Function(8 bit)+ Data(N x 8 bit)+ CRC check(16 bit)

通讯地址
占用一个字节(8bit) 通信地址,范围0-255。其中有效范围是1-247。

0 1-247 248-255
广播地址 子节点单独地址 保留

一般0地址为主机,1-247地址为从机地址。

功能码
MODBUS 功能码分为三类:公共功能码、用户定义功能码、保留功能码

公共功能码定义

占用一个字节,不同功能码对应不同功能。常用功能码:

功能码 功能含义 寄存器地址
01 读单个或多个位状态 00001-09999
05 写单个位状态 00001-09999
15 写多个位状态 00001-09999
03 读单个或多个寄存器 40001-49999
06 写单个寄存器 40001-49999
16 写多个寄存器 40001-49999

数据:根据功能码不同,有不同结构

CRC check
CRC校验:CRC-16 低位在前,高位在后。为了保证数据不错误,增加这个,然后再把前面的数据进行计算看数据是否一致。

MODBUS 使用一个‘big-Endian’ 表示地址和数据项。这意味着当发射多个字节时,首先发送最高有效位。例如:寄存器大小
值16 – 比特 0x1234 发送的第一字节为 0x12 然后 0x34

通信过程以及报文解析

发送: 从机的地址+我要干嘛的功能码+我要查的寄存器的地址+我要查的寄存器地址的个数+校验码
回复: 从机的地址+主机发我的功能码+要发送给主机数据的字节数+数据+校验码

查询报文解析
主机发送: 01 03 00 00 00 01 84 0A
从机回复: 01 03 02 19 98 B2 7E

主机发送报文解析:

01-地址,也就是你传感器的地址
03-功功能码,03代表查询功能,查询传感器的数据
00 00-代表查询的起始寄存器地址.说明从0x0000开始查询。这里需要说明以下,Modbus把数据存放在寄存器中,通过查询寄存器来得到不同变量的值,一个寄存器地址对应2字节数据
00 01-代表查询了一个寄存器.结合前面的00 00,意思就是查询从0开始的1个寄存器值
84 0A-循环冗余校验,是modbus的校验公式,从首个字节开始到84前面为止;

从机回复报文解析:

01-地址,也就是你传感器的地址
03-功功能码,03代表查询功能,查询传感器的数据。这里要注意的是注意发给从机的功能码是啥,从机就要回复同样的功能码,如果不一样说明这一帧数据有错误
02-代表后面数据的字节数,因为上面说到,一个寄存器有2个字节,所以后面的字节数肯定是2*查询的寄存器个数;
19 98-寄存器的值是19 98,结合发送的数据看出,01这个寄存器的值为19 98
B2 7E-循环冗余校验

修改功能报文解析
主机发送: 01 06 00 00 00 01 48 0A
从机回复: 01 06 00 00 00 01 48 0A

主机发送报文解析:

01-主机要查询的从机地址
06-功能码,06代表修改单个寄存器功能,修改有些不同,有修改一个寄存器和修改多个寄存器;
00 00-代表修改的起始寄存器地址.说明从0x0000开始.
00 01-代表修改的值为00 01.结合前面的00 00,意思就是修改0号寄存器值为00 01;
48 0A-循环冗余校验,是modbus的校验公式,从首个字节开始到48前面为止;

从机回复报文解析:

01-从机返回给主机自己的地址,说明这就是主机查的从机
06-功能码,代表修改单个寄存器功能,主机发啥功能码,从机就必须回什么功能码;
00 00-代表修改的起始寄存器地址.说明是0x0000.
00 01-代表修改的值为00 01.结合前面的00 00,意思就是修改0号寄存器值为00 01;
48 0A-循环冗余校验,是modbus的校验公式,从首个字节开始到48前面为止;


RTU 与 ASCII 收发数据区别

1、发送数值方式不同
用RTU方式,也叫16进制方式,要发0x03数据,RTU方式就发送00000011。
用ASCII发送0x03,就要发送0的ASCII码0x30和3的ASCII码0x33,对应到2进制也就是发送00110000和00110011。

2、发送时序位数不同
RTU方式只需要发送8位就可以了(加上起始位和停止位就是10位数据)。
ASCII码方式发送就需要两个8位(每个8位分别加上起始位和停止位就是20位数据)。

因此ASCII码发送数据量是RTU方式的2倍,所以ASCII码效率更低。但是ASCII更符合串口打印查看,因为串口发送的数据一般都是文本模式(ASCII 可见字符是从32—126)。而采用RTU方式(16进制发送)会出现乱码,如果是串口助手的话就会显示□□□□。

总线(四)Modbus总线 协议相关推荐

  1. CAN总线和Modbus总线,该如何选择

    关键词:CAN总线 现场总线 Modbus 实时性 摘要:CAN总线和Modbus总线是工控领域常用的两种现场总线,简单的说哪个好哪个不好是没有意义的,要根据不同的应用场景来做选择.CAN总线是无主结 ...

  2. modbus总线协议(一)modbus rtu

    一.介绍 Modbus协议由Modicon公司开发出来,现在Modbus是工业领域全球最流行的协议 硬件支持RS-232.RS-422.RS-485和以太网设备. 应用在PLC,DCS,智能仪表等工控 ...

  3. modbus总线协议(三)modbus tcp

    一.介绍 modbus tcp是用于以太网的数据帧,比如和用网口和plc通信的时候就可以选择用modbus tcp. 二.modbus tcp协议详解 1.模式 和rtu一样,master和slave ...

  4. RS-485总线和Modbus通信协议的关系

    一.RS-485总线 RS-485总线技术只是规定了接口的电气标准,并没有规定RS-485接口的电缆,插件以及通信协议,只是OSI规范中物理层的一个标准,RS-485总线采用差分平衡传输方式.由于RS ...

  5. profibus DP 总线 profibus PA 总线 modbus 总线 有何区别

    profibus DP 总线 profibus PA 总线 modbus 总线 有何区别    PROFBUS是一种国际性的开放式的现场总线标准,它既可以用于高速并且对于时间苛求的数据传输,也可以用于 ...

  6. Simulink仿真 第四节 总线及示波器模块

    第四节 总线及示波器模块 1.总线模块 模块功能: (1)总线创建器块将一组信号组合成一条总线.要将一组信号与总线创建器块捆绑在一起,请将块参数Number of Input设置为该组中的信号数.该块 ...

  7. 计算机组成原理 第四版 总线的主模块 总线的从模块,唐朔飞计算机组成原理课件3.ppt...

    唐朔飞计算机组成原理课件3.ppt (15页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 15.9 积分 第三章 系统总线3.1 总线的基本概念3.2 总 ...

  8. 片上总线Wishbone 学习(七)总线周期之握手协议

    转自http://blog.csdn.net/ce123_zhouwei/article/details/6933756 片上总线Wishbone 学习(七)总线周期之握手协议 由于在整个总线周期,C ...

  9. 计算机组成原理 第四版 总线的主模块 总线的从模块,总线的基本概念

    总线和总线上信息传输的特点: 总线是连接多个部件的信息传输线,是各个部件共享的传输介质,而且在某一个时刻,只允许一个部件,想总线发送消息,但是多个部件,可以同时从总线上接受相同的消息. 总线的传输周期 ...

  10. AXI接口协议详解-AXI总线、接口、协议

    转自:https://cloud.tencent.com/developer/article/1695010 AXI接口协议详解-AXI总线.接口.协议 AXI 总线 上面介绍了AMBA总线中的两种, ...

最新文章

  1. 所有各数据库或文件的连接串定义CHM文件.
  2. 用Machin公式计算圆周率的源程序
  3. my25_Mysql操作技巧汇总
  4. 测试ModelAttribute注解
  5. php加水印功能,PHP图片加水印功能
  6. 下面由我来给大家表演个绝活
  7. Java中文件的创建
  8. mysql yum多实例_mysql———基于yum源实现多实例
  9. 爱情六十三课,定个开放日
  10. Android开发学习之快速实现圆角ListView
  11. java类的扩展注意
  12. 深入理解ext2文件系统
  13. EC Final 2019 题解
  14. 恒力弹簧设计及寿命预测
  15. 上海交通大学考研网络安全专业823复习策略
  16. 前台、中台、后台到底是什么?
  17. Android桌面插件的开发
  18. [渝粤教育] 泰州学院 信息技术基础 参考 资料
  19. R语言使用order函数对dataframe数据进行排序、基于单个字段(变量)进行降序排序(DESCENDING)
  20. CBOW与Skip-Gram

热门文章

  1. RabbitMQ应用案例
  2. JAVA-ApplicationContext的使用
  3. JMSMQ系列之JMS的请求和回应
  4. 浅谈Xen和半虚拟化技术
  5. 从网络安装debian到使用中遇到的问题
  6. Qt去除libpng warning: iCCP: known incorrect sRGB profile
  7. SQL中的Exists 用法解释
  8. 最新WIN10 64位21H2正式版19044.2006
  9. Git版本控制管理——钩子
  10. mysql inet aton ipv6_mysql 使用inet_aton和inet_ntoa处理ip地址数据