一种Modbus RTU通讯协议提高通讯效率的方法技术

技术编号:22266465 阅读:25 留言:0更新日期:2019-10-10 17:03
本发明专利技术公开了一种Modbus RTU通讯协议提高通讯效率的方法。针对ModbusRTU协议的主站和从站,在接收到数据帧开始之后,利用数据帧中接收到的功能码和部分数据内容确定数据长度,并进行以下判断,以功能码和部分数据内容进行该数据帧长度的预判;预判长度达到之后,开始进行循环冗余校验,利用接收到的数据帧获取其中的接收地址,最后按照功能码和数据开始解析。本发明专利技术方法不再依靠总线空闲时间来进行判断,而依靠数据帧本身所包含的特点进行判断,使得ModbusRTU的实际通讯速度加快,解决了上述技术问题。

A Method of Modbus RTU Communication Protocol to Improve Communication Efficiency

【技术实现步骤摘要】
一种ModbusRTU通讯协议提高通讯效率的方法
本专利技术涉及了一种ModbusRTU通讯协议改进方法,尤其是涉及了一种ModbusRTU通讯协议提高通讯效率的方法。
技术介绍
ModbusRTU是一个开放的串行协议,采用的是主从的通讯方式。ModbusRTU在各个工业行业之中得到了广泛的应用,在诸如各类PLC,控制器,传感器,执行器之中,它已经成为一通用工业标准。ModbusRTU的通讯模式为请求/应答的方式,主站发出查询指令,从站根据收到的指令进行处理和应答。在请求消息中,主站将告知指定的从站(地址)将要执行何种功能(功能码),并附加以功能码所对应的数据,同时提供了数据帧的CRC校验。从站收到信息后,将判断这个信息的CRC是否正确,是单播还是广播,这将决定是否需要应答,对于广播不需要应答,如果是单播,则开始判断是否是发给从站本机的:如果非本机则无需应答,并开始对请求的功能码和数据进行解析,对其进行处理,并生成反馈数据帧;如果这个过程中有错误发生,也生成包含错误代码的应答数据帧。ModbusRTU数据帧在总线上如图1所示,采用的是总线空闲时间的时间阈值来判断一个数据帧的结束(char表示字符字节)。在ModbusRTU的协议中,总线空闲时间的时间阈值这个数据值设定为3.5个字节的长度,即总线空闲时间大于3.5个字节长度的时间阈值情况下,认为是数据帧结束。通常,如果通讯速率低于和等于19200bps,要求严格按照3.5字节的时间进行判断;如果通讯速率高于19200bps,则应该采用1.7500ms作为数据帧结束的判断。ModbusRTU的协议实现方法如下:第一,数据帧接收和处理的逻辑如下:串口接收到数据之后,如图2所示,将数据存入到串口数据数组,复位定时器,并以定时器的时间即为数据帧结束的判断值。第二,如图3所示,定时器发生了溢出中断,即超过了总线空闲时间的时间阈值,说明ModbusRTU的数据帧接收完全,则开始对ModbusRTU的数据帧进行分析,并执行后续的操作。上面为现有ModbusRTU的工作原理和实现方法。事实上,ModbusRTU是一个完全开放的协议,可实现于多种硬件平台和软件平台之中,硬件上包括有PC,PLC,各种嵌入式设备等等,运行的操作系统包含了WindowsOS,LinuxOS,各种嵌入式操作系统以及无操作系统等等。不同的硬件,软件配置都会对ModbusRTU的性能造成影响,例如,所能获得的定时器的精度都存在相当的差异,并不能在所有的情况下都获得毫秒级的精度。这就导致,为了设备获取更好的兼容性,通常在开发ModbusRTU协议时会将这个数据帧结束的时间阈值判断数值调高,以便兼容不同平台下的Modbus设备,这个数值通常会设定到数十毫秒。这就使得在采用ModbusRTU协议的情况下,其实际通讯速度变差。
技术实现思路
为了解决
技术介绍
中存在的技术问题,为了更快速的对ModbusRTU数据帧的结束进行判断,本专利技术提出了一种ModbusRTU通讯协议提高通讯效率的方法,通过一种新的数据帧完整性结束判定来提高效率。在方法上,不采用总线数据的空闲时间作为判断,而是利用了ModbusRTU数据帧本身的特点来做判断。本专利技术采用的技术方案是:针对ModbusRTU协议的主站和从站,在接收到数据帧开始之后:1)利用数据帧中接收到的功能码和部分数据内容确定数据长度,并进行以下判断,以功能码和部分数据内容进行该数据帧长度的预判:如果接收到的数据帧长度达到预判值,则数据帧已接收完全,进行下一步;2)预判长度达到之后,开始进行循环冗余校验(CRC):如果循环冗余校验通过,则开始停止定时器,进行下一步,结束本次接收过程;如果循环冗余校验不通过,则该数据帧存在问题,该数据帧可能还会接收,继续定时器的操作,等待定时器达到预设时间阈值之后直接丢弃该数据帧;3)利用接收到的数据帧获取其中的接收地址:接收地址解析数据帧的第一个字节获得。如果接收地址和本机的地址不同/不符合,则复位定时器并退出;如果接收地址和本机的地址相同/符合,则按照功能码和数据开始解析。本专利技术仍然保持定时器的存在,但将定时器不作为总线空闲时间的判断,以应对可能的数据帧错误的情况,在定时器溢出中断发生之后,直接丢弃数据。所述的数据帧为整个Modbus数据帧,依次包括了设备地址、功能码、数据和差错校验码的几个部分,数据为数据帧中的一个部分。所述方法不通过总线空闲时间大于时间阈值来判断一个数据帧的结束。本专利技术利用功能码和数据中的部分内容确定数据帧中的数据和整个数据帧的长度的特性,同时利用整个数据帧的最后两位为循环冗余校验码,以此进行整个数据帧的校验的特性,设计了上述处理方法进行数据帧结束/完整性判定,使得ModbusRTU通讯协议中的数据帧传输更有效,时间结束节点更准确,从而提高ModbusRTU通讯的效率。本专利技术的有益效果是:现有ModbusRTU中数据帧完整性的判断是通过总线空闲的时间来进行判断的,一般设备为了更好的兼容性,通常会将这个时间放长,这使得实际的ModbusRTU的通讯速度显得很慢。本专利技术方法不再依靠总线空闲时间来进行判断,而依靠数据帧本身所包含的特点进行判断,使得ModbusRTU的实际通讯速度加快,解决了上述技术问题。附图说明图1为ModbusRTU数据帧在总线的接收数据结构示意图;图2为ModbusRTU中串口接收数据帧之后的处理操作流程图;图3为ModbusRTU中定时器发生溢出中断后的处理操作流程图;图4为本专利技术改进的ModbusRTU中串口接收数据帧之后的处理操作流程图;图5为本专利技术改进的ModbusRTU中定时器发生溢出中断后的处理操作流程图;图6为实施例中采用正弦波发生信号传输并以现有ModbusRTU协议发送和接收方式、且将空闲时间设定为25ms读取到的数据波形结果图;图7为实施例中采用正弦波发生信号传输并以现有ModbusRTU协议发送和接收方式、且将空闲时间设定为50ms读取到的数据波形结果图;图8为实施例中采用正弦波发生信号传输并以本专利技术方法发送和接收方式、且将空闲时间设定为25ms读取到的数据波形结果图。具体实施方式下面结合附图及具体实施例对本专利技术作进一步详细说明。本专利技术具体实施的数据帧结构如下:由以上分类可见,数据帧的长度中只有数据部分的长度是变化的,其它部分的长度都是固定的,而数据部分和功能码又有着相关性,这里按照功能码的不同来分类讨论每个功能码下数据部分的长度确定。还有一种异常功能码,它只存在于从站的应答之中。它的功能码为主站发出的功能码加上0x80。由以上的分析可见,对于ModbusRTU的主站和从站,在数据帧之中都包含了数据帧的整体长度的信息。有一些读取到功能码,即可知道数据帧的整体长度,有一些读取到数据中的部分数据,即可计算出数据帧的整体长度。具体实施中,建立ModbusRTU协议的主站和从站。ModbusRTU的功能码反应了从机所需要从站完成的功能。对于从机而言,所接收到的是主机发出的数据帧。对于主机而言,所接收到的是从机返回的数据帧。当读取到功能码时,主站和从站所执行的判断的方法,列表如下:本专利技术设计的新的数据帧结束的判断逻辑如下。A)主站发出的数据帧的结束判断逻辑:主站发出的数据帧为由从站本文档来自技高网
...

