Browse Source

add ReservoirData class

chenkui 1 day ago
parent
commit
1a8b939006

+ 1 - 2
Framework/Common/Common.csproj

@@ -212,11 +212,10 @@
     <Compile Include="CommonData\PowerSupplier\PowerSupplierStepPeriodData.cs" />
     <Compile Include="CommonData\Prewet\PrewetPumpData.cs" />
     <Compile Include="CommonData\Prewet\PrewetLotTrackData.cs" />
-    <Compile Include="CommonData\Reservoir\CompactMembranReservoirData.cs" />
     <Compile Include="CommonData\Reservoir\PMCounterCommonData.cs" />
     <Compile Include="CommonData\Reservoir\PMCounterNode.cs" />
     <Compile Include="CommonData\Reservoir\ReplenData.cs" />
-    <Compile Include="CommonData\Reservoir\StandardHotReservoirData.cs" />
+    <Compile Include="CommonData\Reservoir\ReservoirData.cs" />
     <Compile Include="CommonData\SchedulerWaferHolderModuleTime.cs" />
     <Compile Include="CommonData\SchedulerWaferHolderTime.cs" />
     <Compile Include="CommonData\SRD\SrdCommonData.cs" />

+ 0 - 124
Framework/Common/CommonData/Reservoir/CompactMembranReservoirData.cs

