并发式电量数据采集方法
技术领域
本发明涉及电力和通讯技术领域,特别是关于一种并发式电量数据采集方法。
背景技术
在电力系统中大用户的负荷占整个电网负荷的大部分,为了更好、更安全的保障电网运行,供电公司一般需要对大用户的负荷数据进行监测,并且监测密度越小系统的负荷一般也越大。电力公司本身就是电量的销售单位,所以大用户所用的电量也是必须采集的。为了监测用户的用电情况,用户端的用电事件也是必须要采集的一部分,通过分析以上采集来的数据进行分析,及时发现可能发生的故障,及时修复,从而提高供电质量,提高客户的满意度。
但同时,因为大用户终端分布非常分散,没有常规的有线通讯通道,因此一般采用中国移动提供的GPRS(或中国连通的WCDMA)。而使用这种方式,需要交付数额不小的通讯费用,因而怎样在保证满足采集数据需要的前提下,降低通讯流量,从而降低通讯费用,是各个电力公司特别关心的问题。
现有数据采集系统采用单机运行方式,将所有终端都挂在同一台采集服务器上,或者多个网段的采集方式,将终端分布在不同的IP网段,每一个网段采用一定时任务一前置机的方式。这样的采集方式的一个弊端就是服务器负荷集中没有得到有效均衡,不能适应系统扩展的要求。
在现有的采集模式中采集服务器与终端之间的通讯方式可采用GPRS、并行串口采集模式、230M电力网专线、电话拨号等方式。230M电力专线的建设成本大并且现在由电信供应商提供的服务方便;电话拨号和串口方式由于复杂也逐渐被遗弃了。
在最新发展的现有技术中,利用GPRS联合网或WCDMA网的数据收发功能,在用户端安装终端,终端采集各种负荷、电量、事件数据,并通过GPRS联合网或WCDMA网,将所读取的数据传送到相应的电力专网,再由管理系统对这些数据进行相应的分析和处理。
但是,上述的方案也存在一些问题:
一方面,现有技术大用户数据采集方法中,普遍采用一个前置机一个定时任务的做法。前置机用于在大用户数据采集终端和定时任务数据采集服务器之间的一个转发器。数据采集主要集中在一台采集服务器上,不能达到负载均衡的效果。
另一方面,现有技术的大用户负荷采集方法中,未充分解决大量采集点的数据并发传输的瓶颈问题。而这些问题都是系统真正投入实用化运行所必需面临和解决的。
通过图1中所示的系统和现有的大用户数据采集方法,可实现实时采集终端负荷电量数据,并实现运行状态显示、异常信息报警、电能质量检测、线损分析、负荷管理、远程抄表、线路电量平衡分析、客户服务等功能。但是,现有技术中没有对如何降低数据传输产生的通讯费用采取任何手段和方法,从图1中可以看出,常规的GPRS组网方案利用TCP/IP的Socket通信手段,没有考虑如何降低通讯费用,给系统的使用增加了不少成本。
发明内容
为了克服上述现有技术的不足,本发明提供一种可以同时接入大量终端,且能稳定通讯的并发式电量数据采集方法。
本发明解决其技术问题所采用的技术方案是:提供一种并发式电量数据采集方法,其包括以下步骤:S1:终端通过485方式、红外、载波或网络口的方式采集取样电表的数据;S2:采用任务定时器来自动生成任务;S3:经过任务定时器的生成后,可以执行任务的终端就被放到了多线程任务执行器的缓冲池中,多线程任务执行器就会执行该终端下的所有执行任务;S4:通过监听接收端口,将接收来的数据放到多线程数据接收缓冲池中,多线程接收进程按照接收数据包装协议将数据分配给相应的数据解析器;S5:按照协议来建立数据解析器,数据接收进程将数据报文按照协议放到解析器的数据缓存池中后,多线程数据解析器就会取出报文进行处理。
本发明进一步解决技术问题的方案是:所述的步骤S1中,终端通过485方式、红外、载波或网络口的方式采集取样电表的数据。
本发明进一步解决技术问题的方案是:所述的步骤S1中,终端通过485采集的数据包括电能量、电压、电流、功率、功率因数、电能质量。
本发明进一步解决技术问题的方案是:所述的步骤S2中,任务定时器是一个循环执行的Java线程,通过查看系统时间判断是不是到了任务执行时间点,到了就对所有终端的任务生成便执行任务。
本发明进一步解决技术问题的方案是:一个遍历器获取前置机下的所有终端,循环遍历,在遍历过程中获取终端的任务锁,对获取锁成功的终端生成执行任务,没有获取锁成功的不执行任务。
本发明进一步解决技术问题的方案是:生成任务是对比任务的最后执行时间和任务执行点时间,如果时间间隔超过任务采集间隔就将任务放入加入到终端的执行任务集合中,任务生成完后将终端按照协议放到多线程任务执行器的缓冲池中,等待执行线程的执行。
本发明进一步解决技术问题的方案是:所述的步骤S3中,将同一类型的终端按照一定数量打包成一个任务执行包放到任务执行器的缓冲池中来执行。
本发明进一步解决技术问题的方案是:首先获取终端的发送锁,然后调用协议包生成发送到终端的数据报文,如果其中发送失败或其他原因没有发送数据,在任务执行器中释放终端的数据发送锁,否则就在任务解析器中释放终端的发送锁,通过在任务执行器的上锁和任务解析器中的解锁保证了终端采集通道的异步性,循环执行完所有终端的任务后释放终端的任务锁。
本发明进一步解决技术问题的方案是:所述的步骤S4中,终端报文在前置机和定时任务之间传递是通过包装一层主站协议来传递的,主站协议的报文头之中就包含了终端报文所属协议的信息,数据接收器在收到报文后,首先从主站报文中提取出终端报文,并获取终端报文的协议类型,按照协议类型丢给不同协议类型的数据解析器进行解析,所述的前置机是终端和定时任务之间的一个数据转发器。
本发明进一步解决技术问题的方案是:所述的步骤S5中,针对不同终端协议的报文的处理方式不同,一种协议对应一类报文解析器,报文解析器也是多线程的,在任务执行的时候任务执行器,就对终端上了数据发送锁,在数据解析器中进行解锁,以保证终端通信的异步性,终端协议包含终端的地址信息,通过终端地址可以找到在在系统中对应的终端对象,在提取处理报文中的数据后需要释放终端数据发送锁,让下个采集继续进行
相较于现有技术,本发明的并发式电量数据采集方法解决了现有技术中所存在的既要全面监控用电管理终端、采集用电终端的数据,又要节省系统建设投资的矛盾问题,同时解决当用电管理终端数量较多时易引起网络阻塞的问题,可在保证信息完整的前提下,大幅度减少用电管理系统的使用成本,并使系统更加可靠、安全。
附图说明
图1是现有技术中的大用户数据采集方法的示意图。
图2是本发明的并发式电量数据采集方法的数据采集流程示意图。
图3是本发明的并发式电量数据采集方法的数据发送报文组织流程示意图。
具体实施方式
以下内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
本发明提供了一种并发式电量数据采集方法,其包括以下步骤:
S1:终端通过485方式、红外、载波或网络口的方式采集取样电表的数据。大用户管理终端一般是采用485方式采集电表数据的,因为大用户的电表比较少,一般4到8块,并且电表与终端的距离不是太远;大用户对电表采样的准确性,可靠性的要求比较严,所以采用485进行电表采样时大用户终端的首选方式。终端通过485采集电能量、电压、电流、功率、功率因数、电能质量等数据。终端通过对采集上来的采样数据进行筛选过滤,将过滤后需要的用电数据进行冻结存储。
S2:采用任务定时器来自动生成任务。任务定时器是一个循环执行的Java线程,它通过查看系统时间判断是不是到了任务执行时间点,到了就对所有终端的任务生成便执行任务。用一个遍历器获取前置机下的所有终端,循环遍历,在遍历过程中获取终端的任务锁,对获取锁成功的终端生成执行任务,没有获取锁成功的不执行任务。生成任务是对比任务的最后执行时间和任务执行点时间,如果时间间隔超过任务采集间隔就将任务放入加入到终端的执行任务集合中。任务生成完后将终端按照协议放到多线程任务执行器的缓冲池中,等待执行线程的执行。
S3:经过任务定时器的生成后,可以执行任务的终端就被放到了多线程任务执行器的缓冲池中,多线程任务执行器就会执行该终端下的所有执行任务。本方法采用批量终端同时执行任务的方式,而不是用单个终端顺序执行的方式,这样保证系统资源的充分应用,而不会应为通讯端口等待终端响应数据而浪费系统资源,同时提高了系统的利用效率。将同一类型的终端按照一定数量打包成一个任务执行包放到任务执行器的缓冲池中来执行,这个要综合考虑终端的响应报文的速度,系统系统性能等多方面的因素来决定这个打包数量,终端的响应时间大概是0.5秒左右。用一个Vector数组包装一个多线程任务执行器缓存区的一个任务包,然后任务执行器遍历执行该Vector中终端的任务。首先获取终端的发送锁,然后调用协议包生成发送到终端的数据报文。如果其中发送失败或其他原因没有发送数据,就得在任务执行器中释放终端的数据发送锁,否则就在任务解析器中释放终端的发送锁,通过在任务执行器的上锁和任务解析器中的解锁保证了终端采集通道的异步性,循环执行完所有终端的任务后释放终端的任务锁。
S4:通过监听接收端口,将接收来的数据放到多线程数据接收缓冲池中,多线程接收进程按照接收数据包装协议将数据分配给相应的数据解析器。终端报文在前置机和定时任务之间传递是通过包装一层主站协议来传递的,主站协议的报文头之中就包含了终端报文所属协议的信息,数据接收器在收到报文后,首先从主站报文中提取出终端报文,并获取终端报文的协议类型,按照协议类型丢给不同协议类型的数据解析器进行解析。所述的前置机是终端和定时任务之间的一个数据转发器。
S5:按照协议来建立数据解析器,数据接收进程将数据报文按照协议放到解析器的数据缓存池中后,多线程数据解析器就会取出报文进行处理。因为不同终端协议的报文的处理方式不同,一种协议对应一类报文解析器,报文解析器也是多线程的。在任务执行的时候任务执行器,就对终端上了数据发送锁,在数据解析器中进行解锁,以保证终端通信的异步性。终端协议包含终端的地址信息,通过终端地址可以找到在在系统中对应的终端对象,在提取处理报文中的数据后需要释放终端数据发送锁,让下个采集继续进行。
本发明的并发式电量数据采集方法解决了现有技术中所存在的既要全面监控用电管理终端、采集用电终端的数据,又要节省系统建设投资的矛盾问题,同时解决当用电管理终端数量较多时易引起网络阻塞的问题,可在保证信息完整的前提下,大幅度减少用电管理系统的使用成本,并使系统更加可靠、安全。