一种智能集中器及以测量点为标签的数据处理方法与流程

文档序号:14996091发布日期:2018-07-24 17:49阅读:373来源:国知局

本发明涉及电能计量仪表仪器技术领域,具体是一种智能集中器及以测量点为标签的数据处理方法。



背景技术:

早期的电能表功能单一,只是作为电能计量仪器使用,只能由人工对电能值进行抄取。随着电子技术的发展,电子式电能表得到了越来越广泛的应用,体积大大减小,可靠性、精度大大增强。同时电能表有了更多更强的功能,使得上位机电脑可以远程对电能表进行数据抄读和功能设置。在这样的背景下,智能集中器应运而生,一经推出便得到了市场的极大肯定。智能集中器作为一种上位机与电表之间的数据收集仪表,下行可以通过各种通道对电子式电能表进行各种操作如抄读一类数据、抄读二类数据、电能表参数设置等等;本地则具有实时时钟显示、电表数据存储、远程升级等功能;上行则可以同上位机电脑进行通信,将收集到的电表数据定时或者实时发送到上位机电脑。

现阶段智能集中器厂商在上位机电脑同智能集中器之间的数据处理流程上,大都还采用传统做法,即上位机发送命令,智能集中器接收到命令后处理该命令,命令处理完成后回复数据给上位机电脑并按顺序将数据存入本地FLASH存储芯片。传统做法存在效率低下、数据安全性低、FLASH存储芯片读写次数过多寿命短等缺点,例如智能集中器一次只能接收一条命令,该条命令没有处理完时接收到上位机电脑的第二条命令时会丢弃该命令,同时存储数据时也会将FLASH存储芯片的块数据按顺序反复擦写覆盖。



技术实现要素:

针对现有技术中存在的缺陷,本发明的目的在于提供一种智能集中器及以测量点为标签的数据处理方法,能有效提升智能集中器程序效率、提高数据安全性、延长FLASH存储芯片的寿命。

为达到以上目的,本发明采取的技术方案是:

一种智能集中器,包括控制器、缓存单元、与控制器连接的实时数据接收模块、实时消息队列数据处理模块、实时共用体数据处理模块、实时数据存储模块和FLASH存储器,实时数据接收模块、实时消息队列数据处理模块、实时共用体数据处理模块、实时数据存储模块依次连接,所述缓存单元包括消息队列数据缓存区、共用体结构体缓存区和FLASH存储器数据缓存区,

所述实时数据接收模块的信号输入端与上位机连接,用于接收上位机发送的上位机命令,并将所述上位机命令存入消息队列数据缓存区;

所述实时消息队列数据处理模块,用于将消息队列数据缓存区中的命令逐条取出并解析后,将解析数据存入共用体结构体缓存区,解析数据包括数据单元标识、应用层功能码;

所述实时共用体数据处理模块,用于取出共用体结构体缓存区中每一命令对应的解析数据,根据解析数据中的应用层功能码和数据单元标识以及由数据单元标识计算所得的测量点号形成任务单下发给计量表或本地功能模块以完成该命令;

所述实时数据存储模块,用于在实时共用体数据处理模块执行完命令后,取出需要存储的数据所在的测量点号和应用层功能码,然后根据该测量点号和应用层功能码计算出数据应该具体存储的物理位置,按照物理位置将需要存储的数据存储于FLASH存储器。

进一步的,实时数据接收模块用于在接收到上位机命令时,读取消息队列数据缓存区的地址指针后将数据存入以该地址为首地址的数组中,然后将地址指针指向下一个缓存数组,直至所有命令接收完毕;实时数据接收模块还用于将命令接收完毕标志位置位,等待实时消息队列数据处理模块处理完消息队列数据缓存区中的数据后将命令接收完毕标志位清零。

进一步的,实时消息队列数据处理模块用于检测到实时数据接收模块将命令接收完毕标志位置位后,按后进先出的原则将消息队列数据缓存区中的命令取出后对数据进行解析,完成后将解析好的数据存入共用体结构体缓存区;同时,将有命令需要处理标志位置位,等待实时共用体数据处理模块处理完该命令后将有命令需要处理标志位清零,之后再取出第二条命令进行解析,如此反复直至所有命令全部处理完毕,最后将命令接收完毕标志位清零,共用体结构体缓存区初始化等待下次命令接收完毕标志位置位。

