コード例 #1
0
        private RealtimeWindTurbineRecord GenerateRegularRealtimeRecord(bool stopWake)
        {
            var    currentRecords = ringBuffer.ToList();
            double windDirection  = currentRecords.Select(x => x.OverallWindDirection).Average() * gen.GetRandomNumber(0.9, 1.1);
            var    windSpeed      = currentRecords.Select(x => x.WindSpeedAverage).Average() * gen.GetRandomNumber(0.9, 1.1);
            double turbineSpeed   = windSpeed * gen.GetRandomNumber(0.25, 1.75);

            if (stopWake)
            {
                turbineSpeed  = windSpeed * gen.GetRandomNumber(0.97, 1.03);
                windDirection = gen.GetRandomNumber(40.0, 45.0);
            }

            var generatorSpeed = gen.GetGeneratorSpeed(windSpeed);
            var activePower    = gen.GetGeneratorActivePower(windSpeed);
            var toReturn       = new RealtimeWindTurbineRecord
            {
                RecordId             = Guid.NewGuid(),
                TurbineId            = 15443,
                TurbineGuid          = TurbineGuid,
                GearboxOilLevel      = currentRecords.Select(x => x.GearboxOilLevel).Average() * gen.GetRandomNumber(0.95, 1.05),
                GearboxOilTemp       = currentRecords.Select(x => x.GearboxOilTemp).Average() * gen.GetRandomNumber(0.95, 1.05),
                GeneratorActivePower = gen.GetGeneratorActivePower(windSpeed),
                GeneratorSpeed       = generatorSpeed,
                GeneratorTemp        = gen.GetGeneratorStatorTemp(generatorSpeed),
                GeneratorTorque      = gen.GetGeneratorTorque(generatorSpeed, activePower),
                GridFrequency        = gen.GetGridFrequency(activePower),
                GridVoltage          = gen.GetVoltage(activePower),
                HydraulicOilPressure = gen.GetHydraulicOilPressure(),
                NacelleAngle         = gen.GetNacelleAngle(windDirection),
                PitchAngle           = gen.GetPitchAngle(windSpeed),
                Vibration            = gen.GetVibration(windSpeed),
                WindSpeedAverage     = windSpeed,
                Precipitation        = gen.GetRandomBool(20),
                WindTempAverage      = gen.GetRandomNumber(-10.0, 30),
                OverallWindDirection = windDirection,
                TurbineWindDirection = windDirection * gen.GetRandomNumber(0.97, 1.03),
                TurbineSpeedAverage  = turbineSpeed,
                WindSpeedStdDev      = gen.CalculateStandardDeviation(ringBuffer.ToList().Select(x => x.WindSpeedAverage).TakeLast(10)),
                TurbineSpeedStdDev   = gen.CalculateStandardDeviation(ringBuffer.ToList().Select(x => x.TurbineSpeedAverage).TakeLast(10)),
                Timestamp            = DateTime.Now
            };

            ringBuffer.PushFront(toReturn);
            return(toReturn);
        }