tangxu
2022-11-04 4dc0d885c843d494a05ee86c01818abc4e640bab
增加        金泽取水
已修改3个文件
127 ■■■■■ 文件已修改
Application/IStation.Application.OpenApi/shys/plan/shys/ShysHelper.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Calculation/IStation.Calculation.Dispatch/helper/DispatchAnaGeneralHelper压力.cs 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Model/IStation.Model.Curve/特性曲线/FeatCurveHelper.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Application/IStation.Application.OpenApi/shys/plan/shys/ShysHelper.cs
@@ -43,11 +43,12 @@
            //_dict.Add(19, new StationInfo(14, new IStation.Calculation.shys陈行二取())); //NG 1月5时, å‡ºå£åŽ‹åŠ›ä½ŽäºŽæ°´æ± æ°´ä½
#if (DEBUG)
            _dict.Add(20, new StationInfo(18, new IStation.Calculation.shys金泽取水()));
            //_0402010701011204001 åº”该是水位是否搞错,  æ›²çº¿ä¸å…¨
#else
            _dict.Add(18, new StationInfo(1 , new IStation.Calculation.shys青草沙取水()));//全是0 æ˜¯å¦æ­£ç¡®?
                  _dict.Add(20, new StationInfo(18, new IStation.Calculation.shys金泽取水()));
            _dict.Add(10, new StationInfo(10, new IStation.Calculation.shys金海泵站()));// OK ç¬¬ä¸‰æ‰¹  æ›²çº¿å»¶é•¿, ä¸”需要增加出口压力才能计算
            _dict.Add(14, new StationInfo(17, new IStation.Calculation.shys泰和泵站()));// OK ç¬¬ä¸‰æ‰¹ æ›²çº¿å»¶é•¿,