【技术保护点】
1.一种Modbus RTU通讯协议提高通讯效率的方法,其特征在于:针对ModbusRTU协议的主站和从站,在接收到数据帧开始之后:1)利用数据帧中接收到的功能码和部分数据内容确定数据长度,并进行以下判断,以功能码和部分数据内容进行该数据帧长度的预判,如果接收到的数据帧长度达到预判值,则数据帧已接收完全,进行下一步;2)预判长度达到之后,开始进行循环冗余校验:如果循环冗余校验通过,则开始停止定时器,进行下一步,结束本次接收过程;如果循环冗余校验不通过,则该数据帧存在问题,继续定时器的操作,等待定时器达到预设时间阈值之后直接丢弃该数据帧;3)利用接收到的数据帧获取其中的接收地址:如果接收地址和本机的地址不同/不符合,则复位定时器并退出;如果接收地址和本机的地址相同/符合,则按照功能码和数据开始解析。

【技术特征摘要】
1.一种ModbusRTU通讯协议提高通讯效率的方法,其特征在于:针对ModbusRTU协议的主站和从站,在接收到数据帧开始之后:1)利用数据帧中接收到的功能码和部分数据内容确定数据长度,并进行以下判断,以功能码和部分数据内容进行该数据帧长度的预判,如果接收到的数据帧长度达到预判值,则数据帧已接收完全,进行下一步;2)预判长度达到之后,开始进行循环冗余校验:如果循环冗余校验通过,则开始停止定时器,进行下一步,结束本次接收过程;如果循环冗余校验不通过,则该数据帧存在问题,继续定时器的操作,等待定时器达到预设时间阈值之后直接丢...

【专利技术属性】
技术研发人员:汤新舟
申请(专利权)人:杭州远流科技有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1