进一步的,实时共用体数据处理模块用于检测到实时消息队列数据处理模块将有命令需要处理标志位置位后,首先取出共用体结构体缓存区中的数据单元标识,根据数据单元标识计算得到测量点号,通过计算将两个字节16进制测量点号换算成10进制测量点号,然后再取出应用层功能码和数据单元标识确定应进行操作类型,最后再形成任务单下发给计量表或本地功能模块执行该命令,等待命令完成后,实时共用体数据处理模块将有命令需要处理标志位清零,初始化共用体结构体缓存区,等待下一个有命令需要处理标志位置位,实时共用体数据处理模块处理得到的数据先缓存于FLASH存储器数据缓存区,若该数据需要存储,则将有数据需要存储标志位置位。

进一步的,实时数据存储模块用于检测到实时共用体数据处理模块将有数据需要存储标志位置位后,首先从共用体结构体缓存区取出需要存储数据所在的测量点号和应用层功能码,然后根据该测量点号和应用层功能码计算出数据应该具体存储FLASH存储器的物理位置,并读取该物理位置的数据,接着实时数据存储模块判断该物理位置数据与FLASH存储器数据缓存区中数据是否来自同一个数据块,若不是,则先将FLASH存储器中相应位置的数据块数据清零,然后将FLASH存储器数据缓存区中的数据存入该数据块,再将该数据块数据读出后更新FLASH存储器数据缓存区,若是,则将该数据块数据读出后直接更新FLASH存储器数据缓存区中的数据,将该步骤反复进行下去直至最后一个需要存储的数据存储完毕;最后,实时数据存储模块将有数据需要存储标志位清零。

一种以测量点为标签的数据处理方法,其应用上述智能集中器进行,其特征在于所述方法包括以下步骤:

步骤S1:所述实时数据接收模块接收上位机发送的上位机命令,并将所述上位机命令存入消息队列数据缓存区;

步骤S2:所述实时消息队列数据处理模块将消息队列数据缓存区中的命令逐条取出并解析后,将解析数据存入共用体结构体缓存区;

步骤S3:所述实时共用体数据处理模块取出共用体结构体缓存区中每一命令对应的解析数据,根据解析数据中的应用层功能码和数据单元标识以及由数据单元标识计算所得的测量点号形成任务单下发给计量表或本地功能模块以完成该命令;

步骤S4:所述实时数据存储模块在实时共用体数据处理模块执行完命令后,取出需要存储的数据所在的测量点号和应用层功能码,然后根据该测量点号和应用层功能码计算出数据应该具体存储的物理位置,按照物理位置将需要存储的数据存储于FLASH存储器数据缓存区。

进一步的,所述步骤S1具体为:每当接收到上位机命令时,实时数据接收模块读取消息队列数据缓存区的地址指针后将数据存入以该地址为首地址的数组中,然后将地址指针指向下一个缓存数组,直至所有命令接收完毕,同时,实时数据接收模块将命令接收完毕标志位置位,等待实时消息队列数据处理模块处理完消息队列数据缓存区中的数据后将命令接收完毕标志位清零。

进一步的,所述步骤S2具体为:实时消息队列数据处理模块检测到实时数据接收模块将命令接收完毕标志位置位后,按后进先出的原则将消息队列数据缓存区中的命令取出后对数据进行解析,完成后将解析好的数据存入共用体结构体缓存区,同时,将有命令需要处理标志位置位,等待实时共用体数据处理模块处理完该命令后将有命令需要处理标志位清零,之后再取出第二条命令进行解析,如此反复直至所有命令全部处理完毕,最后将命令接收完毕标志位清零,共用体结构体缓存区初始化等待下次命令接收完毕标志位置位。

进一步的,所述步骤S3具体为:实时共用体数据处理模块检测到实时消息队列数据处理模块将有命令需要处理标志位置位后,首先取出共用体结构体缓存区中存储的测量点号,通过计算将两个字节16进制测量点号换算成10进制测量点号,然后再取出应用层功能码和数据单元标识确定应进行操作类型,最后再形成任务单下发给计量表或本地功能模块执行该命令,等待命令完成后,实时共用体数据处理模块将有命令需要处理标志位清零,初始化共用体结构体缓存区,等待下一个有命令需要处理标志位置位,若得到的数据需要存储,则将有数据需要存储标志位置位

进一步的,所述步骤S4具体为:实时数据存储模块检测到实时共用体数据处理模块将有数据需要存储标志位置位后,首先从共用体结构体缓存区取出需要存储数据所在的测量点号和应用层功能码,然后根据该测量点号和应用层功能码计算出数据应该具体存储FLASH存储器的物理位置,并读取该物理位置的数据,接着实时数据存储模块判断该物理位置数据与FLASH存储器数据缓存区中数据是否来自同一个数据块,若不是,则先将FLASH存储器中相应位置的数据块数据清零,然后将FLASH存储器数据缓存区中的数据存入该数据块,再将该数据块数据读出后更新FLASH存储器数据缓存区,若是,则将该数据块数据读出后直接更新FLASH存储器数据缓存区中的数据,将该步骤反复进行下去直至最后一个需要存储的数据存储完毕;最后,实时数据存储模块将有数据需要存储标志位清零。

本发明的有益效果在于:

1、本发明在智能集中器的单片机内部开辟了一个共20*320字节大小的消息队列数据缓存区,每当上位机有多个命令下发到智能集中器时,实时数据接收模块会将接收到的命令逐条存入消息队列数据缓存区中,这样智能集中器虽然每次只能处理一条命令,但是接收到的命令并没有丢失,相较于传统智能集中器收到一条指令处理一条指令的处理方式,极大的提高了操作人员的工作效率,提高了上位机命令数据的安全性。

2、本发明在智能集中器的单片机内部开辟了一个共用体结构体缓存区,对上位机命令进行解析后的数据进行存储,所有消息队列数据缓存中的数据会被实时消息队列数据处理模块按照处理完一条数据再处理下一条数据的方式逐条解析成为各种命令后再存入共用体结构体缓存区中等待处理,相对于传统方法给每个命令都分配了单独的内存空间的处理方式,极大的减少了单片机内部硬件资源的消耗,提高了运行效率。

3、本发明智能集中器以测量点为标签存储各类数据,存储数据时首先通过测量点号计算出数据应保存在FLASH存储器中的具体位置,然后读出FLASH存储器相应位置的数据,更新该处数据后擦除原有数据块数据后将更新的数据存入FLASH存储器中。相对于传统方法数据分固定区域按顺序存储,存满后返回继续覆盖存储的处理方式,极大的减少了对FLASH存储器特定位置反复擦写的次数,延长了的使用寿命。

附图说明

图1是本发明中智能集中器的电路模块框图;

图2是本发明智能集中器中共用体结构体缓存区的数据结构示意图;

图3是本发明以测量点为标签的数据处理方法的流程示意图;

图4是图3中实时消息队列数据处理模块处理数据的流程示意图。

图中:10-智能集中器,20-上位机,30-计量表,11-控制器,12-实时数据接收模块,13-实时消息队列数据处理模块,14-实时共用体数据处理模块,15-实时数据存储模块,16-缓存单元,17-FLASH存储器,161-消息队列数据缓存区,162-共用体结构体缓存区,163-FLASH存储器数据缓存区。

具体实施方式

下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述。

请参考图1,本发明提供一种智能集中器10,其用于将上位机20和计量表30进行连接,所述智能集中器10包括控制器11、缓存单元16、与控制器11连接的实时数据接收模块12、实时消息队列数据处理模块13、实时共用体数据处理模块14、实时数据存储模块15和FLASH存储器17。实时数据接收模块12、实时消息队列数据处理模块13、实时共用体数据处理模块14、实时数据存储模块15依次连接,所述缓存单元16包括消息队列数据缓存区161、共用体结构体缓存区162和FLASH存储器数据缓存区163。

