基于龙芯服务器的风电SCADA软件设计说明
时间:2024-07-19 阅读:1346
一、项目概况
风场监控系统布置于风场监控室内,由风机监控系统、风电场功率管理系统(能量管理系统)、第三方接口系统组成。其主要包括风机监控、数据采集、数据存储、数据查询、数据呈现、Web发布、风机管理、风场调度、安全审计等功能。
二、项目需求
需求内容主要包括操作系统平台要求、网络结构模式要求、通讯接口要求、通讯协议要求、数据存储记录要求、数据挖掘要求、UI呈现要求、Web发布要求、调度要求等。乙方按照双方协定的技术协议内容设计开发,主要设计方案应经过甲方的方案评审,若在开发过程中,甲方需求变更,双方应协商需求的合理性及技术可行性并最终形成新增补协议,若涉及开发成本的增加,通过商务条款补充。具体需求请详见《需求说明书》。
三、项目部署
风电场SCADA软件系统是风电场远程控制系统的组成部分,风电场远程控制系统由网络通讯系统、风电场SCADA软件系统组成。风电场远程控制系统的网络通讯、服务器、操作员站、操作系统等由甲方提供,乙方保证在甲方提供的通讯网络、服务器系统上能正常运行乙方所供的SCADA软件系统。甲方所供网络通讯及服务器部署如下图1。
风电场网络通讯采用光缆传输,风机与风机之间的网络拓扑结构采用可自愈式以太环网结构,风场级拓扑结构为多环结构。风机机舱与塔基之间的连接光缆为多模光缆。风机与风机之间及风机与监控中心之间的连接均为单模光缆。风场通讯网络环内采用100M光纤以太网络。核心交换机与风场监控系统服务器的接口采用1000M以太网。
硬件系统包括数采服务器2台、数据服务器2台、应用服务器2台(应用服务器通常与数采服务器合二为一)、发布机1台、I/O机1台,操作员站1台、若干安全隔离设备。其中,数据服务器存放历史数据,具体实施过程中,甲方可根据风场规模进行服务器配置,小规模风场可将数采服务器、数据服务器、应用服务器合而为一,对于大规模风场可部署多台数采服务器、数据服务器及应用服务器,软件采用模块化设计,可部署于同一台服务器也可分别部署。
服务器采用龙芯3C5000L服务器处理器芯片,2.2G/16核,基于自主的LoongArch®龙芯指令系统,支持双路、四路机架式及塔式、高密度等多种服务器及存储产品形态。算力强悍,超越国内同类产品。龙芯3C5000L完善支持Docker、KVM等虚拟化应用,适合数据中心、云计算以及高性能计算等领域广泛应用。详细参数如下。
芯片 | 龙芯3C5000L |
主频 | 2.0GHz-2.2GHz |
运算速度 | 560GFlops |
核心个数 | 16 |
处理器核 | 支持LoongArch®指令系统;支持128/256位向量指令;四发射乱序执行;4个定点单元、2个向量单元和2个访存单元 |
高速缓存 | 每个处理器核包含64KB私有一级指令缓存和64KB私有一级数据缓存;每个处理器核包含256KB私有二级缓存;每4个处理器核共享16MB三级缓存,共64MB三级缓存 |
内存控制器 |
|
高速I/O | 4个HyperTransport3.0控制器;支持多处理器数据一致性互连(CC-NUMA) |
其他I/O |
|
功耗管理 | 支持主要模块时钟动态关闭;支持主要时钟域动态变频;支持主电压域动态调压 |
典型功耗 |
|
四、软件设计说明
将软件分为三层,其组成和框架如下图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所示
图4 风机模型
1)根据不同的风机类型点表,对点表进行抽象分类,并对分类的数据点进行编码,并生成数据点表;
2)数据点表可以在档案管理里面进行相关的处理;
3)展示层所有的标量数据显示都是根据指标码的形式反向查询数据档案进行显示;
2、数据传输流程:如图5所示
图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所示:
图6 系统服务
2.服务集群部署:如图7所示
图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_sto_0001_sec_201901 | |||
列名 | 数据类型 | 属性 | 约束条件 | 说明 |
sto_id | Int (11) | 无符号/非空/自动增涨 | 主键 | 数据编号 |
sto_field_id | Int(11) | 风场编号 | ||
sto_fan_id | int(11) | 风机编号 | ||
sto_sync_time | datetime | 数据同步时间 | ||
50001 | float(20,2) | 默认 0.00 | 原始值 | |
50002 | float(20,2) | 默认 0.00 | 原始值 | |
50003 | float(20,2) | 默认 0.00 | 原始值 | |
… | float(20,2) | 默认 0.00 | 原始值 | |
补充说明 |
数字量存储:
①表命名规则:
fan_std_风机编号_年份 : 开关量量化即储存(按年、风机编号分表)
②外键关联:
std_field_id 风场编号 >>关联>>dwf_field风场表的dwf_id
std_fan_id 风机编号 >>关联>>dgf_fan风场表的dgf_id
③取值方案:
开关量量化即储存
④原始数据存储及自动创表原则:
每台风机每年一张表,自动创建数据表。自动创建数据表可以调用存储过程,亦可以在代码中创建。
⑤表数据容量估算:
单表一年数据:41次*365天*200开关量=299万
即每天风机的所有开关量平均变化不超过41次时,单表一年数据不超成功300万条
表名 | fan_std_0001_2019 | |||
列名 | 数据类型 | 属性 | 约束条件 | 说明 |
std_id | Int(11) | 无符号/非空/自动增涨 | 主键 | 数据编号 |
std_field_id | Int(11) | 风场编号 | ||
std_fan_id | int(11) | 风机编号 | ||
std_ac_code | int(10) | 典表开关量编码 | ||
std_sync_time | datetime | 数据同步时间 | ||
std_value | float(10,2) | 0开启/1关闭 | ||
std_sync_dc | Int(11) | 同步数据中心编号 | ||
补充说明 |
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主机配置
KeppAlive从机配置
4.主从同步
当主机故障时,从机接替主机进行工作。当主机恢复正常时,从机应该与主机的数据保持一致,故应实现主从同步。目前使用Mysql数据库,其已提供主从同步的现有方案,并且性能较高。
MySQL数据库同步复制的功能主要体现在它的配置文件上,其工作原理为slave端记录并且执行master端的操作日志。
主机配置
五、软件功能介绍
1、用户登陆:
2、系统实时报警:点击页面右上角铃铛,即可查看系统当前的实时报警信息
3、风场概览:可以通过矩阵型、环线型、列表型、地图行四种模式查看整个风场的运行状态
1)矩阵型:
2)环线型:
3)列表型:
4)地图型:
4、风机监视:可以查看单个风机运行的详细信息,并可对风机进行控制操作
5、风机控制:可以进行整个风场、单个环线、单个风机、多个风机集中模式的控制操作
6、历史数据:可查看时间段内风机运行的状态曲线
7、能量管理:接收由电网中调或者风电场管理者发出的调度指令,并按照系统事先制定的控制策略,将功率调节指令合理地分配给风电场每台风电机组
8、报警记录:可以查看风机、整个风场、系统的报警记录
9、快照记录:可查看报警前后5分钟的详细运行数据
10、日志管理:可查看系统日志、风机运行和控制日志
11、报表管理:可进行自由统计查询和报表导出查询
12、档案管理:整个风场的初始化配置,包括风场信息、组建信息、风机类型信息、环线配置信息、风机配置信息;
13、工程管理:可以查看风机的通信状态
14、系统设置:可进行账号管理、角色管理、系统菜单设置
六、测试规划
1、制定测试计划:明确测试内容、测试方案、验收通过标准等;
2、建立测试环境:包括厂内及风场硬件及网络平台、操作系统、收费开发包、通讯协议测试平台等;
3、验收测试大纲:验收项目、功能要求、性能要求、执行方法、预期结果、实际结果等,详情请见《测试大纲》;
4、验收报告:根据验收大纲数据总结验收测试结论;
七、总结
风电跨平台SCADA监控系统按照灵活的部署设计,可部署于Windows Sever 2016、Linux(CentOS 7)、Unix、中标麒麟国产操作系统,采用B/S网络架构,支持Chrome、Safari、Firefox、IE11浏览器,支持时钟同步等功能;
该系统满足监控风机数量不低于300台,且适用于不同机组混装、不同组件混装,可在一套监控软件上实现不低于300机组的监控,但允许服务器软件实现分布式布置,可配置多套单台服务器,同时单台可监控机组数量可达到100台(单台监控机组数量可根据具体项目进行数量调整),数据采集、显示刷新频率不高于1秒;
该系统模拟量数据存储采用秒级及分钟级存储,其中,故障前后5分钟内的秒级数据要求长久保存,其余秒级存储数据要求在数据库中保留3个月,以便数据分析使用;布尔量数据采用逢变则存的方式。秒级存储数据查询及报表根最小颗粒度为1秒,可根据不同时间步长查询显示模拟量数据;分钟级存储的数据查询及报表最小颗粒度为1分钟,可根据不同时间不长查询显示模拟量数据;布尔量独立查询,不与模拟量一起混合查询;
该系统满足为风功率预测、上级调度系统、业主自建监控中心、甲方数据中心、在线振动监测系统、视频监控系统、自动消防系统、箱变监控系统、空气密度仪、升压站等第三方系统预留通讯数据接口,上传风力发电机组相关信息并接收相关指令;