发明内容
本发明的目的是克服了上述现有技术的缺点,提供了一种采取分布式的方式代替原来单机运行的数据处理服务器,并通过增加服务器数量的方式代替升级整台服务器的方式来提高运行性能,提高运行效率,节约成本的基于分布式服务器实现光伏电站数据处理的方法及系统。
为了实现上述目的,本发明的基于分布式服务器实现光伏电站数据处理的方法及系统具有如下构成:
该基于分布式服务器实现光伏电站数据处理的方法,其主要特点是,所述的方法包括以下步骤:
(1)分布式服务器动态调用数据处理服务器;
(2)所述的数据处理服务器接收所述的光伏电站的数据,并对所述的光伏电站的数据进行解析。
进一步地,所述的分布式服务器动态调用数据处理服务器,具体为:
所述的分布式服务器根据数据处理服务器被调用的情况动态提供负载相对较小的数据处理服务器。
更进一步地,所述的对所述的光伏电站的数据进行解析,具体为:
所述的数据处理服务器根据所述的光伏电站的数据计算得到当前单位时间总发电量,并对该当前单位时间总发电量进行逻辑校验。
更进一步地,所述的光伏电站的数据包括当前时间总发电量与前次单位时间总发电量。
更进一步地,所述的数据处理服务器根据所述的光伏电站的数据计算得到当前单位时间总发电量,具体为:
所述的数据处理服务器将所述的当前时间总发电量与所述的前次单位时间总发电量的差值作为所述的当前单位时间总发电量。
更进一步地,所述的对该当前单位时间总发电量进行逻辑校验,包括以下步骤:
(2.1)所述的数据处理服务器判断所述的当前时间总发电量是否为零,如果是,则继续步骤(2.2),否则继续步骤(2.3);
(2.2)所述的数据处理服务器将所述的前次单位时间总发电量赋值为零,并根据重新赋值的前次单位时间总发电量计算所述的当前单位时间总发电量;
(2.3)所述的数据处理服务器判断所述的前次单位时间总发电量是否为零,如果是,则继续步骤(2.4),否则继续计算所述的当前单位时间总发电量;
(2.4)所述的数据处理服务器判断该单位时间内的平均功率是否为零,如果是,则继续步骤(2.5),否则继续步骤(2.6);
(2.5)所述的数据处理服务器查询得到该单位时间之前的最大总发电量,并根据该单位时间之前的最大总发电量计算所述的当前单位时间总发电量;
(2.6)所述的数据处理服务器将所述的单位时间内的平均功率与单位时间的乘积作为所述的当前单位时间总发电量。
更进一步地,所述的根据该单位时间之前的最大总发电量计算所述的当前单位时间总发电量,包括以下步骤:
(2.5.1)所述的数据处理服务器判断所述的当前时间总发电量与该单位时间之前的最大总发电量的差值是否大于所述的光伏电站的额定功率与单位时间的乘积,如果是,则继续步骤(2.5.2),否则继续步骤(2.5.3);
(2.5.2)所述的数据处理服务器将所述的光伏电站的额定功率与单位时间的乘积作为所述的当前单位时间总发电量;
(2.5.3)所述的数据处理服务器将所述的当前时间总发电量与该单位时间之前的最大总发电量的差值作为所述的当前单位时间总发电量。
进一步地,所述的步骤(1)之前,还包括以下步骤:
(0)数个数据处理服务器在分布式服务器中进行注册,且数个数据处理服务器在所述的分布式服务器中对应注册的名称为统一的注册名称。
此外,本发明还提供一种实现基于分布式服务器的光伏电站数据处理的系统,其主要特点是,所述的系统包括:
数据采集装置,用以采集所述的光伏电站的数据;
通讯前置机,用以与所述的数据采集装置进行通讯,并调用所述的分布式服务器;
数据处理服务器,用以对所述的光伏电站的数据进行解析;
分布式服务器,用以根据数据处理服务器被调用的情况动态提供负载相对较小的数据处理服务器。
进一步地,所述的对所述的光伏电站的数据进行解析包括根据所述的光伏电站的设备类型和点表解析出光伏电站的各个设备的各个运行参数的数据、对光伏电站的数据进行实时校验、对不同厂家的运行单位进行转化、对解析后的数据进行入库操作。
采用了本发明的基于分布式服务器实现光伏电站数据处理的方法及系统,使用分布式技术把原先运行在一台机器上的数据处理程序分摊到多台服务器上运行,大大增加了运行的性能;同时,通过增加数据处理服务器的数量就可以提高整个数据接收服务的运行性能,而不用像原来一样通过升级单台服务器的性能来达到目标,且多个性能普通的数据处理服务器的成本是大大低于一台性能异常强大的数据接收服务器的,从而大大节约了运行成本,系统结构更加灵活,提高数据处理效率,具有更广泛的应用范围。
具体实施方式
为了能够更清楚地描述本发明的技术内容,下面结合具体实施例来进行进一步的描述。
光伏电站的运行数据监控其实是对设备数据流的整体处理,其整体框架如图1所示,在整个流程当中,最为复杂也最消耗性能的部分属于数据处理程序,该程序需要针对不同的设备类型、报文类型、电站等信息做出不同的逻辑判断,而随着业务的深入,影响其复杂度的因素也越来越多(更多的设备类型,更复杂的数据校验规则与更多的规约类型),要解决整个电站运行数据上传速度过慢的问题,其实就是要提高“数据处理程序”的运行能力。
本发明将数据处理程序从原来的数据接收服务器中抽象出来,使之不在作为运行在数据接收服务器上的程序而存在,从而大大减少了数据接收服务器的复杂度,使其仅仅作为接收实时数据而存在,通讯前置机;而对数据进行逻辑处理的部分被转移到下游多个数据处理服务器上,具体调用哪个数据处理服务器由分布式服务器根据所有数据处理服务器的运行状态来确定,本发明的基于分布式服务器实现光伏电站数据处理的系统的框架图如图2所示。
由图3可知,原来的数据接收服务器被数据接收服务区所代替,而数据接收服务区由以下3部分组成:
1.通讯前置机:主要负责与数据采集设备进行链路层的通讯;
2.数据处理服务器:主要负责对接收到的数据信息进行解析,包括根据设备类型和点表解析出每种设备的每种运行参数的数据、对非法数据进行实时校验、对不同厂家的运行单位进行转化、调用数据库服务对数据进行入库操作。
其中,在工业监控领域,从设备上采集的实时数据,其核心数据都是以tcp协议进行的传输,每一帧的业务数据其实都是一个长的字符串,这个字符串的每一个字节都有特殊的意义,比如从第1到第10个字节的数字代表设备的编号,从第11到第15个字节代表总发电量的值,单位为KWH,从第16到20个字节代表该时刻的电压值,单位为0.1V……,而所谓的点表就是要标识该字符串的每一个字节代表的含义。
而在本专利中所提及的光伏领域,针对不同的设备类型,会有不同的点表。所有的设备所共有的点表部分包括:电站ID,设备类型,设备编号,发送时间;而每种设备由于其运行参数不同,其点表配置也有所不同,比如逆变器的点表还包括:总发电量、日发电量,功率,直流电流、直流电压、交流电流、交流电压。要知道逆变器的运行参数,首先要找到字符串中代表设备类型的字节,得知是逆变器以后,从数据库读出逆变器的点表,解析剩下的字节所代表的运行参数的数字及单位,以此得到逆变器的运行参数。
3.分布式服务器:具有更新注册的作用,所有的数据处理服务器都作为服务提供方注册进来,而通讯前置机作为服务调用方同样注册进来,服务提供方和使用方都只需要公开调用的接口,而无需关心具体如何实现。通讯前置机只需调用分布式服务器,就能得到相应的数据处理服务,而分布式服务器同时也兼备负载均衡的作用,根据目前服务被调用的情况动态提供负载相对较小的数据处理服务器上的服务给通讯前置机调用。
根据上述整体框架图,本发明的基于分布式服务器实现光伏电站数据处理的方法的流程图如图3所示。
此外,针对光伏电站的数据的接收,目前市场上的同类产品主要以遥信量和遥测量为主,而对于遥脉量的接收不多,本系统方案在对遥脉量的接收上比同类产品的性能更为优越。
对于遥信量,遥测量和遥脉量的定义如下:
遥信量:主要是以开关量和设备的故障信息为主,如某个设备的开关状态或者故障与否;
遥测量:主要以设备的实时监测运行数据为主,如电压,电流,功率等;
遥脉量:主要以设备的累积运行数据为主,该数值一般需要经过计算,例如每15分钟发电量;
本发明的技术方案主要是针对接收和计算设备的单位时间发电量为主,以每15分钟为例,以下进行具体说明。
由于光伏系统设备本身的特点,采集上的运行数据是没有单位时间发电量的,只有总发电量,所有要计算每15分钟的发电量的公式为:
单位时间发电量(每15分钟)=当前时间总发电量-15分钟前的总发电量
由以上公式可以看出来,要计算每15分钟的发电量,必须和前面的总发电量进行比较,这就意味着需要频繁查询数据库得到上一个15分钟的总发电量,进行相减。
而计算电站的当前单位时间(每15分钟)的总发电量(即当前单位时间总发电量)的公式为:
其中,Q为当前单位时间总发电量,Qi为第i个逆变器当前总发电量,Q15i为第i个逆变器15分钟前总发电量。
而在现实中,由于逆变器厂家的质量不同,在接收总发电量的时候,往往会遇见各种问题,而最常见的问题就是该逆变器在某一个时刻重启机器,那么采集设备在这个时刻采集到的总发电量就是0,按照上面的公式,在计算该时刻和下一个时刻的发电量的时候就有如下现象:
1)当前单位时间总发电量=0-上个15分钟的总发电量=-上个15分钟的总发电量;
2)下一个单位时间的总发电量=下个15分钟的总发电量-0=下个15分钟的总发电量;
根据上述现象可知,针,如果对采集到的总发电量为0的情况不经过校验逻辑,那么就会产生脏数据,由于该脏数据的数值往往特别巨大,对生产报表的走势图会有严重的影响。
针对以上情况,本发明的逻辑校验的实施方式如下:
1)如果本时刻的总发电量为0,那么该时刻的发电量认定为0;
2)如果上个时刻的发电量为0,那么检查该时刻是否有功率值,如果有,该时刻的发电量=该时刻的功率值*时间间隔(15分钟);
3)如果上个时刻的发电量为0且该时刻的功率值也为0,那么找到该时刻之前的最大的总发电量值作为上个时刻的总发电量。那么该时刻(15分钟)的发电量=由该时刻的总发电量-max(该时刻之前的总发电量),如果该值>电站的额定功率*时间间隔(15分钟),那么取“电站的额定功率*时间间隔(15分钟)”作为该时刻的发电量。
本专利的核心是通过把多个通讯前置机注册到分布式服务器,分布式服务器自动实现软负载均衡,以此来达到提高整体运行效率的目的,其整个过程可以通过使用开源SOA(Service-Oriented Architecture,面向服务的体系结构)框架来实现,以Dubbo框架为例,实施方式如下:
1.所有的业务服务器以及需要做负载均衡的服务器都部署及运行基于Dubbo架构的web server(网页服务器);
2.在局域网内安装分布式服务器;
3.所有运行Dubbo架构的web server都链接并在分布式服务器上注册;
4.所有需要实现负载均衡的web server,确保注册在注分布式服务器上的服务为同一个名字;
5.如图2所示,当通讯前置机接收到数据采集装置发来的数据时,调用实现了负载均衡功能的数据处理服务器,从而到达负载均衡的目的,另外,随着数据处理服务器数量的增加,系统整体的运行性能也同时按比例增加,从而提高了性能。
现有的技术手段在实现光伏电站实时数据接收时,大都是采取的以C++为基础的技术手段,与该技术相比,本发明的特点包括:
1.传统的C++技术,如果要增加处理的性能,最主要的办法是购买更好的机器,很难达到依靠更多的机器来提高性能,而且无法在软件层面实现负载均衡;
2.如果要利用C++的技术来实现负载均衡,则必须解决相关服务器之间的通讯问题,上述实施例中的Dubbo利用了Hadoop基础架构的核心子项目,其很好的解决了各个服务器之间的通讯问题,开发人员无需知道细节。目前在光伏行业基于C++服务之间的通讯,都是基于各种自定义规约的应用,解析和组成规约都需要消耗大量性能,而开发人员必须面对规约的解析,所以可以认为基于C++无法跨越这个屏障。
综上,采用了本发明的基于分布式服务器实现光伏电站数据处理的方法及系统,使用分布式技术把原先运行在一台机器上的数据处理程序分摊到多台服务器上运行,大大增加了运行的性能;同时,通过增加数据处理服务器的数量就可以提高整个数据接收服务的运行性能,而不用像原来一样通过升级单台服务器的性能来达到目标,且多个性能普通的数据处理服务器的成本是大大低于一台性能异常强大的数据接收服务器的,从而大大节约了运行成本,系统结构更加灵活,提高数据处理效率,具有更广泛的应用范围。
在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。