0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MODBUS RTU传输模式介绍

CHANBAEK 来源:菱沃铂智能技术 作者:菱沃铂智能技术 2023-07-19 15:58 次阅读

上期我们学习了,第一篇MODBUS协议基本介绍,今天我们来研究第二篇MODBUS RTU传输模式介绍。

第二篇 MODBUS RTU传输模式介绍

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

RTU模式每个字节(11位)的格式

  1. 编码系统:8 位二进制,报文中每个 8 位字节含有两个 4 位十六进制字符(0-9,A-F)。
  2. 每字节 bit 流:1 起始位、8 数据位,首先发送最低有效位、1 位奇偶检验、1 停止位。

偶校验是要求的,其它模式(奇校验、无校验)也可以使用,为了保证兼容性,同时支持无校验模式是建议的。默认校验模式必须为偶校验。

字符如何串行传送:

每个字符或字节均由此顺序发送(从左到右),最低有效位(LSB)…最高有效位(MSB)。

image.png

RTU模式位序列

设备配置为奇校验、偶校验或无校验都可以接受,如果无奇偶校验,就传送一个附加的停止位以填充字符帧。

image.png

RTU模式位序列(无校验的特殊情况)

帧检验域: 循环冗余检验(CRC)。

帧描述:

image.png

RTU报文帧

Modbus报文RTU帧

由发送设备将 Modbus 报文构造为带有已知起始和结束标记的帧。这使设备可以在报文的开始接收新帧,并且知道何时报文结束。不完整的报文必须能够被检测到,而错误标志必须作为结果被设置。

在 RTU 模式中,报文帧由时长至少为 3.5 个字符时间的空闲间隔区分。在后续部分,这个时间区间被称为 t3.5。

图片整个报文帧必须以连续的字符流发送。

如果两个字符直接的空闲间隔大于 1.5 个字符时间,则报文被认为不完整应该被接收设备丢弃,如图:

图片

非正常报文帧

注:RTU 接受驱动程序的实现,由于 t1.5 和 t3.5 的定时,隐含了大量的对中断的管理。在高速通信速率下,这导致 CPU 负担加重。因此,在通信速率等于或低于 19200bps 时,这两个定时必须严格遵守;对于波特率大于 19200bps 的情形,应该使用 2 个定时的固定值:建议的字符间超时时间(t1.5)位 750us,帧间的超时时间(t1.5)位 1.750ms。

下图表示了对 RTU 传输模式状态图的描述。“主设备”和“从设备”的不同角度均在相同的图中表示:

图片

1.从“初始”态到“空闲”态转换需要 t3.5 定时超时:这保证帧间延迟。

2.“空闲”态是没有发送和接收报文要处理的正常状态。

3.在 RTU 模式,当没有活动的传输的实际间隔打达 3.5 个字符长时,通信链路被认为在“空闲”态。

4.在链路空闲时,在链路上检测到的任何传输的字符都被识别为帧起始。链路变为“活动”状态。然后,当链路上没有字符传输的时间间隔达到 t3.5 后,被识别为帧结束。

5.检测到帧结束后,完成 CRC 计算和校验。然后,分析地址域以确定帧是否发往此设备,如果不是,则丢弃此帧。为了减少接收处理时间,地址域可以在一接到就分析,而不需要等到整个帧结束。这样,CRC 计算只需要在帧寻址到该节点(包括广播帧)时进行。

CRC计算

在 RTU 模式包含一个对全部报文内容执行的,基于循环冗余校验(CRC-Cyclical Redundancy Checking)算法的错误检验域。CRC域检验整个报文的内容。不管报文有无奇偶校验,均执行此检验。

CRC 包含由两个 8 位字节组成的一个 16 位值。

CRC 域作为报文的最后的域附加在报文之后。计算后,首先附加低字节。然后是高字节。CRC 高字节为报文发送的最后一个字节。

附加在报文后面的 CRC 的值由发送设备计算。接收设备在接收报文时重新计算 CRC 的值,并将计算结果于实际接收到的 CRC 值相比较,如果两个值不相等,则为错误。

CRC 的计算,开始对一个 16位寄存器预装全“1”,然后将报文中连续的 8位字节对其进行后续的计算。只有字符中的 8 个数据位参与到生成 CRC 的运算,起始位、停止位和校验位不参与 CRC 计算。

CRC 生成的过程中,每个 8 位字符与寄存器中的值异或,然后结果向最低有效位(LSB)方向移动 1 位,而最高有效位(MSB)置 0.然后提取并检查 LSB:如果LSB 为 1,则寄存器中的值与一个固定的预置值异或;如果LSB 为 0,则不进行异或操作。

这个过程将重复直到执行完 8 次移位,完成最后一次(第八次)移位及相关操作后,下一个 8 位字节与寄存器的当前值异或,然后又同上面描述过的一样重复 8 次。当所有报文中字节都预算之后得到的寄存器中的最终值,就是 CRC。

简单代码如下:

image.png

image.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 二进制
    +关注

    关注

    2

    文章

    792

    浏览量

    41592
  • MODBUS
    +关注

    关注

    28

    文章

    1759

    浏览量

    76820
  • ASCII
    +关注

    关注

    5

    文章

    172

    浏览量

    35040
  • RTU
    RTU
    +关注

    关注

    0

    文章

    404

    浏览量

    28617
  • 传输模式
    +关注

    关注

    0

    文章

    9

    浏览量

    7008
收藏 人收藏

    评论

    相关推荐

    STM32L431RC通过命令切换到MODBUS/RTU模式,为什么RTU模式的CMF中断一直在工作?

    我使用的芯片是STM32L431RC,用USART2和上位机通信。默认使用MODBUS/ASCII模式,CMF字符匹配中断工作没有问题。现在需要通过命令切换到MODBUS/RTU
    发表于 03-27 06:01

    Modbus TCP转Modbus RTU的实现

    。串行链路的Modbus分为ASCII和RTU,其中RTU传输效率高,用得比较多。所以这里基本上以Modbus
    发表于 08-10 10:04

    基于Modbus RTU的串口调试软件的实现

    摘 要:文中介绍Modbus RTU通讯协议的特点,阐述了该协议在VC2005编程环境下串口调试软件的具体实现方法。并编制了相关的程序,该程序采用了模块化思想,结构清晰,操作简便,实现了良好
    发表于 12-18 19:18

    Labview Modbus RTU编写心得

    由于近期编写了一个小型的温控,其通讯基于Modbus RTU模式,所以浅谈下这次编写过程中,遇到的问题和解决方法。
    发表于 05-06 18:27

    modbus三种通讯方式的字符介绍

    两个字符之间发送或者接收的时间间隔不能超过1.5倍 字符传输时间。如果两个字符时间间隔超过了3.5倍的字符传输时间,规约就认为一帧数据已经接收,新的一帧数据传输开始。RTU
    发表于 04-27 06:00

    Modbus-RTU协议模式学习下载

    、ASCII、TCP三种模式,其中RTU模式(即Modbus-RTU)最常用。3.协议定义: 所谓协议,就是互相之间的约定。如果不让别人知道那就是暗号。4.协议定义...
    发表于 07-02 06:12

    Modbus_RTU的通讯方式是什么

    是ZNZS2 转速表。首先我们要收集到该转速表的波特率(9600)、功能码(03:保持型寄存器 40001)、地址(3)等信息。创建通信指令介绍RTU通讯有两种通信指令:ModbusRTU
    发表于 02-16 06:52

    介绍S7-1200 Modbus RTU主站通信组态及编程步骤

      S7-1200 支持Modbus RTU通信模式的模块可作为Modbus RTU主站。以下以 CPU1215C DC/DC/DC和CM1
    发表于 03-15 16:13

    modbus TCP和modbus RTU有什么区别?

    modbus TCP和modbus RTU有什么区别
    发表于 10-09 06:20

    基于S7-200下的Modbus RTU通信协议

    我们都知道Modbus是公开通信协议,具有两种串行传输模式,ASCII和RTU
    的头像 发表于 07-05 08:58 5959次阅读

    浅析无线RTU传输工作模式

    无线RTU传输模式应用有自报、兼容、查询、以及调试四种工作模式
    发表于 09-07 09:31 2299次阅读

    Modbus RTUModbus TCP的区别

    将每个字节的二进制数据转换成固定的二位十六进制字符串,然后依次串联,以TCP代码的形式传输数据。RTU通常使用最多。 2.不同的通信方式:以太网,相应的通信模式MODBUS TCP。
    发表于 08-03 17:00 5.4w次阅读

    一文详解Modbus RTU数据帧格式

    介绍Modbus RTU数据帧格式之前,首先让我们先了解一下Modbus的通讯模式
    发表于 04-07 09:40 2.4w次阅读
    一文详解<b class='flag-5'>Modbus</b> <b class='flag-5'>RTU</b>数据帧格式

    MODBUS ASCII传输模式介绍

    前面2期我们学习了,第一篇MODBUS协议基本介绍,第二篇MODBUS RTU传输模式
    的头像 发表于 07-19 15:58 4007次阅读
    <b class='flag-5'>MODBUS</b> ASCII<b class='flag-5'>传输</b><b class='flag-5'>模式</b><b class='flag-5'>介绍</b>

    简单介绍Modbus RTU协议

    介绍modbus rtu之前,我们可以了解到,Modbus是施耐德电气公司,于1979年发明的,是全球第一个真正用于工业现场的总线协议。
    的头像 发表于 05-09 09:13 2301次阅读
    简单<b class='flag-5'>介绍</b><b class='flag-5'>Modbus</b> <b class='flag-5'>RTU</b>协议