可左右滑动选省市

数据采集方法、装置、Modbus系统及存储介质

更新时间:2024-10-01
数据采集方法、装置、Modbus系统及存储介质 专利申请类型:实用新型专利;
地区:广东-深圳;
源自:深圳高价值专利检索信息库;

专利名称:数据采集方法、装置、Modbus系统及存储介质

专利类型:实用新型专利

专利申请号:CN202080007710.0

专利申请(专利权)人:华为数字能源技术有限公司
权利人地址:广东省深圳市福田区香蜜湖街道香安社区安托山六路33号安托山总部大厦A座研发39层01号

专利发明(设计)人:胡树燕,杨晓辉,张召

专利摘要:本申请实施例公开了一种数据采集方法、装置、Modbus系统及存储介质,属于通信技术领域。在本申请实施例中,主机与从机一次交互采集一个或多个分段数据,每个分段数据携带的数据数量最大为256。在Modbus系统中,一个数据最小以一字节表示,则每个分段数据携带的数据可达256字节,如果一次交互采集到多个分段数据,那么能够采集的数据量将远大于协议限制的252字节。也即本方案中一次交互能够采集的数据量更多,在需要采集的数据量一定的情况下,能够减少主机与从机的交互次数,这样总线占用频率降低但占用率提高。且由于从机一次响应的数据量更多,主机不会长时间耗费在一个从机上,因此,Modbus系统的实时性将提高。

主权利要求:
1.一种数据采集方法,其特征在于,所述数据采集方法应用于Modbus系统中的主机,所述Modbus系统还包括多个从机,所述方法包括:所述主机向第一从机发送数据请求报文,所述数据请求报文携带一个或多个分段采集指示信息,所述一个或多个分段采集指示信息中的每个分段采集指示信息用于指示所述主机从所述第一从机中需要采集的数据,所述第一从机为所述多个从机中的一个;
所述主机接收所述第一从机发送的数据响应报文,所述数据响应报文携带一个或多个分段数据,所述一个或多个分段数据是所述第一从机响应于所述一个或多个分段采集指示信息所提供的数据,所述一个或多个分段数据中的每个分段数据携带的数据数量大于0,且小于或等于256,且每个分段数据携带的第一数据的长度为相应数据数量乘以单位数据长度,所述第一数据为所述第一从机根据相应分段采集指示信息读取的数据,所述数据请求报文和所述数据响应报文均是通过对Modbus报文进行扩容得到。
2.如权利要求1所述的方法,其特征在于,所述主机向第一从机发送数据请求报文之前,还包括:所述主机根据所述第一从机上待采集数据的地址分布特征,确定所述一个或多个分段采集指示信息。
3.如权利要求1或2所述的方法,其特征在于,所述一个或多个分段采集指示信息中的每个分段采集指示信息包括一个起始地址和一个数据数量;
所述一个或多个分段数据中的每个分段数据包括一个起始地址、一个数据数量和所述第一数据。
4.如权利要求1‑3任一所述的方法,其特征在于,所述数据请求报文包括第一地址域、第一功能域和第一数据域,所述第一地址域携带所述第一从机的地址,所述第一功能域携带第一功能码,所述第一数据域携带所述一个或多个分段采集指示信息,所述第一功能码用于指示所述主机请求所述第一从机执行采集数据的功能;
所述数据响应报文包括第二地址域、第二功能域和第二数据域,所述第二地址域携带所述第一从机的地址,所述第二功能域携带第二功能码,所述第二数据域携带所述一个或多个分段数据,所述第二功能码用于指示所述第一从机实际执行的功能。
5.如权利要求4所述的方法,其特征在于,所述第一数据域还携带第一帧序号,所述第二数据域还携带第二帧序号,所述第一帧序号和第二帧序号用于所述主机将所述数据请求报文与所述数据响应报文进行帧匹配。
6.如权利要求4或5所述的方法,其特征在于,所述第一数据域还携带分段请求数,所述分段请求数用于指示所述主机请求所述第一从机分段采集的数据的分段数量;
所述第二数据域还携带分段响应数,所述分段响应数用于指示所述第一从机实际分段采集的数据的分段数量。
7.如权利要求1‑6任一所述的方法,其特征在于,
所述主机在同一时刻向所述多个从机中的每个从机发送对应的数据请求报文,以完成一轮采集;或者,所述主机根据轮询顺序,依次向所述多个从机中的每个从机发送对应的数据请求报文,以完成一轮采集;或者,所述主机根据所述多个从机中的每个从机上待采集数据的数据量,确定相应从机对应的采集时间,所述主机按照所述多个从机中的每个从机对应的采集时间,向所述多个从机中的每个从机发送对应的数据请求报文。
8.一种数据采集方法,其特征在于,所述数据采集方法应用于Modbus系统中的第一从机,所述第一从机为所述Modbus系统包括的多个从机中的一个,所述Modbus系统还包括主机,所述方法包括:第一从机接收所述主机发送的数据请求报文,所述数据请求报文携带一个或多个分段采集指示信息,所述一个或多个分段采集指示信息中的每个分段采集指示信息用于指示所述主机从所述第一从机中需要采集的数据,所述第一从机为所述多个从机中的一个;
所述第一从机根据所述一个或多个分段采集指示信息,确定一个或多个分段数据;
所述第一从机向所述主机发送数据响应报文,所述数据响应报文携带所述一个或多个分段数据,所述一个或多个分段数据中的每个分段数据携带的数据数量大于0,且小于或等于256,且每个分段数据携带的第一数据的长度为相应数据数量乘以单位数据长度,所述第一数据为所述第一从机根据相应分段采集指示信息读取的数据,所述数据请求报文和所述数据响应报文均是通过对Modbus报文进行扩容得到。
9.如权利要求8所述的方法,其特征在于,所述一个或多个分段采集指示信息中的每个分段采集指示信息包括一个起始地址和一个数据数量;
所述第一从机根据所述一个或多个分段采集指示信息,确定一个或多个分段数据,包括:所述第一从机从第一起始地址开始连续读取第一数据数量的数据,得到所述第一数据,所述第一起始地址为第一分段采集指示信息包括的起始地址,所述第一数据数量为所述第一分段采集指示信息包括的数据数量,所述第一分段采集指示信息为所述一个或多个分段采集指示信息中的一个;
所述第一从机将所述第一起始地址、所述第一数据数量和所述第一数据作为一个分段数据。
10.一种数据采集装置,其特征在于,所述装置应用于Modbus系统中的主机,所述Modbus系统还包括多个从机,所述装置包括:发送模块,用于向第一从机发送数据请求报文,所述数据请求报文携带一个或多个分段采集指示信息,所述一个或多个分段采集指示信息中的每个分段采集指示信息用于指示所述主机从所述第一从机中需要采集的数据,所述第一从机为所述多个从机中的一个;
接收模块,用于接收所述第一从机发送的数据响应报文,所述数据响应报文携带一个或多个分段数据,所述一个或多个分段数据是所述第一从机响应于所述一个或多个分段采集指示信息所提供的数据,所述一个或多个分段数据中的每个分段数据携带的数据数量大于0,且小于或等于256,且每个分段数据携带的第一数据的长度为相应数据数量乘以单位数据长度,所述第一数据为所述第一从机根据相应分段采集指示信息读取的数据,所述数据请求报文和所述数据响应报文均是通过对Modbus报文进行扩容得到。
11.一种数据采集装置,其特征在于,所述装置应用于Modbus系统中的第一从机,所述第一从机为所述Modbus系统包括的多个从机中的一个,所述Modbus系统还包括主机,所述装置包括:接收模块,用于接收所述主机发送的数据请求报文,所述数据请求报文携带一个或多个分段采集指示信息,所述一个或多个分段采集指示信息中的每个分段采集指示信息用于指示所述主机从所述第一从机中需要采集的数据;
确定模块,用于根据所述一个或多个分段采集指示信息,确定一个或多个分段数据;
发送模块,用于向所述主机发送数据响应报文,所述数据响应报文携带所述一个或多个分段数据,所述一个或多个分段数据中的每个分段数据携带的数据数量大于0,且小于或等于256,且每个分段数据携带的第一数据的长度为相应数据数量乘以单位数据长度,所述第一数据为所述第一从机根据相应分段采集指示信息读取的数据,所述数据请求报文和所述数据响应报文均是通过对Modbus报文进行扩容得到。
12.一种数据采集装置,其特征在于,所述装置用于Modbus系统包括的主机,所述Modbus系统还包括多个从机,所述装置包括存储器和处理器;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述计算机程序时实现权利要求1‑7任一所述的方法。
13.一种数据采集装置,其特征在于,所述装置用于Modbus系统包括的第一从机,所述第一从机为所述Modbus系统包括的多个从机中的一个,所述Modbus系统还包括主机,所述装置包括处理器和存储器;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述计算机程序时实现权利要求8或9所述的方法。
14.一种Modbus系统,其特征在于,所述系统包括主机和多个从机,第一从机为所述多个从机中的一个;
所述主机,用于实现权利要求1‑7任一所述的方法;
所述第一从机,用于实现权利要求8或9所述的方法。
15.一种计算机可读存储介质,其特征在于,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1‑7任一所述的方法的步骤,或者,实现权利要求
8或9所述的方法的步骤。 说明书 : 数据采集方法、装置、Modbus系统及存储介质技术领域[0001] 本申请实施例涉及通信技术领域,特别涉及一种数据采集方法、装置、Modbus系统及存储介质。背景技术[0002] Modbus协议是一种串行通信协议,已经成为工业领域通信协议的业界标准,是工业电子设备之间常用的通信方式。Modbus系统包括一个主机和多个从机,主机负责采集各个从机中的数据。[0003] 在相关技术中,Modbus标准协议规定,主机与从机之间通过交互Modbus报文来实现数据采集,一个Modbus报文的最大长度为256字节,其中数据域的长度最大为252字节,也即是一个Modbus报文包括的数据域携带的数据数量受限,以所采集的一个数据的长度为一字节为例,数据域携带的数据数量最大为252。受限于数据域的长度,如果某个从机上需要采集的数据较多,那么主机和从机之间需要多次请求和响应,才能将该从机的全部数据采集完成。[0004] 由上述可知,相关技术中,如果某个从机上需要采集的数据较多,存在该从机长时间占用总线资源的问题,且由于需要从机多次响应来采集,但从机每次响应的有效数据有限,因此总线占用频繁但占用率不高。此外,如果主机在一个从机上耗费时间较多,会导致整个Modbus系统的实时性较低。发明内容[0005] 本申请实施例提供了一种数据采集方法、装置、Modbus系统及存储介质,能够在通过Modbus系统采集数据的过程中降低总线占用频率、提高占用率,同时提高系统实时性。所述技术方案如下:[0006] 第一方面,提供了一种数据采集方法,该数据采集方法用于Modbus系统包括的主机,Modbus系统还包括多个从机,该方法包括:[0007] 主机向第一从机发送数据请求报文,该数据请求报文携带一个或多个分段采集指示信息,该一个或多个分段采集指示信息中的每个分段采集指示信息用于指示主机从第一从机中需要采集的数据,第一从机为多个从机中的一个;主机接收第一从机发送的数据响应报文,该数据响应报文携带一个或多个分段数据,该一个或多个分段数据是第一从机响应于该一个或多个分段采集指示信息所提供的数据,该一个或多个分段数据中的每个分段数据携带的数据数量大于0,且小于或等于256。[0008] 本申请实施例中,主机与从机在一次交互中能够采集一个或多个分段数据,每个分段数据携带的数据数量最大为256。在Modbus系统中,一个数据最小以一字节表示,假设一个数据以一字节表示,例如一个线圈数据,那么每个分段数据携带的数据最多为256字节,假设一个数据以两字节表示,例如一个寄存器数据,那么每个分段数据携带的数据最多为512字节。如果一次交互中能够采集到多个分段数据,那么能够采集的数据量将远大于协议限制的252字节。也即本方案中,主机与从机在一次交互中能够采集的数据量将更多,在需要采集的数据量一定的情况下,能够减少主机与从机之间的交互次数,这样总线占用频率将降低但占用率提高,通信效率提高。另外,由于从机一次响应所提供的数据量更多,主机不会长时间耗费在一个从机上,因此,整个Modbus系统的实时性将得到提高。也即是,在本方案中,主机与从机之间通过交互长数据报文来提高通信效率,提高系统实时性。[0009] 可选地,主机向第一从机发送数据请求报文之前,还包括:主机根据第一从机上待采集数据的地址分布特征,确定一个或多个分段采集指示信息。[0010] 需要说明的是,在本申请实施例中,第一从机上待采集数据的地址可能连续或存在不连续,例如,寄存器地址连续或存在不连续,主机根据地址分布特征来确定分段采集指示信息,能够最大程度的采集更多的有效数据,能够避免在地址不连续的情况下,主机采集到的数据中存在部分无效数据。[0011] 可选地,该一个或多个分段采集指示信息中的每个分段采集指示信息包括一个起始地址和一个数据数量;该一个或多个分段数据中的每个分段数据包括一个起始地址、一个数据数量和第一数据,第一数据为第一从机根据相应分段采集指示信息读取的数据。[0012] 可选地,在本申请实施例中,通过对Modbus报文进行扩展,得到数据请求报文和数据响应报文。也即是,数据请求报文包括第一地址域、第一功能域和第一数据域,第一地址域携带第一从机的地址,第一功能域携带第一功能码,第一数据域携带一个或多个分段采集指示信息,第一功能码用于指示主机请求第一从机执行采集数据的功能;数据响应报文包括第二地址域、第二功能域和第二数据域,第二地址域携带第一从机的地址,第二功能域携带第二功能码,第二数据域携带一个或多个分段数据,第二功能码用于指示第一从机实际执行的功能。[0013] 为了提高主机与从机之间通信的可靠性,解决通信双方帧匹配异常的问题,可选地,在本申请实施例中,第一数据域还携带第一帧序号,第二数据域还携带第二帧序号,第一帧序号和第二帧序号用于主机将数据请求报文与数据响应报文进行帧匹配。例如,第一帧序号与第二帧序号相同,表示相应的数据请求报文和数据响应报文为帧匹配的报文。[0014] 可选地,第一数据域还携带分段请求数,分段请求数用于指示主机请求第一从机分段采集的数据的分段数量;第二数据域还携带分段响应数,分段响应数用于指示第一从机实际分段采集的数据的分段数量。[0015] 在本申请实施例中,对于Modbus系统包括的多个从机,主机可以灵活设置采集各个从机上的数据的采集时间,以提高Modbus系统的整体性能,也即保证通信效率、通信质量以及系统实时性。[0016] 可选地,主机在同一时刻向多个从机中的每个从机发送对应的数据请求报文,以完成一轮采集;或者,主机根据轮询顺序,依次向多个从机中的每个从机发送对应的数据请求报文,以完成一轮采集;或者,主机根据多个从机中的每个从机上待采集数据的数据量,确定相应从机对应的采集时间,主机按照多个从机中的每个从机对应的采集时间,向多个从机中的每个从机发送对应的数据请求报文。[0017] 需要说明的是,在主机同时向所有的从机请求采集数据的情况下,主机无需等待某个从机响应完再请求下一个,这样大大缩小了一轮采集的时长,减小了耗时。在主机根据轮询顺序依次向各个从机请求采集数据的情况下,主机与从机之间采用一问一答的方式,能够保证主机在一轮采集中成功轮询采集到每个从机上的数据。在主机按照各个从机上待采集数据的数据量来请求采集数据的情况下,主机更加灵活地确定各个从机对应的采集时间,能够提高采集方法的灵活性,充分利用系统资源,避免某些从机数据量较大而导致应答业务过忙,而另一些从机数据量较小却迟迟得不到采集。[0018] 可选地,主机根据该多个从机中的每个从机对应的业务实时性要求,来确定相应从机的采集时间,主机按照该多个从机中的每个从机对应的采集时间,向该多个从机中的每个从机发送对应的数据请求报文,这样,能够满足各个从机对应的业务实时性要求,也即对于对应的业务实时性较高的从机,主机以较高的频率来采集相应从机上的数据,对于对应的业务实时性较低的从机,主机以较低的频率来采集相应从机上的数据。[0019] 可选地,主机根据该多个从机中的每个从机上待采集数据的数据量和对应的业务实时性要求,来确定相应从机的采集时间,主机按照多个从机中的每个从机对应的采集时间,向多个从机中的每个从机发送对应的数据请求报文,以同时兼顾数据量大小和实时性需求,提高Modbus系统的整体性能。[0020] 第二方面,提供一种数据采集方法,该数据采集方法用于Modbus系统包括的第一从机,第一从机为Modbus系统包括的多个从机中的一个,Modbus系统还包括主机,该方法包括:[0021] 第一从机接收主机发送的数据请求报文,该数据请求报文携带一个或多个分段采集指示信息,该一个或多个分段采集指示信息中的每个分段采集指示信息用于指示主机从第一从机中需要采集的数据;第一从机根据一个或多个分段采集指示信息,确定一个或多个分段数据;第一从机向主机发送数据响应报文,该数据响应报文携带一个或多个分段数据,该一个或多个分段数据中的每个分段数据携带的数据数量大于0,且小于或等于256。[0022] 本申请实施例中,主机与从机在一次交互中能够采集一个或多个分段数据,每个分段数据携带的数据数量最大为256。在Modbus系统中,一个数据最小以一字节表示,假设一个数据以一字节表示,例如一个线圈数据,那么每个分段数据携带的数据最多为256字节,假设一个数据以两字节表示,例如一个寄存器数据,那么每个分段数据携带的数据最多为512字节。如果一次交互中能够采集到多个分段数据,那么能够采集的数据量将远大于协议限制的252字节。也即本方案中,主机与从机在一次交互中能够采集的数据量将更多,在需要采集的数据量一定的情况下,能够减少主机与从机之间的交互次数,这样总线占用频率将降低但占用率提高,通信效率提高。另外,由于从机一次响应所提供的数据量更多,主机不会长时间耗费在一个从机上,因此,整个Modbus系统的实时性将得到提高。也即是,在本方案中,主机与从机之间通过交互长数据报文来提高通信效率,提高系统实时性。[0023] 可选地,该一个或多个分段采集指示信息中的每个分段采集指示信息包括一个起始地址和一个数据数量;第一从机根据一个或多个分段采集指示信息,确定一个或多个分段数据,包括:第一从机从第一起始地址开始连续读取第一数据数量的数据,得到第一数据,第一起始地址为第一分段采集指示信息包括的起始地址,第一数据数量为第一分段采集指示信息包括的数据数量,第一分段采集指示信息为一个或多个分段采集指示信息中的一个;第一从机将第一起始地址、第一数据数量和第一数据作为一个分段数据。[0024] 第一从机根据该一个或多个分段采集指示信息中的每个分段采集指示信息读取完全部数据之后,得到该一个或多个分段数据。[0025] 可选地,在本申请实施例中,通过对Modbus报文进行扩展,得到数据请求报文和数据响应报文。对数据请求报文以及数据响应报文的相关介绍参照前述第一方面的相关介绍,这里不再赘述。[0026] 第三方面,提供了一种数据采集装置,所述数据采集装置具有实现上述第一方面中数据采集方法行为的功能。所述数据采集装置包括一个或多个模块,该一个或多个模块用于实现上述第一方面所提供的数据采集方法。[0027] 也即是,本申请实施例提供了一种数据采集装置,该装置用于Modbus系统包括的主机,Modbus系统还包括多个从机,该装置包括:[0028] 发送模块,用于向第一从机发送数据请求报文,该数据请求报文携带一个或多个分段采集指示信息,该一个或多个分段采集指示信息中的每个分段采集指示信息用于指示主机从第一从机中需要采集的数据,第一从机为多个从机中的一个;[0029] 接收模块,用于接收第一从机发送的数据响应报文,该数据响应报文携带一个或多个分段数据,该一个或多个分段数据是第一从机响应于该一个或多个分段采集指示信息所提供的数据,该一个或多个分段数据中的每个分段数据携带的数据数量大于0,且小于或等于256。[0030] 可选地,该装置还包括:[0031] 确定模块,用于根据第一从机上待采集数据的地址分布特征,确定该一个或多个分段采集指示信息。[0032] 可选地,该一个或多个分段采集指示信息中的每个分段采集指示信息包括一个起始地址和一个数据数量;[0033] 该一个或多个分段数据中的每个分段数据包括一个起始地址、一个数据数量和第一数据,第一数据为第一从机根据相应分段采集指示信息读取的数据。[0034] 可选地,该数据请求报文包括第一地址域、第一功能域和第一数据域,第一地址域携带第一从机的地址,第一功能域携带第一功能码,第一数据域携带该一个或多个分段采集指示信息,第一功能码用于指示主机请求第一从机执行采集数据的功能;[0035] 该数据响应报文包括第二地址域、第二功能域和第二数据域,第二地址域携带第一从机的地址,第二功能域携带第二功能码,第二数据域携带该一个或多个分段数据,第二功能码用于指示第一从机实际执行的功能。[0036] 可选地,第一数据域还携带第一帧序号,第二数据域还携带第二帧序号,第一帧序号和第二帧序号用于主机将数据请求报文与数据响应报文进行帧匹配。[0037] 可选地,第一数据域还携带分段请求数,该分段请求数用于指示主机请求第一从机分段采集的数据的分段数量;[0038] 第二数据域还携带分段响应数,该分段响应数用于指示第一从机实际分段采集的数据的分段数量。[0039] 可选地,主机在同一时刻向该多个从机中的每个从机发送对应的数据请求报文,以完成一轮采集;或者,主机根据轮询顺序,依次向该多个从机中的每个从机发送对应的数据请求报文,以完成一轮采集;或者,主机根据该多个从机中的每个从机上待采集数据的数据量,确定相应从机对应的采集时间,主机按照该多个从机中的每个从机对应的采集时间,向该多个从机中的每个从机发送对应的数据请求报文。[0040] 第四方面,提供了一种数据采集装置,所述数据采集装置具有实现上述第二方面中数据采集方法行为的功能。所述数据采集装置包括一个或多个模块,该一个或多个模块用于实现上述第二方面所提供的数据采集方法。[0041] 也即是,本申请实施例提供了一种数据采集装置,该装置用于Modbus系统包括的第一从机,第一从机为Modbus系统包括的多个从机中的一个,该Modbus系统还包括主机,该装置包括:[0042] 接收模块,用于接收主机发送的数据请求报文,该数据请求报文携带一个或多个分段采集指示信息,该一个或多个分段采集指示信息中的每个分段采集指示信息用于指示主机从第一从机中需要采集的数据;[0043] 确定模块,用于根据该一个或多个分段采集指示信息,确定一个或多个分段数据;[0044] 发送模块,用于向主机发送数据响应报文,数据响应报文携带该一个或多个分段数据,该一个或多个分段数据中的每个分段数据携带的数据数量大于0,且小于或等于256。[0045] 可选地,该一个或多个分段采集指示信息中的每个分段采集指示信息包括一个起始地址和一个数据数量;[0046] 确定模块包括:[0047] 读取子模块,用于从第一起始地址开始连续读取第一数据数量的数据,得到第一数据,第一起始地址为第一分段采集指示信息包括的起始地址,第一数据数量为第一分段采集指示信息包括的数据数量,第一分段采集指示信息为该一个或多个分段采集指示信息中的一个;[0048] 确定子模块,用于将第一起始地址、第一数据数量和第一数据作为一个分段数据。[0049] 第五方面,提供了一种数据采集装置,所述装置用于Modbus系统包括的主机,所述Modbus系统还包括多个从机,所述装置包括存储器和处理器。所述存储器用于存储计算机程序,所述处理器用于执行所述存储器中存储的计算机程序,实现上述第一方面所提供的数据采集方法。[0050] 第六方面,提供了一种数据采集装置,所述装置用于Modbus系统包括的第一从机,所述第一从机为所述Modbus系统包括的多个从机中的一个,所述Modbus系统还包括主机,所述装置包括处理器和存储器。所述存储器,用于存储计算机程序,所述处理器用于执行所述存储器中存储的计算机程序,实现上述第二方面所提供的数据采集方法。[0051] 第七方面,提供了一种Modbus系统,所述系统包括主机和多个从机,第一从机为所述多个从机中的一个;[0052] 所述主机,用于实现上述第一方面所提供的数据采集方法;[0053] 所述第一从机,用于实现上述第二方面所提供的数据采集方法。[0054] 第八方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面所述的数据采集方法。[0055] 第九方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面所述的数据采集方法。[0056] 上述第三方面、第四方面、第五方面、第六方面、第七方面、第八方面和第九方面所获得的技术效果与第一方面或第二方面中对应的技术手段获得的技术效果近似,在这里不再赘述。[0057] 本申请实施例提供的技术方案至少能够带来以下有益效果:[0058] 在本申请实施例中,主机与从机在一次交互中能够采集一个或多个分段数据,每个分段数据携带的数据数量最大为256。在Modbus系统中,一个数据最小以一字节表示,那么每个分段数据携带的数据最多为256字节,如果一次交互中能够采集到多个分段数据,那么能够采集的数据量将远大于协议限制的252字节。也即本方案中,主机与从机在一次交互中能够采集的数据量将更多,在需要采集的数据量一定的情况下,能够减少主机与从机之间的交互次数,这样总线占用频率将降低但占用率提高,通信效率提高。另外,由于从机一次响应所提供的数据量更多,主机不会长时间耗费在一个从机上,因此,整个Modbus系统的实时性将得到提高。附图说明[0059] 图1是本申请实施例提供的一种数据采集方法所涉及的系统架构图;[0060] 图2是本申请实施例提供的一种计算机设备的结构示意图;[0061] 图3是本申请实施例提供的一种数据采集方法的流程图;[0062] 图4是本申请实施例提供的一种主机与第一从机之间进行帧匹配的示意图;[0063] 图5是本申请实施例提供的一种主机采集多个从机上数据的方法示意图;[0064] 图6是本申请实施例提供的另一种主机采集多个从机上数据的方法示意图;[0065] 图7是本申请实施例提供的一种数据采集装置的结构示意图;[0066] 图8是本申请实施例提供的另一种数据采集装置的结构示意图。具体实施方式[0067] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。[0068] 本申请实施例描述的网络架构以及业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。[0069] 图1是本申请实施例提供的一种数据采集方法所涉及的系统架构图。该系统为Modbus系统,参见图1,Modbus系统包括一个主机101和多个从机102,主机101与各个从机102之间能够通过有线或无线方式连接以进行通信。[0070] 在本申请实施例中,以主机101采集第一从机102上的数据为例,第一从机102为该多个从机102中的一个,主机101用于向第一从机102发送数据请求报文,该数据请求报文携带一个或多个分段采集指示信息,表示主机101将分段采集第一从机102上的数据。第一从机102用于根据接收到的数据请求报文分段读取对应的数据,以确定一个或多个分段数据,并向主机101发送携带这些分段数据的数据响应报文。主机101与该多个从机102中除第一从机102之外的其他从机102,均能够按照与第一从机102相同的交互方式来采集相应从机102上的数据。[0071] 需要说明的是,在本申请实施例中,主机101所采集的每个分段数据携带的数据数量最大为256,在主机101一次请求、从机一次响应来采集多个分段数据的情况下,本方案一次请求和响应所采集的数据不会受限于252字节,也即是,本方案能够通过长数据报文来提高通信效率。[0072] 在一些实施例中,主机101称为集中控制器、数据中心、总控中心(enterprisecommandcenter,ECC)等,从机102称为南向设备。[0073] 在本申请实施例中,主机101为电脑、控制器、服务器等设备,任一从机102为电磁锁、自动平移门、门禁机、紧急按钮、门禁执行器、天窗电磁锁、天窗执行器、无线局域网(wirelessfidelity,WiFi)转换器、摄像机、电脑、手机、机柜门磁、机柜电子锁、温度传感器、水浸传感器、声光告警器、智能远程电源控制器(remotepowerdistributionunit,rPDU)、智能U位管理器、空调、配电柜、智能母线槽等设备。[0074] 请参考图2,图2是根据本申请实施例示出的一种计算机设备的结构示意图。可选地,该计算机设备为图1中所示的主机101或从机102,该计算机设备包括一个或多个处理器201、通信总线202、存储器203以及一个或多个通信接口204。[0075] 处理器201为一个通用中央处理器(centralprocessingunit,CPU)、网络处理器(networkprocessing,NP)、微处理器、或者为一个或多个用于实现本申请方案的集成电路,例如,专用集成电路(application‑specificintegratedcircuit,ASIC),可编程逻辑器件(programmablelogicdevice,PLD)或其组合。可选地,上述PLD为复杂可编程逻辑器件(complexprogrammablelogicdevice,CPLD),现场可编程逻辑门阵列(field‑programmablegatearray,FPGA),通用阵列逻辑(genericarraylogic,GAL)或其任意组合。[0076] 通信总线202用于在上述组件之间传送信息。可选地,通信总线202分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。[0077] 可选地,存储器203为只读存储器(read‑onlymemory,ROM)、随机存取存储器(randomaccessmemory,RAM)、电可擦可编程只读存储器(electricallyerasableprogrammableread‑onlymemory,EEPROM)、光盘(包括只读光盘(compactdiscread‑onlymemory,CD‑ROM)、压缩光盘、激光盘、数字通用光盘、蓝光光盘等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器203独立存在,并通过通信总线202与处理器201相连接,或者,存储器203与处理器201集成在一起。[0078] 通信接口204使用任何收发器一类的装置,用于与其它设备或通信网络通信。通信接口204包括有线通信接口,可选地,还包括无线通信接口。其中,有线通信接口例如以太网接口等。可选地,以太网接口为光接口、电接口或其组合。无线通信接口为无线局域网(wirelesslocalareanetworks,WLAN)接口、蜂窝网络通信接口或其组合等。当该计算机设备为主机101时,通信接口204用于与从机102通信,当该计算机设备为从机102时,通信接口204用于与主机101通信。[0079] 可选地,在一些实施例中,计算机设备包括多个处理器,如图2中所示的处理器201和处理器205。这些处理器中的每一个为一个单核处理器,或者一个多核处理器。可选地,这里的处理器指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。[0080] 在具体实现中,作为一种实施例,计算机设备还包括输出设备206和输入设备207。输出设备206和处理器201通信,能够以多种方式来显示信息。例如,输出设备206为液晶显示器(liquidcrystaldisplay,LCD)、发光二级管(lightemittingdiode,LED)显示设备、阴极射线管(cathoderaytube,CRT)显示设备或投影仪(projector)等。输入设备207和处理器201通信,能够以多种方式接收用户的输入。例如,输入设备207是鼠标、键盘、触摸屏设备或传感设备等。[0081] 在一些实施例中,存储器203用于存储执行本申请方案的程序代码210(也称为计算机程序),处理器201能够执行存储器203中存储的程序代码210。该程序代码210中包括一个或多个软件模块,该计算机设备能够通过处理器201以及存储器203中的程序代码210,来实现下文图3实施例提供的数据采集方法。[0082] 当该计算机设备为主机101时,存储器203用于存储程序代码210,处理器201用于执行存储器203中存储的程序代码210,实现本申请实施例提供的数据采集方法中主机的相应功能。示例性地,当图7所示实施例中的发送模块701和接收模块702是通过软件实施的情况下,该程序代码210中可以包括发送模块和接收模块,发送模块用于向从机发送数据请求报文,接收模块用于接收从机发送的数据响应报文。[0083] 当该计算机设备为从机102时,存储器203用于存储程序代码210,处理器201用于执行存储器203中存储的程序代码210,实现本申请实施例提供的数据采集方法中从机的相应功能。示例性地,当图8所示实施例中的接收模块801、确定模块802和发送模块803是通过软件实施的情况下,该程序代码210中可以包括接收模块、确定模块和发送模块,接收模块用于接收主机发送的数据请求报文,确定模块用于根据数据请求报文确定分段数据,发送模块用于向主机发送数据响应报文。[0084] 图3是本申请实施例提供的一种数据采集方法的流程图。在本申请实施例中,数据采集方法用于Modbus系统,Modbus系统包括主机和多个从机。请参考图3,该方法包括如下步骤。[0085] 步骤301:主机向第一从机发送数据请求报文,该数据请求报文携带一个或多个分段采集指示信息,该一个或多个分段采集指示信息中的每个分段采集指示信息用于指示该主机从第一从机中需要采集的数据。[0086] 在本申请实施例中,Modbus系统包括主机和多个从机,主机能够采集该多个从机中的每个从机上的数据,例如采集寄存器数据、线圈数据等。接下来以主机采集第一从机上的数据为例对此进行介绍,第一从机为多个从机中的一个。[0087] 在本申请实施例中,主机向第一从机发送数据请求报文,该数据请求报文携带一个或多个分段采集指示信息,该多个分段采集指示信息中的每个分段采集指示信息用于指示该主机从第一从机中需要采集的数据。也即是,在本申请实施例中,主机能够分段采集第一从机中的数据。[0088] 可选地,在本申请实施例中,第一从机上待采集数据的地址可能连续或存在不连续,例如,寄存器地址连续或存在不连续,主机向第一从机发送数据请求报文之前,还能够先根据第一从机上待采集数据的地址分布特征,确定该一个或多个分段采集指示信息,也即第一从机上待采集数据的地址分布特征用于指示主机确定该一个或多个分段采集指示信息。[0089] 在本申请实施例中,在第一从机加入Modbus系统之前,由开发人员将第一从机对应的地址分布特征写入主机。示例性地,采购一款空调以加入Modbus系统时,供销商将这款空调的产品相关信息提供给开发人员,产品相关信息包括这款空调对应的地址分布特征,例如,寄存器地址分布特征,寄存器地址分布特征用于描述哪段寄存器用于存储温度、哪段寄存器用于存储风速等等,然后由开发人员将这款空调的产品相关信息写入主机,后续这款空调加入Modbus系统之后,主机需要采集这款空调上的数据时,能够根据这款空调对应的地址分布特征,来确定一个或多个分段采集指示信息。[0090] 需要说明的是,主机根据地址分布特征来确定分段采集指示信息,能够最大程度的采集更多的有效数据,可以避免地址不连续的情况下,主机采集到的数据中存在部分无效数据。[0091] 在本申请实施例中,该一个或多个分段采集指示信息中的每个分段采集指示信息包括一个起始地址和一个数据数量,以指示第一从机中需要分段采集的数据的每个起始地址和对应的数据数量。[0092] 可选地,起始地址的长度为两个字节,数据数量的长度为一个字节,也即,主机可以从0‑65535寻址采集从机上的数据,以二进制表示的数据数量的值大于0,且小于或等于256,表示相应分段采集指示信息用于指示该分段最多采集256个数据,例如该分段最多采集256个寄存器数据。[0093] 在本申请实施例中,通过对Modbus报文进行扩展,得到数据请求报文。数据请求报文包括第一地址域、第一功能域和第一数据域,第一地址域携带第一从机的地址,第一功能域携带第一功能码,第一数据域携带该一个或多个分段采集指示信息,第一功能码用于指示主机请求第一从机执行采集数据的功能。[0094] 可选地,第一地址域的长度为一个字节,也即第一从机的地址以一个字节表示,第一功能域的长度为一个字节或两个字节。[0095] 需要说明的是,第一功能域包括的第一功能码为Modbus协议预留的用户可定义的一个功能码,即十进制的65‑72和100‑110中的任一个功能码,第一功能码的长度为一个字节,也即在第一功能域包括第一功能码的情况下,第一功能域的长度为一个字节。[0096] 由于用户可定义的功能码的个数有限,因此,在一些实施例中,还能通过定义子功能码来指示相应的功能,也即是,第一功能域除了携带第一功能码之外,还携带第一子功能码,第一子功能码和第一功能码共同指示主机请求第一从机执行采集数据的功能。可选地,第一子功能码的长度为一个字节,值为十进制的0‑255中的任一个。在第一功能域包括第一功能码和第一子功能码的情况下,第一功能域的长度为两个字节。[0097] 为了提高主机与从机之间通信的可靠性,解决通信双方帧匹配异常的问题,在本申请实施例中,第一数据域还携带第一帧序号,第一从机能够根据第一帧序号来响应该数据请求报文,也即第一从机向主机发送数据响应报文,数据响应报文携带第二帧序号,第一帧序号和第二帧序号用于主机将数据请求报文与数据响应报文进行帧匹配。例如,第一帧序号与第二帧序号相同,表示相应的数据请求报文和数据响应报文为帧匹配的报文。[0098] 可选地,第一帧序号的长度为一个字节,值为十进制的0‑255中的任一个,或者第一帧序号为两个字节,值为十进制的0‑65535中的任一个,或者第一帧序号为其他长度。也即是,第一帧序号的最大值可以根据通信需求定义。[0099] 可选地,第一数据域还携带分段请求数,分段请求数用于指示主机请求第一从机分段采集的数据的分段数量。也即是,由主机直接将请求的分段数量携带在数据请求报文中,无需第一从机根据一个或多个分段采集指示信息,来累加计算得到该分段数量。[0100] 可选地,分段请求数的长度为指定长度,例如为一个字节,表示最多分256个段来采集数据,这样,以通过分段请求数来限制报文最大长度,保证通信质量。示例性地,在第一从机上的全部数据通过256个段无法采集完全的情况下,主机需要通过多次请求来采集第一从机上的全部数据,每次请求采集一部分数据,这样,能够避免在一次交互的情况下,携带第一从机上全部数据的数据响应报文丢失,或者第一从机超时未响应时,主机采集不到任何数据。[0101] 或者,分段请求数的长度不作限定,主机根据第一从机上需要采集的数据量、以及地址分布特征,来确定分段请求数,以通过一次交互将第一从机上的数据采集完,最大程度上减少交互次数,提高通信效率。示例性地,假设主机确定需要分20个段即可以将第一从机上的数据采集完,那么分段请求数的长度为一个字节,十进制的值为20。假设主机确定需要分500个段才能将第一从机上的数据采集完,那么分段请求数的长度为两个字节,十进制的值为500。[0102] 可选地,第一数据域还携带第一数据长度,第一数据长度的值为十六进制的0xFF,表示第一数据长度为无效值,第一从机在解析数据请求报文得到该值之后,获知主机并不通过第一数据长度来限制需要采集的数据的长度,从而直接忽略第一数据长度,相比于标准协议规定的数据长度以一个字节来表示,本方案并不限定数据长度,以此来实现通过交互长数据报文来提高通信效率。[0103] 表1是对本申请实施例提供的一种数据请求报文的格式描述。参见表1,数据请求报文包括第一地址域(未示出)和第一协议数据单元(protocoldataunit,PDU),第一PDU包括第一功能域和第一数据域,第一功能域携带第一功能码和第一子功能码,第一功能码和第一子功能码的长度均为一个字节,在本申请实施例中,第一功能码的值为十六进制的0x41,第一子功能码的值为十六进制的0x33。第一数据域携带第一数据长度、第一帧序号、分段请求数和n个分段采集指示信息。其中,第一数据长度的长度为一个字节,值为十六进制的0xFF,表示第一数据长度为无效值,第一帧序号的长度为一个字节,第一帧序号由主机设置,第一从机在数据响应报文中回填的第二帧序号与第一帧序号相同,分段请求数的长度为一个字节,值为十进制的1‑256中的任一个,值用符号表示为numBlock,表示分为n段请求,也即n=numBlock。表1中以分段1‑n表示这n个分段采集指示信息,每个分段采集指示信息包括一个起始地址和一个数据数量,起始地址的长度为两个字节,数据数量的长度为一个字节,表示第一从机需要从该起始地址开始连续读取该数据数量的数据。[0104] 表1[0105][0106] 可选地,主机与从机之间选择基于Modbus协议的一种工作模式,Modbus协议的工作模式有Modbus远程终端单元(remoteterminalunit,RTU)的总线模式、Modbus传输控制协议(transmissioncontrolprotocol,TCP)的网络模式等。在ModbusRTU的总线模式下,主机发送的数据请求报文即携带第一地址域、第一功能域和第一数据域,在ModbusTCP的网络模式下,主机发送的数据请求报文携带第一TCP报文头、第一ModbusTCP报文头和第一Modbus数据帧,第一Modbus数据帧包括第一地址域、第一功能域和第一数据域。[0107] 步骤302:第一从机接收主机发送的数据请求报文。[0108] 在本申请实施例中,主机向第一从机发送数据请求报文之后,根据数据请求报文中携带的第一从机的地址,将该数据请求报文发送给第一从机,第一从机接收主机发送的该数据请求报文。[0109] 步骤303:第一从机根据该一个或多个分段采集指示信息,确定一个或多个分段数据,该一个或多个分段数据中的每个分段数据携带的数据数量大于0,且小于或等于256。[0110] 在本申请实施例中,第一从机在接收到数据请求报文之后,能够根据数据请求报文携带的一个或多个分段指示信息,来分段读取相应的数据,以确定一个或多个分段数据。[0111] 在本申请实施例中,该一个或多个分段数据中的每个分段数据包括一个起始地址、一个数据数量和第一数据,第一数据为第一从机根据相应分段采集指示信息读取的数据。需要说明的是,该一个或多个分段数据中的每个分段数据携带的数据数量大于0,且小于或等于256。[0112] 由前述可知,一个或多个分段采集指示信息中的每个分段采集指示信息包括一个起始地址和一个数据数量,第一从机从第一起始地址开始连续读取第一数据数量的数据,得到第一数据,之后,第一从机将第一起始地址、第一数据数量和第一数据作为一个分段数据。其中,第一起始地址为第一分段采集指示信息包括的起始地址,第一数据数量为第一分段采集指示信息包括的数据数量,第一分段采集指示信息为一个或多个分段采集指示信息中的一个。[0113] 第一从机根据该一个或多个分段采集指示信息中的每个分段采集指示信息读取完全部数据之后,得到该一个或多个分段数据,该一个或多个分段数据即为第一从机响应于该一个或多个分段采集指示信息所提供的数据。[0114] 需要说明的是,每个分段数据包括的第一数据的长度为相应数据数量乘以单位数据长度,单位数据长度是指主机所采集的一个数据的长度,例如,一个寄存器数据的长度为两个字节,对应的单位数据长度即等于两字节,一个线圈数据的长度为一个字节,对应的单位数据长度即等于一字节。[0115] 示例性地,假设主机采集第一从机上的寄存器数据,一个寄存器数据的长度为两个字节,单位数据长度等于两字节,上述起始地址为寄存器地址,数据数量为寄存器数目,第一从机接收到的数据请求报文携带3个分段采集指示信息,第一个分段采集指示信息包括寄存器地址D1和寄存器数目N1,第二个分段采集指示信息包括寄存器地址D2和寄存器数目N2,第三个分段采集指示信息包括寄存器地址D3和寄存器数目N3,那么第一从机从D1开始连续读取N1个寄存器数据,得到第一个分段数据,第一个分段数据的长度为2*N1,从D2开始连续读取N2个寄存器数据,得到第二个分段数据,第二个分段数据的长度为2*N2,从D3开始连续读取N3个寄存器数据,得到第三个分段数据,第三个分段数据的长度为2*N3。[0116] 第一从机在读取到该一个或多个分段数据之后,将该一个或多个分段数据封装在数据响应报文中,也即数据响应报文携带该一个或多个分段数据。[0117] 在本申请实施例中,同样对Modbus报文进行扩展,得到数据响应报文。数据响应报文包括第二地址域、第二功能域和第二数据域,第二地址域携带第一从机的地址,第二功能域携带第二功能码,第二数据域携带该一个或多个分段数据,第二功能码用于指示第一从机实际执行的功能。[0118] 可选地,第二地址域的长度为一个字节,也即第一从机的地址以一个字节表示,第二地址域和第二功能域的值相同。第二功能域的长度为一个字节或两个字节,需要说明的是,第二功能域的值与第一功能域携带的功能码相同,表示第一从机正确执行了主机请求执行的功能。也即是,在第一功能域仅包括第一功能码的情况下,第二功能域也仅包括第二功能码,且在第一从机正确执行相应功能的情况下,第二功能码与第一功能码相同,在第一功能域包括第一功能码和第一子功能码的情况下,第二功能域也包括第二功能码和第二子功能码,且在第一从机正确执行相应功能的情况下,第二功能码和第一功能码相同,第二子功能码和第一子功能码也相同。[0119] 示例性地,假设第一功能域包括第一功能码和第一子功能码,第一功能码为十六进制的0x41,第一子功能码为十六进制的0x33,在第一从机正确执行了相应功能的情况下,第二功能域包括第二功能码和第二子功能码,且第二功能码也为十六进制的0x41,第二子功能码也为十六进制的0x33。[0120] 由前述可知,为了提高主机与从机之间通信的可靠性,第一数据域还携带第一帧序号,在这种情况下,第二数据域还携带第二帧序号,第一帧序号和第二帧序号用于主机将数据请求报文与数据响应报文进行帧匹配。例如,第一从机在解析数据请求报文,得到第一帧序号之后,第一从机将数据响应报文携带的第二帧序号设置与第一帧序号相同,以指示主机将该数据响应报文与数据请求报文进行帧匹配。[0121] 可选地,第二帧序号的长度与第一帧序号相同,为一个字节,或者两个字节,或为其他长度。[0122] 可选地,第二数据域还携带分段响应数,分段响应数用于指示第一从机实际分段采集的数据的分段数量。也即是,由第一从机直接将实际响应的分段数量携带在数据响应报文中,无需主机根据一个或多个分段数据,来累加计算得到该分段数量。[0123] 需要说明的是,在第一从机按照该一个或多个分段采集指示信息正确读取数据的情况下,该分段响应数与分段请求数相同。可选地,分段响应数的长度与分段请求数的长度相同,也即分段响应数与分段请求数为对应的字段,以保证主机和从机将相对应的字段按照相同长度封装成报文,保证通信双方均能正确解析报文。[0124] 可选地,第二数据域还携带第二数据长度,第二数据长度的值为十六进制的0xFF,表示第二数据长度为无效值,主机在解析数据响应报文得到该值之后,获知第一从机也并不通过第二数据长度来限制实际读取的数据的长度,从而主机直接忽略第二数据长度。[0125] 可选地,在第一从机根据一个分段采集指示信息,并未寻址读取到数据的情况下,第一从机可以将相应的起始地址、数据数量和错误信息,作为相应的分段数据,以指示主机未获取到相应数据。可选地,错误信息由一个字节表示,值为0xFF,表示相应分段数据无效。[0126] 表2是对本申请实施例提供的一种数据响应报文的格式描述。参见表2,数据响应报文包括第二地址域(未示出)和第二协议数据单元(protocoldataunit,PDU),第二PDU包括第二功能域和第二数据域,第二功能域携带第二功能码和第二子功能码,第二功能码和第二子功能码的长度均为一个字节,在本申请实施例中,第二功能码与第一功能码相同,为十六进制的0x41,第二子功能码与第一子功能码相同,为十六进制的0x33。第二数据域携带第二数据长度、第二帧序号、分段响应数和n个分段数据。其中,第二数据长度的长度为一个字节,值为十六进制的0xFF,表示第二数据长度为无效值,第二帧序号的长度为一个字节,第二帧序号与第一帧序号相同,第二帧序号由第一从机回填,第一从机在数据响应报文中回填的第二帧序号与第一帧序号相同,分段响应数的长度为一个字节,值为十进制的1‑256中的任一个,值用符号表示为numBlock,表示分为n段响应,也即n=numBlock,在第一从机正确响应的情况下,分段响应数与分段请求数相同。表2中以分段1‑n表示这n个分段数据,每个分段数据包括一个起始地址、一个数据数量和一个第一数据,起始地址的长度为两个字节,数据数量的长度为一个字节,表示第一从机从该起始地址开始读取了该数据数量的数据,第一数据的长度为单位数据长度乘以相应数据数量。表2中以采集寄存器数据为例,一个寄存器数据的长度为2个字节,也即单位数据长度为两字节,假设第i个分段数据携带的数据数量为numRegBlocki,那么第i个分段数据携带的第一数据的长度为2*numRegBlocki,第i个分段数据的总长度为3+2*numRegBlocki。[0127] 表2[0128][0129] 在本申请实施例中,假设分段请求数和分段响应数均以一个字节表示,值均为numBlock,那么numBlock的最大值为256,表示主机分段请求以及从机分段响应最多能分256段采集数据,假设采集寄存器数据,每个分段数据携带的数据数量以一个字节表示,也即每个分段数据最多携带的数据数量为256,那么每个分段数据携带的第一数据的数据量最多可达2*256字节,也即512字节,这样,在最多请求256段,每个分段数据最多携带512字节的有效数据的情况下,主机与第一从机之间通过一次交互即最多可采集131072字节的有效数据,大大提高了通信效率。[0130] 由前述可知,主机配置的工作模式有ModbusRTU的总线模式或者ModbusTCP的网络模式,那么,在主机选择ModbusRTU的总线模式的情况下,第一从机也按照ModbusRTU的总线模式封装数据响应报文,也即数据响应报文携带第二地址域、第二功能域和第二数据域,在主机选择ModbusTCP的网络模式的情况下,第一从机也按照ModbusTCP的网络模式封装数据响应报文,也即数据响应报文携带第二TCP报文头、第二ModbusTCP报文头和第二Modbus数据帧,第二Modbus数据帧包括第二地址域、第二功能域和第二数据域。[0131] 步骤304:第一从机向主机发送数据响应报文,该数据响应报文携带该一个或多个分段数据。[0132] 在本申请实施例中,第一从机在封装得到数据响应报文之后,向主机发送该数据响应报文。[0133] 步骤305:主机接收第一从机发送的数据响应报文。[0134] 在本申请实施例中,主机在接收到第一从机发送的数据响应报文之后,能够解析获取该数据响应报文携带的一个或多个分段数据,也即获取到需要采集的数据。[0135] 可选地,在数据响应报文携带第二帧序号的情况下,主机将发送的数据请求报文中携带的第一帧序号与第二帧序号相同的数据请求报文,与该数据响应报文进行匹配,以确定接收到正确匹配的数据响应报文。如果接收到第一从机发送的数据响应报文携带的第二帧序号与第一帧序号不同,那么主机确定该数据响应报文为异常报文,将该数据响应报文丢弃,或者作为历史数据处理,或者作其他处理。[0136] 可选地,主机与第一从机之间配置有超时应答机制,主机在第一从机未超时应答之前,一直等待第一从机应答,且在主机接收到第一从机应答的情况下,判断应答的第二帧序号是否与请求的第一帧序号相同,如果帧序号相同,则主机正常接收数据响应报文,如果帧序号不同,则主机确定该数据响应报文为异常报文,主机在第一从机未超时应答之前,继续等待第一从机应答正确的数据响应报文。可选地,主机在第一从机超时未响应的情况下,如果接收到携带的第二帧序号与第一帧序号相同的数据响应报文,主机确定该数据响应报文为异常报文,主机重新向第一从机发送数据请求报文以请求采集数据,此时发送的数据请求报文携带的第一帧序号与上一次发送的数据求报文携带的第一帧序号相同或不同。[0137] 示例性地,参见图4,第一从机为空调1,主机在t1时刻向第一从机发送携带帧序号为1的数据请求报文,第一从机超时未应答,主机在t4时刻向第一从机发送携带帧序号为y的数据请求报文,主机在t5时刻接收到第一从机应答携带帧序号为1的数据响应报文,由于应答的帧序号不是y,因此,主机将携带帧序号为1的数据响应报文丢弃,主机在t6时刻接收到第一从机发送的携带帧序号为y的数据响应报文,该数据响应报文未超时,主机将该数据响应报文正常解析作数据处理。[0138] 以上以主机与第一从机之间的交互为例,对本申请实施例提供的数据采集方法进行了介绍,需要说明的是,对于Modbus系统包括的多个从机中除第一从机之外的其他从机,主机均可以按照与采集第一从机上的数据相同的方法来采集其他各个从机上的数据,这里对此不再赘述。[0139] 在本申请实施例中,对于Modbus系统包括的多个从机,主机可以灵活设置采集各个从机上的数据的采集时间,以提高Modbus系统的整体性能,也即保证通信效率、通信质量以及系统实时性。也即是,在申请实施例中,主机采集该多个从机上的数据的采集方法有多种实现方式,接下来介绍其中的三种实现方式。[0140] 第一种实现方式、主机在同一时刻向该多个从机中的每个从机发送对应的数据请求报文,以完成一轮采集。[0141] 在本申请实施例中,主机在同一时刻向该多个从机中的每个从机发送对应的数据请求报文,之后,主机等待各个从机应答。在主机接收到该多个从机中的每个从机发送的数据响应报文之后,确定本轮采集完成,之后开始下一轮采集。或者,主机上设置有采集周期,主机在一个采集周期内等待各个从机应答,在下一个采集周期到达时,主机不再等待,而直接开始下一轮采集。[0142] 需要说明的是,在第一种实现方式中,主机在同一时刻向多个从机请求数据,一些从机可能会同时响应,在主机和从机工作在ModbusTCP的网络模式的情况下,这些从机即使同时响应也不会存在冲突,主机能够顺利接收到这些从机的应答,而在主机和从机工作在ModbusRTU的总线模式的情况下,这些从机同时响应可能会发生冲突,导致主机接收不到这些从机的应答。也即是,第一种实现方式适用于ModbusTCP的网络模式。[0143] 在这种实现方式中,主机在一轮采集开始时,同时向所有的从机请求数据,无需等待某个从机响应完再请求下一个,这样大大缩小了一轮采集的时长,减小了耗时。[0144] 第二种实现方式、主机根据轮询顺序,依次向该多个从机中的每个从机发送对应的数据请求报文,以完成一轮采集。[0145] 在本申请实施例中,主机上配置有轮询顺序,主机按照轮询顺序,依次向该多个从机中的每个从机发送对应的数据请求报文,也即是,主机在向第一个从机发送数据请求报文之后,等待第一个从机应答,在第一个从机应答之后,再向第二个从机发送数据请求报文,以此类推,直至主机向最后一个从机请求采集数据,并接收到最后一个从机的应答,主机确定完成一轮采集。[0146] 示例性地,参见图5,该多个从机包括空调1、空调2、母线槽1和配电箱1,轮询顺序为空调1、空调2、母线槽1和配电箱1。在t1时刻主机开始一轮采集,也即主机在t1时刻向空调1发送携带帧序号为1的数据请求报文,在t2时刻接收到空调1应答的携带帧序号为1的数据响应报文之后进行数据处理,在t3时刻向空调2发送携带帧序号为2的数据请求报文,在t4时刻接收到空调2应答的携带帧序号为2的数据响应报文之后进行数据处理,在t5时刻向母线槽1发送携带帧序号为n‑1的数据请求报文,在t6时刻接收到母线槽1应答的携带帧序号为n‑1的数据响应报文之后进行数据处理,在t7时刻向配电箱1发送携带帧序号为n的数据请求报文,在t8时刻接收到配电箱1应答的携带帧序号为n的数据响应报文之后进行数据处理,到此完成一轮采集。[0147] 在这种实现方式中,主机与从机之间采用一问一答的方式,根据轮询顺序依次请求该多个从机以完成一轮采集,能够保证主机在一轮采集中成功轮询采集到每个从机上的数据。[0148] 第三种实现方式、主机根据该多个从机中的每个从机上待采集数据的数据量,确定相应从机对应的采集时间,主机按照该多个从机中的每个从机对应的采集时间,向该多个从机中的每个从机发送对应的数据请求报文。[0149] 在本申请实施例中,主机能够根据各个从机上待采集数据的数据量,确定相应从机对应的采集时间,例如,主机确定每个从机对应的采集周期,或者,主机确定下一次采集某个从机的具体时间。[0150] 示例性地,假设主机采集各个从机上的寄存器数据,从机1上的寄存器较多,需要采集的数据量较大,那么主机将从机1的采集周期确定为10s,从机2上的寄存器较少,需要采集的数据量较小,那么主机将从机1的采集周期确定为1s。[0151] 在这种实现方式中,主机按照各个从机上待采集数据的数据量,更加灵活地确定各个从机对应的采集时间,能够提高采集方法的灵活性,充分利用系统资源,避免某些从机数据量较大而导致应答业务过忙,而另一些从机数据量较小却迟迟得不到采集。[0152] 除以上介绍的三种实现方式之外,可选地,主机根据该多个从机中的每个从机对应的业务实时性要求,来确定相应从机的采集时间,主机按照该多个从机中的每个从机对应的采集时间,向该多个从机中的每个从机发送对应的数据请求报文,这样,能够满足各个从机对应的业务实时性要求,也即对于对应的业务实时性较高的从机,主机以较高的频率来采集相应从机上的数据,对于对应的业务实时性较低的从机,主机以较低的频率来采集相应从机上的数据。[0153] 可选地,主机根据各个从机上待采集数据的数据量,以及各个从机对应的业务实时性要求,来确定相应从机的采集时间,以同时兼顾数据量大小和实时性需求,保证提高Modbus系统的整体性能。[0154] 可选地,主机按照用户配置的采集时间,来向各个从机请求采集数据。[0155] 除以上介绍的一些实现方式之外,主机也以其他任一种可能的实现方式向各个从机发送对应的数据请求报文,以采集相应从机上的数据。[0156] 由于本方案通过主机与从机之间交互长数据报文来提高通信效率,因此,主机与从机之间能够通过一次交互即将相应从机上的数据采集完。可选地,在一次采集中,主机通过向一个从机发送多个数据请求报文,以通过多次交互将相应从机上的数据采集完。例如,一个从机上需要采集的寄存器数据上千,甚至更多,如果通过一次交互来携带这么多数据量的话,可能会影响通信质量和可靠性,如果存在从机响应的报文丢失或者超时未响应,那么主机将采集不到该从机上的任何数据,在这种情况下,如果主机通过与该从机多次交互来采集所有数据,则在一定程度上保证主机能够采集到该从机上的数据。[0157] 另外,需要说明的是,在本申请实施例中,如前述第二种实现方式,主机与从机之间采用一问一答的方式轮询各个从机来采集数据,能够保证轮询采集到每个从机上的数据,又如前述其他实现方式,主机与从机之间采用多问多答的方式来采集各个从机上的数据,能够提高采集方法的灵活性,充分利用系统资源。[0158] 示例性地,参见图6,该多个从机包括空调1、空调2、母线槽1和配电箱1,主机在t1、t2和t3时刻分别向空调1发送分别携带帧序号为1、2和3的数据请求报文,在t4时刻向空调2发送携带帧序号为4的数据请求报文,在t5时刻接收到空调1应答的携带帧序号为1的数据响应报文,在t6时刻向空调2发送携带帧序号为5的数据请求报文,在t7时刻接收到空调1应答的携带帧序号为2的数据响应报文,在t8时刻向母线槽1发送携带帧序号为6的数据请求报文,在t9时刻接收到空调2应答的携带帧序号为4的数据响应报文,在t10时刻接收到空调1应答的携带帧序号为3的数据响应报文,在t11时刻接收到空调2应答的携带帧序号为5的数据响应报文,在t12时刻向配电箱1发送携带帧序号为7的数据请求报文,在t13时刻接收到母线槽1应答的携带帧序号为6的数据响应报文,在t14时刻接收到配电箱1应答的携带帧序号为7的数据响应报文。[0159] 由图6可以看出,主机与从机之间采用多问多答的方式,主机不必等待某个从机应答之后再请求其他从机,从机也不必立即应答主机的某次请求,在对应的业务实时性要求较低的情况下,从机在较为空闲的时间应答主机即可,不影响从机上的其他业务。另外,主机与从机之间通过一次交互将相应从机上的数据采集完,如图6所示的主机与空调1、主机与空调2,或者,主机与从机之间通过一次交互将相应从机上的数据采集完,如图6所示的主机与母线槽1、主机与配线箱1。[0160] 综上所述,在本申请实施例中,主机与从机在一次交互中能够采集一个或多个分段数据,每个分段数据携带的数据数量最大为256。在Modbus系统中,一个数据最小以一字节表示,那么每个分段数据携带的数据最多为256字节,如果一次交互中能够采集到多个分段数据,那么能够采集的数据量将远大于协议限制的252字节。也即本方案中,主机与从机在一次交互中能够采集的数据量将更多,在需要采集的数据量一定的情况下,能够减少主机与从机之间的交互次数,这样总线占用频率将降低但占用率提高,通信效率提高。另外,由于从机一次响应所提供的数据量更多,主机不会长时间耗费在一个从机上,因此,整个Modbus系统的实时性将得到提高。[0161] 图7是本申请实施例提供的一种数据采集装置的结构示意图。可选地,该数据采集装置700由软件、硬件或者两者的结合实现成为Modbus系统包括的主机,Modbus系统还包括多个从机,参见图7,该装置700包括:发送模块701和接收模块702。[0162] 发送模块701,用于向第一从机发送数据请求报文,该数据请求报文携带一个或多个分段采集指示信息,该一个或多个分段采集指示信息中的每个分段采集指示信息用于指示主机从第一从机中需要采集的数据,第一从机为多个从机中的一个;具体实现方式请参考图3实施例中步骤301的详细描述,这里不再赘述。[0163] 接收模块702,用于接收第一从机发送的数据响应报文,数据响应报文携带一个或多个分段数据,该一个或多个分段数据是第一从机响应于该一个或多个分段采集指示信息所提供的数据,该一个或多个分段数据中的每个分段数据携带的数据数量大于0,且小于或等于256。具体实现方式请参考图3实施例中步骤303‑305的详细描述,这里不再赘述。[0164] 可选地,该装置700还包括:[0165] 确定模块,用于根据第一从机上待采集数据的地址分布特征,确定一个或多个分段采集指示信息。具体实现方式请参考图3实施例中步骤301的相关描述,这里不再赘述。[0166] 可选地,该一个或多个分段采集指示信息中的每个分段采集指示信息包括一个起始地址和一个数据数量;[0167] 该一个或多个分段数据中的每个分段数据包括一个起始地址、一个数据数量和第一数据,第一数据为第一从机根据相应分段采集指示信息读取的数据。[0168] 可选地,数据请求报文包括第一地址域、第一功能域和第一数据域,第一地址域携带第一从机的地址,第一功能域携带第一功能码,第一数据域携带一个或多个分段采集指示信息,第一功能码用于指示主机请求第一从机执行采集数据的功能;[0169] 数据响应报文包括第二地址域、第二功能域和第二数据域,第二地址域携带第一从机的地址,第二功能域携带第二功能码,第二数据域携带一个或多个分段数据,第二功能码用于指示第一从机实际执行的功能。数据请求报文和数据响应报文的具体实现方式请参考图3实施例中步骤301‑305的相关描述,这里不再赘述。[0170] 可选地,第一数据域还携带第一帧序号,第二数据域还携带第二帧序号,第一帧序号和第二帧序号用于主机将数据请求报文与数据响应报文进行帧匹配。[0171] 可选地,第一数据域还携带分段请求数,分段请求数用于指示主机请求第一从机分段采集的数据的分段数量;[0172] 第二数据域还携带分段响应数,分段响应数用于指示第一从机实际分段采集的数据的分段数量。[0173] 可选地,主机在同一时刻向该多个从机中的每个从机发送对应的数据请求报文,以完成一轮采集;或者,[0174] 主机根据轮询顺序,依次向该多个从机中的每个从机发送对应的数据请求报文,以完成一轮采集;或者,[0175] 主机根据该多个从机中的每个从机上待采集数据的数据量,确定相应从机对应的采集时间,主机按照该多个从机中的每个从机对应的采集时间,向该多个从机中的每个从机发送对应的数据请求报文。[0176] 主机与多个从机交互的具体实现方式请参考图3实施例中步骤305的相关描述,以及对图5和图6的相关描述,这里不再赘述。[0177] 在本申请实施例中,主机与从机在一次交互中能够采集一个或多个分段数据,每个分段数据携带的数据数量最大为256。在Modbus系统中,一个数据最小以一字节表示,那么每个分段数据携带的数据最多为256字节,如果一次交互中能够采集到多个分段数据,那么能够采集的数据量将远大于协议限制的252字节。也即本方案中,主机与从机在一次交互中能够采集的数据量将更多,在需要采集的数据量一定的情况下,能够减少主机与从机之间的交互次数,这样总线占用频率将降低但占用率提高,通信效率提高。另外,由于从机一次响应所提供数据量更多,主机不会长时间耗费在一个从机上,因此,整个Modbus系统的实时性将得到提高。[0178] 需要说明的是:上述实施例提供的数据采集装置在采集数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据采集装置与数据采集方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。[0179] 图8是本申请实施例提供的另一种数据采集装置的结构示意图。可选地,该数据采集装置800由软件、硬件或者两者的结合实现成为Modbus系统包括的第一从机,第一从机为Modbus系统包括的多个从机中的一个,该Modbus系统还包括主机,参见图8,该装置800包括:接收模块801、确定模块802和发送模块803。[0180] 接收模块801,用于接收主机发送的数据请求报文,该数据请求报文携带一个或多个分段采集指示信息,该一个或多个分段采集指示信息中的每个分段采集指示信息用于指示主机从第一从机中需要采集的数据;具体实现方式请参考图3实施例中步骤301和步骤302的详细描述,这里不再赘述。[0181] 确定模块802,用于根据该一个或多个分段采集指示信息,确定一个或多个分段数据;具体实现方式请参考图3实施例中步骤303的详细描述,这里不再赘述。[0182] 发送模块803,用于向主机发送数据响应报文,数据响应报文携带该一个或多个分段数据,该一个或多个分段数据中的每个分段数据携带的数据数量大于0,且小于或等于256。具体实现方式请参考图3实施例中步骤303‑305的详细描述,这里不再赘述。[0183] 可选地,该一个或多个分段采集指示信息中的每个分段采集指示信息包括一个起始地址和一个数据数量;[0184] 确定模块802包括:[0185] 读取子模块,用于从第一起始地址开始连续读取第一数据数量的数据,得到第一数据,第一起始地址为第一分段采集指示信息包括的起始地址,第一数据数量为第一分段采集指示信息包括的数据数量,第一分段采集指示信息为该一个或多个分段采集指示信息中的一个;[0186] 确定子模块,用于将第一起始地址、第一数据数量和第一数据作为一个分段数据。具体实现方式请参考图3实施例中步骤303的相关描述,这里不再赘述。[0187] 在本申请实施例中,主机与从机在一次交互中能够采集一个或多个分段数据,每个分段数据携带的数据数量最大为256。在Modbus系统中,一个数据最小以一字节表示,那么每个分段数据携带的数据最多为256字节,如果一次交互中能够采集到多个分段数据,那么能够采集的数据量将远大于协议限制的252字节。也即本方案中,主机与从机在一次交互中能够采集的数据量将更多,在需要采集的数据量一定的情况下,能够减少主机与从机之间的交互次数,这样总线占用频率将降低但占用率提高,通信效率提高。另外,由于从机一次响应所提供的数据量更多,主机不会长时间耗费在一个从机上,因此,整个Modbus系统的实时性将得到提高。[0188] 需要说明的是:上述实施例提供的数据采集装置在用于数据采集时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据采集装置与数据采集方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。[0189] 本申请实施例提供了一种Modbus系统,Modbus系统包括主机和多个从机,第一从机为该多个从机中的一个。主机和第一从机具有实现前述实施例提供的数据采集方法的相应功能,以通过Modbus系统实现数据采集。具体实现方式请参考图3实施例的详细描述,这里不再赘述。[0190] 在本申请实施例中,主机与从机在一次交互中能够采集一个或多个分段数据,每个分段数据携带的数据数量最大为256。在Modbus系统中,一个数据最小以一字节表示,那么每个分段数据携带的数据最多为256字节,如果一次交互中能够采集到多个分段数据,那么能够采集的数据量将远大于协议限制的252字节。也即本方案中,主机与从机在一次交互中能够采集的数据量将更多,在需要采集的数据量一定的情况下,能够减少主机与从机之间的交互次数,这样总线占用频率将降低但占用率提高,通信效率提高。另外,由于从机一次响应所提供的数据量更多,主机不会长时间耗费在一个从机上,因此,整个Modbus系统的实时性将得到提高。[0191] 需要说明的是:上述实施例提供的Modbus系统与数据采集方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。[0192] 在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络或其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(digitalsubscriberline,DSL))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质,或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(digitalversatiledisc,DVD))或半导体介质(例如:固态硬盘(solidstatedisk,SSD))等。值得注意的是,本申请实施例提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。[0193] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。[0194] 应当理解的是,本文提及的“至少一个”是指一个或多个,“多个”是指两个或两个以上。在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。[0195] 以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

专利地区:广东

专利申请日期:2020-08-06

专利公开日期:2024-07-26

专利公告号:CN114391234B


以上信息来自国家知识产权局,如信息有误请联系我方更正!
电话咨询
读内容
搜本页
回顶部