@@ -1,124 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace MECF.Framework.Common.CommonData.Reservoir
-{
-    public class CompactMembranReservoirData : NotifiableItem
-    {
-        #region 内部变量
-        private bool _caDiReplen;
-        private bool _anDiReplen;
-        private double _caLevel;
-        private double _caWaterLevel;
-        private double _anLevel;
-        private double _anWaterLevel;
-        private double _anPump;
-        private bool _crossDoseEnable;
-        private double _transferPumpSTMStatus;
-        private double _transferPumpPOSStatus;
-        private double _transferActualPosition;
-        private bool _transferPumpEnable;
-        private bool _transferPumpReset;
-        private bool _transferPumpExecute;
-        private double _transferPumpTargetPosition;
-        private double _transferPumpSpeed;
-        private double _transferPumpStartType;
-        private double _transferPumpAcceleration;
-        private double _transferPumpDeceleration;
-        private double _anBypassFlow;
-        private double _anADrainPump;
-        private double _anBDrainPump;
-        private bool _anSampleFlow;
-        private bool _caSampleFlow;
-        private bool _caPumpEnable;
-        private double _caPumpSpeed;
-        private bool _caPumpRunning;
-        private double _caHedFlow;
-        private bool _cdaFlowValve;
-        private bool _evaporatorLevel;
-        private bool _whClampOn;
-        private bool _whClampOff;
-        private bool _anByPass;
-        private bool _caByPass;
-        private bool _isDataInitialized;
-        private double _remainingCrossDoseVolume;
-        #endregion
-
-        #region 属性
-        public bool CADiReplen { get { return _caDiReplen; } set { _caDiReplen = value; InvokePropertyChanged(nameof(CADiReplen)); } }  
-
-        public bool ANDiReplen { get { return _anDiReplen; } set { _anDiReplen = value;InvokePropertyChanged(nameof(ANDiReplen)); } }
-
-        public double CALevel { get { return _caLevel; } set { _caLevel = value; InvokePropertyChanged(nameof(CALevel)); } }
-
-        public double CAWaterLevel { get { return _caWaterLevel; } set { _caWaterLevel = value; InvokePropertyChanged(nameof(CAWaterLevel)); } }
-
-        public double ANLevel { get { return _anLevel; } set { _anLevel = value;InvokePropertyChanged(nameof(ANLevel)); } }
-
-        public double ANWaterLevel { get { return _anWaterLevel; } set { _anWaterLevel=value; InvokePropertyChanged(nameof(ANWaterLevel)); } }
-
-        public double ANPump { get { return _anPump; } set { _anPump = value; InvokePropertyChanged(nameof(ANPump)); } }
-
-        public bool CrossDoseEnable { get { return _crossDoseEnable; } set { _crossDoseEnable = value; InvokePropertyChanged(nameof(CrossDoseEnable)); } }
-
-        public double TransferPumpSTMStatus { get { return _transferPumpSTMStatus; } set { _transferPumpSTMStatus = value; InvokePropertyChanged(nameof(TransferPumpSTMStatus)); } }
-
-        public double TransferPumpPOSStatus { get { return _transferPumpPOSStatus; } set { _transferPumpPOSStatus = value;InvokePropertyChanged(nameof(TransferPumpPOSStatus)); } }
-
-        public double TransferActualPosition { get { return _transferActualPosition; } set { _transferActualPosition = value; InvokePropertyChanged(nameof(TransferActualPosition)); } }
-
-        public bool TransferPumpEnable { get { return _transferPumpEnable; } set { _transferPumpEnable = value; InvokePropertyChanged(nameof(TransferPumpEnable)); } }
-
-        public bool TransferPumpReset { get { return _transferPumpReset; } set { _transferPumpReset = value; InvokePropertyChanged(nameof(TransferPumpReset)); } }
-
-        public bool TransferPumpExecute { get { return _transferPumpExecute; } set { _transferPumpExecute = value; InvokePropertyChanged(nameof(TransferPumpExecute)); } }
-
-        public double TransferPumpTargetPosition { get { return _transferPumpTargetPosition; } set { _transferPumpTargetPosition = value;InvokePropertyChanged(nameof(TransferPumpTargetPosition)); } }
-
-        public double TransferPumpSpeed { get { return _transferPumpSpeed; } set { _transferPumpSpeed = value; InvokePropertyChanged(nameof(TransferPumpSpeed)); } }
-
-        public double TransferStartType { get { return _transferPumpStartType; } set { _transferPumpStartType = value; InvokePropertyChanged(nameof(TransferStartType)); } }
-
-        public double TransferPumpAcceleration { get { return _transferPumpAcceleration; } set { _transferPumpAcceleration = value; InvokePropertyChanged(nameof(TransferPumpAcceleration)); } }
-
-        public double TransferPumpDeceleration { get { return _transferPumpDeceleration; } set { _transferPumpDeceleration = value; InvokePropertyChanged(nameof(TransferPumpDeceleration)); } }
-         
-        public double ANBypassFlow { get { return _anBypassFlow; } set { _anBypassFlow = value; InvokePropertyChanged(nameof(ANBypassFlow)); } }
-
-        public double ANADrainPump { get { return _anADrainPump; } set { _anADrainPump = value; InvokePropertyChanged(nameof(ANADrainPump)); } }
-
-        public double ANBDrainPump { get { return _anBDrainPump;} set { _anBDrainPump = value;InvokePropertyChanged(nameof(ANBDrainPump)); } }
-
-        public bool ANSampleFlow { get { return _anSampleFlow; } set { _anSampleFlow = value; InvokePropertyChanged(nameof(ANSampleFlow)); } }
-
-        public bool CASampleFlow { get { return _caSampleFlow; } set { _caSampleFlow = value; InvokePropertyChanged(nameof(CASampleFlow)); } }    
-
-        public bool CAPumpEnable { get { return _caPumpEnable; } set { _caPumpEnable = value;InvokePropertyChanged(nameof(CAPumpEnable)); } }
-
-        public double CAPumpSpeed { get { return _caPumpSpeed; } set { _caPumpSpeed = value; InvokePropertyChanged(nameof(CAPumpSpeed)); } }
-
-        public bool CAPumpRunning { get { return _caPumpRunning; } set { _caPumpRunning = value; InvokePropertyChanged(nameof(CAPumpRunning)); } }
-
-        public double CAHedFlow { get { return _caHedFlow; } set { _caHedFlow = value; InvokePropertyChanged(nameof(CAHedFlow)); } }
-
-        public bool CDAFlowValve { get { return _cdaFlowValve; } set { _cdaFlowValve = value; InvokePropertyChanged(nameof(CDAFlowValve)); } }
-        
-        public bool EvaporatorLevel { get { return _evaporatorLevel; } set { _evaporatorLevel = value; InvokePropertyChanged(nameof(EvaporatorLevel)); } }
-
-        public bool WHClampOn { get { return _whClampOn; } set { _whClampOn = value;InvokePropertyChanged(nameof(WHClampOn)); } }
-
-        public bool WHClampOff { get { return _whClampOff; } set { _whClampOff = value;InvokePropertyChanged(nameof(WHClampOff)); } }
-
-        public bool ANByPass { get { return _anByPass; } set { _anByPass = value;InvokePropertyChanged(nameof(ANByPass)); } }
-
-        public bool CAByPass { get { return _caByPass; } set { _caByPass = value;InvokePropertyChanged(nameof(CAByPass)); } }   
-
-        public bool IsDataInitialized { get { return _isDataInitialized; } set { _isDataInitialized = value; InvokePropertyChanged(nameof(IsDataInitialized)); } }
-
-        public double RemainingCrossDoseVolume { get { return _remainingCrossDoseVolume; } set { _remainingCrossDoseVolume = value; InvokePropertyChanged(nameof(RemainingCrossDoseVolume)); } }
-        #endregion
-    }
-}

