一种批量采集从机设备数据的方法与流程

文档序号:25733353发布日期:2021-07-06 18:41阅读:154来源:国知局
一种批量采集从机设备数据的方法与流程

本发明涉及物联网领域,尤其涉及的是一种批量采集从机设备数据的方法。



背景技术:

modbus协议采用主从工作方式,允许一台主机设备和多台从机设备进行通信,每台从机地址由用户设定,地址范围为1~255。modbus协议的优点是结构简单明了,通讯可靠,通讯数据量大。然而目前,主机设备通过modbus协议采集从机设备的数据时,必须按照从机设备轮询采集的方式进行数据采集,导致数据采集效率较低。

因此,现有技术还有待改进和发展。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种批量采集从机设备数据的方法,旨在解决现有技术中主机设备必须按照从机设备轮询采集的方式进行数据采集,导致数据采集效率较低的问题。

本发明解决问题所采用的技术方案如下:

第一方面,本发明实施例提供一种批量采集从机设备数据的方法,其中,所述方法包括:

获取待采集从机设备的基本参数,根据所述基本参数对所述待采集从机设备进行分类,得到从机设备集合;

获取所述从机设备集合中各个从机设备分别对应的寄存器地址范围数据,根据所述寄存器地址范围数据确定所述各个从机设备分别对应的哈希桶;

根据所述哈希桶对所述待采集从机设备存储的数据进行批量采集。

在一种实现方式中,所述获取待采集从机设备的基本参数,根据所述基本参数对所述待采集从机设备进行分类,得到从机设备集合,包括:

获取所述待采集从机设备的基本参数,根据所述基本参数确定所述待采集从机设备对应的站地址数据和功能码数据;

将所述站地址数据和所述功能码数据均相同的所有待采集从机设备作为一个从机设备集合。

在一种实现方式中,所述获取所述从机设备集合中各个从机设备分别对应的寄存器地址范围数据,根据所述寄存器地址范围数据确定所述各个从机设备分别对应的哈希桶,包括:

将所述从机设备集合中的任意一个从机设备作为待处理从机设备;

获取所述待处理从机设备的寄存器地址数据和寄存器长度数据,根据所述寄存器地址数据和所述寄存器长度数据,确定所述待处理从机设备对应的寄存器地址范围数据;

根据所述寄存器地址范围数据,确定所述待处理从机设备对应的哈希桶索引值,并得到所述从机设备集合中各个从机设备分别对应的哈希桶索引值;

根据所述各个从机设备分别对应的哈希桶索引值确定所述各个从机设备分别对应的哈希桶。

在一种实现方式中,所述根据所述寄存器地址数据和所述寄存器长度数据,确定所述待处理从机设备对应的寄存器地址范围数据,包括:

将所述寄存器地址数据与所述寄存器长度数据相加再减1,得到所述待处理从机设备对应的截止地址数据;

将所述寄存器地址数据作为起始地址数据,根据所述起始地址数据和所述截止地址数据,确定所述待处理从机设备对应的寄存器地址范围数据。

在一种实现方式中,所述根据所述寄存器地址范围数据,确定所述待处理从机设备对应的哈希桶索引值,包括:

获取预设的最大批量采集寄存器长度数据,根据所述最大批量采集寄存器长度数据对所述寄存器地址范围数据进行整除并向下取整,得到整数值;

根据所述整数值确定所述待处理从机设备对应的哈希桶索引值。

在一种实现方式中,所述根据所述哈希桶对所述待采集从机设备存储的数据进行批量采集,包括:

根据所述待采集从机设备的基本参数,将所述各个从机设备的基本参数存储至各自对应的哈希桶中;

将所述各个从机设备分别对应的哈希桶中的任意一个哈希桶作为一个批量采集单元;

获取所述批量采集单元对应的寄存器地址数据,得到目标寄存器地址数据;

获取所述批量采集单元对应的寄存器长度数据,得到目标寄存器长度数据;

获取所述批量采集单元对应的站地址数据以及所述批量采集单元对应的功能码数据,得到目标站地址数据和目标功能码数据;

根据所述目标寄存器地址数据、所述目标寄存器长度数据、所述目标站地址数据和所述目标功能码数据对所述待采集从机设备存储的数据进行批量采集。