实时数据接收模块12的信号输入端与上位机20连接,以接收上位机20发送的上位机命令,消息队列数据缓存区161的信号输入端与实时数据接收模块12的信号输出端连接,消息队列数据缓存区161的信号输出端与实时消息队列数据处理模块13的信号输入端连接,实时消息队列数据处理模块13的信号输出端与共用体结构体缓存区162的信号输入端连接,共用体结构体缓存区162的信号输出端与实时共用体数据处理模块14的信号输入端连接,实时共用体数据处理模块14的信号输出端与FLASH存储器数据缓存区163的信号输入端连接,FLASH存储器数据缓存区163的信号输出端与实时数据存储模块15的信号输入端连接,实时数据存储模块15还与FLASH存储器17连接。

所述实时数据接收模块12与上位机20连接,用于接收上位机20发送的上位机命令,并将所述上位机命令存入消息队列数据缓存区161。具体的,每当接收到上位机命令时,实时数据接收模块12读取消息队列数据缓存区161的地址指针后将数据存入以该地址为首地址的数组中,然后将地址指针指向下一个缓存数组,直至所有命令接收完毕。同时,实时数据接收模块12将命令接收完毕标志位置位,等待实时消息队列数据处理模块13处理完消息队列数据缓存区161中的数据后将命令接收完毕标志位清零。

所述实时消息队列数据处理模块13,用于将消息队列数据缓存区161中的命令逐条取出并解析后,将解析数据存入共用体结构体缓存区162。具体的,如图4所示,实时消息队列数据处理模块13检测到实时数据接收模块12将命令接收完毕标志位置位后,按后进先出的原则将消息队列数据缓存区161中的命令取出后对数据进行解析,完成后将解析好的数据存入共用体结构体缓存区162。同时,将有命令需要处理标志位置位,等待实时共用体数据处理模块14处理完该命令后将有命令需要处理标志位清零。之后再取出第二条命令进行解析,如此反复直至所有命令全部处理完毕,最后将命令接收完毕标志位清零,共用体结构体缓存区162初始化等待下次命令接收完毕标志位置位。

所述共用体结构体缓存区162分为两个部分:一部分为公共区,用于存储所有数据帧均包含的数据,如起始字符、控制域、地址域、结束字符等,另一部分为数据区,用于存放数据帧的用户数据域数据,具体结构如图2所示。

所述实时共用体数据处理模块14,用于取出共用体结构体缓存区162中每一命令对应的解析数据,根据解析数据中的应用层功能码、数据单元标识以及由数据单元标识计算所得的测量点号形成任务单下发给计量表30或本地功能模块以完成该命令。具体的,实时共用体数据处理模块14检测到实时消息队列数据处理模块13将有命令需要处理标志位置位后,首先取出共用体结构体缓存区162中数据单元标识,根据数据单元标识计算得到测量点号。通过计算将两个字节16进制测量点号换算成10进制测量点号,然后再取出应用层功能码和数据单元标识确定应进行操作类型,最后再形成任务单下发给计量表30或本地功能模块执行该命令。应用层功能码用于表明该命令是属于哪种大操作,数据单元标识用于计算测量点号及该命令是属于具体大操作下的哪个小操作。

等待命令完成后,实时共用体数据处理模块14将有命令需要处理标志位清零,初始化共用体结构体缓存区162,等待下一个有命令需要处理标志位置位。实时共用体数据处理模块14处理得到的数据先缓存于FLASH存储器数据缓存区163,若该数据需要存储,则将有数据需要存储标志位置位。以测量点号为标签进行一系列的数据处理操作:需要存储的数据是以测量点号为目录的,如需要存储测量点号1的数据,则需要首先通过测量点号计算出该数据应该存储在FLASH存储器中的具体位置,读取出该位置的FLASH存储器数据后将该位置的数据更新,更新完成后再存入FLASH存储器之中。

所述实时数据存储模块15,用于在实时共用体数据处理模块14执行完命令后,取出需要存储的数据所在的测量点号和应用层功能码,然后根据该测量点号和应用层功能码计算出数据应该具体存储的物理位置,按照物理位置将需要存储的数据存储于FLASH存储器17。