+ 84 - 0
Framework/Common/CommonData/Reservoir/ReservoirData.cs

@@ -0,0 +1,84 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MECF.Framework.Common.CommonData.Reservoir
+{
+    public class ReservoirData: NotifiableItem
+    {
+        #region 属性
+        public bool CaPumpRunning { get { return _caPumpRunning; } set { _caPumpRunning = value;InvokePropertyChanged(nameof(CaPumpRunning)); } }
+
+        public bool AnTowerHigh { get { return _anTowerHigh; } set { _anTowerHigh = value;InvokePropertyChanged(nameof(AnTowerHigh)); } }
+
+        public bool AnTowerLow { get { return _anTowerLow; } set { _anTowerLow = value;InvokePropertyChanged(nameof(AnTowerLow)); } }
+
+        public double CaLevel { get{ return _caLevel; } set{ _caLevel = value;InvokePropertyChanged(nameof(CaLevel)); } }
+
+        public double CaWaterLevel { get { return _caWaterLevel; } set { _caWaterLevel = value;InvokePropertyChanged(nameof(CaWaterLevel)); } } 
+
+        public bool ReturnValveOpening { get { return _returnValveOpening; } set { _returnValveOpening = value;InvokePropertyChanged(nameof(ReturnValveOpening)); } }
+
+        public double AnFlow { get { return _anFlow; } set { _anFlow = value;InvokePropertyChanged(nameof(AnFlow)); } }
+
+        public bool AnPumpEnable { get { return _anPumpEnable; } set { _anPumpEnable = value;InvokePropertyChanged(nameof(AnPumpEnable)); } }   
+
+        public double AnPumpSpeed { get { return _anPumpSpeed; } set { _anPumpSpeed = value;InvokePropertyChanged(nameof(AnPumpSpeed)); } }
+
+        public double CaFlow { get { return _caFlow; } set { _caFlow = value; InvokePropertyChanged(nameof(CaFlow)); } }
+
+        public bool CaPumpEnable { get { return _caPumpEnable; } set { _caPumpEnable = value;InvokePropertyChanged(nameof (CaPumpEnable)); } }
+
+        public double CaPumpSpeed { get { return _caPumpSpeed; } set { _caPumpSpeed = value;InvokePropertyChanged(nameof(CaPumpSpeed)); } }
+
+        public bool ReturnValve { get { return _returnValve; } set { _returnValve = value;InvokePropertyChanged(nameof(ReturnValve)); } }
+
+        public double ReturnValvePercent { get { return _returnValvePercent; } set { _returnValvePercent = value; InvokePropertyChanged(nameof(ReturnValvePercent)); } }
+
+        public bool CaDiReplen { get { return _caDiReplen; } set { _caDiReplen = value;InvokePropertyChanged(nameof(CaDiReplen)); } }
+
+        public bool AnDiReplen { get { return _anDiReplen; } set { _anDiReplen = value;InvokePropertyChanged(nameof(AnDiReplen)); } }
+
+        public bool SampleOut { get { return _sampleOut; } set { _sampleOut = value;InvokePropertyChanged(nameof(SampleOut)); } }
+
+        public bool DegasEnable { get { return _degasEnable; } set { _degasEnable = value;InvokePropertyChanged(nameof(DegasEnable)); } }
+
+        public double HedFlow { get { return _hedFlow; } set { _hedFlow = value; InvokePropertyChanged(nameof(HedFlow)); } }
+
+        public bool HedFlowEnable { get { return _hedFlowEnable; } set { _hedFlowEnable = value;InvokePropertyChanged(nameof(HedFlowEnable)); } }
+
+        public bool PhFlowValve { get { return _phFlowValve; } set { _phFlowValve = value;InvokePropertyChanged(nameof (PhFlowValve)); } }
+
+        public double PHValue { get { return _phValue; } set { _phValue = value; InvokePropertyChanged(nameof(PHValue)); } }
+        public bool IsDataInitialized { get { return _isDataInitialized; } set { _isDataInitialized = value; InvokePropertyChanged(nameof(IsDataInitialized)); } }
+        #endregion
+
+        #region 内部变量
+        private bool _caPumpRunning;
+        private bool _anTowerHigh;
+        private bool _anTowerLow;
+        private double _caLevel;
+        private double _caWaterLevel;
+        private bool _returnValveOpening;
+        private double _anFlow;
+        private bool _anPumpEnable;
+        private double _anPumpSpeed;
+        private double _caFlow;
+        private bool _caPumpEnable;
+        private double _caPumpSpeed;
+        private bool _returnValve;
+        private double _returnValvePercent;
+        private bool _caDiReplen;
+        private bool _anDiReplen;
+        private bool _sampleOut;
+        private bool _degasEnable;
+        private double _hedFlow;
+        private bool _hedFlowEnable;
+        private bool _phFlowValve;
+        private double _phValue;
+        private bool _isDataInitialized;
+        #endregion
+    }
+}

+ 0 - 60
Framework/Common/CommonData/Reservoir/StandardHotReservoirData.cs

@@ -1,60 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace MECF.Framework.Common.CommonData.Reservoir
-{
-    public class StandardHotReservoirData : NotifiableItem
-    {
-        #region 内部变量
-        private double _flow;
-        private bool _diReplen;
-        private bool _isDataInitialized;
-        private bool _phFlowValve;
-        private double _phValue;
-        private double _level;
-        private double _waterLevel;
-        private bool _lowLevel;
-        private bool _highLevel;
-        private bool _safetyHighLevel;
-        private double _hedFlow;
-        private bool _resPowerOn;
-        private bool _hedPowerOn;
-        private List<bool> _replenLevel;
-        private bool _regulatePumpSignalIn;
-        private double _regulatePumpSpeed;
-        #endregion
-
-        #region 属性
-        public double Flow { get { return _flow; } set { _flow = value; InvokePropertyChanged(nameof(Flow)); } }
-        
-        public bool DiReplen { get { return _diReplen; } set { _diReplen = value;InvokePropertyChanged(nameof(DiReplen)); } }
-
-        public bool PHFlowValve { get { return _phFlowValve; } set { _phFlowValve = value;InvokePropertyChanged(nameof(PHFlowValve)); } }
-
-        public double PHValue { get { return _phValue; } set { _phValue = value; InvokePropertyChanged(nameof(PHValue)); }  }
-
-        public double Level { get { return _level; } set { _level = value; InvokePropertyChanged(nameof(Level)); } }
-
-        public double WaterLevel { get { return _waterLevel; } set { _waterLevel = value;InvokePropertyChanged(nameof(WaterLevel)); } }
-
-        public bool LowLevel { get { return _lowLevel; } set { _lowLevel = value; InvokePropertyChanged(nameof(LowLevel)); } }
-
-        public bool HighLevel { get { return _highLevel; } set { _highLevel = value; InvokePropertyChanged(nameof(HighLevel)); } }
-        
-        public bool SafetyHighLevel { get { return _safetyHighLevel; } set { _safetyHighLevel = value; InvokePropertyChanged(nameof(SafetyHighLevel)); } }
-
-        public double HedFlow { get { return _hedFlow; } set { _hedFlow = value;InvokePropertyChanged(nameof(HedFlow)); } } 
-
-        public bool IsDataInitialized { get { return _isDataInitialized; } set { _isDataInitialized = value; InvokePropertyChanged(nameof(IsDataInitialized)); } }
-        public bool HedPowerOn { get { return _hedPowerOn; } set { _hedPowerOn = value; InvokePropertyChanged(nameof(HedPowerOn)); } }
-        public bool ResPowerOn { get { return _resPowerOn; } set { _resPowerOn = value; InvokePropertyChanged(nameof(ResPowerOn)); } }
-        public List<bool> ReplenLevel { get { return _replenLevel; } set { _replenLevel = value; InvokePropertyChanged(nameof(ReplenLevel)); } }
-        public bool RegulatePumpSignalIn { get { return _regulatePumpSignalIn; } set { _regulatePumpSignalIn = value; InvokePropertyChanged(nameof(RegulatePumpSignalIn)); } }
-        public double RegulatePumpSpeed { get { return _regulatePumpSpeed; } set { _regulatePumpSpeed = value; InvokePropertyChanged(nameof(RegulatePumpSpeed)); } }
-        #endregion
-
-    }
-}

