APP下载

冀北地区光伏电站数据查询软件的设计

2023-06-09孙晓楠刘俊培张洪峰

现代计算机 2023年6期
关键词:秘钥电科院语句

孙晓楠,刘俊培,班 岚,张 卫,张洪峰

(北京科技大学天津学院智能制造学院,天津 301830)

0 引言

某大型电力设备制造公司(以下简称公司)生产的并网型光伏逆变器以其性价比高、安装维护简单、运行故障率低的优点占有相当的市场占有率。自2000 年公司涉足这一业务后,已有20 多年的逆变器相关领域设计与施工安装经验;除此之外,公司光伏事业部长期运行自主研发的光伏电站综合智能管理平台(以下简称运维平台)。

运维平台整体架构设计为前端与后台两部分。前端主要用于展示接入运维平台的逆变器的基本信息、发电运行情况以及报警等信息。前端分为网页展示端、大屏展示端与手机APP端。后台处理逆变器与运维平台之间的通信、光伏电站信息管理等业务。运维平台不仅可以接入本公司生产的逆变器,也可以接入采用标准通信规约的其他厂家逆变器,其他规约如Q/GDW376.8、IEC60870⁃5⁃104、MODBUS等[1⁃2]。

在经历多年的深耕后,平台积累了大量光伏电站与逆变器发电信息的真实数据。近年来,随着新能源推广政策的进一步落实,传统以火力发电为基础的电网如何消纳新能源发电的问题日益凸显。针对这一问题,各研究机构纷纷建立仿真模型和策略来研究,以真实光伏发电数据为基础的研究项目显然在可信性与科学性方面更具有说服力。在此背景下,多家研究机构提出购买使用运维平台历史数据的要求。其中,某省级电力科学研究院(以下简称电科院)希望购买到其所辖地区内所有光伏发电数据的独家使用权,且其后续的项目合作计划可操作性强。在进行综合考虑后,公司管理层决定先与电科院进行先导项目合作,以期为进一步合作打下基础。

1 项目需求

先导项目的主要作用是双方技术人员进行沟通,以确定历史数据的数据、格式等情况。由于数据的使用权尚未转让,在考虑后续项目仍有不确定性的情况下,双方商议由公司一方先行提供具有典型特征的历史数据样本,以供电科院分析。最终,公司决定提供电科院感兴趣的冀北地区以市、县二级行政区划为分类的部分历史数据。

初步的沟通方案是电科院提出某地的数据需求,公司的研发人员经过授权登录运维平台的历史库服务器,在历史库中直接应用SQL 语句查询,然后将数据导出存成Excel 文档,再发给电科院。经过几次沟通后,双方均发现初步方案有一定的不足。对于电科院来说,一是公司方操作不可控,原始数据是否经过修改不可知;二是公司对需求的响应时间不可控,有时数小时内可给出结果,有时需要等待几天,严重影响电科院后续工作。对于公司来说,也出现几点意料之外的情况。首先,电科院提出数据需求的时间是随机的,公司目前在全力施行多个项目,研发人员不足,对电科院的响应需要临时抽调人员,项目内进度容易被打断。然后,由于先导项目合同金额相对较少,公司不希望投入过多资源和精力。其次,即使是公司内部研发人员,经过授权后登录历史库服务器,其操作仍具有一定的安全性风险,应尽量避免。

在进一步沟通后,公司决定研发一款功能和应用权限受限的数据查询软件(以下简称软件),以满足电科院要求,同时避免上述不足。软件的需求详列如下:

(1)软件开发周期尽量短,少占用资源。

(2)查询地区只限于已商定的冀北地区固定的省、市、县。

(3)软件界面尽量简单实用,数据除可以查看外,也能下载到当地工作电脑。

(4)软件的查询功能相对简单,但安全性策略应完整实现,以方便在后续项目中直接移植。

(5)安全性策略包括:软件只限于电科院内部应用,IP 受限;软件秘钥每七天更新一次,由公司传送至电科院,每次随机生成多套秘钥。

2 软件设计

2.1 软件部署情况及安全性设置

查询软件的最终部署情况如图1所示。查询软件部署在电科院的内网,通过隔离装置B 与外网连接。公司的运维平台及历史库服务器部署在公司内网,位于服务器机房集群中。历史库服务器并非只有一台服务器,由于数据量较大,也为多台服务器构成的集群。同样,出于数据安全的考虑,公司内网通过隔离装置A 与外网做安全性隔离处理。图中的隔离装置A/B不单指某台具体型号的数据隔离装置,而是泛指两种不同类型的数据隔离装置。由于信息安全相关部门对公司和电科院的划分等级不同,故两类装置的隔离策略、软硬件配置等情况均不同[3⁃5]。

图1 软件部署情况示意图

隔离装置B 的配置权限在电科院一方,不属于查询软件设计范围。隔离装置A 的权限在公司一方,与查询软件相关的安全性策略采用四种。在历史库服务器中,部署有秘钥验证算法的安全进程小程序;电科院侧的秘钥验证算法集成到查询软件中。详列如下:

一是IP 地址验证,双方商定查询软件只能应用在电科院内部,即使经过两次内外网地址映射后,电科院的网段仍可控制在一定范围内。IP 验证通过两种方式进行:一方面,查询双方交互报文的TCP/IP 协议通讯协议的地址,具体编程实现调用Socket 相关函数;另一方面,在查询软件每次运行的登录启动帧中,对消息体内的IP地址进行二次核对。

二是用户口令的设置,分为两层口令设置。外层口令是查询软件的登录用户及口令,内层口令是历史库查询的用户及口令。

三是查询软件秘钥的发放。在通过隔离装置A 的数据流中,采用一定时间内随机查询数据流中秘钥字节的方式。秘钥内容通过隔离装置A 中的特定算法给出,每七天生成多套秘钥,由公司发放至电科院,并配置到查询软件中。每套秘钥分为AB 两部分,其中A 部分部署在公司的历史库服务器,B 部分配置在查询软件中。秘钥的核查分为两个步骤,即对侧验证解密流程与匹配算法。对侧验证解密流程如下:在秘钥查询通信报文中,当请求秘钥一方收到应答报文后,先用验证算法对报文进行计算,如果符合规范则进行解密流程,解密出的秘钥交由下一步匹配算法处理。匹配是指每套秘钥的AB两部分,需要经过算法计算是否匹配。在考虑公司内网或电科院内网有可能被非法侵入,为保证在一方被破解的情况下不至于危及另一方,对侧验证解密算法对于秘钥AB 部分采取不同的计算方式,且只部署对侧的算法。即,公司内网侧的程序只部署验证解密秘钥B 部分,电科院侧查询软件只部署验证解密秘钥A部分。

上述三种安全性策略,由部署在历史库服务器中的安全进程与查询软件二者共同实现。安全进程设置为守护进程,以避免其退出后造成对侧查询软件不能应用的情况。

2.2 软件流程设计

软件流程设计相对较简单,如图2所示。

图2 流程设计

软件启动后,通过初始化阶段读入相关的用户口令、秘钥等配置文件;同时读取本地时间,存入日志。在连接测试阶段,主要进行2.1节中安全性相关测试,如果测试未通过,查询软件将给出提示信息,由用户检查口令、IP、秘钥的正确性。查询子流程设计成受限的情况查询,用户只能查询冀北地区市、县二级行政区划中部分地区的数据。具体查询语句的设计用SQL 语言实现,详见2.3 节。查询出的数据在软件界面进行展示,以供人工粗略判断数据的正确性。在保存数据阶段,将查到的数据以CSV格式文件存储到本地计算机。

2.3 数据查询策略

数据查询主要实现在冀北地区选取限定的区域,将SQL 查询语句集成到软件中以供用户使用。在设计具体SQL语句前,图3中展示的是历史库相关数据库和数据表的结构。由于接入公司的光伏逆变器数量较大,且每日数据存储仍在增长,故采用参数库与电量数据库分别设计的方式。参数库PVHisPara 相对数据量较少,且变动不频繁,部署在一台服务器上。电量数据库PVHisData相对数据量较大,每日更新大量新存入的数据,分别部署在多台服务器上。两类数据库均管理多个数据表格,具体如图3所示。

图3 数据库的表结构

参数库中,需要用编程语句查询的是电站参数表(substpara)和逆变器参数表(invpara)。某光伏电站中,可安装一台或多台光伏逆变器。电站参数表(substpara)中的主键是substid,即电站编号;逆变器参数表(invpara)的主键是sub⁃stid和invid,即通过电站编号和逆变器编号能够定位到某台具体逆变器信息。图3中参数库中另外列出的4 张数据表countypara/citypara/provin⁃cepara/countrypara 分别是保存县、地级市、省、国家信息的表,每张表的主键是id,即县编号、地级市编号、省编号、国家编号;另外的desc字段保存相应的地区描述。比如countrypara 中,“id=1 desc=中国” 表示国家参数表中,id 等于1的国家是中国。由于查询软件相对逻辑简单,故人工查询出所需的冀北地区行政区划编号。即,“province = 4” 指河北省,“city=(2,3,7,8,10)” 指冀北地区的唐山、承德、张家口、廊坊、秦皇岛五个地级市,“county = 11” 指张家口尚义县。

电量数据库中涉及到的主要是分钟数据表,每15 分钟逆变器上传运维平台一次电量数据;为方便存储及管理,数据库中按天为单位将所有逆变器的数据存成一张表格。分钟数据表中的主键除逆变器参数表中提到的substid 和invid外,同时设置hm 字段。hm 字段表示记录电量值的时间,以整型数据格式(int)存储。存储的信息是每15分钟上报的电量数据,故hm的起始值时间是00:00 时刻,hm 设定为0;每次上报数据累加15,每日的24:00时刻,hm设定为1440。

总的来说,数据的查询分为参数查询和数据查询两类。具体来说,参数查询可以分为某市、县电站装机容量查询,电站号、逆变器号查询,电站信息查询等;数据查询分为某日、某短时间内的发电信息汇总数据查询与分钟发电数据查询。下文以几个具体查询语句为例进行详细阐述。碍于篇幅原因,只举出有特定代表性的例子,不对查询软件所有功能赘述。

对于冀北地区五市,以县区为区分标准的汇总装机容量的查询语句如下,由于每市所辖的区县数量各异,故以区县的编号作为区分标准。对于区县内的总装机容量采用统计求和函数SUM 直接计算单站容量(capacity)字段。筛选条件中,useflag =1 表示电站正在使用中。如果电站废弃,或者正处于建设、维修、待报废阶段,则不在统计范围内。查询的结果见表1中展示的唐山地区部分信息。

表1 唐山市区域内电站装机容量汇总数据

SELECT county, SUM(capacity) FROM PVHisPara.substpara WHERE state = 1 AND country = 1 AND prov⁃ince = 4 AND city IN(2,3,7,8,10)AND useflag =1 GROUP BY county

如要查询发电量数据,需先得到电站编号与逆变器编号。比如,如果查询张家口尚义县的电站编号,采用如下的SQL 语句。在其中随机抽取电站编号5329、5738、5834、5835 进行后续数据查询。

SELECT substid, invid FROM PVHisPara. substpara WHERE state = 1 AND country = 1 AND province = 4 AND city = 7 AND county = 6

查询某县的日发电量汇总需要用到子查询的方式,下例查询的是唐山迁安县电站日发电量的分电站汇总信息。data22 字段存储的日发电量数据。内层子查询给出电站编号信息,外层查询2019年X月X日数据表的数据信息。

SELECT substid, sum(data22) FROM PVHisData.data_mininverter2019XXXX WHERE substid IN(SELECT substid FROM PVHisPara. substpara WHERE state = 1 AND country = 1 AND province = 4 AND city = 2 AND county = 11)AND hm = 1440 GROUP BY substid

单日电站数据的查询只需要查询具体日期的数据表即可。如要查询多日期的数据,采用联合查询的方式。单条语句查询张家口尚义县的电站语句:

SELECT substid,hm,data13,data22 FROM PVHisData.data_mininverter2019XXXX WHERE substid IN (5329,5738, 5834, 5835)

多数据表联合查询语句:

SELECTsubstid, inverterid, hm, data13, data22, FROM PVHisData. data_mininverter2019XXXX WHERE substid IN(5329, 5738, 5834, 5835)

UNION ALL

SELECT substid, inverterid, hm, data13, data22,FROM PVHisData. data_mininverter2019XXXX WHERE substid IN(5329, 5738, 5834, 5835)

UNION ALL

SELECT substid, inverterid, hm, data13, data22,FROM PVHisData. data_mininverter2019XXXX WHERE substid IN(5329, 5738, 5834, 5835)

UNION ALL

……

3 结果展示

由于合同条款的限制,查询软件的界面在文中不做展示,本节只展示查询到的部分数据;由于数据的敏感性,因而表1和表2中的数据是在真实数据的基础上做出一定偏移后的结果。在表1中,某些县(如乐亭县、遵化县)的电站数量较少,是因为接入某公司运维平台的电站数量较少,而非其县内只建有表中所示数量的光伏电站。

表2 张家口尚义县某电站日数据

除表1 中所示的某地区汇总数据外,查询软件也可以给出尚义县具体电站的单日电量数据,如表2 所示。表2 中展示了电站ID 是5329的电站中1 号光伏逆变器的15 分钟间隔的电量数据:在时间一列中,初始时间是0,指代每日的00:00:00 时刻;1440 是每日的结束时间,即24:00:00 时刻;表中1170 时刻后,日发电量保持不变,通过计算后此时刻对应当日的19:30:00时刻,即日落前后,与实际情况相符合。

4 结语

查询软件经过开发测试,在五个工作日后交由电科院进行部署应用。应用过程中,在保证电科院查询到部分历史数据的情况下,完整地验证了三种安全性策略。在双方进一步沟通后,公司与电科院签订了包含公司全部历史数据使用权限的一系列合同。后续的项目开发中,新软件的设计思路是一方面将原安全性策略移植到新项目中,另一方面扩展甲方数据查询的范围和权限。由于有查询软件的基础,后续工程的开发难度降低、工作量减少。综上,查询软件作为验证性、先导性项目,较好地实现了预期目的,达到最初设计要求。

猜你喜欢

秘钥电科院语句
ETC秘钥国产化升级改造方案设计与实现
重点:语句衔接
干细胞开启未来大健康的“秘钥” 专家与媒体面对面活动走进中源协和—山西省干细胞基因工程有限公司
基于Unity 3D的产品秘钥二维码实现
特别感谢为本刊付出辛勤劳动的审稿专家(按姓氏拼音排序):
特别感谢为本刊付出辛勤劳动的审稿专家 (按姓氏拼音排序)
特别感谢为本刊付出辛勤劳动的审稿专家 (按姓氏拼音排序)
基于二元多项式与中国剩余定理的多秘密分享方案
中国电科院主导的两项行业标准发布
如何搞定语句衔接题