在一种实现方式中,所述获取所述批量采集单元对应的寄存器地址数据,得到目标寄存器地址数据,包括:

获取所述批量采集单元对应的哈希桶索引值;

将所述批量采集单元对应的哈希桶索引值与所述最大批量采集寄存器长度数据相乘,得到所述批量采集单元对应的寄存器地址数据;

将所述批量采集单元对应的寄存器地址数据作为目标寄存器地址数据。

在一种实现方式中,所述获取所述批量采集单元对应的寄存器长度数据,得到目标寄存器长度数据,包括:

将所述目标寄存器地址数据与所述最大批量采集寄存器长度数据相加,得到待验证数值;

获取所述批量采集单元对应的从机设备集合的最大寄存器地址数据,将所述待验证数值与所述最大寄存器地址数据进行比较;

当所述待验证数值小于或者等于所述最大寄存器地址数据时,将所述最大批量采集寄存器长度数据作为所述批量采集单元对应的寄存器长度数据;

当所述待验证数值大于所述最大寄存器地址数据时,将所述最大寄存器地址数据与所述目标寄存器地址数据相减再加1,得到所述批量采集单元对应的寄存器长度数据。

在一种实现方式中,所述获取所述批量采集单元对应的从机设备集合的最大寄存器地址数据,包括:

获取所述批量采集单元对应的从机设备集合中各个从机设备分别对应的寄存器地址范围数据;

根据所述批量采集单元对应的从机设备集合中各个从机设备分别对应的寄存器地址范围数据,确定所述批量采集单元对应的从机设备集合中各个从机设备分别对应的截止地址数据,得到待筛选截止地址数据;

将所述待筛选截止地址数据中数值最大的截止地址数据,作为所述批量采集单元对应的从机设备集合的最大寄存器地址数据。

在一种实现方式中,所述根据所述目标寄存器地址数据、所述目标寄存器长度数据、所述目标站地址数据和所述目标功能码数据对所述待采集从机设备存储的数据进行批量采集,包括:

根据所述目标寄存器地址数据、所述目标寄存器长度数据、所述目标站地址数据和所述目标功能码数据,生成批量采集指令;

通过所述批量采集指令对所述待采集从机设备存储的数据进行批量采集。

本发明的有益效果:本发明实施例通过获取待采集从机设备的基本参数,根据所述基本参数对所述待采集从机设备进行分类,得到从机设备集合。然后,获取所述从机设备集合中各个从机设备分别对应的寄存器地址范围数据,根据所述寄存器地址范围数据确定所述各个从机设备分别对应的哈希桶。最后,根据所述哈希桶对所述待采集从机设备存储的数据进行批量采集。本发明可以使主机设备批量采集从机设备的数据,解决了现有技术中主机设备必须按照从机设备轮询采集的方式进行数据采集,导致数据采集效率较低的问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的批量采集从机设备数据的方法的流程示意图。

图2是本发明实施例提供的数据流转示意图。

图3是本发明实施例提供的批量采集从机设备数据的装置的内部模块示意图。

图4是本发明实施例提供的终端的原理框图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

需要说明,若本发明实施例中有涉及方向性指示(诸如上、下、左、右、前、后……),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。

智能数据采集系统主要由上位机和前端两部分组成。前端指的是独立开发的现场数据采集设备。前端的运算参数以及采集的信号都需要与上位机交互。因此一套可靠、成熟且易于实现的通信协议是智能数据采集系统稳定运行的关键,其中modbus协议是一个比较好的选择。

modbus协议采用主从工作方式,允许一台主机设备和多台从机设备进行通信,每台从机地址由用户设定,地址范围为1~255。modbus协议的优点是结构简单明了,通讯可靠,通讯数据量大。然而目前,主机设备通过modbus协议采集从机设备的数据时,必须按照从机设备轮询采集的方式进行数据采集,导致数据采集效率较低。

针对现有技术的上述缺陷,本发明提供了一种批量采集从机设备数据的方法,通过获取待采集从机设备的基本参数,根据所述基本参数对所述待采集从机设备进行分类,得到从机设备集合。然后,获取所述从机设备集合中各个从机设备分别对应的寄存器地址范围数据,根据所述寄存器地址范围数据确定所述各个从机设备分别对应的哈希桶。最后,根据所述各个从机设备分别对应的哈希桶对所述待采集从机设备存储的数据进行批量采集。本发明可以使主机设备批量采集从机设备的数据,解决了现有技术中主机设备必须按照从机设备轮询采集的方式进行数据采集,导致数据采集效率较低的问题。

如图1所示,所述方法包括如下步骤:

步骤s100、获取待采集从机设备的基本参数,根据所述基本参数对所述待采集从机设备进行分类,得到从机设备集合。

具体地,本实施例为了使得主机设备能够成功地批量采集到从机设备上数据,首先本实施例需要对从机设备进行分类,如图2所示,具体分类结果根据每一台从机设备自身的基本参数确定,由于从机设备的基本参数可以反映从机设备自身的一些属性信息,例如从机设备的地址信息,从机设备的功能信息等等,因此本实施例通过从机设备的基本参数对从机设备进行分类,可以将属性接近的从机设备归位一类,从而实现后续更好地对不同类别的从机设备分别进行设备数据的批量采集。

在一种实现方式中,所述步骤s100具体包括如下步骤:

步骤s101、获取所述待采集从机设备的基本参数,根据所述基本参数确定所述待采集从机设备对应的站地址数据和功能码数据;

步骤s102、将所述站地址数据和所述功能码数据均相同的所有待采集从机设备作为一个从机设备集合。

具体地,本实施例需要获取待采集的从机设备的基本参数,并获取其基本参数中的站地址数据和功能码数据,其中,站地址数据可以指示从机设备所属的基站,功能码数据可以反映待采集从机设备所执行的功能类型。本实施例将站地址数据和功能码数据均相同的从机设备归类到一个从机设备集合中,以实现后续有规则有顺序地执行从机设备数据的批量采集。

如图1所示,所述方法还包括如下步骤:

步骤s200、获取所述从机设备集合中各个从机设备分别对应的寄存器地址范围数据,根据所述寄存器地址范围数据确定所述各个从机设备分别对应的哈希桶。

具体地,将待采集从机设备分类为若干个从机设备集合以后,若根据从机设备集合直接执行从机设备数据的批量采集过程,则容易出现由于从机设备寄存器地址范围不连续导致数据采集失败的情况。因此为了顺利进行从机设备数据的批量改采集,本实施例还需要获取所述从机设备集合中各个从机设备分别对应的寄存器地址范围数据,根据所述寄存器地址范围数据确定所述各个从机设备分别对应的哈希桶,将每一个哈希桶作为一个新的批量采集单元,采集时按照批量采集单元对从机设备的数据进行批量采集。

在一种实现方式中,所述步骤s200具体包括如下步骤:

步骤s201、将所述从机设备集合中的任意一个从机设备作为待处理从机设备;

步骤s202、获取所述待处理从机设备的寄存器地址数据和寄存器长度数据,根据所述寄存器地址数据和所述寄存器长度数据,确定所述待处理从机设备对应的寄存器地址范围数据;

步骤s203、根据所述寄存器地址范围数据,确定所述待处理从机设备对应的哈希桶索引值,并得到所述从机设备集合中各个从机设备分别对应的哈希桶索引值;

步骤s204、根据所述各个从机设备分别对应的哈希桶索引值确定所述各个从机设备分别对应的哈希桶。

需要说明的是,本实施例需要确定每一个从机设备集合中每一个从机设备所对应的哈希桶,由于采用的是相同的确定方法,因此本实施例以其中一个从机设备为例,说明如何确定从机设备对应的哈希桶。具体地,将从机设备集合中的任意一个从机设备作为待处理从机设备,然后获取该待处理从机设备的寄存器地址数据和寄存器长度数据,根据该寄存器地址数据和该寄存器长度数据,确定该待处理从机设备对应的寄存器地址范围数据。在一种实现方式中,为了准确确定该待处理从机设备对应的寄存器地址范围数据,本实施例可以将该寄存器地址数据与该寄存器长度数据相加再减1,得到该待处理从机设备对应的截止地址数据,然后将该寄存器地址数据作为起始地址数据,根据该起始地址数据和该截止地址数据,确定该待处理从机设备对应的寄存器地址范围数据。举例说明,假设待处理从机设备a的寄存器地址数据为24,寄存器长度数据为8,则待处理从机设备a对应的截止地址数据为24+8-1=31,其对应的寄存器地址范围数据为24~31。