+ 0 - 2
Framework/Common/DataCenter/IQueryDataService.cs

@@ -179,8 +179,6 @@ namespace MECF.Framework.Common.DataCenter
     [ServiceKnownType(typeof(CommonLimitData))]
     [ServiceKnownType(typeof(RinseItem))]
     [ServiceKnownType(typeof(LinMotDeviceData))]
-	[ServiceKnownType(typeof(StandardHotReservoirData))]
-    [ServiceKnownType(typeof(CompactMembranReservoirData))]
     [ServiceKnownType(typeof(StandardHotMetalDeviceData))]
     [ServiceKnownType(typeof(CompactMembranMetalDeviceData))]
     [ServiceKnownType(typeof(StandardHotMetalDeviceData))]

+ 86 - 2
PunkHPX8_RT/Devices/Reservoir/ReservoirDevice.cs

@@ -1,12 +1,18 @@
-using Aitex.Core.RT.Device;
+using Aitex.Core.RT.DataCenter;
+using Aitex.Core.RT.Device;
 using Aitex.Core.RT.Log;
 using Aitex.Core.RT.OperationCenter;
 using Aitex.Core.Util;
+using MECF.Framework.Common.CommonData.Reservoir;
+using MECF.Framework.Common.IOCore;
 using MECF.Framework.Common.Persistent.Reservoirs;
+using MECF.Framework.Common.TwinCat;
+using MECF.Framework.Common.Utilities;
 using PunkHPX8_RT.Modules;
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Reflection;
 using System.Text;
 using System.Threading.Tasks;
 
@@ -18,6 +24,29 @@ namespace PunkHPX8_RT.Devices.Reservoir
         private const string AUTO = "Auto";
         private const string MANUAL = "Manual";
         private const string DISABLE = "Disable";
+
+        private const string CA_PUMP_RUNNING="CaPumpRunning";
+        private const string AN_TOWER_HIGH="AnTowerHigh";
+        private const string AN_TOWER_LOW="AnTowerLow";
+        private const string CA_LEVEL="CaLevel";
+        private const string CA_WATER_LEVEL="CaWaterLevel";
+        private const string AN_FLOW="AnFlow";
+        private const string AN_PUMP_ENABLE="AnPumpEnable";
+        private const string AN_PUMP_SPEED="AnPumpSpeed";
+        private const string CA_FLOW="CaFlow";
+        private const string CA_PUMP_ENABLE="CaPumpEnable";
+        private const string CA_PUMP_SPEED="CaPumpSpeed";
+        private const string RETURN_VALVE_OPENING="ReturnValveOpening";
+        private const string RETURN_VALVE="ReturnValve";
+        private const string RETURN_VALVE_PERCENT="ReturnValvePercent";
+        private const string CA_DI_REPLEN="CaDiReplen";
+        private const string AN_DI_REPLEN="AnDiReplen";
+        private const string SAMPLE_OUT="SampleOut";
+        private const string DEGAS_ENABLE="DegasEnable";
+        private const string HED_FLOW="HedFlow";
+        private const string HED_FLOW_ENABLE="HedFlowEnable";
+        private const string PH_FLOW_VALVE="PhFlowValve";
+        private const string PH_VALUE="PhValue";
         #endregion
 
         #region 内部变量
