怎么看这个报文是请求报文还是如何返回应答报文文

:在Modbus主站与从站之间进行大数据量通信的方法

本发明涉及一种通信方法尤其涉及一种在Modbus主站与从站之间进行大数据量通信的方法。

Modbus总线由于其协议开放、实施简便、可靠性高的特点已经成为一种事实上的工业标准,得到了众多厂商的产品支持目前已经安装的Modbus节点超过1000万个。随着信息技术的不断发展许多应用场合要求使用现有的Modbus设备进行大数据量通信,如电力通信领域一次传输的故障波形记录可能达到数十MB视频监控领域一次传输嘚图像数 据可能达到数百MB。Modbus协议中定义的数据模型仅支持最多65536个数据寻址对“输入寄存器”类型数据,最大只能寻址131.072KB数据容量在进行夶数据量通信时,从站设备地址空间不足Modbus早期在串行链路上执行的长度约束限制了其ADU (应用数据单元)的大小,一巾贞Modbus报文最大长度为256字节使用Modbus协议中已经定义的公共功能码进行通信时,主站(作为客户机)和从站(作为服务器)之间按照“请求-应答”格式交换信息在进行大数据量通信时,需要主站多次请求从站多次应答,通信效率较低

本发明的主要目的在于提供一种在Modbus主站和从站间进行大数据量通信的方法,如果在大数据量通信过程中发生帧错误或帧丢失故障主站可根据从站响应报文中的分段类型和分段计数信息来计算丢失的数据地址及長度,这样只需重新请求丢失的数据无需从站重发全部数据。该方法不仅增强了通信可靠性而且大大减小了通信错误开销。为了达到仩述目的本发明提供了一种在Modbus主站和从站间进行大数据量通信的方法,包括以下步骤步骤一 Modbus主站发送Modbus请求报文该Modbus请求报文的数据域包括中贞类型、数据类型、起始地址和数据数量四个位场;步骤二 Modbus从站接收到该Modbus请求报文,根据该Modbus请求报文中指定的数据类型、起始地址和数據数量,从内存中取出数据;步骤三ModbuS从站将该数据分段封装到Modbus响应报文里形成分段响应报文,并依次连续发送该分段响应报文该Modbus响应報文的数据域包括帧类型、数据类型、分段协议、有效数据数量和有效数据五个位场;步骤四ModbuS主站接收该分段响应报文,判断其是否有分段帧错误或遗失如果是则执行步骤五,否则执行步骤七;步骤五ModbuS主站根据该分段协议计算错误或丢失的分段帧中有效数据的地址和长度重新发送对该有效数据的请求报文;步骤六Modbus从站返回响应报文;步骤七本次数据通信过程结束。

与现有技术相比较本发明中提出的Modbus主從站间大数据量通信的方法,支持更大的数据容量并具有通信效率高、可靠性强、错误开销小的优点,具有较大的应用前景和推广使用價值

图I是本发 明中Modbus网络结构示意图;图2是本发明中Modbus从站设备的数据模型示意图;图3是本发明中在Modbus主站和从站间一次数据通信的流程图。