Calculation/IStation.Calculation.Dispatch/helper/DispatchAnaGeneralHelperѹÁ¦.cs
@@ -117,7 +117,7 @@
                error_info = "流量值过低无法分析";
                return false;
            }
            if(this._targetOutletPress<= this._targetInletPress + 0.01)
            if (this._targetOutletPress <= this._targetInletPress + 0.003)
            {
                error_info = "进出口压力值设置不合理";
                return false;
@@ -298,10 +298,12 @@
            #region  é¢„算一下
            List<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase> all_machine_ana_result_list =
                new List<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase>();
            int frequency_pump_count = 0;
            foreach (var machine in this._allMachineList)
            {
                if (machine.IsFrequency)
                {//变频泵
                    frequency_pump_count ++ ;
                    var anaData = GetFrePumpAnaData(machine);
                    if (anaData != null)
                    {
@@ -325,17 +327,69 @@
            {
                return null;
            }
            else if (all_machine_ana_result_list.Count() == 1)
            if (frequency_pump_count>0)
            {
                var first_pump = all_machine_ana_result_list.First();
                first_pump.AsFrequency = true;
                IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[] open_machine_list = new
                     IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[] { first_pump };
                AnaMahineComb(open_machine_list);
                #region æœ‰å˜é¢‘æ³µ,可以精确计算
                if (all_machine_ana_result_list.Count() == 1)
                {
                    var first_pump = all_machine_ana_result_list.First();
                    first_pump.AsFrequency = true;
                    IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[] open_machine_list = new
                         IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[] { first_pump };
                    AnaMahineComb(open_machine_list);
                }
                else
                {
                    int max_fre_num = 2;//最多变频2台, å…¶ä½™çš„即使变频,也按50HZ运行
                    var arry_allMachineList = all_machine_ana_result_list.ToArray();
                    for (int openPumpNum = 1; openPumpNum <= all_machine_ana_result_list.Count(); openPumpNum++)
                    {
                        //得到所有排列组合
                        List<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[]> open_machine_combine_list =
                            IStation.Model.PermutationAndCombination<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase>.GetCombination(
                                arry_allMachineList, openPumpNum);
                        foreach (var open_machine_list in open_machine_combine_list)
                        {
                            var fre_machines = (from x in open_machine_list where x.IsFrequency select x).ToArray();
                            if (fre_machines.Count() > max_fre_num)
                            {//最多把2台泵当作变频泵运行, å…¶ä½™æŒ‰å·¥é¢‘泵运行
                                List<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[]> real_fre_machine_combine_list =
                     IStation.Model.PermutationAndCombination<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase>.GetCombination(
                     fre_machines, max_fre_num);//排列组合,找里面的2台
                                foreach (var real_fre_machine_list in real_fre_machine_combine_list)
                                {
                                    foreach (var m in fre_machines)
                                    {//先把所有变频泵当作工频泵
                                        m.AsFrequency = false;
                                    }
                                    foreach (var m in real_fre_machine_list)
                                    {//把排列组合中的两台设置位变频泵
                                        m.AsFrequency = true;
                                    }
                                    int ana_ret = AnaMahineComb(open_machine_list);
                                }
                            }
                            else
                            {
                                foreach (var m in fre_machines)
                                {
                                    if (m.IsFrequency)
                                        m.AsFrequency = true;
                                }
                                int ana_ret = AnaMahineComb(open_machine_list);
                            }
                        }
                    }
                }
                #endregion
            }
            else
            {
                int max_fre_num = 2;//最多变频2台, å…¶ä½™çš„即使变频,也按50HZ运行
                #region éƒ½æ˜¯å·¥é¢‘æ³µ
                var arry_allMachineList = all_machine_ana_result_list.ToArray();
                for (int openPumpNum = 1; openPumpNum <= all_machine_ana_result_list.Count(); openPumpNum++)
                {
@@ -346,39 +400,10 @@
                    foreach (var open_machine_list in open_machine_combine_list)
                    {
                        var fre_machines = (from x in open_machine_list where x.IsFrequency select x).ToArray();
                        if (fre_machines.Count() > max_fre_num)
                        {//最多把2台泵当作变频泵运行, å…¶ä½™æŒ‰å·¥é¢‘泵运行
                            List<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase[]> real_fre_machine_combine_list =
                 IStation.Model.PermutationAndCombination<IStation.Calculation.DispatchAna.Model.PumpAnaDataBase>.GetCombination(
                 fre_machines, max_fre_num);//排列组合,找里面的2台
                            foreach (var real_fre_machine_list in real_fre_machine_combine_list)
                            {
                                foreach (var m in fre_machines)
                                {//先把所有变频泵当作工频泵
                                    m.AsFrequency = false;
                                }
                                foreach (var m in real_fre_machine_list)
                                {//把排列组合中的两台设置位变频泵
                                    m.AsFrequency = true;
                                }
                                int ana_ret = AnaMahineComb(open_machine_list);
                            }
                        }
                        else
                        {
                            foreach (var m in fre_machines)
                            {
                                if (m.IsFrequency)
                                    m.AsFrequency = true;
                            }
                            int ana_ret =  AnaMahineComb(open_machine_list);
                        }
                        int ana_ret = AnaMahineComb(open_machine_list);
                    }
                }
                }
                #endregion
            }
            #endregion
@@ -439,12 +464,14 @@
            int fre_pump_count = 0;
            double total_min_flow_开机泵 = 0;
            double total_max_flow_开机泵 = 0;
            foreach (var machine in open_machine_list)
            {
                total_max_flow_开机泵 += machine.AnaItem50Hz.CurveInfoQH.Max;
                if (machine.IsFrequency)
                {
                    if (!machine.AsFrequency)
                    {
                        fixPumpAnaCombine.Add(machine);
@@ -1435,16 +1462,17 @@
            int addPrjNum = 0;
            var freqPump = allFreqPumpAnaList.FirstOrDefault();
            {
            {
                var frePump_flow = (this._targetQ - fix_pump_total_flow);
                double h = //this.CalcHeadByPress(this._targetInletPress, this._targetOutletPress);
                    Math.Round(this.CalcHeadByPress(this._targetInletPress, this._targetOutletPress,
                        freqPump.MachineDetail.InletCaliber, freqPump.MachineDetail.OutletCaliber,
                        (this._targetQ - fix_pump_total_flow) ), 3);
                        freqPump.MachineDetail.InletCaliber, freqPump.MachineDetail.OutletCaliber, frePump_flow), 3);
                var dp = new IStation.Model.CurvePoint(frePump_flow, h);
                var wrkSpeed = IStation.Common.SpeedSimuCalculer.GetSimuValue(
                                 freqPump.MachineDetail.MaxCurveInfoQH,
                                 new IStation.Model.CurvePoint(_targetQ - fix_pump_total_flow, h), 2900);
                                 dp, 2900);
                if (wrkSpeed < 0)
                    return 0;//
                IStation.Calculation.DispatchAna.Model.AnaCurveItem currentAna = new IStation.Calculation.DispatchAna.Model.AnaCurveItem();
                double fre = Math.Round(50 * wrkSpeed / 2900, 1);
Model/IStation.Model.Curve/ÌØÐÔÇúÏß/FeatCurveHelper.cs
@@ -23,7 +23,7 @@
                return default;
            double f_ratio = hz / 50.0;
            var list= pts.Select(x => new CurvePoint(x.X * f_ratio, x.Y * f_ratio * f_ratio)).ToList();
            return new CurveExpress(pts,fit);
            return new CurveExpress(list, fit);
        }
        /// <summary>
@@ -38,7 +38,7 @@
                return default;
            double f_ratio = hz / 50.0;
            var list = pts.Select(x => new CurvePoint(x.X * f_ratio, x.Y * f_ratio * f_ratio * f_ratio)).ToList();
            return new CurveExpress(pts, fit);
            return new CurveExpress(list, fit);
        }