确定了待处理从机设备对应的寄存器地址范围数据以后,本实施例需要根据该待处理从机设备对应的寄存器地址范围数据进一步确定其对应的哈希桶索引值。哈希表是根据关键码值直接进行访问的数据结构,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。哈希桶索引值是哈希数组的索引,其通过一定的哈希算法,将被查找的关键码值转换为哈希表中的索引。在一种实现方式中,为了确定哈希桶索引值,本实施例需要获取预设的最大批量采集寄存器长度数据,根据该最大批量采集寄存器长度数据对每一个从机设备的寄存器地址范围数据进行整除并向下取整,得到整数值,然后再根据该整数值确定每一个从机设备对应的哈希桶索引值。举例说明,假设待采集从机设备a的寄存器地址范围数据为9~12,最大批量采集寄存器长度数据为8,则9除以8得到的数值等于1.125,向下取整得到的1,10除以8得到的数值等于1.25,向下取整得到的1,则待采集从机设备a对应的哈希桶索引值为1,其对应的哈希桶1。

如图1所示,所述方法还包括如下步骤:

步骤s300、根据所述哈希桶对所述待采集从机设备存储的数据进行批量采集。

简单来讲,本实施例需要确定每一个从机设备集合中所有从机设备分别对应的哈希桶索引值,进而确定每一个从机设备集合中所有从机设备分别对应的哈希桶,以一个哈希桶作为一个批量采集单元进行从机设备的批量采集。

在一种实现方式中,所述步骤s300具体包括如下步骤:

步骤s301、根据所述待采集从机设备的基本参数,将所述各个从机设备的基本参数存储至各自对应的哈希桶中;

步骤s302、将所述各个从机设备分别对应的哈希桶中的任意一个哈希桶作为批量采集单元;

步骤s303、获取所述批量采集单元对应的寄存器地址数据,得到目标寄存器地址数据;

步骤s304、获取所述批量采集单元对应的寄存器长度数据,得到目标寄存器长度数据;

步骤s305、获取所述批量采集单元对应的站地址数据以及所述批量采集单元对应的功能码数据,得到目标站地址数据和目标功能码数据;

步骤s306、根据所述目标寄存器地址数据、所述目标寄存器长度数据、所述目标站地址数据和所述目标功能码数据对所述待采集从机设备存储的数据进行批量采集。

首先,需要对于每一个从机设备集合而言,都需要将每一个从机设备集合中的每一个从机设备的基本参数存储至其对应的哈希桶中。本实施例将各个从机设备分别对应的哈希桶中的任意一个哈希桶作为一个批量采集单元,可以理解的是,每一个哈希桶都是一个批量采集单元,其批量采集从机设备数据的原理是相同的,因此本实施例以一个哈希桶为例,说明如何批量采集从机设备数据。

首先获取其中一个批量采集单元对应的寄存器地址数据,得到目标寄存器地址数据。具体地,本实施例可以通过获取该批量采集单元对应的哈希桶索引值,将该批量采集单元对应的哈希桶索引值与最大批量采集寄存器长度数据相乘,得到该批量采集单元对应的寄存器地址数据,然后将所述批量采集单元对应的寄存器地址数据作为目标寄存器地址数据。举例说明,假设批量采集单元a对应的哈希桶索引值为3,最大批量采集寄存器长度为8,则该批量采集单元a对应的目标寄存器地址为3*8=24.