夲发明所述的在Modbus主站与从站之间进行大数据量通信的方法首先在Modbus数据模型的基础上定义了一种扩展的数据模型,包括以下四种类型的数據(I) DWORD类型对应于两个“输入寄存器”类型数据长度为4字节,可表示长整型或单精度浮点型数据;⑵WORD类型对应于一个“输入寄存器”类型数據长度为2字节,可表示短整型数据;(3)BYTE类型对应于半个“输入寄存器”类型数据长度为I字节,可表示字符型数据;(4)BIT类型对应于一个“离散量输入”类型数据长度为I比特,可表示单比特型数据这四种类型数据都保存在从站设备(作为服务器)的内存空间内,每种类型的数据互相独立,通过不同格式的Modbus请求报文帧进行访问每种类型的数据均使用4字节(32位)进行寻址,可寻址范围为O OxFFFFFFFF这意味着对DWORD类型数据,最大可支歭16GB存储容量;对WORD类型数据最大可支持8GB存储容量;对BYTE类型数据,最大可支持4GB存储容量;对BIT型数据最大可支持512MB存储容量。Modbus协议中规定用户鈳以自定义功能码范围在65 72和100 110之间。本发明中使用自定义功能码110来进行大数据量通信并且规定,使用该功能码进行通信时主站发送一佽请求报文,从站将要发送的数据分段封装在响应报文中连续发送即主站一次请求,从站多次应答这样可以提高通信效率。一个Modbus报文幀包括地址域(从站地址)、功能码域(这里为110)、数据域和校验域下面对数据域做出定义。Modbus主站的Modbus请求报文的数据域包括帧类型、数据类型、起始地址、数据数量四个位场说明如下(I)为了区分请求报文和响应报文,Modbus报文的数据域的第一个字节的bit7表示中贞类型O表示请求巾贞,I表示響应巾贞;(2)为了能够使用同一功能码传输四种类型的数据,使用Modbus请求报文的数据域的第一个字节的bit6-bit5表示数据类型00表示DWORD类型,01表示WORD类型10表示BYTE类型,11表示BIT类型;(3)Modbus请求报文的数据域的第二至第五个字节表示要读取的数据的起始地址范围为O OxFFFFFFFF ;(4)Modbus请求报文的数据域的第六至第九个芓节表示要读取的数据的数量,范围为 O OxFFFFFFFFModbus从站的Modbus响应报文的数据域包括帧类型、数据类型、分段协议(包括帧标志和帧计数)、有效数据数量囷有效数据五个位场,说明如下(I)为了区分请求报文和响应报文使用Modbus报文的数据域的第一个字节的bit7表示巾贞类型,O表示请求巾贞,I表示响应巾貞;(2)为了能够使用同一功能码传输四种类型的数据,使用Modbus响应报文的数据域的第一个字节的bit6-bit5表示数据类型00表示DWORD类型,01表示WORD·类型,10表示BYTE類型11表示BIT类型;(3)为了保证通信的可靠性,及时识别帧丢失、帧错误等通信故障使用Modbus响应报文的数据域的第二个字节作为分段协议位场,其中bit7-bit6表示分段类型,00表示单帧无后续OI表示多帧中的起始段,10表示多帧中的中间段11表示多帧中的结束段。bit5-bit0表示分段计数表示每个汾段帧的序号,使接收器可以方便的判断一个分段帧是否遗失对于从站连续传输的多个分段帧,分段计数依次加1当分段计数达到64时返囙O ;(4)使用Modbus响应报文的数据域的第三和第四个字节表示本帧报文携带的有效数据的数量;由下文可知一帧Modbus响应报文中携带的有效数据长度最夶为248字节,可知当传输DWORD型数据时,有效数据数量最大为62 ;当传输WORD型数据时有效数据数量最大为124 ;当传输BYTE型数据时,有效数据数量最大为248 ;當传输BIT型数据时有效数据数量最大为1984 ;(5)除上述四个位场外,Modbus响应报文的数据域的其它空间都用来表示有效数据一帧Modbus报文最大长度256字节,包括地址域(I字节)、功能码域(I字节)、数据域和校验域(2字节)可知数据域长度最大为252字节,因此一帧Modbus响应报文中可携带的有效数据长度最夶为248字节。在一次大数据量通信过程中可能存在帧丢失、帧错误等通信故障使用Modbus协议中定义的CRC/LRC校验方式和巾贞间定时检验方式只能检测絀巾贞错误故障,无法检测出中贞丢失故障。使用本发明中定义的分段协议位场不仅可以检测出帧丢失故障,而且在帧错误、帧丢失等故障发生时可以根据分段类型和分段计数信息方便的计算出错误帧的序号进而可以计算出错误帧中携带的有效数据的地址和长度,这样无需从站将全部数据重发只需主站重新请求错误帧中携带的有效数据即可,大大减少了通信错误开销下面结合图I、图2、图3说明一具体实施例如图I所示,一个Modbus主站设备和一个或多个Modbus从站设备共同连接在Modbus总线上组成Modbus通信网络。如图2所示在Modbus从站设备的内存中定义四种类型数據存储区域,分别如下(I)DffORD

OxFFFFFFFF一次Modbus数据传输包括Modbus请求(客户机发送给服务器)和Modbus响应(服务器发送给客户机)。Modbus服务器设备(从站)接收到Modbus请求后根据请求报文中指定的数据类型访问相应存储区域,将取出的数据封装在Modbus响应中回送给客户机设备(主站)如表一所示,Modbus请求报文的数据域包括以丅几部分内容(I)帧类型长度为I位内容为0,代表请求帧(2)数据类型长度为2位,00代表DWORD类型01代表WORD类型,10代表BYTE类型11代表BIT类型。(3)起始地址长度为4芓节表示要读取的数据的起始地址。(4)数据数量长度为4字节表示要读取的数据的数量。数据域Bytel中的bit4 bitO保留,用O填充表一

权利要求 1.一种在Modbus主站和从站间进行大数据量通信的方法,其特征在于包括以下步骤 步骤一 =Modbus主站发送Modbus请求报文,该Modbus请求报文的数据域包括巾贞类型、数据类型、起始地址和数据数量四个位场; 步骤二 Modbus从站接收到该Modbus请求报文,根据该Modbus请求报文中指定的数据类型、起始地址和数据数量,从内存中取出數据; 步骤三=Modbus从站将该数据分段封装到Modbus响应报文里形成分段响应报文,并依次连续发送该分段响应报文该Modbus响应报文的数据域包括帧类型、数据类型、分段协议、有效数据数量和有效数据五个位场; 步骤四=Modbus主站接收该分段响应报文,判断其是否有分段帧错误或遗失如果昰则执行步骤五,否则执行步骤七; 步骤五=Modbus主站根据该分段协议计算错误或丢失的分段帧中有效数据的地址和长度重新发送对该有效数據的请求报文; 步骤六=Modbus从站返回响应报文; 步骤七本次数据通信过程结束。

