# 风电机组发电性能分析算法
    用于与风电机组发电性能分析系统集成，算法版本v1.2

## 名词/术语
    index： 表示数组索引
    分析类型： 表示 针对风电机组发电性能的不同分析，例如：静态偏航误差、功率曲线散点分析、变桨功率分析等
    直驱风电机组： 无齿轮箱
    半直驱风电机组：有齿轮箱且结构较双馈风电机组简单
    双馈风电机组： 有齿轮箱且结构较半直驱风电机组复杂
    非直驱风电机组： 有齿轮箱，包括：半直驱风电机组、双馈风电机组

## 风电机组发电性能分析类型
### 分析类型列表
|    分析类型名称|        包名|         类名|    方法名|   数据源|     Code|
|------------|------------|------------|------------|------------|------------|
|数据情况|||||
|机组分钟级SCADA数据记录完整度分析|algorithm.dataIntegrityOfMinuteAnalyst|DataIntegrityOfMinuteAnalyst|executeAnalysis|minute|data_integrity_minute|
|机组秒级SCADA数据记录完整度分析|algorithm.dataIntegrityOfSecondAnalyst|DataIntegrityOfSecondAnalyst|executeAnalysis|second|data_integrity_second|
|风资源分析|||||
|机组风速频率分析|algorithm.windSpeedFrequencyAnalyst|WindSpeedFrequencyAnalyst|executeAnalysis|minute|wind_speed_frequency|
|机组风向玫瑰分析|algorithm.windDirectionFrequencyAnalyst|WindDirectionFrequencyAnalyst|executeAnalysis|minute|wind_direction_frequency|
|机组风速均值分析|algorithm.windSpeedAnalyst|WindSpeedAnalyst|executeAnalysis|minute|wind_speed|
|功率曲线分析|||||
|机组有功功率曲线分析|algorithm.powerCurveAnalyst|PowerCurveAnalyst|executeAnalysis|minute|power_curve|
|机组逐月有功功率散点2D分析|algorithm.powerScatter2DAnalyst|PowerScatter2DAnalyst|executeAnalysis|minute|power_scatter_2D|
|机组逐月有功功率散点3D分析|algorithm.powerScatterAnalyst|PowerScatterAnalyst|executeAnalysis|minute|power_scatter|
|额定功率分析|||||
|机组额定功率和风速分析|algorithm.ratedPowerWindSpeedAnalyst|RatedPowerWindSpeedAnalyst|executeAnalysis|minute|rated_power_windspeed|
|机组额定风速分析|algorithm.ratedWindSpeedAnalyst|RatedWindSpeedAnalyst|executeAnalysis|minute|rated_windspeed|
|性能特性分析|||||
|机组风能利用系数和有功功率分析|algorithm.cpAnalyst|CpAnalyst|executeAnalysis|second|cp|
|机组风能利用系数和风速分析|algorithm.cpWindSpeedAnalyst|CpWindSpeedAnalyst|executeAnalysis|second|cp_windspeed|
|机组风能利用系数时序分析|algorithm.cpTrendAnalyst|CpTrendAnalyst|executeAnalysis|second|cp_trend|
|机组叶尖速比和有功功率分析|algorithm.tsrAnalyst|TSRAnalyst|executeAnalysis|second|tsr|
|机组叶尖速比和风速分析|algorithm.tsrWindSpeedAnalyst|TSRWindSpeedAnalyst|executeAnalysis|second|tsr_windspeed|
|机组叶尖速比时序分析|algorithm.tsrTrendAnalyst|TSRTrendAnalyst|executeAnalysis|second|tsr_trend|
|机组叶尖速比-Cp-功率分析|algorithm.tsrCpPowerAnalyst|TSRCpPowerAnalyst|executeAnalysis|second|tsr_cp_power|
|机组发电机转速和有功功率分析|algorithm.generatorSpeedPowerAnalyst|GeneratorSpeedPowerAnalyst|executeAnalysis|minute|speed_power|
|机组发电机转速和转矩分析|algorithm.generatorSpeedTorqueAnalyst|GeneratorSpeedTorqueAnalyst|executeAnalysis|minute|speed_torque|
|静态偏航误差分析|||||
|机组静态偏航误差分析|algorithm.yawErrorAnalyst|YawErrorAnalyst|executeAnalysis|second|yaw_error|
|机组动态偏航误差分析|algorithm.yawErrorDensityAnalyst|YawErrorDensityAnalyst|executeAnalysis|second|yaw_error_density|
|变桨特性分析|||||
|机组最小桨距角分析|algorithm.minPitchAnalyst|MinPitchAnalyst|executeAnalysis|second|min_pitch|
|变桨-转速-转矩（功率）协调分析|||||
|机组变桨和有功功率协调性分析|algorithm.pitchPowerAnalyst|PitchPowerAnalyst|executeAnalysis|minute|pitch_power|
|机组变桨和发电机转速协调性分析|algorithm.pitchGeneratorSpeedAnalyst|PitchGeneratorSpeedAnalyst|executeAnalysis|minute|pitch_generator_speed|
|温度传感器性能分析|||||
|机组环境温度传感器分析|algorithm.temperatureEnvironmentAnalyst|TemperatureEnvironmentAnalyst|executeAnalysis|minute|temperature_environment|
|机组大部件温度传感器分析|algorithm.temperatureLargeComponentsAnalyst|TemperatureLargeComponentsAnalyst|executeAnalysis|minute|temperature_large_components|
|尚未归类的分析类型|||||
|机组变桨和叶尖速比及风能利用系数分析|algorithm.pitchTSRCpAnalyst|PitchTSRCpAnalyst|executeAnalysis|second|pitch_tsr_cp|

## 数据契约
### 输入数据契约

#### 说明
    键 dataContractType 表示 数据契约类型说明
    键 dataContractType.type 表示 数据契约类型，其值数据类型为字符串且非空，值 GenerationAnalysisOfTurbine 为风电机组发电分析
    键 dataContractType.version 表示 数据契约类型版本，其值数据类型为字符串且非空，值 1.2.0 为 用于与风电机组发电性能分析系统集成


    键 dataContract 表示 数据契约说明
    键 dataContract.autoOrManual 表示 区分调用来源是自动触发，还是人工触发，其值数据类型为字符串且非空，枚举值：automatic、manual，值：automatic 表示自动触发；manual 表示人工触发；

    键 dataContract.dataFilter 表示 数据筛选
    键 dataContract.dataFilter.powerFarmID 表示 电场编号， 其值数据类型为字符串且非空
    键 dataContract.dataFilter.turbines 表示 发电设备（风电机组等）编号信息， 其值数据类型为数组，当其值为null时分析该场站的所有机组
    键 dataContract.dataFilter.beginTime 表示 数据开始时间， 其值数据类型为字符串,格式：yyyy-MM-dd hh:mm:ss 当值为null时不进行当前数据批次数据进行开始时间筛选
    键 dataContract.dataFilter.beginTime 表示 数据开始时间， 其值数据类型为字符串,格式：yyyy-MM-dd hh:mm:ss 当值为null时不进行当前数据批次数据进行开始时间筛选
    键 dataContract.dataFilter.endTime 表示 数据截止时间， 其值数据类型为字符串,格式：yyyy-MM-dd hh:mm:ss 当值为null时不进行当前数据批次数据进行截止时间筛选
    键 dataContract.dataFilter.excludingMonths 表示 排除指定月份数据， 其值数据类型为数组,格式：yyyy-MM 当值为null时不排除指定月份数据

    键 dataContract.dataFilter.customFilter 表示 自定义scada数据测点筛选， 其值数据类型为对象 ,当值为null时不进行自定义筛选
    键 dataContract.dataFilter.customFilter.valueWindSpeed 表示 自定义scada数据风速测点筛选， 其值数据类型为对象 ,当值为null时不进行风速测点的自定义筛选
    键 dataContract.dataFilter.customFilter.valueWindSpeed.min 表示 自定义scada数据风速测点最小值筛选， 其值数据类型为数值 ,当值为null时不进行风速测点最小值的自定义筛选
    键 dataContract.dataFilter.customFilter.valueWindSpeed.max 表示 自定义scada数据风速测点最大值筛选， 其值数据类型为数值 ,当值为null时不进行风速测点最大值的自定义筛选

    键 dataContract.dataFilter.customFilter.valuePitchAngle 表示 自定义scada数据桨距角测点筛选， 其值数据类型为对象 ,当值为null时不进行桨距角测点的自定义筛选
    键 dataContract.dataFilter.customFilter.valuePitchAngle.min 表示 自定义scada数据桨距角测点最小值筛选， 其值数据类型为数值 ,当值为null时不进行桨距角测点最小值的自定义筛选
    键 dataContract.dataFilter.customFilter.valuePitchAngle.max 表示 自定义scada数据桨距角测点最大值筛选， 其值数据类型为数值 ,当值为null时不进行桨距角测点最大值的自定义筛选

    键 dataContract.dataFilter.customFilter.valueActivePower 表示 自定义scada数据有功功率测点筛选， 其值数据类型为对象 ,当值为null时不进行有功功率测点的自定义筛选
    键 dataContract.dataFilter.customFilter.valueActivePower.min 表示 自定义scada数据有功功率测点最小值筛选， 其值数据类型为数值 ,当值为null时不进行有功功率测点最小值的自定义筛选
    键 dataContract.dataFilter.customFilter.valueActivePower.max 表示 自定义scada数据有功功率测点最大值筛选， 其值数据类型为数值 ,当值为null时不进行有功功率测点最大值的自定义筛选

    键 dataContract.dataFilter.customFilter.valueGeneratorSpeed 表示 自定义scada数据发电机转速测点筛选， 其值数据类型为对象 ,当值为null时不进行发电机转速测点的自定义筛选
    键 dataContract.dataFilter.customFilter.valueGeneratorSpeed.min 表示 自定义scada数据发电机转速测点最小值筛选， 其值数据类型为数值 ,当值为null时不进行发电机转速测点最小值的自定义筛选
    键 dataContract.dataFilter.customFilter.valueGeneratorSpeed.max 表示 自定义scada数据发电机转速测点最大值筛选， 其值数据类型为数值 ,当值为null时不进行发电机转速测点最大值的自定义筛选
    
    键 dataContract.configAnalysis 表示 分析类型配置，其值数据类型为数组，且非空，至少包含一个分析类型
    键 dataContract.configAnalysis[index].package 表示 分析类型的包名，其值数据类型为字符串且非空
    键 dataContract.configAnalysis[index].className 表示 分析类型的类名，其值数据类型为字符串且非空
    键 dataContract.configAnalysis[index].methodName 表示 分析类型的类方法名，其值数据类型为字符串且非空
    键 dataContract.configAnalysis[index].scada表示 分析使用scada数据的数据源/时间粒度，其值数据类型为字符串且非空，枚举值：minute、second，值: minute 指定分析类型使用scada分钟级数据；second 指定分析类型使用scada秒级数据

    键 dataContract.graphSets 表示 分析输出图形配置，其值数据类型为对象，且非空
    键 dataContract.graphSets.DgeneratorSpeed 表示 直驱发电机转速轴系设置，其值数据类型为对象且非空
    键 dataContract.graphSets.DgeneratorSpeed.step 表示 直驱发电机转速轴系的步长设置，其值数据类型为数值且非空，默认值： 5；
    键 dataContract.graphSets.DgeneratorSpeed.min 表示 直驱发电机转速轴系的最小值设置，其值数据类型为数值且非空，默认值： 0；
    键 dataContract.graphSets.DgeneratorSpeed.max 表示 直驱发电机转速轴系的最大值设置，其值数据类型为数值且非空，默认值：30；
    
    键 dataContract.graphSets.IgeneratorSpeed 表示 非直驱发电机转速轴系设置，其值数据类型为对象且非空
    键 dataContract.graphSets.IgeneratorSpeed.step 表示 非直驱发电机转速轴系的步长设置，其值数据类型为数值且非空，默认值： 200；
    键 dataContract.graphSets.IgeneratorSpeed.min 表示 非直驱发电机转速轴系的最小值设置，其值数据类型为数值且非空，默认值： 1000；
    键 dataContract.graphSets.IgeneratorSpeed.max 表示 非直驱发电机转速轴系的最大值设置，其值数据类型为数值且非空，默认值：2000；

    键 dataContract.graphSets.DgeneratorTorque 表示 直驱发电机转矩轴系设置，其值数据类型为对象且非空
    键 dataContract.graphSets.DgeneratorTorque.step 表示 直驱发电机转矩轴系的步长设置，其值数据类型为数值且非空，默认值： 10000；
    键 dataContract.graphSets.DgeneratorTorque.min 表示 直驱发电机转矩轴系的最小值设置，其值数据类型为数值且非空，默认值：0；
    键 dataContract.graphSets.DgeneratorTorque.max 表示 直驱发电机转矩轴系的最大值设置，其值数据类型为数值且非空，默认值：100000；

    键 dataContract.graphSets.IgeneratorTorque 表示 非直驱发电机转矩轴系设置，其值数据类型为对象且非空
    键 dataContract.graphSets.IgeneratorTorque.step 表示 非直驱发电机转矩轴系的步长设置，其值数据类型为数值且非空，默认值： 2000；
    键 dataContract.graphSets.IgeneratorTorque.min 表示 非直驱发电机转矩轴系的最小值设置，其值数据类型为数值且非空，默认值：0；
    键 dataContract.graphSets.IgeneratorTorque.max 表示 非直驱发电机转矩轴系的最大值设置，其值数据类型为数值且非空，默认值：12000；

    键 dataContract.graphSets.cp 表示 风能利用系数轴系设置，其值数据类型为对象且非空
    键 dataContract.graphSets.cp.step 表示 风能利用系数轴系的步长设置，其值数据类型为数值且非空，默认值： 0.5；
    键 dataContract.graphSets.cp.min 表示 风能利用系数轴系的最小值设置，其值数据类型为数值且非空，默认值：0；
    键 dataContract.graphSets.cp.max 表示 风能利用系数轴系的最大值设置，其值数据类型为数值且非空，默认值：2；

    键 dataContract.graphSets.tsr 表示 叶尖速比轴系设置，其值数据类型为对象且非空
    键 dataContract.graphSets.tsr.step 表示 叶尖速比轴系的步长设置，其值数据类型为数值且非空，默认值： 5；
    键 dataContract.graphSets.tsr.min 表示 叶尖速比轴系的最小值设置，其值数据类型为数值且非空，默认值：0；
    键 dataContract.graphSets.tsr.max 表示 叶尖速比轴系的最大值设置，其值数据类型为数值且非空，默认值：30；

    键 dataContract.graphSets.pitchAngle 表示 桨距角轴系设置，其值数据类型为对象且非空
    键 dataContract.graphSets.pitchAngle.step 表示 桨距角轴系的步长设置，其值数据类型为数值且非空，默认值： 2
    键 dataContract.graphSets.pitchAngle.min 表示 桨距角轴系的最小值设置，其值数据类型为数值且非空，默认值：-1；
    键 dataContract.graphSets.pitchAngle.max 表示 桨距角轴系的最大值设置，其值数据类型为数值且非空，默认值：20；

    键 dataContract.graphSets.activePower 表示 有功功率轴系设置，其值数据类型为对象且非空
    键 dataContract.graphSets.activePower.step 表示 有功功率轴系的步长设置，其值数据类型为数值且非空，默认值： 250；
    键 dataContract.graphSets.activePower.min 表示 发有功功率轴系的最小值设置，其值数据类型为数值且非空，默认值：0；
    键 dataContract.graphSets.activePower.max 表示 有功功率轴系的最大值设置，其值数据类型为数值且非空，默认值：额定功率*1.2；

  #### 示例：
    ```
    {
        "dataContractType": {
            "type": "analysisExecuteOrder",
            "version": "1.2.0"
        },
        "dataContract": {
            "autoOrManual":"automatic",
            "dataFilter": {
                "powerFarmID": "010-00001",
                "turbines": [
                    "010-00001-0001",
                    "010-00001-0002"
                ],
                "dataBatchNum": "B2024042211-0",
                "beginTime": "2023-01-01 00:00:00",
                "endTime": "2023-12-31 23:59:59",
                "excludingMonths": [
                    "2023-12",
                    "2023-09"
                ],
                "customFilter": {
                    "valueWindSpeed": {
                        "min": 3.0,
                        "max": 25.0
                    },
                    "valuePitchAngle": {
                        "min": 2,
                        "max": null
                    },
                    "valueActivePower": {
                        "min": 10,
                        "max": 2500
                    },
                    "valueGeneratorSpeed": {
                        "min": 10,
                        "max": 2500
                    }
                }
            },
            "configAnalysis": [
                {
                    "package": "algorithm.powerCurveAnalyst",
                    "className": "PowerCurveAnalyst",
                    "methodName": "executeAnalysis",
                    "scada":"minute"
                },
                {
                    "package": "algorithm.powerScatter2DAnalyst",
                    "className": "PowerScatter2DAnayst",
                    "methodName": "executeAnalysis",
                    "scada":"minute"
                },
                {
                    "package": "algorithm.windSpeedFrequencyAnalyst",
                    "className": "WindSpeedFrequencyAnalyst",
                    "methodName": "executeAnalysis",
                    "scada":"minute"
                },
                {
                    "package": "algorithm.generatorSpeedPowerAnalyst",
                    "className": "GeneratorSpeedPowerAnalyst",
                    "methodName": "executeAnalysis",
                    "scada":"minute"
                }
		],
		"graphSets": {
            "DgeneratorSpeed": {
                "step": 5,
                "min": 0,
                "max": 30
            },
            "DgeneratorTorque": {
                "step": 10000,
                "min": 0,
                "max": 100000
            },

            "IgeneratorSpeed": {
                "step": 200,
                "min": 1000,
                "max": 2000
            },
            "IgeneratorTorque": {
                "step": 2000,
                "min": 0,
                "max": 12000
			},
			"cp": {
				"step": 0.5,
				"min": 0,
				"max": 2
			},
			"tsr": {
				"step": 5,
				"min": 0,
				"max": 30
			},
			"pitchAngle": {
				"step": 1,
				"min": -1,
				"max": 20
			},
			"activePower": {
				"step": 250,
				"min": 0,
				"max": 2000
			}
		}
	}
}
    ```

### 返回数据锲约