| | |
| | | error_info = "æµéå¼è¿ä½æ æ³åæ"; |
| | | return false; |
| | | } |
| | | if(this._targetOutletPress<= this._targetInletPress + 0.01) |
| | | if (this._targetOutletPress <= this._targetInletPress + 0.003) |
| | | { |
| | | error_info = "è¿åºå£ååå¼è®¾ç½®ä¸åç"; |
| | | return false; |
| | |
| | | #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) |
| | | { |
| | |
| | | { |
| | | 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++) |
| | | { |
| | |
| | | |
| | | 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 |
| | |
| | | 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); |
| | |
| | | |
| | | 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); |