CN113242059B - 一种基于双环队列的无锁多协处理线程并发抄表方法 - Google Patents

一种基于双环队列的无锁多协处理线程并发抄表方法 Download PDF

Info

Publication number
CN113242059B
CN113242059B CN202110643614.1A CN202110643614A CN113242059B CN 113242059 B CN113242059 B CN 113242059B CN 202110643614 A CN202110643614 A CN 202110643614A CN 113242059 B CN113242059 B CN 113242059B
Authority
CN
China
Prior art keywords
task
meter reading
queue
annular
index
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110643614.1A
Other languages
English (en)
Other versions
CN113242059A (zh
Inventor
程前
周畅
尚驰祥
谈威
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Zhongyuan Electronic Information Co ltd
Original Assignee
Wuhan Zhongyuan Electronic Information Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Zhongyuan Electronic Information Co ltd filed Critical Wuhan Zhongyuan Electronic Information Co ltd
Priority to CN202110643614.1A priority Critical patent/CN113242059B/zh
Publication of CN113242059A publication Critical patent/CN113242059A/zh
Application granted granted Critical
Publication of CN113242059B publication Critical patent/CN113242059B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B3/00Line transmission systems
    • H04B3/54Systems for transmission via power distribution lines
    • H04B3/544Setting up communications; Call and signalling arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Power Engineering (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Arrangements For Transmission Of Measured Signals (AREA)
  • Selective Calling Equipment (AREA)

Abstract

本发明提出了一种基于双环队列的无锁多协处理线程并发抄表方法,步骤为:S100:建立基于供电区域的集中器、路由器及入户电表的本地载波模块、轮询线程模块、若干协处理线程模块和主线程模块;S200:在一个抄表周期内,集中器的I/O端口并行的连续发出若干个抄表任务;S300;本地载波模块用于构建环形任务队列和环形索引队列;S400:主线程对集中器的抄表任务读取,安排空闲协处理线程模块执行抄表任务;S500:入户电表生成确认信息发送至集中器并进行抄表,由入户电表生成数据上传任务;S600:执行数据上传任务;S700:数据上传任务执行后,对确认信息进行验证,不符合要求的结果重复执行或者终止。

Description

一种基于双环队列的无锁多协处理线程并发抄表方法
技术领域
本发明涉及电网智能抄表技术领域,尤其涉及一种基于双环队列的无锁多协处理线程并发抄表方法。
背景技术
电力线网络是当前覆盖极广的一种网络,其以电力线缆作为传输介质实现通信功能,具有无需重复布线、安装和维护成本低等优点。依赖电力线网络,进行模拟或者数字方式的远程电力用户电能抄表、电压设备远程控制等,是一种非常便捷的应用。基于电力线的电网智能抄表,主要是依赖电力线网络对接入区域内的集中器所辖的入户电表的电能进行定期的抄读,以获取对应时刻的入户电表的电能数据,用于实现电能计费、电网损耗计算或者高频次的96点日负荷曲线数据采集等功能的实现。
传统的集中器抄表方式,是采用一问一答的方式,或者简单的并行处理方式,抄读某个入户电表的数据需要的处理时间很长,常常需要当前任务读取成功或者超过规定的延时读取失败以后才能进行下一任务,导致抄表任务效率极低,且抄表任务的时效性差。
发明内容
有鉴于此,本发明提出了一种抄表任务效率高的基于双环队列的无锁多协处理线程并发抄表方法。
本发明的技术方案是这样实现的:本发明提供了一种基于双环队列的无锁多协处理线程并发抄表方法,包括如下步骤:
S100:建立基于供电区域的集中器、路由器及入户电表的本地载波模块、轮询线程模块、若干协处理线程模块和主线程模块;
S200:一个抄表周期内,集中器的I/O端口并行的连续发出若干个抄表任务;当集中器的I/O端口达到并发抄表任务上限以后,集中器停止发出抄表任务;
S300;本地载波模块用于构建环形任务队列和环形索引队列,环形任务队列中的各任务位置分别对应集中器的I/O口发出的一个待处理的抄表任务;环形索引队列的各索引位置对应一个线程索引;环形任务队列的长度与环形索引队列的长度相同,且环形任务队列中的任务位置与环形索引队列中的索引位置一一对应设置;当环形任务队列排满或者环形索引队列排满以后,本地载波模块向集中器发出队列已满信号,集中器接收到该队列已满信号后停止发出抄表任务;每个线程索引与一个当前空闲状态的协处理线程模块相关联;
S400:主线程对集中器的I/O口进行定期的抄表任务读取,读取到合法的若干个抄表任务时,主线程模块将抄表任务存入环形任务队列后端的空余队列位置;轮询线程模块轮询各协处理线程模块,当存在空闲状态的协处理线程模块时,轮询线程模块选择若干个空闲状态的协处理线程模块并在环形索引队列上的相应的索引位置做关联标记,由该协处理线程模块执行该抄表任务;
S500:入户电表接收到抄表任务后,生成一次确认信息发送至集中器并进行抄表,由入户电表生成数据上传任务;入户电表将一次确认信息返回到集中器的I/O口后,集中器确认入户电表接收到该抄表任务,协处理线程模块通知本地载波模块释放该抄表任务对应的环形任务队列的任务位置及环形索引队列的索引位置,解除执行抄表任务的协处理线程模块与该索引位置的关联关系,使该执行抄表任务的协处理线程模块处于空闲状态;
S600:主线程对入户电表的I/O口进行定期的读取,读取到合法的数据上传任务时,主线程模块将数据上传任务存入环形任务队列后端的空余队列位置;轮询线程模块轮询各协处理线程模块,当存在当前空闲状态的协处理线程模块时,轮询线程模块选择空闲状态的协处理线程模块并在环形索引队列上的相应的索引位置做关联标记,由该空闲的协处理线程模块执行该数据上传任务;
S700:数据上传任务执行后,集中器的I/O口接收到包含一次确认信息在内的抄表上传数据,并生产二次确认信息;当一次确认信息与二次确认信息符合要求时,表示抄表任务和数据上传任务成功,协处理线程模块通知本地载波模块释放该数据上传任务对应的环形任务队列的任务位置及环形索引队列的索引位置,解除执行数据上传任务的协处理线程模块与环形索引队列的索引位置的关联关系,使该执行数据上传任务的协处理线程模块处于空闲状态,本抄表周期内不再执行对应入户电表的抄表任务或者数据上传任务;如果一次确认信息或者二次确认信息不符合要求,表示抄表任务或者数据上传任务不成功,经过一个或者若干个固定时间延迟后重新执行步骤S400—S700,且根据不成功的抄表任务或者数据上传任务的环形索引队列的索引位置做出的关联标记,选用不同的协处理线程模块或者路由器再次执行抄表任务和数据上传任务,直到一次确认信息和二次确认信息均符合要求、达到重新尝试次数上限终止或者到达抄表任务的给定截止期限终止。
在以上技术方案的基础上,优选的,所述环形任务队列是设定固定地址空间长度为MAXSIZE的任务队列,每个环形任务队列的地址空间即任务位置对应一个抄表任务或者数据上传任务,其对应的可执行抄表任务或者数据上传任务的总数也为MAXSIZE,任务位置对应的取值范围为(0,MAXSIZE—1);先加入环形任务队列的任务会按任务位置的取值由小到大从环形队列的队首依次排列,直至到达可执行任务的最大值MAXSIZE,环形任务队列按滚动更新方式更新,环形任务队列末尾已满时,新加入的抄表任务或者数据上传任务会填充到环形任务队列的首端。
进一步优选的,所述环形索引队列是设置固定地址空间长度为MAXSIZE的索引队列,每个环形索引队列的地址空间即索引位置对应一个协处理线程模块的索引,协处理线程模块索引的总数为MAXSIZE,索引位置的取值范围为(0,MAXSIZE—1);环形索引队列的索引位置与环形任务队列的任务位置一一对应;令索引位置为K的协处理线程模块,对应的环形任务队列的任务位置也为K,K∈(0,MAXSIZE—1);先加入的索引位置会按其取值由小到大从环形索引队列的队首依次排列,直至到达可执行索引位置的最大值MAXSIZE。
更进一步优选的,所述环形任务队列的滚动更新方式,是在环形任务队列中分别设置队头指针和队尾指针;按照先进先出的顺序,当有新的抄表任务或者数据上传任务加入队列时,队尾指针指向后移动一个空白地址空间,新的抄表任务或者数据上传任务加入到该后移后的地址空间中,该地址空间被占用;如果队尾指针当前处于任务位置为MAXSIZE—1的任务位置,加入新的抄表任务或者数据上传任务并后移一位则到达环形任务队列的任务位置为0的空的任务位置;当有新的抄表任务或者数据上传任务执行完毕后,其对应的环形任务队列的任务位置被释放,队列头指针向后步进一个任务位置;环形索引队列的滚动更新方式与环形任务队列的滚动更新方式相同。
再进一步优选的,所述抄表任务包括需要传输的抄表报文帧和一次验证帧;抄表报文帧包括集中器编号信息、下行途径路由器编号信息、目标入户电表编号信息和目标入户电表抄表任务执行截止时间;一次验证帧为根据加密算法对抄表报文帧生成的第一数字签名信息;抄表任务到达入户电表后,入户电表分别对抄表报文帧内的集中器编号信息、目标入户电表编号信息进行确认,并对接收到的抄表报文帧再次进行同样的加密算法计算,得到第二数字签名信息,将一次验证帧对应的第一数字签名信息与第二数字签名信息进行逐个字符对比,将对比结果作为一次确认信息。
更进一步的优选的,所述数据上传任务包括需要传输的上传报文帧、一次确认信息、抄表信息和二次验证帧;上传报文帧包括目标入户电表编号信息、上行途径路由器编号信息、集中器编号信息和目标入户电表抄表任务实际执行完成时间;抄表信息为当前时间入户电表的读数;二次验证帧为根据加密算法对上传报文帧生成的第三数字签名信息;数据上传任务到达集中器后,集中器分别对上传报文帧内的目标入户电表编号信息、上行途径路由器编号信息、集中器编号信息进行确认,并采用加密算法对上传报文帧进行计算,得到第四数字签名信息;将二次验证帧对应的第三数字签名信息与第四数字签名信息进行逐个字符对比,将对比结果作为二次确认信息。
再进一步优选的,所述加密算法为数据摘要算法。
在以上技术方案的基础上,优选的,所述一次确认信息或者二次确认信息不符合要求时,抄表周期之内重新尝试次数上限采用如下方式约束:重试次数
Figure 68258DEST_PATH_IMAGE001
,方括号为取整运算;并且每重试一次抄表任务和数据上传任务的时间进行累加,总计累加的时间
Figure 932308DEST_PATH_IMAGE002
T为两次抄表周期之间的时间间隔。
本发明提供的一种基于双环队列的无锁多协处理线程并发抄表方法,相对于现有技术具有以下有益效果:
(1)本发明采用并行方式对入户电表进行查表操作,集中器始采用最大并发数量发送抄表任务,入户电表接收到抄表任务后,执行抄表操作,生成数据上传任务返回集中器中,不论数据上传任务的抄表结果是否成功,集中器会根据已完成的抄表任务再新发一个抄表任务,始终维持集中器的最大并发数量,直至一个抄表周期内所有的入户电表的抄表任务执行完毕;由于采用了滚动更新的环形任务队列和环形索引队列来存放各类任务和相应的协处理线程模块的索引,使得待执行的抄表任务或者数据上传任务能够与协处理线程模块一一对应,合理分配***的资源,降低***复杂度的同时提高***的处理效率和稳定性;
(2)采用双环形队列结构,一个环形队列存储数据收发任务,另一个环形队列存储协处理线程的索引,在初始化以后执行对应位置的协处理线程模块即对应相应的任务位置的任务,只需要很少的寻线程花销即可找到对应的空闲的协处理线程,执行完毕后释放相应的队列位置的空间以便循环利用,相比传统方法创建和销毁专用任务的线程,任务执行效率大大提高;
(3)环形任务队列和环形索引队列具有先进先出的特性,一个协处理线程模块对应一个抄表任务或者数据上传任务,避免了多个线程处理一个任务,也不需设计线程同步锁,***开销可有效降低;
(4)抄表任务和数据上传任务各进行了两次数字签名信息的验证,完成抄表流程后,还会对一次确认信息或者二次确认信息评价该抄表任务及数据上传任务执行是否成功,以确定是否需要在抄表周期内再次重新尝试;
(5)约束了抄表周期内抄表任务或者数据上传任务的重试次数及累计时间规则,改变路由的路径尝试重试,如果连续几个周期均无法完成抄表任务或数据上传任务,则表示对应的入户电表、集中器I/O端口或者路由器存在故障,需要中止对对应入户电表的操作。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种基于双环队列的无锁多协处理线程并发抄表方法的流程图;
图2为本发明一种基于双环队列的无锁多协处理线程并发抄表方法的并发抄表交互流程图;
图3为本发明一种基于双环队列的无锁多协处理线程并发抄表方法的环形任务队列或者环形索引队列的结构图;
图4为本发明一种基于双环队列的无锁多协处理线程并发抄表方法的环形任务队列与环形索引队列在执行抄表任务或者数据上传任务的示意图;
图5为本发明一种基于双环队列的无锁多协处理线程并发抄表方法的环形任务队列与环形索引队列的队头指针和队尾指针的步进移位示意图。
具体实施方式
下面将结合本发明实施方式,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
如图1、图2和图3所示,本发明提供了一种基于双环队列的无锁多协处理线程并发抄表方法,包括如下步骤:
S100:建立基于供电区域的集中器、路由器及入户电表的本地载波模块、轮询线程模块、若干协处理线程模块和主线程模块;
S200:一个抄表周期内,集中器的I/O端口并行的连续发出若干个抄表任务;当集中器的I/O端口达到并发抄表任务上限以后,集中器停止发出抄表任务;图示展示了只能发送不超过MAXSIZE个并行的抄表任务,与相应可执行的协处理线程模块的数量相适应;
S300;本地载波模块用于构建环形任务队列和环形索引队列,环形任务队列中的各任务位置分别对应集中器的I/O口发出的一个待处理的抄表任务;环形索引队列的各索引位置对应一个线程索引;环形任务队列的长度与环形索引队列的长度相同,且环形任务队列中的任务位置与环形索引队列中的索引位置一一对应设置;当环形任务队列排满或者环形索引队列排满以后,本地载波模块向集中器发出队列已满信号,集中器接收到该队列已满信号后停止发出抄表任务;每个线程索引与一个当前空闲状态的协处理线程模块相关联;该步骤用于建立缓存数据传输的不同类型的任务,以及对于执行相应任务的协处理线程模块的索引信息;以便快速将协处理线程模块与相应的数据传输任务进行关联。
具体如图3所示,环形任务队列是设定固定地址空间长度为MAXSIZE的任务队列,每个环形任务队列的地址空间即任务位置对应一个抄表任务或者数据上传任务,其对应的可执行抄表任务或者数据上传任务的总数也为MAXSIZE,任务位置对应的取值范围为(0,MAXSIZE—1);先加入环形任务队列的任务会按任务位置的取值由小到大从环形队列的队首依次排列,直至到达可执行任务的最大值MAXSIZE,环形任务队列按滚动更新方式更新,环形任务队列末尾已满时,新加入的抄表任务或者数据上传任务会填充到环形任务队列的首端。
同样如图3所示,环形索引队列是设置固定地址空间长度为MAXSIZE的索引队列,其结构与环形任务队列基本相同。每个环形索引队列的地址空间即索引位置对应一个协处理线程模块的索引,协处理线程模块索引的总数为MAXSIZE,索引位置的取值范围为(0,MAXSIZE—1);环形索引队列的索引位置与环形任务队列的任务位置一一对应关系;令索引位置为K的协处理线程模块,对应的环形任务队列的任务位置也为K,K∈(0,MAXSIZE—1);先加入的索引位置会按其取值由小到大从环形索引队列的队首依次排列,直至到达可执行索引位置的最大值MAXSIZE。到达队列末尾后,新进的协处理线程模块的索引会自动跳转到环形索引队列的首端的索引位置。
附图4和附图5,展示了新进抄表任务或者数据上传任务后,环形任务队列和环形索引队列的步进情况。由于两个队列是固定长度且同步步进,前端已执行的任务留下的空白任务位置或者索引位置会被循环使用,只需要花费少量寻找空闲协处理线程模块的开销,可避免常规线程的建立、撤销等动作,既提高了***的运行效率,还降低了***的复杂度和可靠性。由于抄表任务在各入户电表处的距离或者执行的时间不尽相同,集中器在接收到入户电表返回的信息时,会先后释放相应的环形任务队列和环形索引队列中的位置,并释放相应的协处理线程模块,空闲状态的协处理线程模块可立即用于另一新的并发的抄表任务。
环形任务队列的滚动更新方式,指的是在环形任务队列中分别设置队头指针和队尾指针;按照先进先出的顺序,当有新的抄表任务或者数据上传任务加入队列时,队尾指针指向后移动一个空白地址空间,新的抄表任务或者数据上传任务加入到该后移后的地址空间中,该地址空间被占用;如果队尾指针当前处于任务位置为MAXSIZE—1的任务位置,加入新的抄表任务或者数据上传任务并后移一位则到达环形任务队列的任务位置为0的空的任务位置;当有新的抄表任务或者数据上传任务执行完毕后,其对应的环形任务队列的任务位置被释放,队列头指针向后步进一个任务位置;环形索引队列的滚动更新方式与环形任务队列的滚动更新方式相同。
S400:主线程对集中器的I/O口进行定期的抄表任务读取,读取到合法的若干个抄表任务时,主线程模块将抄表任务存入环形任务队列后端的空余队列位置;轮询线程模块轮询各协处理线程模块,当存在空闲状态的协处理线程模块时,轮询线程模块选择若干个空闲状态的协处理线程模块并在环形索引队列上的相应的索引位置做关联标记,由该空闲的协处理线程模块一一对应的执行抄表任务。
S500:入户电表接收到抄表任务后,生成一次确认信息发送至集中器并进行抄表,由入户电表生成数据上传任务;入户电表将一次确认信息返回到集中器的I/O口后,集中器确认入户电表接收到该抄表任务,协处理线程模块通知本地载波模块释放该抄表任务对应的环形任务队列的任务位置及环形索引队列的索引位置,解除执行抄表任务的协处理线程模块与该索引位置的关联关系,使该执行抄表任务的协处理线程模块处于空闲状态。
具体的,抄表任务包括需要传输的抄表报文帧和一次验证帧;抄表报文帧包括集中器编号信息、下行途径路由器编号信息、目标入户电表编号信息和目标入户电表抄表任务执行截止时间;一次验证帧为根据加密算法对抄表报文帧生成的第一数字签名信息;抄表任务到达入户电表后,入户电表分别对抄表报文帧内的集中器编号信息、目标入户电表编号信息进行确认,确认无误后再对接收到的抄表报文帧再次进行同样的加密算法计算,得到第二数字签名信息,将一次验证帧对应的第一数字签名信息与第二数字签名信息进行逐个字符对比,将对比结果作为一次确认信息。两次数字签名信息是对同一抄表报文帧进行同样加密算法得到的结果,如果结果一致,表明抄表报文帧的内容完整准确的传输到入户电表处;如不一致,则表明抄表报文帧的内容没有完整的到达入户电表,可能需要重新执行抄表任务。
S600:主线程对入户电表的I/O口进行定期的读取,读取到合法的数据上传任务时,主线程模块将数据上传任务存入环形任务队列后端的空余队列位置;轮询线程模块轮询各协处理线程模块,当存在当前空闲状态的协处理线程模块时,轮询线程模块选择空闲状态的协处理线程模块并在环形索引队列上的相应的索引位置做关联标记,由该空闲的协处理线程模块执行该数据上传任务;
数据上传任务包括需要传输的上传报文帧、一次确认信息、抄表信息和二次验证帧;上传报文帧包括目标入户电表编号信息、上行途径路由器编号信息、集中器编号信息和目标入户电表抄表任务实际执行完成时间;抄表信息为当前时间入户电表的读数;二次验证帧为根据加密算法对上传报文帧生成的第三数字签名信息;数据上传任务到达集中器后,集中器分别对上传报文帧内的目标入户电表编号信息、上行途径路由器编号信息、集中器编号信息进行确认,并采用加密算法对上传报文帧进行计算,得到第四数字签名信息;将二次验证帧对应的第三数字签名信息与第四数字签名信息进行逐个字符对比,将对比结果作为二次确认信息。同样的,在执行完数据上传任务后,集中器也会针对上传报文帧进行加密算法得到相应的结果,如果该结果与二次验证帧对应的第三数字签名信息相对应,则表明数据上传任务过程中,上传报文帧完整可靠的传输到了集中器中,否则表明上传报文帧可能不完整或者内容不符合要求,可能需要重新执行数据上传任务。本发明中的加密算法可以采用数据摘要算法,如CRC或者MD5算法。
S700:数据上传任务执行后,集中器的I/O口接收到包含一次确认信息在内的抄表上传数据,并生产二次确认信息;当一次确认信息与二次确认信息符合要求时,表示抄表任务和数据上传任务成功,协处理线程模块通知本地载波模块释放该数据上传任务对应的环形任务队列的任务位置及环形索引队列的索引位置,解除执行数据上传任务的协处理线程模块与环形索引队列的索引位置的关联关系,使该执行数据上传任务的协处理线程模块处于空闲状态,本抄表周期内不再执行对应入户电表的抄表任务或者数据上传任务;如果一次确认信息或者二次确认信息不符合要求,表示抄表任务或者数据上传任务不成功,经过一个或者若干个固定时间延迟后重新执行步骤S400—S700,且根据不成功的抄表任务或者数据上传任务的环形索引队列的索引位置做出的关联标记,选用不同的协处理线程模块或者路由器再次执行抄表任务和数据上传任务,直到一次确认信息和二次确认信息均符合要求、达到重新尝试次数上限终止或者到达抄表任务的给定截止期限终止。
一次确认信息与二次确认信息均符合要求时,表明在该抄表周期内的集中器—入户电表—集中器的循环应答抄表过程完整可靠的执行,本周期内不会再发送相应的抄表任务的请求。如果一次确认信息或者二次确认信息不符合要求,则需要再次尝试直到得到符合预期的结果,则再次尝试更换抄表任务的传递路径,以判断信道是否畅通,并对失败的尝试的参数进行关联标记;如果多次尝试或者到指定达截止期限也无法得到符合预期的结果,则表明该入户电表的抄表工作可能无法完成,当若干连续抄表周期内均无法顺利实现特定入户电表的抄表任务时,考虑集中器I/O端口或者入户电表本身故障,再按信号传输顺序进行排查。
当然,为了节省***资源,再次尝试更换抄表任务的传递路径的次数是有限制的,具体要求为:一次确认信息或者二次确认信息不符合要求时,抄表周期之内重新尝试次数上限采用如下方式约束重试次数
Figure 215522DEST_PATH_IMAGE001
,方括号为取整运算;并且每重试一次抄表任务和数据上传任务的时间进行累加,总计累加的时间
Figure 756094DEST_PATH_IMAGE002
T为两次抄表周期之间的时间间隔。
以上所述仅为本发明的较佳实施方式而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种基于双环队列的无锁多协处理线程并发抄表方法,其特征在于:包括如下步骤:
S100:建立基于供电区域的集中器、路由器及入户电表的本地载波模块、轮询线程模块、若干协处理线程模块和主线程模块;
S200:一个抄表周期内,集中器的I/O端口并行的连续发出若干个抄表任务;当集中器的I/O端口达到并发的抄表任务上限以后,集中器停止发出抄表任务;
S300;本地载波模块用于构建环形任务队列和环形索引队列,环形任务队列中的各任务位置分别对应集中器的I/O口发出的一个待处理的抄表任务;环形索引队列的各索引位置对应一个线程索引;环形任务队列的长度与环形索引队列的长度相同,且环形任务队列中的任务位置与环形索引队列中的索引位置一一对应设置;当环形任务队列排满或者环形索引队列排满以后,本地载波模块向集中器发出队列已满信号,集中器接收到该队列已满信号后停止发出抄表任务;每个线程索引与一个当前空闲状态的协处理线程模块相关联;
S400:主线程对集中器的I/O口进行定期的抄表任务读取,读取到合法的若干个抄表任务时,主线程模块将抄表任务存入环形任务队列后端的空余队列位置;轮询线程模块轮询各协处理线程模块,当存在空闲状态的协处理线程模块时,轮询线程模块选择若干个空闲状态的协处理线程模块并在环形索引队列上的相应的索引位置做关联标记,由该协处理线程模块执行该抄表任务;
S500:入户电表接收到抄表任务后,生成一次确认信息发送至集中器并进行抄表,由入户电表生成数据上传任务;入户电表将一次确认信息返回到集中器的I/O口后,集中器确认入户电表接收到该抄表任务,协处理线程模块通知本地载波模块释放该抄表任务对应的环形任务队列的任务位置及环形索引队列的索引位置,解除执行抄表任务的协处理线程模块与该索引位置的关联关系,使该执行抄表任务的协处理线程模块处于空闲状态;
S600:主线程对入户电表的I/O口进行定期的读取,读取到合法的数据上传任务时,主线程模块将数据上传任务存入环形任务队列后端的空余队列位置;轮询线程模块轮询各协处理线程模块,当存在当前空闲状态的协处理线程模块时,轮询线程模块选择空闲状态的协处理线程模块并在环形索引队列上的相应的索引位置做关联标记,由该空闲的协处理线程模块执行该数据上传任务;
S700:数据上传任务执行后,集中器的I/O口接收到包含一次确认信息在内的抄表上传数据,并生产二次确认信息;当一次确认信息与二次确认信息均符合要求时,表示抄表任务和数据上传任务均成功,协处理线程模块通知本地载波模块释放该数据上传任务对应的环形任务队列的任务位置及环形索引队列的索引位置,解除执行数据上传任务的协处理线程模块与环形索引队列的索引位置的关联关系,使该执行数据上传任务的协处理线程模块处于空闲状态,本抄表周期内不再执行对应入户电表的抄表任务或者数据上传任务;如果一次确认信息或者二次确认信息不符合要求,表示抄表任务或者数据上传任务不成功,经过一个或者若干个固定时间延迟后重新执行步骤S400—S700,且根据不成功的抄表任务或者数据上传任务的环形索引队列的索引位置做出的关联标记,选用不同的协处理线程模块或者路由器再次执行抄表任务和数据上传任务,直到一次确认信息和二次确认信息完全相同、达到重新尝试次数上限终止或者到达抄表任务的给定截止期限终止。
2.根据权利要求1所述的一种基于双环队列的无锁多协处理线程并发抄表方法,其特征在于:所述环形任务队列是设定固定地址空间长度为MAXSIZE的任务队列,每个环形任务队列的地址空间即任务位置对应一个抄表任务或者数据上传任务,其对应的可执行抄表任务或者数据上传任务的总数也为MAXSIZE,任务位置对应的取值范围为(0,MAXSIZE—1);先加入环形任务队列的任务会按任务位置的取值由小到大从环形队列的队首依次排列,直至到达可执行任务的最大值MAXSIZE,环形任务队列按滚动更新方式更新,环形任务队列末尾已满时,新加入的抄表任务或者数据上传任务会填充到环形任务队列的首端。
3.根据权利要求2所述的一种基于双环队列的无锁多协处理线程并发抄表方法,其特征在于:所述环形索引队列是设置固定地址空间长度为MAXSIZE的索引队列,每个环形索引队列的地址空间即索引位置对应一个协处理线程模块的索引,协处理线程模块索引的总数为MAXSIZE,索引位置的取值范围为(0,MAXSIZE—1);环形索引队列的索引位置与环形任务队列的任务位置一一对应;令索引位置为K的协处理线程模块,对应的环形任务队列的任务位置也为K,K∈(0,MAXSIZE—1);先加入的索引位置会按其取值由小到大从环形索引队列的队首依次排列,直至到达可执行索引位置的最大值MAXSIZE。
4.根据权利要求3所述的一种基于双环队列的无锁多协处理线程并发抄表方法,其特征在于:所述环形任务队列的滚动更新方式,是在环形任务队列中分别设置队头指针和队尾指针;按照先进先出的顺序,当有新的抄表任务或者数据上传任务加入队列时,队尾指针指向后移动一个空白地址空间,新的抄表任务或者数据上传任务加入到该后移后的地址空间中,该地址空间被占用;如果队尾指针当前处于任务位置为MAXSIZE—1的任务位置,加入新的抄表任务或者数据上传任务并后移一位则到达环形任务队列的任务位置为0的空的任务位置;当有新的抄表任务或者数据上传任务执行完毕后,其对应的环形任务队列的任务位置被释放,队列头指针向后步进一个任务位置;环形索引队列的滚动更新方式与环形任务队列的滚动更新方式相同。
5.根据权利要求4所述的一种基于双环队列的无锁多协处理线程并发抄表方法,其特征在于:所述抄表任务包括需要传输的抄表报文帧和一次验证帧;抄表报文帧包括集中器编号信息、下行途径路由器编号信息、目标入户电表编号信息和目标入户电表抄表任务执行截止时间;一次验证帧为根据加密算法对抄表报文帧生成的第一数字签名信息;抄表任务到达入户电表后,入户电表分别对抄表报文帧内的集中器编号信息、目标入户电表编号信息进行确认,并对接收到的抄表报文帧再次进行同样的加密算法计算,得到第二数字签名信息,将一次验证帧对应的第一数字签名信息与第二数字签名信息进行逐个字符对比,将对比结果作为一次确认信息。
6.根据权利要求5所述的一种基于双环队列的无锁多协处理线程并发抄表方法,其特征在于:所述数据上传任务包括需要传输的上传报文帧、一次确认信息、抄表信息和二次验证帧;上传报文帧包括目标入户电表编号信息、上行途径路由器编号信息、集中器编号信息和目标入户电表抄表任务实际执行完成时间;抄表信息为当前时间入户电表的读数;二次验证帧为根据加密算法对上传报文帧生成的第三数字签名信息;数据上传任务到达集中器后,集中器分别对上传报文帧内的目标入户电表编号信息、上行途径路由器编号信息、集中器编号信息进行确认,并采用加密算法对上传报文帧进行计算,得到第四数字签名信息;将二次验证帧对应的第三数字签名信息与第四数字签名信息进行逐个字符对比,将对比结果作为二次确认信息。
7.根据权利要求5或6所述的一种基于双环队列的无锁多协处理线程并发抄表方法,其特征在于:所述加密算法为数据摘要算法。
8.根据权利要求1所述的一种基于双环队列的无锁多协处理线程并发抄表方法,其特征在于:所述一次确认信息或者二次确认信息不符合要求时,抄表周期内重新尝试次数上限采用如下方式约束:重试次数
Figure 992565DEST_PATH_IMAGE001
,方括号为取整运算;并且每重试一次抄表任务和数据上传任务的时间进行累加,总计累加的时间
Figure 378547DEST_PATH_IMAGE002
T为两次抄表周期之间的时间间隔。
CN202110643614.1A 2021-06-09 2021-06-09 一种基于双环队列的无锁多协处理线程并发抄表方法 Active CN113242059B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110643614.1A CN113242059B (zh) 2021-06-09 2021-06-09 一种基于双环队列的无锁多协处理线程并发抄表方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110643614.1A CN113242059B (zh) 2021-06-09 2021-06-09 一种基于双环队列的无锁多协处理线程并发抄表方法

Publications (2)

Publication Number Publication Date
CN113242059A CN113242059A (zh) 2021-08-10
CN113242059B true CN113242059B (zh) 2022-04-12

Family

ID=77137452

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110643614.1A Active CN113242059B (zh) 2021-06-09 2021-06-09 一种基于双环队列的无锁多协处理线程并发抄表方法

Country Status (1)

Country Link
CN (1) CN113242059B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115134389B (zh) * 2022-09-02 2022-12-27 施维智能计量***服务(长沙)有限公司 并行抄表方法、装置、设备及计算机可读存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN202353563U (zh) * 2011-12-02 2012-07-25 李明 智能配电网光纤双环自愈通信和量测***
CN104035884A (zh) * 2014-06-30 2014-09-10 河南百旺金赋电脑有限公司 一种双环形队列数据存储方法和智能网关
CN104318750A (zh) * 2014-10-20 2015-01-28 华为技术有限公司 一种抄表的方法、装置和***
CN108880619A (zh) * 2018-07-26 2018-11-23 航天亮丽电气有限责任公司 一种利用宽带载波通信模块的自动抄表方法
CN109769016A (zh) * 2018-12-26 2019-05-17 重庆世纪之光科技实业有限公司 一种智能抄表***的多任务并发抄表方法及装置、***
CN110853317A (zh) * 2018-12-11 2020-02-28 沈畅 一种远程抄表方法及***
CN111786941A (zh) * 2019-10-17 2020-10-16 南方电网数字电网研究院有限公司 通信协议自动识别方法及通信方法
CN112614331A (zh) * 2020-12-14 2021-04-06 杭州海兴电力科技股份有限公司 抄读电能表事件的方法与电能表抄读事件***

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080017017A (ko) * 2005-04-26 2008-02-25 세미테크 이노베이션스 피티와이 엘티디. 통신 방법 및 장치

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN202353563U (zh) * 2011-12-02 2012-07-25 李明 智能配电网光纤双环自愈通信和量测***
CN104035884A (zh) * 2014-06-30 2014-09-10 河南百旺金赋电脑有限公司 一种双环形队列数据存储方法和智能网关
CN104318750A (zh) * 2014-10-20 2015-01-28 华为技术有限公司 一种抄表的方法、装置和***
CN108880619A (zh) * 2018-07-26 2018-11-23 航天亮丽电气有限责任公司 一种利用宽带载波通信模块的自动抄表方法
CN110853317A (zh) * 2018-12-11 2020-02-28 沈畅 一种远程抄表方法及***
CN109769016A (zh) * 2018-12-26 2019-05-17 重庆世纪之光科技实业有限公司 一种智能抄表***的多任务并发抄表方法及装置、***
CN111786941A (zh) * 2019-10-17 2020-10-16 南方电网数字电网研究院有限公司 通信协议自动识别方法及通信方法
CN112614331A (zh) * 2020-12-14 2021-04-06 杭州海兴电力科技股份有限公司 抄读电能表事件的方法与电能表抄读事件***

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
智能化配电网管理***通信模式的研究;樊剑辉;《电力***通信》;20091110(第11期);全文 *

Also Published As

Publication number Publication date
CN113242059A (zh) 2021-08-10

Similar Documents

Publication Publication Date Title
Sun et al. Age of information: A new metric for information freshness
CN102087132B (zh) 一种水表的无线通讯处理方法
CN109327323B (zh) 一种新能源并网电力通信网规划和优化方法及***
CN102548038A (zh) 一种微功率无线网络组网方法
CN113242059B (zh) 一种基于双环队列的无锁多协处理线程并发抄表方法
CN105208622B (zh) 一种高效动态自动维护的路由表结构的路由选择方法及路由表管理方法
CN109039382B (zh) 电能表抄读方法及装置
CN102811221B (zh) 一种基于Push机制的对等网络直播流媒体数据包调度方法
US20200373761A1 (en) Photovoltaic power optimization system
CN103326925A (zh) 一种消息推送方法及装置
CN109215326A (zh) 一种并行抄表方法和装置
CN103326916B (zh) 智能变电站自动划分并优化vlan的***及方法
CN114154685A (zh) 智能电网中电能数据调度方法
CN103139865A (zh) 一种电力物联网中组网和通信的方法
CN110086870A (zh) 面向数据中心网络的多路径并行可靠传输方法
CN106056889A (zh) 一种四表集抄接口转换器抄表通讯接口自学习的方法
CN104967123B (zh) 配电网下间歇性能源消纳监测装置及其监测方法
CN114979829B (zh) 划分csma时隙的低功耗抄表方法
CN106067866A (zh) 一种基于用电信息采集***的费率电价远程下发方法
CN115021399A (zh) 一种适配园区多能源供电网络的拓扑辨识方法及装置
CN104065735A (zh) 一种调度信息数据存储共享方法
Feng et al. Large file transmission using self-adaptive data fragmentation in opportunistic networks
CN106034347A (zh) 一种无线通讯管理方法及装置
Wu et al. Scheduling mechanism of FC-AE-1553 network based on credit ranking
Shi et al. Research on Information Convergence Processing and Transmission Method for Virtual Power Plant

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant