ModBus通讯协议
Modbus是一种串行通信协议,通过此协议,控制器相互之间、控制器经由网路(如以太网)和其它设备之间可以通信。他已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
协议采用主从通信模式,典型的主设备包括现场仪表和显示面板,典型的从设备为可编程逻辑控制器(PLC)。
主要优点:内容公开、无版权要求、不用支付额外的费用、硬件简单、容易部署。
一、传输方式
1、协议数据单元
Protocol Data Unit,PDU,协议数据单元由功能码+数据结构构成,如下图:

协议数据单元
功能码长度——1字节,表示要执行的功能;
数据长度——0~252个字节,表示要读取的地址或要写入的值,不同的功能码对应的数据有所不同。
协议数据单元有三种类型:
请求型协议数据单元(Request PDU)
应答型协议数据单元(Response PDU)
异常应答型协议数据单元(Exception Response PDU)
协议数据单元是Modbus协议通用数据结构,它与底层物理结构无关。但通信时,需要依赖与物理网络。因此要把协议数据单元映射到物理网络上,这就形成了应用数据单元(Application Data Unit,ADU)。由于底层网络的不同,ASCII与RTU应用数据单元结构与TCP应用数据单元的结构不同。

ASCII与RTU应用数据单元结构
TCP应用数据单元结构如下:

TCP应用数据单元结构
TCP应用数据单元在协议数据单元的基础上,添加了一个叫“MBAP”头的结构,即“ModBus Application”应用数据单元。

MBAP头结构
其中:
传输标识符:用于标识应用数据单元,即请求和应答之间的配对;客户端对该部分进行初始化,服务端将其拷贝到自己的ADU中;
协议标识符:系统间的协议标识,0==Modbus;
长度:接下来要发送的数据长度,即:单元标识符+PDU的总长度,以字节位单位;
单元标识符:用于系统间的站寻址,比如在以太网+串行链路中,远程站的地址;
2、协议类型
Modbus协议包括ASCII、RTU、TCP,并没有规定物理层。此协议定义了控制器能够识别和使用的消息结构,而不管它是经过何种网络进行通信的。
Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和应答的方式,数据通讯采用Master/Slave模式,Master端发出数据请求消息,Slave端接收到正确消息后发送数据到Master端以响应请求;Master端可以直接发送消息修改Slave端的数据,实现双向读写。
Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是面向连接的可靠协议。
Modbus采用主从方式收发数据,在实际使用中如果某个Slave站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动连接。因此,Modbus协议的可靠性较好。
TCP和RTU协议非常类似,只要把RTU协议的两个字节的校验码去掉,然后再RTU协议的开始加上五个0和一个6并通过TCP/IP网络协议发送储区即可。

3、ASCII
异步串行通信,主要基于RS485串口通信媒介,消息中的每个8bit字节都作为两个ASCII码发送,可以做到字符发生的时间间隔长达1秒而不产生错误。

使用ASCII模式,消息以冒号(:)字符(ASCII码 3AH)开始,以回车换行符结束(ASCII码 0DH,0AH)。

其它域可以使用的传输字符是十六进制的0…9,A…F。网络上的设备不断侦测“:”字符,当有一个冒号接收到时,每个设备都解码下个域(地址域)来判断是否发给自己的。
在该模式下,每个8位的字节被拆分成两个ASCII字符进行发送,比如发送0xAF(10101111),会分解成“A”(0x41,01000001)和“F”(0x46,01000110)两个字符,其发送量是RTU的一倍。

ASCII码对照表一

ASCII码对照表二
LRC校验
LRC域是一个包含一个8位的二进制字节。LRC由传输端计数并置于消息帧中,接收端在接收数据中计算LRC,并将结果与消息帧中的LRC进行校验,若出现差异,这说明有误。
LRC计算方式
将消息帧中开始处的“冒号”和结尾的“回车”、“换行”移除,其余的字符按字节叠加后取反加一。
4、RTU

Modbus-RTU是一种主从通信模式,

ASCII协议与RTU协议进行比较

二、数据模型
数据模型是对可访问数据的一种抽象,Modbus协议的数据模型定义了四种可访问的数据,分别是:
离散量输入(Discrete Input)
线圈(Coils)
输入寄存器(Input registers)
保持寄存器(Holding registers)


Modbus协议数据模型
Modebus协议允许设备将四种数据分别映射到不同的存储区中,各个区块之间相互独立,使用不同的功能码可以读取到相应的数值,如下图:

Modbus数据模型映射到不同的存储区块
协议也允许设备将四种数据映射到用以存储区块中,这样通过不同的功能码读取数据可能会得到相同的数据(比如:输入寄存器和保持寄存器位同一物理区块),如下图:

Modbus数据模型映射到同一区块
数据模型中的数据最大允许有65596个元素,编号从1开始:165536,元素地址从0开始:065535。
需要说明的是:65536只是协议允许的最大元素范围,但并不要求全部实现。Modbus协议允许设备根据自己的实际情况实现部分元素,甚至不要求实现模型中全部四种数据。
三、地址模式
为了简化数据模型与设备存储区的对应关系,引入了一种地址模型,该模型通过编号的方式对不同类型数据进行区分呢个,各数据的地址编号如下:

Modbus地址模型
Modbus地址模型的编号从1开始,由于每种数据都最大支持65536个元素,因此理论上,
线圈型数据,其地址范围为:000001~065536;
离散型输入,其地址范围为:100001~165536;
输入寄存器,其地址范围为:300001~365536;
存储寄存器,其地址范围为:400001~465536;
由于65536是比较大的数值,实际应用一般不需要过大的存储区,因此PLC厂家普遍采用的是10000以内的地址范围,即:
线圈型数据,其地址范围为:00001~09999;
离散型输入,其地址范围为:10001~19999;
输入寄存器,其地址范围为:30001~39999;
存储寄存器,其地址范围为:40001~49999;
各PLC厂家根据PLC的实际情况,将Modbus的地址模型映射到实际的存储区。一般来说:
线圈——过程输出印象区(Q)
离散量输入——过程输入印象区(I)
输入寄存器——模拟量输入(AI)
保持寄存器——数据块或V存储区或M存储区。
以西门子S7-200 SMART为例:

Modbus地址模型对于RUT、ASCII和TCP都适用。
四、功能码表

Modbus功能码表一

Modbus功能码表二

Modbus规约简介相关推荐

  1. Modbus 协议简介

     一.Modbus 协议简介 Modbus 协议是应用于电子控制器上的一种通用语言.通过此协议,控制器相互之间.控制器经由网络(例如以太网)和其它设备之间可以通信.它已经成为一通用工业标准.有了它 ...

  2. Modbus协议简介

    Modbus协议简介 由于最近要参加一个通信相关的项目,涉及到Modbus协议,因此在这里做以下整理和总结. Modbus是一种串行通信协议,是Modicon公司(现为施耐德电气公司的一个品牌)于19 ...

  3. java modbus 规约_Modbus RTU的规约详细资料详解

    Modbus可编程控制器之间可相互通讯,也可与不同网络上的其他设备进行通讯,支撑网络有Modicon的Modbus和Modbus+工业网络.网络信息存取可由控制器内置的端口,网络适配器以及Modico ...

  4. Modbus RTU简介(上)

    1 前言 1.1 什麽是Modbus Modbus是一种用于工业控制的标准通信协议,它定义了装置之间在应用层的消息封装模式.沟通方法.沟通顺序. Modbus的优势 : Modbus协议是开源免费的 ...

  5. 电力-RTU终端ModBus规约(C程序)

    目录: 一.Modbus slave和Modbus poll使用说明 二.Modbus协议C程序样例 ------------------------------------------------- ...

  6. modbus的c语言程序,电力-RTU终端MODBUS规约(C程序)

    目录: 一.Modbus slave和Modbus poll使用说明 二.Modbus协议C程序样例 ------------------------------------------------- ...

  7. Modbus通讯协议简介

    Modbus协议简介 Modbus协议最初由Modicon公司开发出来,此协议支持传统的RS-232.RS-422.RS-485和以太网设备,许多工业设备,包括PLC,DCS,智能仪表等都在使用Mod ...

  8. 【Modbus 】Modbus 协议

    Modbus 协议简介 Modbus协议是一项应用层报文传输协议,包括ASCII.RTU.TCP三种报文类型. 标准的Modbus协议物理层接口有RS232.RS422.RS485和以太网接口,采用m ...

  9. MODBUS-RTU通讯协议简介

    MODBUS-RTU通讯协议简介 什么是MODBUS? MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司 的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规约进 ...

最新文章

  1. RabbitMQ的Work模式
  2. Objective-C 注释规范心得
  3. oracle控制文件全备失败,Oracle数据库案例整理-恢复数据库失败-主备机控制文件所在目录不同...
  4. iOS 关于NSString的一些方法
  5. css 列表属性详细总结
  6. 普元BPS:唯一零错误的流程平台
  7. 常用排序算法(三)直接插入排序
  8. 还在纠结报表工具选型吗
  9. 【模板一】计算机XXXX系统-毕业设计
  10. 农历日期用html怎么显示,怎么显示阴历(农历)日期的js代码?
  11. 公司财务分析——收益性分析
  12. 卫星影像去雾与色彩复原
  13. 数据结构之不相交集类
  14. 无人机航测技术的优势有哪些?
  15. 什么是XSL,它有什么用途
  16. 动作捕捉系统用于苹果采摘机器人
  17. html怎么设置黄色背景,怎么添加黄色底纹
  18. 鸿蒙电视投屏软件,鸿蒙打造 未来电视就这样!荣耀智慧屏 PRO 深度评测
  19. python打不开xls文件,wps下用vba实现合并文件夹中所有excel文件
  20. 安徽宿松2021高考成绩查询,2021安庆高考成绩查询入口

热门文章

  1. Unity发布Android平台错误记录
  2. 安防算法及整体解决方案公司
  3. 这真的是Cookie吗?
  4. 【VBA研究】数组的定义和使用
  5. HTML表格中包多个CApTion,Html中的table包括 caption、col、colgroup、thead、tfoot 以及 tbody...
  6. 使用MaixPy IDE开发K210
  7. Android与PHP服务器交互
  8. 美团2021校招 技术综合-后台方向-编程题随笔
  9. Twisted高级话题的学习
  10. android判断应用是否存在,Android判断应用或Activity是否存在