目录

1、串行链路通信简介

2、串行链路通信协议原理

3、串行链路通信帧描述

4、RTU、ASCII串行传输模式

4.1、RTU传输模式

4.2、ASCII传输模式


1、串行链路通信简介

Modbus协议标准定义了 OSI 模型第 7 层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。它还将串行链路上的协议标准化,以便在一个主站和一个或多 个从站之间交换 Modbus 请求。 本博文的目的是表述串行链路上的 Modbus 协议,实现设备之间的互通。

Modbus 串行链路协议是一个主/从协议,该协议位于 OSI 模型的第二层,主/从协议系统:有一个向某个“子”节点发出显式命令并处理响应的节点(主节点)。典型的子节点在没有收到主节点的请求时并不主动发送数据,也不与其它子节点通信。Modbus 协议和 ISO/OSI 模型如下图所示:

在物理层,Modbus 串行链路系统可以使用不同的硬件物理接口(RS485、RS232)。最常用的是TIA/EIA-485 (RS485) 两线制接口。作为附加的选项,也可以实现 RS485 四线制接口。当只需要短距离的点到点通信时,TIA/EIA-232-E (RS232) 串行接口也可以使用。

2、串行链路通信协议原理

Modbus串行链路协议是一个主/从协议。 在同一时刻,只有一个主节点连接于总线,一个或多个子节点 (最大编号为 247 ) 连接于同一个串行总线。Modbus 通信总是由主节点发起,子节点在没 有收到来自主节点的请求时,从不会发送数据。子节点之间从不会互相通信。主节点在同一时刻只会发起一个 Modbus 事务处理。

主节点有两种模式对子节点发出 Modbus 请求,一种是单播模式,另一种是广播模式。

单播模式主节点以特定地址访问某个子节点,子节点接到并处理完请求后,子节点向主节点返回一个报文(一个 '应答')。 在这种模式, 一个 Modbus 事务处理包含 2 个报文: 一个来自主节点的请求, 一个来自子节点的应答。 每个子节点必须有唯一的地址 (1 到 247),这样才能区别于其它节点被独立的寻址。如下图所示:

广播模式主节点向所有的子节点发送请求,对于主节点广播的请求没有应答返回。,广播请求一般用于写命令,有设备必须接受广播模式的写功能,地址 0 是专门用于表示广播数据的。如下图所示:

Modbus寻址空间有 256 个不同地址,地址 0 保留为广播地址, 所有的子节点必须识别广播地址。 Modbus主节点没有地址, 只有子节点必须有一个地址。 该地址必须在 Modbus 串行总线上唯一。地址规则如下所示:

3、串行链路通信帧描述

串行链路上的 Modbus结构必须符合通用Modbus帧协议要求,具体如下所示:

具体解析如下所示:

  • 地址域:在 Modbus串行链路,地址域只含有子节点地址。合法的子节点地址为十进制 0 – 247。 每个子设备被赋予 1 – 247 范围中的地址。主节点通过将子节点的地址放到报文的地址域对子节点寻址。当子节点返回应答时, 它将自己的地 址放到应答报文的地址域以让主节点知道哪个子节点在回答;
  • 功能码:功能码指明服务器要执行的动作。功能码后面可跟有表示含有请求和响应参数的数据域;
  • 数据:收、发数据信息;
  • 校验:错误检验域是对报文内容执行 "冗余校验" 的计算结果,通常用CRC或者LRC校验,根据不同的传输模式 (RTU or ASCII)使用两种不同的计算方法。

4、RTU、ASCII串行传输模式

Modbus串行链路传输数据有两种模式,RTU 模式和 ASCII模式,定义了报文域的位内容在线路上串行的传送,确定了信息如何打包为报文和解码,Modbus上所有设备的传输模式 (和串行口参数) 必须相同方可实现正常通信。

4.1、RTU传输模式

当设备使用 RTU (Remote Terminal Unit) 模式在 Modbus 串行链路通信, 报文中每个 8 位字节含有两个 4 位十六进制字符。这种模式的主要优点是较高的数据密度,在相同的波特率下比 ASCII 模式有更高的吞吐率,每个报文必须以连续的字符流传送。

RTU 模式每个字节 ( 11 ) 的格式如下所示:

编码系统: 8–位二进制报文中每个8位字节含有两个 4 位十六进制字符(0–9, A–F)Bits per Byte:  1 起始位8 数据位, 首先发送最低有效位1 位作为奇偶校验1 停止位

为了保证与其它产品的最大兼容性,默认RTU校验模式必须为偶校验,每个字符或字节均从左到右顺序发送,由发送设备将 Modbus 报文构造为带有已知起始和结束标记的帧。这使设备可以在报文的开始接收 新帧,并且知道何时报文结束。不完整的报文必须能够被检测到而错误标志必须作为结果被设置。 在 RTU 模式,报文帧由时长至少为 3.5 个字符时间的空闲间隔区分。在后续的部分,这个时间区间被称作 t3.5。RTC报文帧如下所示:

整个报文帧必须以连续的字符流发送,如果两个字符之间的空闲间隔大于 1.5 个字符时间,则报文帧被认为不完整应该被接收节点丢弃。

4.2、ASCII传输模式

当 Modbus 串行链路的设备被配置为使用 ASCII (American Standard Code for Information Interchange) 模式通信时, 报文中的每个 8 位子节以两个 ASCII 字符发送,当通信链路或者设备无法符合 RTU 模式的定时管理时使用该模式,只不过由于一个子节需要两个字符,此模式比 RTU 效率低。例 : 数值 0X5B 会被编码为两个字符 : 0x35 和 0x42 ( ASCII 编码 0x35 ="5", 0x42 ="B" )。

ASCII 模式每个字节 ( 10 ) 的格式如下所示:

编码系统: 十六进制,ASCII 字符 0-9, A-F报文中每个 ASCII 字符含有 1 个十六进制字符Bits per Byte:  1 起始位7 数据位, 首先发送最低有效位1 位作为奇偶校验1 停止位

为了保证与其它产品的最大兼容性,默认ASCII校验模式必须为偶校验,每个字符或字节均从左到右顺序发送,由发送设备将 Modbus 报文构造为带有已知起始和结束标记的帧。这使设备可以在报文的开始 接收新帧,并且知道何时报文结束。不完整的报文必须能够被检测到而错误标志必须作为结果被设置。报文帧的地址域含有两个字符,在 ASCII 模式, 报文用特殊的字符区分帧起始和帧结束。一个报文必须以一个冒号 ( : ) (ASCII 十六进制 3A )起始,以 回车-换行 (CR LF) 对 (ASCII 十六进制 0D 和 0A) 结束。对于所有的域,允许传送的字符为十六进制 0–9, A–F (ASCII 编码)。 设备连续的监视总线 上的 ‘冒号’ 字符。 当收到这个字符后,每个设备解码后续的字符一直到帧结束。 报文中字符间的时间间隔可以达一秒。如果有更大的间隔,则接受设备认为发生了错误。ASCII 报文帧如下图所示:

Modbus协议在串行链路上的实现相关推荐

  1. MODBUS-RTU串行链路通信协议及测试方法

    1 前言 MODBUS是一项应用层报文传输协议,是一个请求/应答协议,提供功能码规定的服务,用于在通过不同类型的总线或网络连接的设备之间的客户机/服务器通信.Modbus 串行链路系统可以使用异步串行 ...

  2. 通信协议-GMSL(千兆多媒体串行链路)

    首先,了解一下什么是GMSL GMSL(Gigabit Multimedia Serial Links),中文名称为千兆多媒体串行链路,是Maxim公司推出的一种高速串行接口,适用于音频,视频和控制信 ...

  3. Modus串行链路系统电气特性:2线-Modus、4线-Modus、RS232-Modus和RS485-Modus的特性

    目录 1.2线-Modus 2.4线-Modus 3.4线-Modus和2线-Modus的兼容性 4.RS232-Modus 5.RS485-Modus 一个Modus多点串行链路系统是由主电缆(主干 ...

  4. max9286 四合一_硅天下吉比特多媒体串行链路(GMSL)解串器MAX9286详细信息_产品参数_价格_联系方式_DAV数字音视工程网...

    MAX9286吉比特多媒体串行链路(GMSL)解串器接收多达四个GMSL串行器的数据,采用50Ω同轴电缆或100Ω屏蔽双绞线(STP)电缆,通过四个CSI-2通道输出数据.每条串行链路具有嵌入式控制通 ...

  5. 路由器重温——串行链路链路层协议积累-帧中继FR协议

    在串口链路中link-protocol还可以配置成fr,即使用帧中继,现在对帧中继进行学习. 帧中继技术是在数据链路层用简化的方法传送和交换数据单元的快速分组交换技术.帧中继技术是在分组交换技术充分发 ...

  6. 嵌入式硬件协议: SPI串行外设接口 Serial Peripheral Interface

    简介 SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是 一种高速全双工的通信总线.它被广泛地使用在ADC.LCD 等设备与M ...

  7. 硬件通讯协议:串行通讯、IPMI、IPMB、SMbus、NCSI等

    串行通讯和串口的关系 串行是指在数字电路或通信中,数据位按照一定的顺序逐个传输的方式.在串行传输中,每个数据位都是依次传输的,而不是同时传输的.相对于并行传输,串行传输需要更长的传输时间,但是可以使用 ...

  8. 工控安全-Modbus协议

    文章目录 一.什么是Modbus协议 二.Modbus通信过程 三.Modbus存储区 四.Modbus协议类型 4.1 Modbus RTU协议 4.1.1 Modbus报文帧结构 4.1.2 主机 ...

  9. Modbus 协议基础

    目录 Modbus协议的由来 Modbus协议的发展 Modbus协议在中国 Modbus协议的由来 Mod,取自英文单词" Modicon",Modicon 中文翻译为莫迪康,是 ...

最新文章

  1. 21、HTML <select>标签(下拉列表)
  2. python语言中整数1010的二进制表示_爱校码 - Python 语言基础二
  3. 以太坊源码分析-交易
  4. web.config总结
  5. 一个静态库框架模板: iOS Universal Framework Mk 7
  6. 后台设置 datakeynames
  7. Spring和JSF集成:动态导航
  8. 做了6年的Java,mysql配置环境变量mac
  9. 爆笑~~偶和老公滴愚人笑话~~~
  10. open_flash_chat
  11. 前端学习/资源/工具网站
  12. espcms简约版的表单,提示页,搜索列表页
  13. How to Create Your Own HDR Environment Maps
  14. 5步完成物联网小程序开发
  15. RecyclerView 实现横向滚动效果
  16. 长沙好吃的地方?这个好吃的地方你可能真的没来过
  17. EasyRTMP Android安卓手机直播推流摄像头偏暗的问题解决
  18. 使用conda卸载pytorch_centos下通过conda安装pytorch
  19. 基础篇. ARM架构和处理器(3)
  20. 线程同步与相互排斥:相互排斥锁

热门文章

  1. 时间和邮箱的正则表达式,获取当前时间函数
  2. css position属性
  3. android app 内置图标icon 的标准,(目前是2019年)
  4. inux 软件编译、安装、删除
  5. module.exports 和 export default
  6. 调用管道模型:高敏感、高性能
  7. git服务器搭建问题
  8. CCF-201612-3 -权限查询
  9. 下载MySQL数据库
  10. maven工程出现java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener...