Przeglądaj źródła

1 revise reservoir check other module is in direplen logic

chenzk 1 tydzień temu
rodzic
commit
ef96c40c46
1 zmienionych plików z 20 dodań i 5 usunięć
  1. 20 5
      PunkHPX8_RT/Devices/Reservoir/ReservoirDevice.cs

+ 20 - 5
PunkHPX8_RT/Devices/Reservoir/ReservoirDevice.cs

@@ -181,6 +181,10 @@ namespace PunkHPX8_RT.Devices.Reservoir
         /// 单次补水是否超时
         /// </summary>
         protected bool _isDIReplenPerfillTimeOut = false;
+        /// <summary>
+        /// 是否有其他DIReplen的警告
+        /// </summary>
+        private bool _isOtherDIReplenWarnOn = false;
         #endregion
 
         #region 属性
@@ -1183,21 +1187,32 @@ namespace PunkHPX8_RT.Devices.Reservoir
             {
                 if (item != Module)
                 {
-                    ReservoirDevice tmpDevice = DEVICE.GetDevice<ReservoirDevice>(item);
-                    if (tmpDevice.ReservoirData.CaDiReplen)
-                    {
-                        return true;
-                    }
                     ReservoirItem reservoirItem = ReservoirItemManager.Instance.GetReservoirItem(item);
                     if (reservoirItem.SubType == ReservoirType.DegasMembrance.ToString())
                     {
+                        DMReservoirDevice tmpDevice = DEVICE.GetDevice<DMReservoirDevice>(item);
                         if (tmpDevice.ReservoirData.AnDiReplen)
                         {
+                            if (!_isOtherDIReplenWarnOn)
+                            {
+                                _isOtherDIReplenWarnOn = true;
+                                LOG.WriteLog(eEvent.WARN_RESERVOIR, Module, $"{item} AN DiReplen valve is on. {Module} is waiting DiReplen");
+                            }
+                            return true;
+                        }
+                        if (tmpDevice.ReservoirData.CaDiReplen)
+                        {
+                            if (!_isOtherDIReplenWarnOn)
+                            {
+                                _isOtherDIReplenWarnOn = true;
+                                LOG.WriteLog(eEvent.WARN_RESERVOIR, Module, $"{item} CA DiReplen valve is on. {Module} is waiting DiReplen");
+                            }
                             return true;
                         }
                     }
                 }
             }
+            _isOtherDIReplenWarnOn = false;
             return false;
         }
         #endregion