一种二进制通信协议数据链路层传输帧格式的制作方法

文档序号:15357935发布日期:2018-09-05 00:14阅读:975来源:国知局
本发明属于通信传输协议领域,涉及一种数据链路层的通信协议,具体涉及一种二进制通信协议数据链路层传输帧格式,可用于控制设备之间的通信。
背景技术
:为实现控制器及不同设备之间的通信,工业上存在着多种通信协议,modbus协议因其接口广泛,廉价,传输速率高效等特性,在工业领域被广泛的应用和推广,通过此协议,可实现控制器相互之间、控制器及其它设备之间进行通信,目前已成为一种工业领域被广为应用的真正开放、标准的网络通信协议,其在数据链路层协议主要有两种模式:ascii码模式和rtu模式。当采用ascii码模式通信时,消息中每8bits用两个ascii码表示,报文以冒号(:)字符(ascii码3ah)开始,以回车换行符结束(ascii码0dh,0ah),这种方式的主要优点是字符发送时间间隔可达到1s而不发生错误,但ascii码模式只能传输ascii码,如果帧数据内容为二进制数据(信息多是二进制数据),则需要转化成ascii码进行传输,造成传输数据变长,传输数据量变大。因此只在特殊场合应用。当采用rtu模式通信时,数据链路层传输帧格式的结构如图1所示,消息中每8bits对应两个4位的十六进制字符,每帧间的时间间隔不能超过少于3.5个字符,则帧结构包括一个至少3.5个字符的时间标志一帧数据的开始,应用数据单元adu和一个至少3.5个字符的时间表示一帧数据的结束也即下一帧数据的开始,这种方式的主要优点是:在同样波特率下,可比ascii码方式传送更多的数据,但由于帧数据采用时间间隔作为帧开始和帧结束标识,在实际通信过程中,时间间隔的控制通过字符超时定时器的时钟标记,定时器时钟依赖于硬件电路的设计和软件的编写,因此通信容易受到硬件电路和软件编程稳定性的影响,导致通信可靠性和传输效率较低。为了提高通信的可靠性和传输效率,目前采用的方法大多是在rtu模式的基础上通过在硬件电路上提高定时器的精确性,或者在软件编程上优化程序算法实现的,但是存在的缺陷是由于硬件电路设计本身的限制通信的可靠性和传输效率仍然较低。技术实现要素:本发明的目的在于克服上述现有技术存在的不足,提出了一种二进制通信协议数据链路层传输帧格式,旨在提高通信的可靠性和传输效率。本发明的设计思路是:结合modbusascii码模式下具有专用的起始帧和结束帧的优点,将标准modbusrtu模式下以时间间隔不能超过少于3.5个字符作为判断帧开始和结束的条件去除,改为在报文中增加0xfe作为帧头,0xff作为结束帧。根据上述技术思路,本发明采用的技术方案为:一种二进制通信协议数据链路层传输帧格式,其传输帧格式包括帧头、应用数据单元adu和帧尾;所述帧头,采用0xfe;所述应用数据单元adu,包括依次连接的地址段、简单数据单元pdu和校验段,其中,所述地址段,包括选项字节字段和设备号字段,所述简单数据单元pdu,包括依次连接的命令码和数据段;所述帧尾,采用0xff;所述应用数据单元adu中出现的数据需要转义时,采用0xfd作为转义字符,转义规则为:若出现的数据为0xfd,则将0xfd表示为0xfd,0x00;若出现的数据为0xfe,则将0xfe表示为0xfd,0x01;若出现的数据为0xff,则将0xff表示为0xfd,0x02。上述一种二进制通信协议数据链路层传输帧格式,所述选项字节字段,其中第0位为加密指示位,加密指示位为0时代表不加密,为1时代表加密;第1位和第2位为两位连续的保留位,保留位的默认值为00;第3位和第4位为协议版本号,用于指示不同协议版本,使传输帧格式能向下兼容不同协议格式,协议版本号默认值为00;第5位、第6位和第7位为保留位,保留位的默认值为0。上述一种二进制通信协议数据链路层传输帧格式,所述设备号字段,其中第0位、第1位、第2位和第3位,表示目的设备号,第4位、第5位、第6位和第7位,表示源设备号,目的设备号和源设备号的取值均为0~15。上述一种二进制通信协议数据链路层传输帧格式,所述数据段,包括依次连接的1byte有效数据长度段、nbyte有效数据段和2byte加密段。上述一种二进制通信协议数据链路层传输帧格式,所述命令码,其长度为1byte。上述一种二进制通信协议数据链路层传输帧格式,所述校验段,其长度为1byte,采用crc校验方式。本发明与现有技术对比,具有以下特点:1.本发明帧头采用0xfe,帧尾采用0xff,采用实际字符作为帧头,帧尾避免了通过硬件电路控制时间间隔,提高了数据传输的可靠性及传输的稳定性,克服了现有技术中以时间间隔作为帧的开始或结束标志带来的通信易受到硬件电路的性能和软件编程的影响的缺点;2.本发明采用0xfd作为转义字符,可减少数据帧中转义字符的个数,增加数据帧有效内容载荷,同时帧头采用0xfe,帧尾采用0xff,数据传输所花费的时间长度为2个字符的时间,与现有技术,rtu模式中以3.5个字符的时间间隔作为传输帧的间隔相比,缩短了每帧数据的传输时间,在传输大量数据时这个时间的节约将有效的提高数据的传输效率。附图说明图1是现有rtu模式数据链路层传输帧格式的结构示意图;图2是本发明的整体结构示意图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图和实施例,对本发明进行进一步的详细说明。参照图2,一种二进制通信协议数据链路层传输帧格式,所述传输帧格式包括帧头、adu应用数据单元和帧尾,其具体组成如表1所示。所述帧头,采用0xfe。所述帧尾,采用0xff。rtu传输模式要求发送的两针数据之间要有一定的数据间隔,以保证接收方能够区分,在实际工程中,时间间隔的控制通常通过字符超时定时器的时钟标记,需要采用硬件电路和软件编程来实现,因此消息传输的准确性及效率都依赖于硬件电路的性能和软件编程的实现,而本发明优选的使用特殊字符作为开始和结束标志,提高了数据传输的可靠性及传输的稳定性。表1帧格式由于帧头采用了0xfe,帧尾采用了0xff,为防止所述应用数据单元adu中出现0xfe,0xff字符而使接收端错误的重新开始或终止一帧数据的接收,需要定义转义字符。转义字符的增加必然引起传输数据的增加,考虑到最小化数据单元中转义字符的个数,本发明优选的使用0xfd作为转义字符,当一个字符的数据小于0xfd时直接使用数据,当数据大于或等于0xfd时使用转义操作,将1byte数据转义为2byte数据,转义规则为:若出现的数据为0xfd,则将0xfd表示为0xfd,0x00;若出现的数据为0xfe,则将0xfe表示为0xfd,0x01;若出现的数据为0xff,则将0xff表示为0xfd,0x02,数据转义的对比如表1。表2转义字符设置数据转义0xfd0xfd0x000xfe0xfd0x010xff0xfd0x02所述adu应用数据单元,包括依次连接的地址段、简单数据单元pdu和校验段。所述地址段,优选的采用2byte,包括选项字节字段和设备号字段。所述选项字节字段,其中,第0位为加密指示位,加密指示位为0时代表不加密,为1时代表加密;第1位和第2位为两位连续的保留位,保留位的默认值为00;第3位和第4位为协议版本号,用于指示不同协议版本,使传输帧格式能向下兼容不同协议格式,协议版本号默认值为00;第5位、第6位和第7位为保留位,保留位的默认值为0,选项字节字段不同位的设置可最大程度向下兼容不同的协议格式,该设置方式可直观表示如下表2所示。表3选项字节字段所述设备号字段,其中,第0位、第1位、第2位和第3位,表示目的设备号,第4位、第5位、第6位和第7位,表示源设备号,目的设备号和源设备号的取值均为0~15,其具体设置如下表所示。表4设备号字段所述简单数据单元pdu,包括依次连接的命令码和数据段。所述命令码,优选的令其长度为1byte,该命令码可采用由用户自定义的功能码,也可采用标准协议中的功能码。所述数据段,包括依次连接的1byte有效数据长度段,nbyte有效数据段和2byte加密段。所述有效数据长度段用来存放所传输帧有效数据的长度。所述加密段,其处理方式由选项字节字段中第0位,加密指示位决定,若加密指示位设为0,表示数据不加密,则无需考虑密码段,若加密指示位设为1,表示数据加密,则数据段的末尾2byte数据为加密码数据,则需要对有效数据长度,有效数据,校验段进行解码。所述校验段,其长度为1byte,采用crc校验方式,crc位数与数据流无关,本发明优选的使用crc8校验方式,是在满足实际要求的情况下,使校验算法尽可能简便。以下结合现有技术每帧数据的传输时间和本发明每帧数据的传输时间对本发明的技术效果作进一步说明。发送数据的时间与设置的通信参数有关,计算方法为:若通信参数设置为,起始位1,数据位8,奇偶校验位1,停止位1,即数据位数为11位,波特率9600bps,则传输一个字符的时间为11/9600=1.1454583ms,那么在现有技术中,rtu模式中采用3.5个字符的时间间隔,3.5个字符的时间间隔为:3x1.1451583ms=4.00910405ms,在本发明所规定的帧格式中,采用0xfe作为帧头,0xfe作为帧尾,传输帧头和帧尾需要传输两个字符的时间,所需的传输时间为2x1.1451583=2.2903166ms,这比传统的rtu方式节约了1.5个字符的时间,1.5字符的时间间隔约为1.71818745ms,当传输大量数据时,1.5个字符的时间的节约将有效的提高数据帧的传输效率。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1