发明内容
本发明解决的技术问题是:构建一种多线程电力负控***,克服现有技术的电力负控***不能对海量电力负控***的控制管理的技术问题。
本发明的技术方案是:一种多线程电力负控***,包括电力负控终端、前置机、电力负控***,所述前置机用于所述电力负控终端和所述电力负控***的通信,所述电力负控***通过所述前置机控制管理电力负控终端,所述电力负控***包括任务处理单元,所述任务处理单元包括线程配置模块、线程池构建模块,所述线程配置模块用于为所述电力负控终端的任务配置任务线程,所述线程池构建模块用于将所述线程配置模块配置的任务线程构建线程池,所述任务处理单元自动启动线程池中的任务线程进行定时任务处理。
本发明的进一步技术方案是:所述前置机包括通道构建模块,所述通道构建模块用于构建所述前置机与所述电力负控终端的通信通道。
本发明的进一步技术方案是:所述前置机与所述电力负控终端的通信通道包括GPRS和CDMA通道。
本发明的进一步技术方案是:所述前置机包括协议配置模块,所述协议配置单元用于配置与所述电力负控终端使用协议一致的通信协议。
本发明的进一步技术方案是:所述电力负控***与所述前置机采用私有协议进行数据交换。
本发明的进一步技术方案是:所述线程配置模块配置任务线程还包括根据终端数量配置任务线程数目。
本发明的进一步技术方案是:所述任务线程包括采集任务生成线程、采集任务执行线程、任务结果处理线程、失败任务处理线程。
本发明的技术方案是:提供一种多线程电力负控***控制方法,包括如下步骤:
建立所述电力负控***、所述前置机及电力负控终端的通信连接;
所述线程配置模块为所述电力负控终端的任务配置任务线程;
所述线程池构建模块以所述任务线程构建线程池;
所述任务处理单元自动启动线程池中的任务线程进行定时任务处理。
本发明的进一步技术方案是:在所述建立所述电力负控***、所述前置机及电力负控终端的通信连接步骤中,包括:配置所述前置机和所述电力负控***的通信通道和配置所述所述前置机和所述电力负控***的通信协议。
本发明的进一步技术方案是:在所述任务处理单元自动启动线程池中的任务线程进行定时任务处理步骤中,包括:采集任务生成线程、采集任务执行线程、任务结果处理线程、失败任务处理线程。
本发明的技术效果是:构建一种多线程电力负控***,在所述多线程电力负控***中,所述线程配置模块为所述电力负控终端的任务配置任务线程,所述线程池构建模块将所述线程配置模块配置的任务线程构建线程池,所述任务处理单元自动启动线程池中的任务线程进行定时任务处理。本发明利用线程池的技术对电力负控***进行控制管理,由于线程池由多个任务线程构成,因此,本发明多线程电力负控***可以实现对大量电力负控终端的控制管理,能及时、完整地采集大量电力负控终端保存的各类电力信息。
具体实施方式
下面结合具体实施例,对本发明技术方案进一步说明。
如图1所示,本发明的具体实施方式是:构建一种多线程电力负控***,包括电力负控终端3、前置机2、电力负控***4,所述前置机2用于所述电力负控终端3和所述电力负控***4的通信,所述电力负控***4通过所述前置机2控制管理所述电力负控终端3,所述电力负控***3包括任务处理单元1,所述任务处理单元1包括线程配置模块11、线程池构建模块12,所述线程配置模块11用于为所述电力负控终端3的任务配置任务线程,所述线程池构建模块12用于将所述线程配置模块11配置的任务线程构建线程池13,所述任务处理单元1自动启动线程池中的任务线程进行定时任务处理。在本发明所述多线程电力负控***中,所述线程配置模块11为所述电力负控终端3的任务配置任务线程,所述线程池构建模块12将所述线程配置模块11配置的任务线程构建线程池13,所述任务处理单元1自动启动线程池中的任务线程进行定时任务处理。本发明利用线程池3的技术对电力负控***进行控制管理,在***运行时,所述任务处理单元1读取电力负控***数据库的相关配置,连接前置机2,通过前置机2与电力负控终端3进行通信。本发明任务处理单元1采取的Java的线程池技术,每个线程负责一定数目的电力负控终端3,多个线程同时在线程池中执行任务,使得任务处理单元1具备同时负责海量电力负控终端数据的能力。由此,本发明多线程电力负控***能及时、完整地采集大量电力负控终端3保存的各类电力信息。
如图1所示,本发明的实施过程如下:首先,所述前置机2与所述电力负控终端3建立连接:所述前置机2包括通道构建模块22,所述通道构建模块22用于构建所述前置机2与所述电力负控终端3的通信通道。所述电力负控***4在配置通信服务器档案时,根据网络应用情况为所述前置机2配置通信通道,同时为电力负控终端3配置通信协议。本实施例中,所述前置机2与所述电力负控终端3的通信通道包括GPRS和CDMA通道。在所述电力负控***4为前置机2和电力负控***配置好通信通道和通信协议后,电力负控终端3上电启动后即向前置机2发出登录电力负控***4的报文请求。前置机2根据接收到的报文判断电力负控终端3的通信协议,所述前置机包括协议配置模块21,所述协议配置单元21用于配置与所述电力负控终端3使用协议一致的通信协议。所述前置机2与所述电务负控***建立连接:所述电力负控***包括连接模块41、协议解析模块43和存储模块42,所述连接模块41用于与所述前置机2的通道构建模块22构建的通道进行连接,所述协议解析模块43用于解析所述电力负控***与所述前置机2的连接协议。所述前置机2与所述电力负控***通过连接模块41和所述前置机2的通道构建模块22构建的通道建立连接。所述前置机2根据协议配置单元21配置的协议自动建立多协议通道,将不同协议的电力负控终端数据转发至不同的通信通道,供任务处理单元1使用。任务处理单元1启动后读取电力负控终端3的档案信息,所述线程配置模块11为所述电力负控终端3的任务配置任务线程,同时,根据电力负控终端3数目的多少,所述线程配置模块11配置适当的任务线程数目。所述线程池构建模块12用于将任务线程配置模块11配置的任务线程构建线程池13。在构建好线程池13后,任务处理单元1启动任务线程进行定时任务处理。
如图1、图2所示,本发明的优选实施方式是:所述电力负控***4与所述前置机2采用设置在客户区的私有协议进行数据交换。私有协议是内部发展、采用的协议,除非授权,其他厂商一般无权使用该协议。任务处理单元1和前置机2之间采用私有通信协议进行数据交换,不同通信协议电力负控终端3的数据可以放在客户区,客户区是指网络访问者能操作的区域。这些数据在任务处理单元1和前置机2之间交互,当需要增加新的终端通信协议时不需要更改通信前置机和定时任务之间的私有通信协议。前置机2内置多种协议解析模块23,这里多种协议解析模块23可以使前置机2同时与不同通信协议的电力负控终端3通信。因此,本发明多线程电力负控***具备广泛接入各类电力负控终端3的能力,同时不需要为每种通信协议的电力负控终端3建立专门的通信服务器,也不需要在各个不同厂家的通信前置机之前开发接口程序,减少建立负控***的成本。本发明中,前置机2支持TCP、UDP、电话拨号、光纤、串口、Modem池、短信等多种连接方式,支持主备通信方式切换,当GPRS通道出现故障时,可以根据数据库的配置自动切换到电话拨号或者其他连接方式。
如图1所示,本发明的优选实施方式是:所述任务线程包括采集任务生成线程131、采集任务执行线程132、任务结果处理线程133、失败任务处理线程134。
如图1所示,本发明的优选实施方式是:采集任务生成线程131的运行过程为:采集任务生成线程131读取电力负控***数据库中的电力负控终端3的档案信息,定时为每个接入***的电力负控终端3生成下一时间点的采集任务,放在公共数据区,采集任务执行线程132从公共数据区获得任务,去执行。采集任务生成线程131的数目可以根据终端数量而配置,并放在任务处理单元1的线程池中运行。由于生成采集任务不需要占用很多CPU资源,并且生成任务不需要和电力负控终端3通信,因此大多时候一个任务处理单元1配置一个采集任务执行线程即可满足要求。
如图1所示,本发明的优选实施方式是:采集任务执行线程132读取新生成的采集任务,定时执行这些任务,并调用应用服务器的存储服务,讲任务结果存入数据库。采集任务执行线程132定时读取任务,根据任务类别组织不同的通信报文,将通信报文发给前置机2,同时在超时时间内等待前置机2返回的响应报文,若接收到响应报文则进行协议解析,根据解析内容将报文转换为Java对象,调用存储服务进行插库操作。若在超时时间内没有等到响应报文,或者发现返回的报文非法,则此次任务执行失败,在失败任务队列中新增一条失败任务信息。采集任务执行线程132放在任务处理单元1的线程池中执行,其执行数量可以通过数据库配置,每个采集任务执行线程132可同时和多台电力负控终端通信,因此定时任务具备与海量终端进行通信的能力。
如图1所示,本发明的优选实施方式是:任务结果处理线程133将采集任务执行线程132的结果放到电力负控***的数据库中。当任务执行失败,在失败任务队列中新增一条失败任务信息。
如图1所示,本发明的优选实施方式是:失败任务处理线程134定时读取失败任务列表,并重新执行。通过失败任务处理线程134,任务处理单元1具备了对通信失败情况的补救能力,很好的解决了GPRS或者CDMA掉线带来的数据漏点问题。当电力负控终端3出现通信信号断开、终端掉点、终端与电表通信失效等故障时,任务处理单元1不能在指定时间内实时将数据采集到***中,定时任务判断当故障恢复时,能够自动将故障时间段内未采集到的数据重新补采到***中,以保证***数据的完整性。
本发明的技术方案是:提供一种多线程电力负控***控制方法,包括如下步骤:
步骤100:建立通信连接,建立所述电力负控***、所述前置机2及电力负控终端的通信连接。首先在所述前置机2和所述电力负控***之间建立连接:所述前置机2与所述电务负控***建立连接:所述电力负控***包括连接模块41、协议解析模块43和存储模块42,所述连接模块41用于与所述前置机2的通道构建模块22构建的通道进行连接,所述协议解析模块43用于解析所述电力负控***与所述前置机2的连接协议。所述前置机2与所述电力负控***通过连接模块41和所述前置机2的通道构建模块22构建的通道建立连接。所述前置机2根据协议配置单元21配置的协议自动建立多协议通道,将不同协议的电力负控终端数据转发至不同的通信通道,供任务处理单元1使用。所述电力负控***4与所述前置机2采用设置在客户区的私有协议进行数据交换。任务处理单元1和前置机2之间采用私有通信协议进行数据交换,不同通信协议电力负控终端3的数据可以放在客户区,这些数据在任务处理单元1和前置机2之间交互,当需要增加新的终端通信协议时不需要更改通信前置机和定时任务之间的私有通信协议。前置机2内置多种协议解析模块23,这里多种协议解析模块23可以使前置机2同时与不同通信协议的电力负控终端3通信。因此,本发明多线程电力负控***具备广泛接入各类电力负控终端3的能力,同时不需要为每种通信协议的电力负控终端3建立专门的通信服务器,也不需要在各个不同厂家的通信前置机之前开发接口程序,减少建立负控***的成本。本发明中,前置机2支持TCP、UDP、电话拨号、光纤、串口、Modem池、短信等多种连接方式,支持主备通信方式切换,当GPRS通道出现故障时,可以根据数据库的配置自动切换到电话拨号或者其他连接方式。在所述前置机2和所述电力负控终端之间建立连接:所述前置机2包括通道构建模块22,所述通道构建模块22用于构建所述前置机2与所述电力负控终端3的通信通道。所述电力负控***4在配置通信服务器档案时,根据网络应用情况为所述前置机2配置通信通道,同时为电力负控终端3配置通信协议。本实施例中,所述前置机2与所述电力负控终端3的通信通道包括GPRS和CDMA通道。在所述电力负控***4为前置机2和电力负控***配置好通信通道和通信协议后,电力负控终端3上电启动后即向前置机2发出登录电力负控***4的报文请求。前置机2根据接收到的报文判断电力负控终端3的通信协议,所述前置机包括协议配置模块21,所述协议配置单元21用于配置与所述电力负控终端3使用协议一致的通信协议。前置机2根据协议配置单元21配置的协议自动建立多协议通道,将不同协议的电力负控终端数据转发至不同的通信通道,供任务处理单元1使用。
步骤200:配置任务线程,所述线程配置模块11为所述电力负控终端3配置任务线程。任务处理单元1启动后读取电力负控终端3的档案信息,所述线程配置模块11为所述电力负控终端3的任务配置任务线程,同时,根据电力负控终端3数目的多少,所述线程配置模块11配置适当的任务线程数目。
步骤300:构建线程池,所述线程池构建模块以所述任务线程构建线程池。所述线程池构建模块12用于将任务线程配置模块11配置的任务线程构建线程池13。
步骤400:处理任务线程,所述任务处理单元自动启动线程池中的任务线程进行定时任务处理。在构建好线程池13后,任务处理单元1启动任务线程进行定时任务处理。
本发明任务处理单元1采取的Java的线程池技术,每个任务线程负责一定数目的电力负控终端3,多个线程同时在线程池中执行任务,使得任务处理单元1具备同时负责海量电力负控终端数据的能力。由此,本发明多线程电力负控***能及时、完整地采集并保存大量电力负控终端3的各类电力信息。
如图1所示,在所述任务处理单元1自动启动线程池中的任务线程进行定时任务处理步骤中,包括:采集任务生成线程131、采集任务执行线程132、任务结果处理线程133、失败任务处理线程134。所述任务处理单元1的工作过程如下:首先与所述前置机2通信,对与前置机2的通信协议进行解析,建立起通信通道,所述任务处理单元1自动启动线程池中的任务线程进行定时任务。
如图1、图3所示,本发明的优选实施方式是:采集任务生成线程131的运行过程为:采集任务生成线程131读取电力负控***数据库中的电力负控终端3的档案信息,定时为每个接入***的电力负控终端3生成下一时间点的采集任务,放在公共数据区,采集任务执行线程132从公共数据区获得任务,去执行。采集任务生成线程131的数目可以根据终端数量而配置,并放在任务处理单元1的线程池中运行。由于生成采集任务不需要占用很多CPU资源,并且生成任务不需要和电力负控终端3通信,因此大多时候一个任务处理单元1配置一个采集任务执行线程即可满足要求。
如图1所示,本发明的优选实施方式是:采集任务执行线程132读取新生成的采集任务,定时执行这些任务,并调用应用服务器的存储服务,讲任务结果存入数据库。采集任务执行线程132定时读取任务,根据任务类别组织不同的通信报文,将通信报文发给前置机2,同时在超时时间内等待前置机2返回的响应报文,若接收到响应报文则进行协议解析,根据解析内容将报文转换为Java对象,调用存储服务进行插库操作。若在超时时间内没有等到响应报文,或者发现返回的报文非法,则此次任务执行失败,在失败任务队列中新增一条失败任务信息。采集任务执行线程132放在任务处理单元1的线程池中执行,其执行数量可以通过数据库配置,每个采集任务执行线程132可同时和多台电力负控终端通信,因此定时任务具备与海量终端进行通信的能力。
如图1所示,本发明的优选实施方式是:任务结果处理线程133将采集任务执行线程132的结果放到电力负控***的数据库中。当任务执行失败,在失败任务队列中新增一条失败任务信息。
如图1所示,本发明的优选实施方式是:失败任务处理线程134定时读取失败任务列表,并重新执行。通过失败任务处理线程134,任务处理单元1具备了对通信失败情况的补救能力,很好的解决了GPRS或者CDMA掉线带来的数据漏点问题。当电力负控终端3出现通信信号断开、终端掉点、终端与电表通信失效等故障时,任务处理单元1不能在指定时间内实时将数据采集到***中,定时任务判断当故障恢复时,能够自动将故障时间段内未采集到的数据重新补采到***中,以保证***数据的完整性。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。