聂方正 王瑞良 杨翀 闵睿
(1.浙江运达风电股份有限公司,浙江杭州 310012;2.浙江省风力发电技术重点实验室,浙江杭州 310012)
风能是一种可再生的清洁能源,在当前全世界能源危机逐渐凸显的情况下,有必要采用合理的方式进行风能资源的利用。我国地理条件复杂,要想充分发挥风能的作用,需要借助先进的技术手段[1]。随着机械学和力学等学科的不断发展,风力发电技术得到进一步的升级转化。作为新能源主力军之一,风电行业在2022年仍然保持着一路高歌的态势。国家能源局日前发布数据显示,我国风电并网装机容量突破3亿kW,较2016年底实现翻番,是2020年底欧盟风电总装机的1.4倍、美国的2.6倍,已连续12年稳居全球第一。
控制系统对于风力发电机组的安全、可靠运行甚至是整个风厂的正常运转都具有着十分重要的作用[2],但是随着风电技术应用的推广和机组功率的增大,出现了许多控制难题,如时变性、非线性、多干扰性、耦合性等。为此,现代科学家将智能控制方法引入了风电机组控制系统,不断优化风电机组控制系统的动态特性和控制效果[3]。在控制技术逐渐走向成熟的过程中,对控制算法的测试是保证该过程稳步前进的基础。随着风力发电技术的发展,全面完善的控制算法测试与评测技术的重要性也日益凸显。
风电机组控制系统的设计和分析方法都涵盖在经典控制理论范围内,需要在控制系统设计前对风电机组动态模型进行线性化。线性化模型至少包含传动链的动态特性、塔架的前后振动、功率或转速响应、变桨执行机构的响应等[4],如图1所示。
图1 风电机组模型示意图
控制算法主要对转矩和桨距进行控制。转矩控制和桨距控制的基本方法都是PI控制,但不同的是,转矩PI控制器的Kp和Ki是固定值,而变桨PI控制器的Kp则是随桨距角β变化的,其形式为:
式中:K为滤波器;增益G为桨距角β的非线性函数,在控制上一般采用查表法实现;s为转速;Ti为时间常数。
风力发电机组通过控制转矩来控制转速,通过控制桨距来控制功率。为了维持控制系统的稳定,在系统中加入了反馈校正系统。
一个完整的风电机组控制系统除了要保证高发电效率外,还应避免过多的变桨动作和发电机转矩调节,抑制传动链和塔架振动,避免轮毂、叶片以及塔架等的负载过大。因此,设计控制算法时必须考虑这些影响。
1.2.1 塔架振动控制
塔架前后振动控制用于增加塔架前后振动模态阻尼,减小塔架前后振动,从而减小塔架载荷。塔架前后振动控制的实现过程包括:塔架前后振动加速度测量值通过滤波、比例控制器后得到输出,输出值为变桨补偿量,施加到变桨控制的桨距角给定值。
塔架左右振动控制用于增加塔架左右振动模态阻尼,减小塔架左右振动,从而减小塔架载荷。塔架左右振动控制的实现过程包括:塔架左右振动加速度测量值经过积分、比例控制器后得到输出,输出的量为补偿量,施加到扭矩控制的输出值。
1.2.2 暴风控制
暴风控制为风力发电机组软切出控制。截至目前,风电机型最常见的切出风速设计为18~20 m/s,根据不同类型的项目中实际的风资源情况进行统计,如果经评估确定该风速段的发电收益接近最大值(20~25 m/s风速段),那么可进行软切出控制。软切出控制在原本停机的风速下保持正常发电运行,在大风况地区能明显增加发电量。
1.2.3 雷达前馈控制
在机舱上方安装激光测风雷达,通过雷达光束测得前方来风的风速以及风向信息,经过前馈计算,提前进行变桨,极大地减小了极限载荷。激光雷达还可识别阵风,不仅避免了极端载荷,还可以保证机组安全。
1.2.4 双模控制
低风速地区,不仅发电量受影响,还会频繁切出停机,针对这种情况,通过控制变流器运行模式,将脱网转速减小,延长发电曲线,在小风情况下能够启机发电,增加发电量。
大功率、长叶片技术的快速发展,给风力发电机组控制系统提出了新的要求和挑战,为了保证发电机组安全可靠运行,对控制算法的设计和测试尤为重要。本节对控制算法的测试方法进行详细说明,在实际运用中,采用传统测试方法结合新的测试方法,更能发现算法中潜在的问题。
现有的算法测试方法,基本都是依托Bladed仿真软件进行算法的仿真测试。半物理仿真测试中,采用真实的控制器,变流器和发电机部分采用虚拟环境代替,将控制算法封装成算法库,在控制器中周期调用。控制算法所需激励由三部分组成,如图2所示。
图2 传统控制算法测试示意图
第一部分由Bladed模型提供,模型提供风速的设定、模态分析相关参数、功率传动链等相关信息。
第二部分由Hardware test plan提供,在仿真开始之前,可以在plan文件中对单个或多个变量设置值,通过对时序的控制,在不同时刻对算法输入不同的值,从而收集算法的输出进行分析。
第三部分由HMI软件提供,通过变量的ADS地址映射,将所需改变的变量开放到HMI软件中,在仿真过程中人工修改HMI上对应的值,可以仿真出不同的工况。
该方法类似第二种方法,优点在于操作方便、使用简单;缺点是不能控制在某个时刻精准触发,在对时序要求不高的情况下使用较多。
在传统的测试方法中,从风速到控制算法变量的指定都是人为构造的数据。人为构造的数据在测试用例覆盖率方面具有局限性,和实际风场收集的数据存在较大的差异。因此,在对算法测试的用例中,可以选用现场实际收集(通过SCADA或Matlab)的数据经过处理后作为测试用例,再输入到算法中运行,运行结束后分析算法输出结果,如图3所示。
图3 基于真实数据的测试方法示意图
现场数据选用标准包含两方面:一方面,需涵盖各种地形的风场数据;另一方面,收集现场故障数据,将故障分类并在每类故障中选择代表性数据作为算法输入。
现场真实数据随着故障的收集会不断扩增,使用Python脚本对数据集进行统一管理,并按照一定的顺序输入到算法中,节省了仿真的时间,大幅提高了测试效率。
Google test是测试技术团队根据谷歌的特定要求和约束条件开发的测试框架,同时支持Linux、Windows以及Mac三种操作系统环境,主要针对C++代码,不仅支持单元测试,还支持生成测试报告。
在控制算法测试中,2.1、2.2小节中提及的方法依然是基于Bladed仿真环境进行的。但受环境约束或基于某些算法模块特定的需求,可以脱离Bladed环境进行测试。例如,在仿真测试中出现了内存占用过高的问题,通过走读代码无法定位问题语句,则可以将采集到的输入数据保存至文本,在Google test中将文本作为算法模块的输入,并统计模块中每个变量的变化情况以及函数的耗时,进而分析出根本原因。
基于Google test框架的测试方法需要在控制算法源代码中引入测试框架头文件,再将待测的算法模块以及输入数据作为测试用例。例如,DSP算法中需要测试将采集到的转速数据写入CSV文件功能以及该功能消耗的时间,将功能函数返回值以及期望值作为参数传入EXPECT_EQ函数,进行结果对比,然后在外部调用框架中testing类的InitGoogleTest函数,返回RUN_ALL_TESTS函数即可。运行程序可得到测试结果,由测试结果可知DSP算法中所测函数写入功能是否正确,且耗时具体到微秒。通过该类测试方法,可以很容易地测得算法中更为详细的运行信息,从而弥补其他测试方法的缺陷。
风力发电控制算法的仿真结束后,需要对结果进行评测,以判断算法是否符合设计需求。
首先对变量进行采集,在整个测试过程中需要关注的变量分为两类,如表1所示:一类是固定的重要变量,贯穿所有测试内容;另一类是针对性变量,即针对特定的内容所需要关注的变量。
表1 控制算法采集相关变量
另外,变量采集后,需要对变量的时序进行分析,从而确定结果是否正确。对测试结果有如下两个参考标准:
(1)变量的变化符合算法设计。例如,验证停机工况时,需要查看停机后功率设定值是否按照设计的速率下拉,脱网指令是否在满足条件时进行下发,收桨速率是否按照设计进行,同时需要核对状态机的运行时间和顺序是否正常。以上相关变量需同时符合设计。
(2)变量的变化收敛。在测试过程中,固定的重要变量若出现持续性或间歇性发散、振荡现象,则需要对算法逻辑以及参数进行排查。更新测试后,保证变量在运行稳定的情况下变化也趋于稳定,说明满足需求。
性能测试贯穿启机到停机所有过程,可以验证因内存泄漏或通道过载造成的CPU占用率过高的问题。性能测试可以通过观察内存的实时占用百分比从而判断是否存在问题,如图4所示。
图4 控制算法性能验证示意图
正常情况下,内存使用率在20%~40%,持续超过50%则认为内存使用异常。此时,可以使用Google test测试方法,根据算法的函数、变量变化和耗时进行排查。
本文针对风力发电控制算法提出了两种新的测试方法——基于现场真实数据测试以及使用Google test框架测试,这不仅弥补了传统测试方法的不足,解决了测试覆盖率低的问题,还大幅提高了算法测试的效率。
本文通过对风力发电控制算法测试结果从功能和性能两个维度进行评测,验证了算法的正确性和稳定性,保证了整个测试流程的闭环。