| | |
| | | [HttpGet] |
| | | public List<PlanAnaDto> Calculate_debug() |
| | | { |
| | | var path = @"D:\WorkData\IStation\result_1024lq.json"; |
| | | var path = @"D:\WorkData\IStation\result_1102.json"; |
| | | if (!System.IO.File.Exists(path)) |
| | | return null; |
| | | |
| | |
| | | { |
| | | _dict = new Dictionary<int, StationInfo>(); |
| | | |
| | | // åºæ°´æ»ç®¡åå, æ²¡ææ°æ® |
| | | //_dict.Add(15, new StationInfo(19, new IStation.Calculation.shyséæ³½æ³µç«()));//NG åºæ°´æ»ç®¡åå,ç¬æ¶æµéæ²¡ææ°æ® ä¸é«æ°æ®ä¸å
¨ |
| | | //_dict.Add(9, new StationInfo(8, new IStation.Calculation.shys徿³¾æ³µç«()));//NG æ²¡ææ°´æ± æ°´ä½,è¿æ°´ååé«äºåºæ°´åå |
| | | //_dict.Add(6, new StationInfo(4, new IStation.Calculation.shys严桥泵ç«()));//NG æ²¡ææµéæ°æ®, 没æåºå£æ¶²ä½æ°æ® |
| | | //_dict.Add(3, new StationInfo(9, new IStation.Calculation.shysäºå·æ²éæµ·æ¹å()));//NG åºå£ååæçæ¯1MPa æç3MPa æ³µç«æ ¹æ¬è¾¾ä¸å°è¿ä¸ªåå |
| | | |
| | | //_dict.Add(6, new StationInfo(4, new IStation.Calculation.shys严桥泵ç«()));//NG æ²¡ææµéæ°æ®, 没æåºå£æ¶²ä½æ°æ® |
| | | //_dict.Add(10, new StationInfo(10, new IStation.Calculation.shyséæµ·æ³µç«()));//NG ç®¡è·¯ä¸ è¿å£åå:0.1259MPa,åºå£åå:0.2135MPa,约8.8mæ¬ç¨,æµéè¦æ±:11596, æ³µé¢å®æ¬ç¨ä¸º47m,åé¢ä¹æ æ³å¾å°å¦æ¤ä½çæ¬ç¨ |
| | | //_dict.Add(12, new StationInfo(15, new IStation.Calculation.shyséè¡ä¸è¾()));//NG 没ææä¾ _0402010503030202003 ä¸å·ç®¡åºå£æµéå¼ |
| | | //_dict.Add(7, new StationInfo(6, new IStation.Calculation.shys临æ±1å·æ³µæ¿())); //NG 没ææä¾ æµé ,æ æ³è®¡ç® |
| | | |
| | | //_dict.Add(11, new StationInfo(11, new IStation.Calculation.shys忱忳µç«()));//NG ç®¡è·¯ä¸ è¿å£åå: 6MPa , ä¸å¯è½è¾¾å°è¿ä¹é«åå |
| | | //_dict.Add(16, new StationInfo(20, new IStation.Calculation.shysæ¾æ±æ³µç«()));//NG 没ææä¾ åºæ°´æ»ç®¡åå åæµé ,æ æ³è®¡ç® |
| | | //_dict.Add(17, new StationInfo(21, new IStation.Calculation.shys大桥泵ç«())); // NG 没ææä¾ æµé ,æ æ³è®¡ç® |
| | |
| | | // _dict.Add(14, new StationInfo(17, new IStation.Calculation.shysæ³°åæ³µç«()));//NG 管路äºè°åº¦æ¹æ¡æ æ³è®¡ç®,è¯·ç¡®è®¤æ°æ®æ¯å¦åç,è¿å£åå:0.12395039999999999MPa,åºå£åå:0.14949020652770995MPa,æµéè¦æ±:4180.51220703125" |
| | | |
| | | #if (DEBUG) |
| | | _dict.Add(1, new StationInfo(2, new IStation.Calculation.shysé¿å
´æ³µç«()));//OK |
| | | _dict.Add(2, new StationInfo(12, new IStation.Calculation.shysäºå·æ²åæ¡¥æ¹å()));//ok |
| | | _dict.Add(4, new StationInfo(3, new IStation.Calculation.shysäºå·æ²ä¸¥æ¡¥æ¹å1()));//OK |
| | | _dict.Add(5, new StationInfo(5, new IStation.Calculation.shysäºå·æ²ä¸¥æ¡¥æ¹å2()));//OK |
| | | _dict.Add(13, new StationInfo(16, new IStation.Calculation.shyséè¡äºè¾()));//ok |
| | | _dict.Add(8, new StationInfo(7, new IStation.Calculation.shys临æ±2å·æ³µæ¿()));//ok |
| | | |
| | | _dict.Add(11, new StationInfo(11, new IStation.Calculation.shys忱忳µç«())); |
| | | |
| | | #else |
| | | _dict.Add(3, new StationInfo(9, new IStation.Calculation.shysäºå·æ²éæµ·æ¹å())); //ok |
| | | _dict.Add(15, new StationInfo(19, new IStation.Calculation.shyséæ³½æ³µç«()));//ok |
| | | _dict.Add(9, new StationInfo(8, new IStation.Calculation.shys徿³¾æ³µç«())); //OK |
| | | _dict.Add(1, new StationInfo(2, new IStation.Calculation.shysé¿å
´æ³µç«()));//OK |
| | | _dict.Add(2, new StationInfo(12, new IStation.Calculation.shysäºå·æ²åæ¡¥æ¹å()));//ok |
| | | _dict.Add(4, new StationInfo(3, new IStation.Calculation.shysäºå·æ²ä¸¥æ¡¥æ¹å1()));//OK |
| | |
| | | public shys忱忳µç«() |
| | | { |
| | | this._corpID = 4; |
| | | this._dispatchAnaCalc = new IStation.Calculation.DispatchAna.Calculator_OptAna_General(); |
| | | this._dispatchAnaCalc = new IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_åæ±å(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | new DispatchAna.Model.InletPipePara() |
| | | { |
| | | Name="è¿å£åå", |
| | | Name="è¿å£åå1", |
| | | IsWaterLevel=false, |
| | | Value = (inlet_press1.RecordValue+inlet_press2.RecordValue)/2 |
| | | Value = inlet_press1.RecordValue |
| | | }, |
| | | new DispatchAna.Model.InletPipePara() |
| | | { |
| | | Name="è¿å£åå2", |
| | | IsWaterLevel=false, |
| | | Value = inlet_press2.RecordValue |
| | | } |
| | | }; |
| | | complex_dispatch_request.OutletPipePara = new List<DispatchAna.Model.OutletPipePara>(); |
| | | complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() |
| | | { |
| | | Name = "æ»ç®¡è·¯", |
| | | Name = "æ»ç®¡è·¯1", |
| | | IsWaterLevel = false, |
| | | TargetFlow = (pipe1_flow.RecordValue + pipe2_flow.RecordValue), |
| | | TargetPress = (pipe1_press.RecordValue + pipe2_press.RecordValue) / 2 |
| | | TargetFlow = pipe1_flow.RecordValue , |
| | | TargetPress = pipe1_press.RecordValue |
| | | }); |
| | | |
| | | complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() |
| | | { |
| | | Name = "æ»ç®¡è·¯2", |
| | | IsWaterLevel = false, |
| | | TargetFlow = pipe2_flow.RecordValue , |
| | | TargetPress = pipe2_press.RecordValue |
| | | }); |
| | | |
| | | error_info = null; |
| | | return complex_dispatch_request; |
| | |
| | | var pipe1_in_press = allRecords_hour.Find(x => x.MonitorTag == monitorè¿æ°´æ»ç®¡åå.Item1); |
| | | if (pipe1_in_press == null) |
| | | { |
| | | error_info = "徿³¾æ³µç«RecordValue æµç¹æªæ¾å°"; |
| | | error_info = "徿³¾æ³µç«è¿æ°´æ»ç®¡ååæµç¹æªæ¾å°"; |
| | | return null; |
| | | } |
| | | |
| | |
| | | return null; |
| | | } |
| | | |
| | | var water_level_value = pipe1_in_press.RecordValue * 100; |
| | | |
| | | complex_dispatch_request.CorpID = this._corpID; |
| | | complex_dispatch_request.StationID = this._stationID; |
| | | complex_dispatch_request.SchemeNumber = 1; |
| | | complex_dispatch_request.PressValueType = DispatchAna.Model.RequestParasComplex.ePressValueType.åå; |
| | | complex_dispatch_request.InletPipePara = new List<DispatchAna.Model.InletPipePara>() |
| | | { |
| | | new DispatchAna.Model.InletPipePara(){ Name="æ°´æ± ", Value = water_level_value} |
| | | new DispatchAna.Model.InletPipePara(){ Name="è¿å£åå", IsWaterLevel=false, Value = pipe1_in_press.RecordValue} |
| | | }; |
| | | complex_dispatch_request.OutletPipePara = new List<DispatchAna.Model.OutletPipePara>(); |
| | | complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() |
| | |
| | | return "åºæ°´æ»ç®¡åå"; |
| | | if (monitoråºæ°´æ»ç®¡ç¬æ¶æµé.Item1 == tagname) |
| | | return "åºæ°´æ»ç®¡ç¬æ¶æµé"; |
| | | if (monitoråæ± æ¶²ä½1.Item1 == tagname) |
| | | return "åæ± æ¶²ä½1"; |
| | | if (monitoråæ± æ¶²ä½2.Item1 == tagname) |
| | | return "åæ± æ¶²ä½2"; |
| | | if (monitoråæ± æ¶²ä½3.Item1 == tagname) |
| | | return "åæ± æ¶²ä½3"; |
| | | return "æªç¥æµç¹"; |
| | | } |
| | | /// <summary> |
| | |
| | | { |
| | | if (allRecords_hour == null || allRecords_hour.Count == 0) |
| | | { |
| | | error_info = "äºå·æ²åæ¡¥æ¹åæµç¹æ°æ®ä¸ºç©º"; |
| | | error_info = "éæ³½æ³µç«æµç¹æ°æ®ä¸ºç©º"; |
| | | return null; |
| | | } |
| | | var complex_dispatch_request = new DispatchAna.Model.RequestParasComplex(); |
| | | //var water_level = allRecords_hour.Find(x => x.MonitorTag == monitorè°èæ± æ¶²ä½.Item1); |
| | | //if (water_level == null) |
| | | //{ |
| | | // water_level = allRecords_hour.Find(x => x.MonitorTag == monitorè°èæ± æ¶²ä½.Item1); |
| | | // if (water_level == null) |
| | | // { |
| | | // error_info = "äºå·æ²åæ¡¥æ¹åæ°´åºæ¶²ä½æµç¹æªæ¾å°"; |
| | | // return null; |
| | | // } |
| | | //} |
| | | //var pipe1_flow = allRecords_hour.Find(x => x.MonitorTag == monitoråºæ°´æ»ç®¡ç¬æ¶æµé.Item1); |
| | | //if (pipe1_flow == null) |
| | | //{ |
| | | // error_info = "äºå·æ²åæ¡¥æ¹å水管é1æµéæµç¹æªæ¾å°"; |
| | | // return null; |
| | | //} |
| | | var water_level1 = allRecords_hour.Find(x => x.MonitorTag == monitoråæ± æ¶²ä½1.Item1); |
| | | if (water_level1 == null) |
| | | { |
| | | error_info = "éæ³½æ³µç«æ¶²ä½æµç¹1æªæ¾å°"; |
| | | return null; |
| | | } |
| | | var water_level2 = allRecords_hour.Find(x => x.MonitorTag == monitoråæ± æ¶²ä½2.Item1); |
| | | if (water_level2 == null) |
| | | { |
| | | error_info = "éæ³½æ³µç«æ¶²ä½æµç¹2æªæ¾å°"; |
| | | return null; |
| | | } |
| | | var water_level3 = allRecords_hour.Find(x => x.MonitorTag == monitoråæ± æ¶²ä½3.Item1); |
| | | if (water_level3 == null) |
| | | { |
| | | error_info = "éæ³½æ³µç«æ¶²ä½æµç¹3æªæ¾å°"; |
| | | return null; |
| | | } |
| | | double water_level = (water_level1.RecordValue + water_level2.RecordValue + water_level3.RecordValue) / 3; |
| | | |
| | | //var pipe1_press = allRecords_hour.Find(x => x.MonitorTag == monitoråºæ°´æ»ç®¡åå.Item1); |
| | | //if (pipe1_press == null) |
| | | //{ |
| | | // error_info = "äºå·æ²åæ¡¥æ¹å水管é1ååæµç¹æªæ¾å°"; |
| | | // return null; |
| | | //} |
| | | var pipe1_flow = allRecords_hour.Find(x => x.MonitorTag == monitoråºæ°´æ»ç®¡ç¬æ¶æµé.Item1); |
| | | if (pipe1_flow == null) |
| | | { |
| | | error_info = "éæ³½æ³µç«æ°´ç®¡é1æµéæµç¹æªæ¾å°"; |
| | | return null; |
| | | } |
| | | |
| | | var pipe1_press = allRecords_hour.Find(x => x.MonitorTag == monitoråºæ°´æ»ç®¡åå.Item1); |
| | | if (pipe1_press == null) |
| | | { |
| | | error_info = "éæ³½æ³µç«æ°´ç®¡é1ååæµç¹æªæ¾å°"; |
| | | return null; |
| | | } |
| | | |
| | | |
| | | complex_dispatch_request.CorpID = this._corpID; |
| | |
| | | complex_dispatch_request.PressValueType = DispatchAna.Model.RequestParasComplex.ePressValueType.åå; |
| | | complex_dispatch_request.InletPipePara = new List<DispatchAna.Model.InletPipePara>() |
| | | { |
| | | //new DispatchAna.Model.WaterLevelPara(){ Name="æ°´æ± ", Value = water_level.RecordValue} |
| | | new DispatchAna.Model.InletPipePara(){ Name="æ°´æ± ", Value = water_level} |
| | | }; |
| | | complex_dispatch_request.OutletPipePara = new List<DispatchAna.Model.OutletPipePara>(); |
| | | complex_dispatch_request.OutletPipePara.Add(new DispatchAna.Model.OutletPipePara() |
| | | { |
| | | Name = "æ»ç®¡è·¯", |
| | | //TargetFlow = pipe1_flow.RecordValue, |
| | | //TargetPress = pipe1_press.RecordValue, |
| | | TargetFlow = pipe1_flow.RecordValue, |
| | | TargetPress = pipe1_press.RecordValue, |
| | | }); |
| | | |
| | | |
| | |
| | | /// </summary> |
| | | private Tuple<string, long> monitoråºæ°´åæ±1åå = new Tuple<string, long>("_0402010502090105011", |
| | | IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_éæµ·æ³µç«._monitor_id_ä¸å·ç®¡åå_åæ±1); |
| | | private Tuple<string, long> monitoråºæ°´åæ±1æµé = new Tuple<string, long>("_0402010502090103013", 616); |
| | | private Tuple<string, long> monitoråºæ°´åæ±1æµé = new Tuple<string, long>("_0402010502090103013", |
| | | IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_éæµ·æ³µç«._monitor_id_ä¸å·ç®¡æµé_åæ±1); |
| | | |
| | | private Tuple<string, long> monitoråºæ°´åæ±2åå = new Tuple<string, long>("_0402010502090105012", 618); |
| | | private Tuple<string, long> monitoråºæ°´åæ±2æµé = new Tuple<string, long>("_0402010502090103014", 619); |
| | | private Tuple<string, long> monitoråºæ°´åæ±2åå = new Tuple<string, long>("_0402010502090105012", |
| | | IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_éæµ·æ³µç«._monitor_id_äºå·ç®¡åå_åæ±2); |
| | | private Tuple<string, long> monitoråºæ°´åæ±2æµé = new Tuple<string, long>("_0402010502090103014", |
| | | IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_éæµ·æ³µç«._monitor_id_äºå·ç®¡æµé_åæ±2); |
| | | |
| | | private Tuple<string, long> monitoråºæ°´å·æ²åå = new Tuple<string, long>("_0402010502090105013", 621); |
| | | private Tuple<string, long> monitoråºæ°´å·æ²æµé = new Tuple<string, long>("_0402010502090103015", 622); |
| | | private Tuple<string, long> monitoråºæ°´å·æ²åå = new Tuple<string, long>("_0402010502090105013", |
| | | IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_éæµ·æ³µç«._monitor_id_ä¸å·ç®¡åå_å·æ²); |
| | | private Tuple<string, long> monitoråºæ°´å·æ²æµé = new Tuple<string, long>("_0402010502090103015", |
| | | IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_éæµ·æ³µç«._monitor_id_ä¸å·ç®¡æµé_å·æ²); |
| | | |
| | | //private Tuple<string, long> monitoråºæ°´å·æ²æ»ç®¡è¿æ°´åå = new Tuple<string, long>("_0402010502090105013", 613); |
| | | private Tuple<string, long> monitorè¿æ°´æ»ç®¡åå1 = new Tuple<string, long>("_0402010502090105001", 611); |
| | | private Tuple<string, long> monitorè¿æ°´æ»ç®¡åå2 = new Tuple<string, long>("_0402010502090205001", 613); |
| | | private Tuple<string, long> monitorè¿æ°´æ»ç®¡åå1 = new Tuple<string, long>("_0402010502090105001", |
| | | IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_éæµ·æ³µç«._monitor_id_ä¸å·è¿å£ç®¡_åå); |
| | | private Tuple<string, long> monitorè¿æ°´æ»ç®¡åå2 = new Tuple<string, long>("_0402010502090205001", |
| | | IStation.Calculation.DispatchAna.Calculator_OptAna_SHYS_éæµ·æ³µç«._monitor_id_äºå·è¿å£ç®¡_åå); |
| | | |
| | | public override bool Isæ¶²ä½Monitor(string tagname) |
| | | { |
| | | return false; |
| | | } |
| | | public override string GetMonitorNameByTag(string tagname) |
| | | { |
| | | if (monitoråºæ°´åæ±1åå.Item1 == tagname) |
| | |
| | | sum.WP = CalculateWP(sum.Dt, sum.Qt); |
| | | return sum; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | /// <param name="pipes"></param> |
| | | /// <returns></returns> |
| | | protected static double CalcConnectPipeEta(List<IStation.Calculation.DispatchAna.Model.AnaScheme> pipes) |
| | | { |
| | | double eta = 0; |
| | | double qh = 0; |
| | | int count = 0; |
| | | foreach (var pipe in pipes) |
| | | { |
| | | if (pipe == null) |
| | | continue; |
| | | if (pipe.TotalWrkQ < 1 || pipe.TotalWrkH < 0.1) |
| | | continue; |
| | | qh += pipe.TotalWrkQ * pipe.TotalWrkH; |
| | | eta += pipe.TotalWrkQ * pipe.TotalWrkH * pipe.TotalWrkE; |
| | | count++; |
| | | } |
| | | if (count <= 0) |
| | | return 0; |
| | | return Math.Round(eta / qh, 2); |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | if (complex_request_paras.InletPipePara.Count == 1) |
| | | { |
| | | water_level = complex_request_paras.InletPipePara[0].Value; |
| | | water_level = complex_request_paras.InletPipePara.First().Value; |
| | | } |
| | | else |
| | | {//ç¨å¹³åå¼ |
| | | water_level = complex_request_paras.InletPipePara[0].Value + |
| | | complex_request_paras.InletPipePara[1].Value; |
| | | water_level = water_level / 2; |
| | | } |
| | | {//å¤ä¸ªç¨å¹³åå¼ |
| | | for (int i = 0; i < complex_request_paras.InletPipePara.Count; i++) |
| | | { |
| | | water_level += complex_request_paras.InletPipePara[i].Value; |
| | | } |
| | | water_level = water_level / complex_request_paras.InletPipePara.Count; |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | plan.TotalWrkQ = result_1.TotalWrkQ + result_2.TotalWrkQ; |
| | | plan.TotalWrkH = result_1.TotalWrkH + result_2.TotalWrkH; |
| | | plan.TotalWrkP = result_1.TotalWrkP + result_2.TotalWrkP; |
| | | plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP); |
| | | plan.TotalWrkE = Math.Round( (result_1.TotalWrkQ * result_1.TotalWrkH * result_1.TotalWrkE + |
| | | result_2.TotalWrkQ * result_2.TotalWrkH * result_2.TotalWrkE) / (result_1.TotalWrkQ * result_1.TotalWrkH + |
| | | result_2.TotalWrkQ * result_2.TotalWrkH),2) ; |
| | | plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH); |
| | | plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ); |
| | | |
| | |
| | | inlet_press = complex_request_paras.InletPipePara[0].Value; |
| | | } |
| | | } |
| | | double water_level = inlet_press * 102; |
| | | |
| | | |
| | | |
| | | //æºæ³µä¿¡æ¯ |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | double outlet_press = (pipe1_TargetPess + pipe2_TargetPess) / 2; |
| | | |
| | | Common.DispatchAnaGeneralHelperåå calc_pipe1_helper = |
| | | new Common.DispatchAnaGeneralHelperåå(); |
| | | |
| | | |
| | | |
| | | |
| | | calc_pipe1_helper.InitialParas( |
| | | pipe1_TargetFlow + pipe2_TargetFlow, |
| | | water_level,true , |
| | | (pipe1_TargetPess + pipe2_TargetPess) / 2,false , |
| | | null, null, |
| | | _allMachineList, |
| | | machine_run_status == null ? null : machine_run_status.MachineRunFilter); |
| | | Common.DispatchAnaGeneralHelperåå calc_pipe1_helper = new Common.DispatchAnaGeneralHelperåå(); |
| | | |
| | | return calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); |
| | | |
| | | |
| | | calc_pipe1_helper.InitialParas( |
| | | pipe1_TargetFlow + pipe2_TargetFlow, |
| | | inlet_press, false, |
| | | outlet_press, false, |
| | | null, null, |
| | | _allMachineList, |
| | | machine_run_status == null ? null : machine_run_status.MachineRunFilter); |
| | | |
| | | return calc_pipe1_helper.CalcOptList(complex_request_paras.SchemeSortType, 3); |
| | | } |
| | | |
| | | |
| | |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | static public long _monitor_id_ä¸å·è¿å£ç®¡_åå = 611; |
| | | static public long _monitor_id_ä¸å·è¿å£ç®¡_åå = 611; |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | |
| | | var connect_scheme = new Model.AnaScheme(); |
| | | connect_scheme.ID = 1; |
| | | connect_scheme.TotalWrkQ = Math.Round(totalQ, 1); |
| | | connect_scheme.TotalWrkH = Math.Round(totalH / totalH,2); |
| | | connect_scheme.TotalWrkH = Math.Round(totalH / pipe_count, 2); |
| | | connect_scheme.TotalWrkP = Math.Round(totalP, 1); |
| | | connect_scheme.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH, connect_scheme.TotalWrkP); |
| | | connect_scheme.UWP = CalculateUWP(connect_scheme.TotalWrkP, connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH); |
| | |
| | | inlet_press = inlet_press / 2; |
| | | } |
| | | } |
| | | double water_level = inlet_press * 100; |
| | | |
| | | |
| | | |
| | | double pipe1_TargetFlow = complex_request_paras.OutletPipePara[0].TargetFlow; |
| | |
| | | { |
| | | calc_pipe1_helper.InitialParas( |
| | | pipe1_TargetFlow, |
| | | water_level,true, |
| | | inlet_press, false , |
| | | pipe1_TargetPess,false, |
| | | null, null, |
| | | (from x in _allMachineList where pipe1_machineIds.Contains(x.MachineID) select x).ToList(), |
| | |
| | | { |
| | | calc_pipe2_helper.InitialParas( |
| | | pipe2_TargetFlow, |
| | | water_level,true , |
| | | inlet_press, false, |
| | | pipe2_TargetPess,false , |
| | | null, null, |
| | | (from x in _allMachineList where pipe2_machineIds.Contains(x.MachineID) select x).ToList(), |
| | |
| | | { |
| | | calc_pipe3_helper.InitialParas( |
| | | pipe3_TargetFlow, |
| | | water_level, true, |
| | | inlet_press, false, |
| | | pipe3_TargetPess,false , |
| | | null, null, |
| | | (from x in _allMachineList where pipe3_machineIds.Contains(x.MachineID) select x).ToList(), |
| | |
| | | var plan = new Model.AnaScheme(); |
| | | plan.ID = 1; |
| | | plan.TotalWrkQ = Math.Round(totalQ, 1); |
| | | plan.TotalWrkH = Math.Round(totalH / totalH, 2); |
| | | plan.TotalWrkH = Math.Round(totalH / pipe_count, 2); |
| | | plan.TotalWrkP = Math.Round(totalP, 1); |
| | | |
| | | plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP); |
| | | |
| | | |
| | | plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH); |
| | | plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ); |
| | | |
| | |
| | | |
| | | return new List<Model.AnaScheme>() { plan }; |
| | | } |
| | | |
| | | |
| | | |
| | | private List<IStation.Calculation.DispatchAna.Model.AnaScheme> CalcSchemesæ¬ç¨( |
| | |
| | | var plan = new Model.AnaScheme(); |
| | | plan.ID = 1; |
| | | plan.TotalWrkQ = Math.Round(totalQ, 1); |
| | | plan.TotalWrkH = Math.Round(totalH / totalH, 2); |
| | | plan.TotalWrkH = Math.Round(totalH / pipe_count, 2); |
| | | plan.TotalWrkP = Math.Round(totalP, 1); |
| | | plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP); |
| | | plan.TotalWrkE = CalcConnectPipeEta(new List<AnaScheme>() { pipe1_result, pipe2_result, pipe3_result }); |
| | | plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH); |
| | | plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ); |
| | | |
| | |
| | | var connect_scheme = new Model.AnaScheme(); |
| | | connect_scheme.ID = 1; |
| | | connect_scheme.TotalWrkQ = Math.Round(totalQ, 1); |
| | | connect_scheme.TotalWrkH = Math.Round(totalH / totalH,2); |
| | | connect_scheme.TotalWrkH = Math.Round(totalH / pipe_count, 2); |
| | | connect_scheme.TotalWrkP = Math.Round(totalP, 1); |
| | | connect_scheme.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH, connect_scheme.TotalWrkP); |
| | | connect_scheme.UWP = CalculateUWP(connect_scheme.TotalWrkP, connect_scheme.TotalWrkQ, connect_scheme.TotalWrkH); |
| | |
| | | double pipe3_TargetPess = complex_request_paras.OutletPipePara[2].TargetPress; |
| | | if (pipe1_TargetFlow > 50) |
| | | { |
| | | if (pipe1_TargetPess < water_level1/100 + 0.01) |
| | | if (pipe1_TargetPess < water_level1 / 102 + 0.01) |
| | | { |
| | | error_info = "ERROR 35,éè¡ä¸è¾éè¦ä¸å·ç®¡ååæªèµå¼"; |
| | | return default; |
| | |
| | | } |
| | | if (pipe2_TargetFlow > 50) |
| | | { |
| | | if (pipe2_TargetPess < water_level2 / 100 + 0.01) |
| | | if (pipe2_TargetPess < water_level2 / 102 + 0.01) |
| | | { |
| | | error_info = "ERROR 35,éè¡ä¸è¾éè¦äºå·ç®¡ååæªèµå¼"; |
| | | return default; |
| | |
| | | } |
| | | if (pipe3_TargetFlow > 50) |
| | | { |
| | | if (pipe3_TargetPess < water_level3 / 100 + 0.01) |
| | | if (pipe3_TargetPess < water_level3 / 102 + 0.01) |
| | | { |
| | | error_info = "ERROR 35,éè¡ä¸è¾éè¦ä¸å·ç®¡ååæªèµå¼"; |
| | | return default; |
| | |
| | | var plan = new Model.AnaScheme(); |
| | | plan.ID = 1; |
| | | plan.TotalWrkQ = Math.Round(totalQ, 1); |
| | | plan.TotalWrkH = Math.Round(totalH / totalH, 2); |
| | | plan.TotalWrkH = Math.Round(totalH / pipe_count, 2); |
| | | plan.TotalWrkP = Math.Round(totalP, 1); |
| | | plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP); |
| | | plan.TotalWrkE = CalcConnectPipeEta(new List<AnaScheme>() { pipe1_result, pipe2_result, pipe3_result }); |
| | | plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH); |
| | | plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ); |
| | | |
| | |
| | | var plan = new Model.AnaScheme(); |
| | | plan.ID = 1; |
| | | plan.TotalWrkQ = Math.Round(totalQ, 1); |
| | | plan.TotalWrkH = Math.Round(totalH / totalH, 2); |
| | | plan.TotalWrkH = Math.Round(totalH / pipe_count, 2); |
| | | plan.TotalWrkP = Math.Round(totalP, 1); |
| | | plan.TotalWrkE = IStation.Common.PumpParaHelper.CalculateE(plan.TotalWrkQ, plan.TotalWrkH, plan.TotalWrkP); |
| | | plan.TotalWrkE = CalcConnectPipeEta(new List<AnaScheme>() { pipe1_result, pipe2_result, pipe3_result }); |
| | | plan.UWP = CalculateUWP(plan.TotalWrkP, plan.TotalWrkQ, plan.TotalWrkH); |
| | | plan.WP = CalculateWP(plan.TotalWrkP, plan.TotalWrkQ); |
| | | |
| | |
| | | out string error_info) |
| | | { |
| | | var isUsePress = complex_request_paras.PressValueType == Model.RequestParasComplex.ePressValueType.åå ? true : false; |
| | | |
| | | if (eta_ana_records != null && eta_ana_records.Q.HasValue && eta_ana_records.H.HasValue) |
| | | { |
| | | if (complex_request_paras.OutletPipePara[0].TargetFlow < 50 || |
| | | complex_request_paras.OutletPipePara[1].TargetFlow < 50) |
| | | { |
| | | complex_request_paras.ValvePara[0].OpenStatus = 0;//å
³é |
| | | if (complex_request_paras.OutletPipePara[0].TargetFlow < 50) |
| | | { |
| | | complex_request_paras.OutletPipePara[0].TargetFlow = 0; |
| | | complex_request_paras.OutletPipePara[1].TargetFlow = eta_ana_records.Q.Value; |
| | | |
| | | complex_request_paras.OutletPipePara[0].TargetPress = eta_ana_records.H.Value; |
| | | complex_request_paras.OutletPipePara[1].TargetPress = eta_ana_records.H.Value; |
| | | } |
| | | else |
| | | { |
| | | complex_request_paras.OutletPipePara[1].TargetFlow = 0; |
| | | complex_request_paras.OutletPipePara[0].TargetFlow = eta_ana_records.Q.Value; |
| | | |
| | | complex_request_paras.OutletPipePara[0].TargetPress = eta_ana_records.H.Value; |
| | | complex_request_paras.OutletPipePara[1].TargetPress = eta_ana_records.H.Value; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | complex_request_paras.OutletPipePara[0].TargetPress = eta_ana_records.H.Value; |
| | | complex_request_paras.OutletPipePara[1].TargetPress = eta_ana_records.H.Value; |
| | | } |
| | | |
| | | } |
| | | |
| | | if (isUsePress) |
| | | return CalcSchemesåå(complex_request_paras, machine_run_status, out error_info); |
| | | else |
| | |
| | | return null; |
| | | } |
| | | |
| | | double target_press = complex_request_paras.OutletPipePara[0].TargetPress; |
| | | if (target_press < 0.01) |
| | | double outlet_para_value = complex_request_paras.OutletPipePara[0].TargetPress; |
| | | bool outlet_isWaterLevel = complex_request_paras.OutletPipePara[0].IsWaterLevel; |
| | | if (outlet_para_value < 0.01) |
| | | { |
| | | error_info = "ååå¼è¿ä½, 请确认æ¯å¦èµå¼, ERROR 68"; |
| | | return null; |
| | | } |
| | | |
| | | double water_level = 0;//æ°´ä½ |
| | | double inlet_para_value = 0;//æ°´ä½ |
| | | bool inlet_isWaterLevel = true; |
| | | if (complex_request_paras.InletPipePara != null && complex_request_paras.InletPipePara.Count > 0) |
| | | { |
| | | water_level = complex_request_paras.InletPipePara.First().Value; |
| | | if (!complex_request_paras.InletPipePara.First().IsWaterLevel) |
| | | {//æ¢æM |
| | | water_level = water_level * 102; |
| | | inlet_isWaterLevel = complex_request_paras.InletPipePara.First().IsWaterLevel; |
| | | if (complex_request_paras.InletPipePara.Count == 1) |
| | | { |
| | | inlet_para_value = complex_request_paras.InletPipePara.First().Value; |
| | | } |
| | | else |
| | | {//å¤ä¸ªç¨å¹³åå¼ |
| | | for (int i = 0; i < complex_request_paras.InletPipePara.Count; i++) |
| | | { |
| | | inlet_para_value += complex_request_paras.InletPipePara[i].Value; |
| | | } |
| | | inlet_para_value = inlet_para_value / complex_request_paras.InletPipePara.Count; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | if(allMachineList == null) |
| | | if (allMachineList == null) |
| | | { |
| | | if (!BuildMachineList( |
| | | out allMachineList, |
| | |
| | | new IStation.Calculation.DispatchAna.Common.DispatchAnaGeneralHelperåå(); |
| | | calc_pipe_helper.InitialParas( |
| | | target_flow, |
| | | water_level,true , |
| | | target_press,false , |
| | | inlet_para_value, inlet_isWaterLevel, |
| | | outlet_para_value, outlet_isWaterLevel, |
| | | complex_request_paras.OutletPipePara[0].TargetFlowRangeMin, |
| | | complex_request_paras.OutletPipePara[0].TargetFlowRangeMax, |
| | | allMachineList, |
| | |
| | | flow = Math.Round(flow, 1); |
| | | |
| | | var head = IStation.Model.FitCurveHelper.GetFitPointY(ana_data.CurveInfoQH, Math.Round(flow, 1)); |
| | | head = Math.Round(head, 1); |
| | | head = Math.Round(head, 2); |
| | | ana_data.WorkPointQ = flow; |
| | | ana_data.WorkPointH = head; |
| | | ana_data.WorkPointP = Math.Round(IStation.Model.FitCurveHelper.GetFitPointY(ana_data.CurveInfoQP, ana_data.WorkPointQ), 1); |
| | | if(ana_data.WorkPointP < 0.1) |
| | | { |
| | | if(ana_data.WorkPointQ > ana_data.CurveInfoQP.Max) |
| | | { |
| | | ana_data.WorkPointP = Math.Round(IStation.Model.FitCurveHelper.GetFitPointY(ana_data.CurveInfoQP, ana_data.CurveInfoQP.Max ), 1); |
| | | } |
| | | else |
| | | { |
| | | return 0; |
| | | } |
| | | |
| | | } |
| | | |
| | | ana_data.WorkPointE = Math.Round(IStation.Common.PumpParaHelper.CalculateE(ana_data.WorkPointQ, ana_data.WorkPointH, ana_data.WorkPointP), 1); |
| | | |
| | | ana_data.IsExtendCurve = false; |
| | |
| | | { |
| | | this.DefinePoints = express.DefinePoints; |
| | | } |
| | | else if(fitType == eCurveFitType.ThroughPoint) |
| | | else if (fitType == eCurveFitType.ThroughPoint) |
| | | { |
| | | this.DefinePoints = express.DefinePoints; |
| | | } |