Parcourir la source

revise return valve adjust logic

chenzk il y a 4 jours
Parent
commit
5fdb5e7ebb
1 fichiers modifiés avec 45 ajouts et 14 suppressions
  1. 45 14
      PunkHPX8_RT/Devices/Reservoir/ReservoirDevice.cs

+ 45 - 14
PunkHPX8_RT/Devices/Reservoir/ReservoirDevice.cs

@@ -472,28 +472,59 @@ namespace PunkHPX8_RT.Devices.Reservoir
                     int _overflowLevelCheckTime = SC.GetValue<int>($"Reservoir.{Module}.OverflowLevelCheckTime");
                     int _retrunOpenHoldStep = SC.GetValue<int>($"Reservoir.{Module}.RetrunOpenHoldStep");
                     int _retrunOpenRampStep = SC.GetValue<int>($"Reservoir.{Module}.RetrunOpenRampStep");
-                    int adjustNumber = "Full".Equals(_platingCellDevice.PlatingCellDeviceData.OverFlowStatus) ? _retrunOpenHoldStep : _retrunOpenRampStep;
-                    if (overflow > _lastOverFlow)//液位升高的情况
+                    bool _isFull = "Full".Equals(_platingCellDevice.PlatingCellDeviceData.OverFlowStatus);
+                    int adjustNumber = _isFull ? _retrunOpenHoldStep : _retrunOpenRampStep;
+                    if (_isFull) //full的情况
                     {
-                        if (overflow - _lastOverFlow > _overflowLevelDelta && DateTime.Now.Subtract(_adjustReturnvalveStartTime).TotalMilliseconds > _overflowLevelCheckTime)
+                        if (overflow > _lastOverFlow)//液位升高的情况
                         {
-                            double percent = ReservoirData.ReturnValveOpening - adjustNumber;
-                            percent = percent >= 0 ? percent : 0;
-                            ReturnValvePercent(percent);
-                            _lastOverFlow = overflow;
-                            _adjustReturnvalveStartTime = DateTime.Now;
+                            if (overflow - _lastOverFlow > _overflowLevelDelta && DateTime.Now.Subtract(_adjustReturnvalveStartTime).TotalMilliseconds > _overflowLevelCheckTime)
+                            {
+                                double percent = ReservoirData.ReturnValveOpening - adjustNumber;
+                                percent = percent >= 0 ? percent : 0;
+                                ReturnValvePercent(percent);
+                                _lastOverFlow = overflow;
+                                _adjustReturnvalveStartTime = DateTime.Now;
+                            }
+                        }
+                        else
+                        {
+                            if (_lastOverFlow - overflow > _overflowLevelDelta && DateTime.Now.Subtract(_adjustReturnvalveStartTime).TotalMilliseconds > _overflowLevelCheckTime)
+                            {
+                                double percent = ReservoirData.ReturnValveOpening + adjustNumber;
+                                percent = percent <= 100 ? percent : 100;
+                                ReturnValvePercent(percent);
+                                _lastOverFlow = overflow;
+                                _adjustReturnvalveStartTime = DateTime.Now;
+                            }
                         }
                     }
-                    else
+                    else //empty或者high的情况
                     {
-                        if (_lastOverFlow - overflow > _overflowLevelDelta && DateTime.Now.Subtract(_adjustReturnvalveStartTime).TotalMilliseconds > _overflowLevelCheckTime)
+                        if ("High".Equals(_platingCellDevice.PlatingCellDeviceData.OverFlowStatus))
+                        {
+                            if (DateTime.Now.Subtract(_adjustReturnvalveStartTime).TotalMilliseconds > _overflowLevelCheckTime)
+                            {
+                                double percent = ReservoirData.ReturnValveOpening - adjustNumber;
+                                percent = percent >= 0 ? percent : 0;
+                                ReturnValvePercent(percent);
+                                _lastOverFlow = overflow;
+                                _adjustReturnvalveStartTime = DateTime.Now;
+                            }
+                        }
+                        else
                         {
-                            double percent = ReservoirData.ReturnValveOpening + adjustNumber;
-                            ReturnValvePercent(percent);
-                            _lastOverFlow = overflow;
-                            _adjustReturnvalveStartTime = DateTime.Now;
+                            if (DateTime.Now.Subtract(_adjustReturnvalveStartTime).TotalMilliseconds > _overflowLevelCheckTime)
+                            {
+                                double percent = ReservoirData.ReturnValveOpening + adjustNumber;
+                                percent = percent <= 100 ? percent : 100;
+                                ReturnValvePercent(percent);
+                                _lastOverFlow = overflow;
+                                _adjustReturnvalveStartTime = DateTime.Now;
+                            }
                         }
                     }
+                    
                 }
             }