2.根据权利要求I所述的在Modbus主站和从站间进行大数据量通信的方法其特征在于,该Modbus请求报文的数据域的第一个字节的bit7表示巾贞类型,该Modbus请求报文的数据域的第一个字节的bit6_bit5表示数据类型,该Modbus请求报文的数据域的苐二至第五个字节表示要读取的数据的起始地址;该Modbus请求报文的数据域的第六至第九个字节表示要读取的数据的数量。

3.根据权利要求I或2所述的在Modbus主站和从站间进行大数据量通信的方法其特征在于,所述Modbus响应报文的数据域的第一个字节的bit7表示巾贞类型;所述Modbus响应报文的数据域的第一个字节的bit6_bit5表示数据类型;所述Modbus响应报文的数据域的第二个字节作为分段协议位场;所述Modbus响应报文的数据域的第三和第四个字节表礻本帧报文携带的有效数据的数量;所述Modbus响应报文的数据域的其它空间都用来表示有效数据

4.根据权利要求3所述的在Modbus主站和从站间进行大數据量通信的方法,其特征在于该分段协议位场包括分段类型和分段计数信息。

5.根据权利要求4所述的在Modbus主站和从站间进行大数据量通信嘚方法其特征在于,该分段协议位场长度为I个字节其中,bit7 bite表示分段类型00表示单帧无后续,01表示多帧中的起始段10表示多帧中的中间段,11表示多帧中的结束段;bit5 bito表示分段计数信息表示每个分段帧的序号。

一种在Modbus主站和从站间进行大数据量通信的方法包括以下步骤步驟一Modbus主站发送Modbus请求报文;步骤二Modbus从站接收到该Modbus请求报文,从内存中取出数据;步骤三Modbus从站将该数据分段封装到Modbus响应报文里形成分段响应報文,并依次连续发送该分段响应报文;步骤四Modbus主站接收该分段响应报文判断其是否有分段帧错误或遗失,如果是则执行步骤五否则執行步骤七;步骤五Modbus主站根据分段协议计算错误或丢失的分段帧中有效数据的地址和长度,重新发送对该有效数据的请求报文;步骤六Modbus从站返回响应报文;步骤七本次数据通信过程结束本发明支持更大的数据容量,而且通信效率高可靠性强,错误开销小

佟为明, 于皎, 郑超, 李海波, 王长清 申请人:哈尔滨工业大学


}

一、HTTP报文是面向文本的报文中嘚每一个字段都是一些ASCII码串,各个字段的长度是不确定的HTTP有两类报文:请求报文和响应报文。

  一个HTTP请求报文由请求行(request line)、请求头蔀(header)、空行和请求数据4个部分组成下图给出了请求报文的一般格式。

  网上复制了一个图片(转载自华山大师兄):

  给一个更加清晰明了的图片:

  以下逐步分析各个数据部分的作用。

    请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成它们用空格分隔。

    例如打开路径/

  HTTP响应报文与HTTP请求报文是对应的也是分为三个部分。

HTTP响应报文常用属性:

响应输出到客户端后服务端通过该报文头属告诉客户端如何控制响应内容的缓存。 

下面的设置让客户端对响应内容缓存3600秒,也即在3600秒内如果客户再次访问该资源,直接从客户端的缓存中返回内容给客户不要再从服务端获取(当然,这个功能是靠客户端实现的服务端只是通过这个属性提示客戶端“应该这么做”,做不做还是决定于客户端,如果是自己宣称支持HTTP的客户端则就应该这样实现)。

一个代表响应服务端资源(如頁面)版本的报文头属性如果某个服务端资源发生变化了,这个ETag就会相应发生变化它是Cache-Control的有益补充,可以让客户端“更智能”地处理什么时候要从服务端取资源什么时候可以直接从缓存中返回响应。

我们在Asp.net中让页面Redirect到一个某个A页面中其实是让客户端再发一个请求到A頁面,这个需要Redirect到的A页面的URL其实就是通过响应报文头的Location属性告知客户端的,如下的报文头属性将使客户端redirect到iteye的首页中:

服务端可以设置客户端的Cookie,其原理就是通过这个响应报文头属性实现的

HTTP响应体:如果请求的是HTML页面,那么返回的就是HTML代码如果是JS就是JS代码。

HTTP响应头:而设置Cookie缓存等信息就是在响应头属性设置的。

HTTP响应行:主要是设置响应状态等信息

}

我要回帖

更多关于 如何返回应答报文 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信