基于面向对象的交换协议的用电信息采集任务管理方法与流程

文档序号:14266174阅读:180来源:国知局
本发明涉及用电信息采集
技术领域
:,尤其涉及一种基于面向对象的交换协议的用电信息采集任务管理方法。
背景技术
::电力系统中的用电信息采集系统,之前所采用的通信规约q/gdw1376.1、dl/t645等均是面向过程的,存在着功能扩展性和应用灵活性欠缺的缺点,一旦有业务变更时,需要对协议重新修订、对现场的终端设备进行大规模重新升级,增大了现场运维的压力。基于以上原因,用电信息采集系统中面向对象的用电信息数据交换协议逐步推广开来,该协议具有业务适应强、采集效率高、数据源唯一和兼容性好的特点。尤其是在采集终端设备中,根据该协议的功能,通过任务配置表可以很方便地对数据采集任务(包括普通采集任务、事件采集任务、透明任务)进行优先级划分、采集数据内容变更、任务执行频率及周期调整等工作。由于各数据采集任务均有一定的时效性,因此如何根据各任务的优先级进行有效、合理地分配各采集任务的执行时间变得尤为重要。目前的解决方法是把各采集任务的所有数据信息复制到内存中,然后,在内存中根据各采集任务的执行时间段和优先级进行排序后筛查优先执行的任务。这种方案的优点是操作方便,执行效率高,但是由于各采集任务包含的数据信息很多,付出的代价就是需要消耗大量的内存资源。对于嵌入式系统的产品来讲,硬件资源、尤其是内存容量的增加意味着产品成本的升高,不利于提升产品的市场竞争力。技术实现要素:针对上述问题,本发明提供了一种在保证各采集任务执行效率不变的情况下,同时能够降低内存消耗,进而降低产品成本的采集任务管理的方法。本发明所采取的技术方案为:基于面向对象的交换协议的用电信息采集任务管理方法,包括以下步骤:步骤1、在采集终端的内存中创建以下全局变量:当前运行任务控制块指针pstclienttasktcbcur、任务控制块数组stclienttasktcbarry[n]、数据采集内容配置表stfiletable、需采集电表序号配置表ucms[m],所述的stclienttasktcbarry[n]中的[n]表示采集终端的参数存储区所实际支持的最大采集任务数量,所述的ucms[m]中的[m]表示采集终端所支持的最大电能表数量;所述的stclienttasktcbarry[n]是一个结构体数组,包含以下成员:当前任务类型uccurtasktype,当前任务优先级uctaskpri,当前所抄取的oad计数器指针uccurdataidptr,当前所抄取的电表编号uwcurmeterno、其中用select_chanl_fin表示所有电表抄取完毕;所述的stfiletable包含以下成员:采集总数量ucoadsum,ucoad[k]、即待采集的oad;步骤2、查询采集终端的参数存储区,判断与数据采集任务相关的参数是否发生变更,若否则转步骤3,若是则将步骤1中所定义的全局变量全部初始化为默认值、并转步骤3;步骤3、判断stclienttasktcbarry[n]是否有需要置为无效的任务,若否则转步骤4,若是则将uccurtasktype置为无效、即设置uccurtasktype=task_invalid、并转步骤4;步骤4、将采集终端中参数存储区内有效的数据采集任务同步到stclienttasktcbarry[n]内的任务数据;步骤5、在stclienttasktcbarry[n]内查找高优先级任务,根据uctaskpri进行排序,从中选出优先级最高的数据采集任务、并把pstclienttasktcbcur指向该数据采集任务在stclienttasktcbarry[n]内的地址;本步骤中通过“任务控制块数组”与参数存储区内的数据采集任务先进行关键参数同步,后进行优先级排序,进而选出最高优先级任务的形式,保证了高优先级的任务及时响应;步骤6、根据步骤5所选出的优先级最高的数据采集任务,在对应的参数存储区内查找该任务所要采集的数据oad内容,把oad内容同步到stfiletable中、并把该任务需要采集的电能表档案在参数存储区内的存储序号同步到ucms[m]中;本步骤通过多个数据采集任务共享一个“数据采集内容配置表”和一个“需采集电表序号配置表”,以及在“需采集电表序号配置表”中仅仅记录电能表在参数存储区内的存储序号的形式,节省了大量的内存资源;步骤7、根据pstclienttasktcbcur所指向的任务控制块,通过uwcurmeterno和uccurdataidptr选择电表及oad进行组帧抄取数据;本步骤通过“任务控制块数组”中的“当前所抄取的oad计数器指针”和“当前所抄取的电表编号”记录各任务的执行情况,保证了在各任务切换后再次执行时的连贯性;步骤8、根据步骤7中选择出的电能表档案信息和所要采集的数据oad进行组帧,发起抄表通信。优选地,步骤3中判断任务控制块数组是否有需要置为无效的任务的判断依据是:当前任务类型有效,当前所抄取的电表编号为select_chanl_fin,则将其置为无效的任务。优选地,步骤4中将采集终端中参数存储区内有效的数据采集任务同步到stclienttasktcbarry[n]内的任务数据的具体步骤包括:4.1、在stclienttasktcbarry[n]内查找无效的任务,即满足uccurtasktype==task_invalid的任务,若不存在则转步骤5,否则转步骤4.2;stclienttasktcbarry[n]是各采集任务关键信息点在采集终端的内存中进行的临时标记,若此时在内存中查找出对应的任务无效时,需要到步骤4.2中再次核对该任务是否已经达到有效的条件,若有效就把重新在内存中置为有效;4.2、根据stclienttasktcbarry[n]中所标记为无效的任务,在参数存储区内查找对应的数据信息,判断该任务是否已经达到就绪态,如果否则转步骤5,如果是则转步骤4.3;4.3、把该任务在参数存储区内的方案类型和执行优先级数据值分别同步到stclienttasktcbarry[n]内的uccurtasktype和uctaskpri内,同时把uccurdataidptr和uwcurmeterno清为0。优选地,步骤4.2所述的任务达到就绪态是指任务的执行状态、执行频率、开始时间、结束时间满足如下条件:a、任务的执行状态为正常;b、采集终端的当前时间大于等于开始时间且小于结束时间;c、采集终端的当前时间点处于任务的执行周期内。优选地,步骤7中进行组帧抄取数据的具体步骤包括:7.1、如果uwcurmeterno在有效范围内,同时uccurdataidptr不等于宏值select_data_id_fin,则转步骤7.2;否则,根据uwcurmeterno值重新选择一个新的电能表进行采集数据;7.2、根据uccurdataidptr的值,在stfiletable中查找对应的数据oad,具体步骤如下:首先判断uccurdataidptr是否小于于等于stfiletable中的ucoadsum,若否,则设置uccurdataidptr=select_data_id_fin;若是,则在stfiletable中的ucoad[k]中选取下标为uccurdataidptr的数据oad进行组帧,同时把uccurdataidptr进行加一操作。优选地,步骤7.1所述的uwcurmeterno在有效范围内,是指uwcurmeterno小于等于采集终端所支持的最大采集电表数。优选地,步骤7.1所述的根据uwcurmeterno值重新选择一个新的电能表进行采集数据的选择原则如下:若uwcurmeterno是有效的,则令j=uwcurmeterno+1,从ucms[j]开始查找出第一个为真的下标,把此下标重新赋值给uwcurmeterno,同时根据此下标值在参数存储区内查找到对应的电表档案信息;若uwcurmeterno是无效的,则设置uwcurmeterno=select_chanl_fin。本发明的有益效果:1、通过“任务控制块数组”与参数存储区内的数据采集任务先进行关键参数同步,后进行优先级排序,进而选出最高优先级任务的方式,保证了高优先级的任务及时响应;2、通过多个数据采集任务共享一个“数据采集内容配置表”和一个“需采集电表序号配置表”,以及在“需采集电表序号配置表”中仅仅记录电能表在参数存储区内的存储序号的方式,节省了大量的内存资源,对于采集终端这种嵌入式系统来讲,每节省一个字节的内存,都可能会降低大量的产品成本,增加大量的社会效益;3、通过“任务控制块数组”中的“当前所抄取的oad计数器指针”和“当前所抄取的电表编号”记录各任务的执行情况,保证了在各任务切换后再次执行时的连贯性。附图说明图1是本发明的逻辑流程框图。具体实施方式下面结合附图,具体说明本发明的实施方式。如图1所示,是本发明的逻辑流程框图。基于面向对象的交换协议的用电信息采集任务管理方法,包括以下步骤:步骤1、在采集终端的内存中创建以下全局变量:当前运行任务控制块指针pstclienttasktcbcur、任务控制块数组stclienttasktcbarry[n]、数据采集内容配置表stfiletable、需采集电表序号配置表ucms[m],所述的stclienttasktcbarry[n]中的[n]表示采集终端的参数存储区所实际支持的最大采集任务数量,所述的ucms[m]中的[m]表示采集终端所支持的最大电能表数量;所述的stclienttasktcbarry[n]是一个结构体数组,包含以下成员:当前任务类型uccurtasktype,当前任务优先级uctaskpri,当前所抄取的oad计数器指针uccurdataidptr,当前所抄取的电表编号uwcurmeterno、其中用select_chanl_fin表示所有电表抄取完毕;所述的stfiletable包含以下成员:采集总数量ucoadsum,ucoad[k]、即待采集的oad。步骤2、查询采集终端的参数存储区,判断与数据采集任务相关的参数是否发生变更,若否则转步骤3,若是则将步骤1中所定义的全局变量全部初始化为默认值、并转步骤3。步骤3、判断stclienttasktcbarry[n]是否有需要置为无效的任务,若否则转步骤4,若是则将uccurtasktype置为无效、即设置uccurtasktype=task_invalid、并转步骤4;判断任务控制块数组是否有需要置为无效的任务的判断依据是:当前任务类型有效,当前所抄取的电表编号为select_chanl_fin,则将其置为无效的任务,即uccurtasktype=task_invalid。步骤4、将采集终端中参数存储区内有效的数据采集任务同步到stclienttasktcbarry[n]内的任务数据;具体步骤包括:4.1、在stclienttasktcbarry[n]内查找无效的任务,即满足uccurtasktype==task_invalid的任务,若不存在则转步骤5,否则转步骤4.2;4.2、根据stclienttasktcbarry[n]中所标记为无效的任务,在参数存储区内查找对应的数据信息,判断该任务是否已经达到就绪态,如果否则转步骤5,如果是则转步骤4.3;4.3、把该任务在参数存储区内的方案类型和执行优先级数据值分别同步到stclienttasktcbarry[n]内的uccurtasktype和uctaskpri内,同时把uccurdataidptr和uwcurmeterno清为0。步骤5、在stclienttasktcbarry[n]内查找高优先级任务,根据uctaskpri进行排序,从中选出优先级最高的数据采集任务、并把pstclienttasktcbcur指向该数据采集任务在stclienttasktcbarry[n]内的地址。步骤6、根据步骤5所选出的优先级最高的数据采集任务,在对应的参数存储区内查找该任务所要采集的数据oad内容,把oad内容同步到stfiletable中、并把该任务需要采集的电能表档案在参数存储区内的存储序号同步到ucms[m]中。步骤7、根据pstclienttasktcbcur所指向的任务控制块,通过uwcurmeterno和uccurdataidptr选择电表及oad进行组帧抄取数据;具体步骤包括:7.1、如果uwcurmeterno在有效范围内,同时uccurdataidptr不等于宏值select_data_id_fin,则转步骤7.2;否则,根据uwcurmeterno值重新选择一个新的电能表进行采集数据;uwcurmeterno在有效范围内,是指uwcurmeterno小于等于采集终端所支持的最大采集电表数;7.2、根据uccurdataidptr的值,在stfiletable中查找对应的数据oad,具体步骤如下:首先判断uccurdataidptr是否小于于等于stfiletable中的ucoadsum,若否,则设置uccurdataidptr=select_data_id_fin;若是,则在stfiletable中的ucoad[k]中选取下标为uccurdataidptr的数据oad进行组帧,同时把uccurdataidptr进行加一操作。步骤8、根据步骤7中选择出的电能表档案信息和所要采集的数据oad进行组帧,发起抄表通信。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1