然后还需要获取该批量采集单元对应的寄存器长度数据,得到目标寄存器长度数据。在一种实现方式中,本实施例将得到的目标寄存器地址数据与最大批量采集寄存器长度数据相加,得到待验证数值。然后,获取该批量采集单元对应的从机设备集合的最大寄存器地址数据,将该待验证数值与该最大寄存器地址数据进行比较。具体地,该批量采集单元对应的从机设备集合的最大寄存器地址数据可以通过下述方式获得:首先获取该批量采集单元对应的从机设备集合中各个从机设备分别对应的寄存器地址范围数据,根据该批量采集单元对应的从机设备集合中各个从机设备分别对应的寄存器地址范围数据,确定该批量采集单元对应的从机设备集合中各个从机设备分别对应的截止地址数据,得到待筛选截止地址数据。然后将该待筛选截止地址数据中数值最大的截止地址数据,作为该批量采集单元对应的从机设备集合的最大寄存器地址数据。举例说明,假设批量采集单元b对应的从机设备集合b中包含有从机设备b1、b2、b3,其中b1、b2、b3的寄存器地址范围分别为8~12,9~15,10~19,则b1、b2、b3各自的截止地址数据分别为12,15,19,其中19数值最大,则将19作为从机设备集合b的最大寄存器地址。

然后将该待验证数值与该最大寄存器地址数据进行比较。当该待验证数值小于或者等于该最大寄存器地址数据时,将该最大批量采集寄存器长度数据作为该批量采集单元对应的寄存器长度数据。当该待验证数值大于该最大寄存器地址数据时,将该最大寄存器地址数据与得到的目标寄存器地址数据相减再加1,得到该批量采集单元对应的寄存器长度数据。举例说明,假设批量采集单元a对应的目标寄存器地址数据为24,最大批量采集寄存器长度为8,则待验证数值为24+8=32,而批量采集单元a对应的从机设备集合的最大寄存器地址为30,则根据30-24+1=7,得到批量采集单元a对应的寄存器长度为7。

最后,获取该批量采集单元对应的站地址数据以及该批量采集单元对应的功能码数据,得到目标站地址数据和目标功能码数据。然后,根据该目标寄存器地址数据、该目标寄存器长度数据、该目标站地址数据和该目标功能码数据对该待采集从机设备存储的数据进行批量采集。具体地,为了实现从机设备数据的批量采集,本实施例需要根据得到的目标寄存器地址数据、目标寄存器长度数据、目标站地址数据和目标功能码数据,生成批量采集指令,再通过该批量采集指令对待采集从机设备存储的数据进行批量采集。可以理解的是,为了对所有待采集从机设备上的数据进行批量采集,本实施例需要生成每一个从机设备集合对应的每一个哈希桶的批量采集指令,通这些批量采集指令依次轮询每一个从机设备集合对应的每一个哈希桶内的数据。

基于上述实施例,本发明还提供了一种批量采集从机设备数据的装置,如图3所示,该装置包括:

获取模块01,用于获取待采集从机设备的基本参数,根据所述基本参数对所述待采集从机设备进行分类,得到从机设备集合;

确定模块02,用于获取所述从机设备集合中各个从机设备分别对应的寄存器地址范围数据,根据所述寄存器地址范围数据确定所述各个从机设备分别对应的哈希桶;

采集模块03,用于根据所述哈希桶对所述待采集从机设备存储的数据进行批量采集。

基于上述实施例,本发明还提供了一种终端,其原理框图可以如图4所示。该终端包括通过系统总线连接的处理器、存储器、网络接口、显示屏。其中,该终端的处理器用于提供计算和控制能力。该终端的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该终端的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现批量采集从机设备数据的方法。该终端的显示屏可以是液晶显示屏或者电子墨水显示屏。

本领域技术人员可以理解,图4中示出的原理框图,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的终端的限定,具体的终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一种实现方式中,所述终端的存储器中存储有一个或者一个以上的程序,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行批量采集从机设备数据的方法的指令。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

综上所述,本发明公开了一种批量采集从机设备数据的方法,通过获取待采集从机设备的基本参数,根据所述基本参数对所述待采集从机设备进行分类,得到从机设备集合。然后,获取所述从机设备集合中各个从机设备分别对应的寄存器地址范围数据,根据所述寄存器地址范围数据确定所述各个从机设备分别对应的哈希桶。最后,根据所述哈希桶对所述待采集从机设备存储的数据进行批量采集。本发明可以使主机设备批量采集从机设备的数据,解决了现有技术中主机设备必须按照从机设备轮询采集的方式进行数据采集,导致数据采集效率较低的问题。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1