@@ -25,6 +54,15 @@ namespace PunkHPX8_RT.Devices.Reservoir
         /// Prewet 持久性数值对象
         /// </summary>
         private ReservoirsPersistentValue _persistentValue;
+
+        /// <summary>
+        /// 变量是否初始化字典
+        /// </summary>
+        private Dictionary<string, bool> _variableInitializeDic = new Dictionary<string, bool>();
+        /// <summary>
+        /// 数据
+        /// </summary>
+        private ReservoirData _reservoirData = new ReservoirData();
         /// <summary>
         /// 定时器
         /// </summary>
@@ -44,6 +82,11 @@ namespace PunkHPX8_RT.Devices.Reservoir
         /// 是否自动
         /// </summary>
         public bool IsAuto { get { return _persistentValue.OperatingMode == AUTO; } }
+
+        /// <summary>
+        /// 数据
+        /// </summary>
+        public ReservoirData ReservoirData { get { return _reservoirData; } }
         #endregion
         /// <summary>
         /// 构造函数
@@ -90,6 +133,7 @@ namespace PunkHPX8_RT.Devices.Reservoir
         /// </summary>
         private void SubscribeData()
         {
+            DATA.Subscribe($"{Module}.ReservoirData", () => _reservoirData, SubscriptionAttribute.FLAG.IgnoreSaveDB);
 
         }
         /// <summary>
@@ -108,7 +152,47 @@ namespace PunkHPX8_RT.Devices.Reservoir
         /// </summary>
         protected virtual void SubscribeValueAction()
         {
-
+            BeckhoffIoSubscribeUpdateVariable(CA_PUMP_RUNNING);
+            BeckhoffIoSubscribeUpdateVariable(AN_TOWER_HIGH);
+            BeckhoffIoSubscribeUpdateVariable(AN_TOWER_LOW);
+            BeckhoffIoSubscribeUpdateVariable(CA_LEVEL);
+            BeckhoffIoSubscribeUpdateVariable(CA_WATER_LEVEL);
+            BeckhoffIoSubscribeUpdateVariable(CA_PUMP_ENABLE);
+            BeckhoffIoSubscribeUpdateVariable(CA_PUMP_SPEED);
+            BeckhoffIoSubscribeUpdateVariable(CA_DI_REPLEN);
+            BeckhoffIoSubscribeUpdateVariable(RETURN_VALVE);
+            BeckhoffIoSubscribeUpdateVariable(RETURN_VALVE_OPENING);
+            BeckhoffIoSubscribeUpdateVariable(RETURN_VALVE_PERCENT);
+        }
+        /// <summary>
+        /// 订阅IO变量
+        /// </summary>
+        /// <param name="variable"></param>
+        private void BeckhoffIoSubscribeUpdateVariable(string variable)
+        {
+            _variableInitializeDic[variable] = false;
+            IOModuleManager.Instance.SubscribeModuleVariable(Module, variable, UpdateVariableValue);
+        }
+        /// <summary>
+        /// 更新变量数值
+        /// </summary>
+        /// <param name="variable"></param>
+        /// <param name="value"></param>
+        private void UpdateVariableValue(string variable, object value)
+        {
+            if (!_reservoirData.IsDataInitialized)
+            {
+                _reservoirData.IsDataInitialized = true;
+            }
+            PropertyInfo property = _reservoirData.GetType().GetProperty(variable);
+            if (property != null)
+            {
+                property.SetValue(_reservoirData, value);
+            }
+            if (_variableInitializeDic.ContainsKey(variable) && !_variableInitializeDic[variable])
+            {
+                _variableInitializeDic[variable] = true;
+            }
         }
         /// <summary>
         /// 定时器

+ 1 - 0
PunkHPX8_RT/Devices/VpwCell/VpwCellDevice.cs

@@ -251,6 +251,7 @@ namespace PunkHPX8_RT.Devices.VpwCell
                 _variableInitializeDic[variable] = true;
             }
         }
+
         /// <summary>
         /// 初始化OP
         /// </summary>