服务热线
18971653633
风电场网络通讯采用光缆传输,风机与风机之间的网络拓扑结构采用可自愈式以太环网结构,风场级拓扑结构为多环结构。风机机舱与塔基之间的连接光缆为多模光缆。风机与风机之间及风机与监控中心之间的连接均为单模光缆。风场通讯网络环内采用100M光纤以太网络。核心交换机与风场监控系统服务器的接口采用1000M以太网。
硬件系统包括数采服务器2台、数据服务器2台、应用服务器2台(应用服务器通常与数采服务器合二为一)、发布机1台、I/O机1台,操作员站1台、若干安全隔离设备。其中,数据服务器存放历史数据,具体实施过程中,甲方可根据风场规模进行服务器配置,小规模风场可将数采服务器、数据服务器、应用服务器合而为一,对于大规模风场可部署多台数采服务器、数据服务器及应用服务器,软件采用模块化设计,可部署于同一台服务器也可分别部署。
服务器采用龙芯3C5000L服务器处理器芯片,2.2G/16核,基于*自主的LoongArch®龙芯指令系统,支持双路、四路机架式及塔式、高密度等多种服务器及存储产品形态。双路32核服务器具备高性价比,四路64核服务器性能好,算力强。龙芯3C5000L完善支持Docker、KVM等虚拟化应用,适合数据中心、云计算以及高性能计算等领域广泛应用。详细参数如下。
四、软件设计说明
将软件分为三层,其组成和框架如下图2。
关于该系统开发,软件部署主要包括风机数采服务器程序、应用服务器程序、数据服务器程序、发布机程序、I/O机程序。
将该监控系统程序根据功能结构划分为三层,采集层、服务层、前端网站,每部分均可根据服务器分布情况独立安装部署,程序之间均采用标准UDP或TCP协议。
I/O机主要完成协议转换及第三方接口通讯功能,主要通讯协议均部署在该服务器,在实际应用中,各技术协议是以应用的方式呈现的,可根据系统程序框架,自由添加协议,可对每个协议进程进行添加、关闭和配置。按照程序开发架构方式,各通讯协议均可部署至任何一台服务器。
发布机包含了完整的网站服务、UI、网闸通讯、历史数据记录及查询功能,将风机数据发布至公网,可远程访问查看该风场状态。
(一)软件架构
根据软件的三层结构,软件的设计框架如图3所示。
1、SCADA展示层,首先需通过“档案管理”模块,录入风机模块信息,并导入模块点表;
2、根据模块信息组合出风机类型,配置风机相关的通信参数;
3、数据服务的部分,根据配置的风机相关信息,生成数采所需的配置信息:如链路配置,IO点表信息,创建风机通信的模块;
4、风机配置完成后,数采的部分开始工作:各个通信模块通过点表信息,采集风机的数据,并将数据写入实时数据缓存;
5、实时数据rtdb缓存将数据进行整理,分发给不同的应用模块
6、实时数据模块:指令通道,用于单独处理SCADA下发的指令,并将指令下发给数采来控制风机;emqx主要用于SCADA页面的实时数据订阅/发布;redis主要用于缓存实时数据,并缓存一些统计信息;
7、能量管理算法模块:处理风场本地调度、电网调度、集控调度;并将调度的过程进行记录;
8、历史数据的部分是通过实时数据的接口进行周期或者变位存盘;并定期做数据调度,处理统计信息;并需根据主控上传的报警信息,处理报警数据的存盘;
9、SCADA展示层数据源从两个方面获取:实时数据主要通过订阅的方式从实时数据区获取;历史统计信息主要从历史数据库中获取;
(二)通信层设计
1、风机设备模型:如图4所示。
1).根据不同的风机类型点表,对点表进行抽象分类,并对分类的数据点进行编码,并生成数据点表;
2).数据点表可以在档案管理里面进行相关的处理;
3).展示层所有的标量数据显示都是根据指标码的形式反向查询数据档案进行显示;
2、数据传输流程:如图5所示。
1).数采的部分采用成熟的QTouch采集软件框架,里面涵盖丰富的设备通信驱动,保证现场所有的设备能够正常联网通信;所有的数据进入实时共享内存区,供其它接口实时访问;
2).在数采服务器与数据服务器分离的情况下,前置服务器用于接收数采传输的实时数据,此部分需代码重新开发调整
3).报警引擎的部分:需在QTouch的报警体系下进行重定义代码级开发调整;
4).消息中间件:采集第三方emqx消息中间件,redis实时数据缓存;用做数据的实时订阅和发布(此功能需代码开发调整);
5).此部分会用到两套emqx中间件:一套用作页面实时展示的数据,一套用作控制下发的操作,确保控制的实时有效而不受其它模块影响
6).一套redis实时数据缓存服务:主要用于页面的实时曲线数据缓存部分的数据;
7).原始数据直接根据接收端的数据缓存直接存储:此部分需代码级开发
8).根据业务逻辑,将数据进行分库分表存储:如,分钟、小时、天、月、年进行分表存储;业务逻辑存储部分,单一个模块,直接从实时数据库中获取数据;
9).分表策略;仍然以风机为单位,单个风机分为模拟量表、开关量表(模拟量和开关量分开,主要是因为模拟量可以按照秒级存储,开关量按照状态变化来存储);以横向存储为原则,即单个风机在一个时刻存储在数据库中为一条数据;
10).web发布:采用成熟的apache web服务器框架进行发布应用,前端采用的是SSM框架进行代码开发;
11).与第三方数据交互主要采用OPC UA、或者104等通信协议来进行交互;
(三)服务引用层
1.系统服务
整个系统提供七大服务:数采服务、消息中间件服务、存储数据服务、数据服务、数据调度服务、数据推送服务、web服务,如图6所示:
2.服务集群部署:如图7所示
(四)数据库层
1.功能与数据流向图
从原始数据进入系统到数据输出到前端供WEB系统应用,整个数据流向分为:原始数据、数据预处理、数据应用三个阶段。
原始数据,即由前置通讯解析完成后所取得的设备数据,此数据不作任何二次计算。在原始数据中,由于数据存储的频率到秒级、要求存储的周期至少3个月,设备数量在300台左右,因此在原始数据的存储上以设备为单位进行分表。则300台设备其原始数据为300套数据单元表。
数据预处理:为提高系统访问速度,给予前端应用良好的体验效果,故应以最小的延时时间让用户尽快获取到数据。在原始数据进入数据库后,再根据应用功能的要求进行数据的二次计算,包括发电量、故障统计、风速统计,也包括最大值、最小值等数据的计算。整个数据的预处理,将会在后台以不同的频率时行调度执行,执行完成的结果写入固定的数据表中,再给其它功能调度使用。
数据应用:数据应用的直接体现为用户前端的数据查询。根据分表的原则,以秒级为单位,则单台风机的月累计数据量为:86400条,连续保存三个月,则为:26万条。数据应用查询以单台风机查询时,可以保持良好的体验。
2.实体和属性
实体是实体-关系模型的基本对象,是现实案例中各种事物的抽象。凡是可以相互区别并可以被识别的事、物、概念等对象均可认为是实体。本系统数据库中,以单台风机为基础,按实体进行划分如下:
数据分表
2.1原始表
①表命名规则:
fan_sto_风机编号_sec_201901 : 秒级存储(按月、风机编号分表)
fan_sto_风机编号_min : 分级存储(按月、风机编号分表)
fan_sto_风机编号_hour : 时级存储(按月、风机编号分表)
fan_sto_风机编号_day : 天级存储(按月、风机编号分表)
②外键关联:
sto_field_id 风场编号 >>关联>>dwf_field风场表的dwf_id
sto_fan_id 风机编号 >>关联>>dgf_fan风场表的dgf_id
③取值方案:
原始表根据数据类型分为:模拟量。模拟量根据数据粒度分为:秒级、分钟级、小时级,其中,秒级存储原始值;分钟级存储整分时刻原始值;小时级存储整点时刻原始值;
④原始数据存储及自动创表原则:
原始数据储存单风机一个月数据,自动创建数据表。自动创建数据表可以调用存储过程,亦可以在代码中创建。
⑤表数据容量估算:
秒级数据单月存储量:60秒*60分*24小时*31天=268万
分钟级数据单月存储量:60分*24小时*31天=4.46万
原始数据表结构:
数字量存储:
①表命名规则:
fan_std_风机编号_年份 : 开关量量化即储存(按年、风机编号分表)
②外键关联:
std_field_id 风场编号 >>关联>>dwf_field风场表的dwf_id
std_fan_id 风机编号 >>关联>>dgf_fan风场表的dgf_id
③取值方案:
开关量量化即储存
④原始数据存储及自动创表原则:
每台风机每年一张表,自动创建数据表。自动创建数据表可以调用存储过程,亦可以在代码中创建。
⑤表数据容量估算:
单表一年数据:41次*365天*200开关量=299万
即每天风机的所有开关量平均变化不超过41次时,单表一年数据不超成功300万条
2.2实时表
实时表主要用来存储单台风机实时数据,单台实时数据包括:实时值、状态值、统计值和静态档案。
实时值:实时刷新风机的参数值由消息队列推送于前端应用。另外一部分实时值包括气象数据、箱变信息也一并由消息队列推送于前端应用。
状态值:风机运行状态由设备端上送风机状态,(变化上送和存储)主动存储到设备状态数据表中。
统计值:由历史数据进行统计,包括:日发电量、月发电量,报警数据量,累计运行时间、累计维护次数等统计值。
设备档案:包括设备编号、设备类型等静态信息。
2.3设备状态
设备状态,主要记录风机通讯状态变化。当风机发生故障,通讯中断时通知系统用户。当风机排除故障,通讯恢复正常后通知系统用户。设备状态以变位方式存储。
2.4统计表
统计表主要针对37项统计项,分为自由统计和报表下载;自由统计由:普通统计、分段统计、风玫瑰图报表、功率曲线报表组成;报表下载由:日报表、月报表、年报表、日分段报表、月分段报表、年分段报表、损失电量报表、时间可利用率报表、发电量可利用率报表组成。
37项统计方法说明如下:
发电量:查询首尾时间的总发电量相减;
耗电量:查询首尾时间的耗电量相减;
风机可以用率:1-(风机自身故障小时数/统计小时数);
最小风速:查询时间段内的瞬时风速取最小值;
最大风速:查询时间段内的瞬时风速取最大值;
平均风速:查询时间段内的瞬时风速进行累加/查询到的记录条数;
最小有功功率:查询时间段内的有功功率取最小值;
最大有功功率:查询时间段内的有功功率取最大值;
平均有功功率:查询时间段内的有功功率累加/查询到的记录条数
最小无功功率:查询时间段内的无功功率取最小值;
最大无功功率:查询时间段内的无功功率取最大值;
平均无功功率:查询时间段内的无功功率累加/查询到的记录条数
低环境温度:查询时间段内的环境温度取最小值;
最高环境温度:查询时间段内的环境温度取最大值;
平均环境温度:查询时间段内的环境温度进行累加/查询到的记录条数;
有效风小时数:查询首尾时间的有效风小时数相减;
有效风时率:有效风小时数/统计小时数*100%;
风机可用小时数:风机正常运行小时数+非风机自身故障停机小时数;
风机正常运行小时数:查询首尾时间的风机正常运行时间相减;
发电小时数:查询首尾时间的发电小时相减;
停运小时数:统计总时间-统计时间段的风机正常运行小时数;
故障停机小时数;查询首尾时间的故障停机时间相减;
风机自身故障停机小时数:查询首尾时间的风机自身故障停机时间相减;
非风机自身故障停机小时数:故障停机小时数-风机自身故障停机小时数;
维护小时数:查询首尾时间的服务时间相减;
故障停机次数:查询时间段内的故障为TRUE的记录条数;
风机自身故障停机次数:查询时间段内的风机自身故障停机为TRUE的记录条数;
非风机自身故障停机次数:故障停机次数-风机自身故障停机次数;
维护次数:查询时间段内的工作模式为维护的记录条数;
并网次数:查询时间段内的并网为TRUE的记录条数;
偏航次数:左偏次数+右偏次数;
左偏次数:偏航在逆时针运行模式为TRUE的记录条数;
右偏次数:偏航在顺时针运行模式为TRUE的记录条数;
满发小时数:统计周期内风机发电量/风机容量;
人工停机小时数:查询首尾时间的人工停机时间相减;
环境温度过低停机小时数:查询首尾时间的环境温度过低停机时间相减;
风暴停机小时数:查询首尾时间的风暴停机时间相减;
3.数据库主从热备
数据库主从热备目前行业通用的工具是使用:keepalive实现主从热备,无缝切换。其配置简单,实用性高。keepalived的作用是检测后端TCP服务的状态,如果有一台提供TCP服务的后端节点死机,或者工作出现故障,keepalived会及时检测到,并将有故障的节点从系统中剔除,当提供TCP服务的节点恢复并且正常提供服务后keepalived会自动将TCP服务的节点加入到集群中。这些工作都是keepalived自动完成,不需要人工干涉。
KeepAlive主机配置:
KeepAlive从机配置: