CN110311848A - 一种Modbus RTU通讯协议提高通讯效率的方法 - Google Patents

一种Modbus RTU通讯协议提高通讯效率的方法 Download PDF

Info

Publication number
CN110311848A
CN110311848A CN201910712086.3A CN201910712086A CN110311848A CN 110311848 A CN110311848 A CN 110311848A CN 201910712086 A CN201910712086 A CN 201910712086A CN 110311848 A CN110311848 A CN 110311848A
Authority
CN
China
Prior art keywords
data frame
data
length
function code
anticipation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910712086.3A
Other languages
English (en)
Inventor
汤新舟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Long Stream Technology Co Ltd
Original Assignee
Hangzhou Long Stream Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Long Stream Technology Co Ltd filed Critical Hangzhou Long Stream Technology Co Ltd
Priority to CN201910712086.3A priority Critical patent/CN110311848A/zh
Publication of CN110311848A publication Critical patent/CN110311848A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L2012/40208Bus networks characterized by the use of a particular bus standard
    • H04L2012/40228Modbus

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Small-Scale Networks (AREA)

Abstract

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

Description

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

Claims (3)

1.一种Modbus RTU通讯协议提高通讯效率的方法,其特征在于:
针对ModbusRTU协议的主站和从站,在接收到数据帧开始之后:
1)利用数据帧中接收到的功能码和部分数据内容确定数据长度,并进行以下判断,以功能码和部分数据内容进行该数据帧长度的预判,如果接收到的数据帧长度达到预判值,则数据帧已接收完全,进行下一步;
2)预判长度达到之后,开始进行循环冗余校验:
如果循环冗余校验通过,则开始停止定时器,进行下一步,结束本次接收过程;
如果循环冗余校验不通过,则该数据帧存在问题,继续定时器的操作,等待定时器达到预设时间阈值之后直接丢弃该数据帧;
3)利用接收到的数据帧获取其中的接收地址:
如果接收地址和本机的地址不同/不符合,则复位定时器并退出;
如果接收地址和本机的地址相同/符合,则按照功能码和数据开始解析。
2.根据权利要求1所述的一种Modbus RTU通讯协议提高通讯效率的方法,其特征在于:所述的数据帧为整个Modbus数据帧,依次包括了设备地址、功能码、数据和差错校验码的几个部分,数据为数据帧中的一个部分。
3.根据权利要求1所述的一种Modbus RTU通讯协议提高通讯效率的方法,其特征在于:所述方法不通过总线空闲时间大于时间阈值来判断一个数据帧的结束。
CN201910712086.3A 2019-08-02 2019-08-02 一种Modbus RTU通讯协议提高通讯效率的方法 Pending CN110311848A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910712086.3A CN110311848A (zh) 2019-08-02 2019-08-02 一种Modbus RTU通讯协议提高通讯效率的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910712086.3A CN110311848A (zh) 2019-08-02 2019-08-02 一种Modbus RTU通讯协议提高通讯效率的方法

Publications (1)

Publication Number Publication Date
CN110311848A true CN110311848A (zh) 2019-10-08

Family

ID=68082912

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910712086.3A Pending CN110311848A (zh) 2019-08-02 2019-08-02 一种Modbus RTU通讯协议提高通讯效率的方法

Country Status (1)