具体的,实时数据存储模块15检测到实时共用体数据处理模块14将有数据需要存储标志位置位后,首先从共用体结构体缓存区162取出需要存储数据所在的测量点号和应用层功能码,然后根据该测量点号和应用层功能码计算出数据应该具体存储FLASH存储器的物理位置,并读取该物理位置的数据。接着实时数据存储模块15会做一次判断,若是该物理位置数据与FLASH存储器数据缓存区163中数据不来自同一个数据块,则先将FLASH存储器17中相应位置的数据块数据清零,然后将FLASH存储器数据缓存区163中的数据存入该数据块,再将该数据块数据读出后更新FLASH存储器数据缓存区163;若该位置数据与FLASH存储器数据缓存区163中数据来自同一个数据块,则将该数据块数据读出后直接更新FLASH存储器数据缓存区163中的数据,将该步骤反复进行下去直至最后一个需要存储的数据存储完毕。最后,实时数据存储模块15将有数据需要存储标志位清零。

图3所示为本发明以测量点为标签的数据处理方法的流程示意图,其应用上述智能集中器进行,所述方法包括以下步骤:

步骤S1:所述实时数据接收模块接收上位机20发送的上位机命令,并将所述上位机命令存入消息队列数据缓存区161。具体的,每当接收到上位机命令时,实时数据接收模块12读取消息队列数据缓存区161的地址指针后将数据存入以该地址为首地址的数组中,然后将地址指针指向下一个缓存数组,直至所有命令接收完毕。同时,实时数据接收模块12将命令接收完毕标志位置位,等待实时消息队列数据处理模块13处理完消息队列数据缓存区161中的数据后将命令接收完毕标志位清零。

步骤S2:所述实时消息队列数据处理模块13将消息队列数据缓存区161中的命令逐条取出并解析后,将解析数据存入共用体结构体缓存区162。具体的,如图4所示,实时消息队列数据处理模块13检测到实时数据接收模块12将命令接收完毕标志位置位后,按后进先出的原则将消息队列数据缓存区161中的命令取出后对数据进行解析,完成后将解析好的数据存入共用体结构体缓存区162。同时,将有命令需要处理标志位置位,等待实时共用体数据处理模块14处理完该命令后将有命令需要处理标志位清零。之后再取出第二条命令进行解析,如此反复直至所有命令全部处理完毕,最后将命令接收完毕标志位清零,共用体结构体缓存区162初始化等待下次命令接收完毕标志位置位。

步骤S3:所述实时共用体数据处理模块14取出共用体结构体缓存区162中每一命令对应的解析数据,根据解析数据中的应用层功能码和数据单元标识以及由数据单元标识计算所得的测量点号形成任务单下发给计量表30或本地功能模块以完成该命令。具体的,实时共用体数据处理模块14检测到实时消息队列数据处理模块13将有命令需要处理标志位置位后,首先取出共用体结构体缓存区162中存储的测量点号,通过计算将两个字节16进制测量点号换算成10进制测量点号,然后再取出应用层功能码和数据单元标识确定应进行操作类型,最后再形成任务单下发给计量表30或本地功能模块执行该命令。等待命令完成后,实时共用体数据处理模块14将有命令需要处理标志位清零,初始化共用体结构体缓存区162,等待下一个有命令需要处理标志位置位,若得到的数据需要存储,则将有数据需要存储标志位置位。

步骤S4:所述实时数据存储模块15在实时共用体数据处理模块14执行完命令后,取出需要存储的数据所在的测量点号和应用层功能码,然后根据该测量点号和应用层功能码计算出数据应该具体存储的物理位置,按照物理位置将需要存储的数据存储于FLASH存储器数据缓存区163。

具体的,实时数据存储模块15检测到实时共用体数据处理模块14将有数据需要存储标志位置位后,首先取出需要存储数据所在的测量点号和应用层功能码,然后根据该测量点号和应用层功能码计算出数据应该具体存储的物理位置。接着实时数据存储模15会做一次判断,若是该位置数据与FLASH存储器数据缓存区163中数据不来自同一个数据块,则先将FLASH存储器数据缓存区163中相应位置的数据块数据清零,然后将数据缓存区中的数据存入该数据块;若是该位置数据与FLASH存储器数据缓存区163中数据来自同一个数据块,则将数据缓存区中的数据做相应的更新,将该步骤反复进行下去直至最后一个需要存储的数据存储完毕。最后,实时数据存储模块15将有数据需要存储标志位清零。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何属于本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

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