Country Link
CN (1) CN110311848A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112235302A (zh) * 2020-10-15 2021-01-15 天津津航计算技术研究所 一种适用于多种总线的协议解析方法
CN113660190A (zh) * 2021-05-17 2021-11-16 捷佳润科技集团股份有限公司 一种新型带唤醒机制rtu通讯协议的设计方法
CN114584630A (zh) * 2020-11-18 2022-06-03 中移物联网有限公司 一种基于现场总线协议的通信方法及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103546467A (zh) * 2013-10-23 2014-01-29 上海爱控自动化设备有限公司 在TCP/IP网络上传输Modbus RTU协议的方法
CN103561032A (zh) * 2013-11-08 2014-02-05 山东大学 TCP/IP协议下Modbus设备网络通信的方法
CN103929439A (zh) * 2014-05-07 2014-07-16 昆山华恒焊接股份有限公司 一种数据传输方法及modbus服务器
CN107464412A (zh) * 2017-08-09 2017-12-12 国网浙江省电力公司 一种电能表事件信息抄读方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103546467A (zh) * 2013-10-23 2014-01-29 上海爱控自动化设备有限公司 在TCP/IP网络上传输Modbus RTU协议的方法
CN103561032A (zh) * 2013-11-08 2014-02-05 山东大学 TCP/IP协议下Modbus设备网络通信的方法
CN103929439A (zh) * 2014-05-07 2014-07-16 昆山华恒焊接股份有限公司 一种数据传输方法及modbus服务器
CN107464412A (zh) * 2017-08-09 2017-12-12 国网浙江省电力公司 一种电能表事件信息抄读方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
朱小襄: ""ModBus通信协议及编程"", 《电子工程师》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112235302A (zh) * 2020-10-15 2021-01-15 天津津航计算技术研究所 一种适用于多种总线的协议解析方法
CN112235302B (zh) * 2020-10-15 2023-03-24 天津津航计算技术研究所 一种适用于多种总线的协议解析方法
CN114584630A (zh) * 2020-11-18 2022-06-03 中移物联网有限公司 一种基于现场总线协议的通信方法及设备
CN114584630B (zh) * 2020-11-18 2023-10-27 中移物联网有限公司 一种基于现场总线协议的通信方法及设备
CN113660190A (zh) * 2021-05-17 2021-11-16 捷佳润科技集团股份有限公司 一种新型带唤醒机制rtu通讯协议的设计方法
CN113660190B (zh) * 2021-05-17 2023-05-30 捷佳润科技集团股份有限公司 一种新型带唤醒机制rtu通讯协议的设计方法

Similar Documents

Publication Publication Date Title
CN110311848A (zh) 一种Modbus RTU通讯协议提高通讯效率的方法
US20180157562A1 (en) Virtual machine-based data transmission method, apparatus and system
CN1078415C (zh) 用于无线通信的分组数据协议
CN115037700B (zh) 一种复杂网络数据包传送方法、***、终端及存储介质
CN106649165A (zh) 建立嵌入式***和pc主机通信连接的方法
CN112698640B (zh) 一种ecu升级测试***
EP1500227B1 (en) Method for recognizing electronic appliance in multiple control system
CN107453844B (zh) 一种智能设备自动组网的方法及装置
CN113630294B (zh) 一种交换机模块化检测方法和装置
CN115378981A (zh) 一种适配物联网不同传感器的终端及方法
CN114996195A (zh) 一种获取碳足迹数据的方法、***、装置及介质
CN114268650A (zh) 用于建立通信连接的配置方法及***
CN113556210A (zh) 一种上位机和建立通信连接的方法
CN108683689B (zh) 实现nids和nips入侵检测功能的改进测试***及方法
CN112152753A (zh) 一种与下位机传输数据的方法及装置
CN111371799A (zh) Mctp控制器收发数据的控制方法、装置及设备
CN110708379A (zh) 数据获取方法、集中器、数据获取***及可读存储介质
CN117849596B (zh) 面向向量精简的分布式自动测试向量生成方法和***
CN112596893B (zh) 用于多节点边缘计算设备的监控方法和***
CN117784699B (zh) 一种通讯方法、装置及***
CN206283532U (zh) 一种数据采集装置
CN112988202B (zh) 一种fc模块升级的***及方法
CN117834750B (zh) 获取协议数据的装置、方法、***、设备、介质及服务器
CN117914961B (zh) 一种工业网关及协议转换方法
CN110868321B (zh) 一种基于边缘计算算法验证的故障定位方法及***

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20191008