소스 검색

1.添加VAT VATPerformance和PartialPressure界面及数据对比图标
2.将PM 模块设未可配。后续添加PM只需要传入传入对应参数PMB/PMC/PMD,不需要修改代码

lixiang 2 년 전
부모
커밋
e867b47d0c

BIN
Venus/ThirdParty/LiveCharts.Wpf.dll


BIN
Venus/ThirdParty/LiveCharts.dll


+ 13 - 0
Venus/Venus_MainPages/Venus_MainPages.csproj

@@ -43,6 +43,12 @@
     <Reference Include="ControlzEx">
       <HintPath>..\ThirdParty\ControlzEx.dll</HintPath>
     </Reference>
+    <Reference Include="LiveCharts">
+      <HintPath>..\ThirdParty\LiveCharts.dll</HintPath>
+    </Reference>
+    <Reference Include="LiveCharts.Wpf">
+      <HintPath>..\ThirdParty\LiveCharts.Wpf.dll</HintPath>
+    </Reference>
     <Reference Include="log4net">
       <HintPath>..\ThirdParty\log4net.dll</HintPath>
     </Reference>
@@ -191,6 +197,9 @@
     <Compile Include="Views\TopView.xaml.cs">
       <DependentUpon>TopView.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Views\VATPerformanceView.xaml.cs">
+      <DependentUpon>VATPerformanceView.xaml</DependentUpon>
+    </Compile>
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\Framework\Common\Common.csproj">
@@ -287,6 +296,10 @@
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
+    <Page Include="Views\VATPerformanceView.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 </Project>

+ 292 - 222
Venus/Venus_MainPages/ViewModels/OverViewModel.cs

@@ -10,7 +10,6 @@ using System.Windows.Threading;
 using Venus_Core;
 using Venus_MainPages.Views;
 using System.Linq;
-using System.Threading;
 using System.Threading.Tasks;
 using Microsoft.Win32;
 using System.IO;
@@ -41,14 +40,13 @@ namespace Venus_MainPages.ViewModels
         private bool m_MFC7ValveIsOpen;
         private bool m_MFC8ValveIsOpen;
         private bool m_GasFinalValveIsOpen;
-
         private bool m_SoftPumpValveIsOpen;
         private bool m_FastPumpValveIsOpen;
         private bool m_PVHe1ValveIsOpen;
         private bool m_PVHe2ValveIsOpen;
         private bool m_TurboPumpPumpingValveIsOpen;
         private bool m_TurboPumpPurgeValveIsOpen;
-
+        private bool m_GuageValveIsOpen;
         private bool m_PendulumValveIsOpen;
 
 
@@ -79,6 +77,7 @@ namespace Venus_MainPages.ViewModels
 
 
 
+
         private AITMfcData m_MFC1Data;
         private AITMfcData m_MFC2Data;
         private AITMfcData m_MFC3Data;
@@ -105,24 +104,13 @@ namespace Venus_MainPages.ViewModels
         private bool m_SensorGasBoxDoor;
         private bool m_SensorGasBoxPressure;
 
-
-
-
-
-
-
-
-
-
-        private AITPumpData m_MainPumpData = new AITPumpData();
-
         private bool m_PumpIsOpen;
         private bool m_TurboIsOpen;
         private bool m_IsATM;
         private bool m_IsVAC;
         private bool m_HVIsOn;
 
-        
+
 
         private List<string> m_RtConfigKeys;
         private Dictionary<string, object> m_RtConfigValues;
@@ -133,8 +121,6 @@ namespace Venus_MainPages.ViewModels
         private int m_PositionValue;
         private bool m_IsPositionMode;
 
-        private object[] _oldmfc = new object[8] { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
-
         private int m_ESCVoltage;
 
         private bool m_GasIsFlowing;
@@ -149,11 +135,217 @@ namespace Venus_MainPages.ViewModels
 
         private bool m_ChillerIsOn;
 
+        private float m_ProcessHighPressure;
+        private float m_ProcessLowPressure;
+        private float m_ForelinePressurePressure;
+        private float m_ESCHePressure;
+
+
+
         ButterflyValveView butterflyValveMessageBox;
         HeaterView heaterView;
+
+        private int m_TurboPumpRotationalSpeed;
+
+        private bool m_LiftPinIsUp;
+        private bool m_IsSlitDoorClosed;
+        private bool m_IsLidClosed;
+
+        private float m_ChillerTemperature;
+
+        private int m_ESCHVOutputVoltage;
+
+        private float m_SRfReflectPower;
+        private float m_SRfForwardPowerFeedBack;
+
+        private float m_BRfReflectPower;
+        private float m_BRfForwardPowerFeedBack;
+
+        private int m_MatchWorkMode;
+        private int m_BiasMatchWorkMode;
+
+        private float m_MatchC1;
+        private float m_MatchC2;
+        private float m_BiasMatchC1;
+        private float m_BiasMatchC2;
+
+        private float m_PendulumValvePosition;
         #endregion
 
-        #region  属性   
+        #region  属性
+        public float PendulumValvePosition
+        {
+            get { return m_PendulumValvePosition; }
+            set{SetProperty(ref m_PendulumValvePosition, value);}
+        }
+
+        public float BiasMatchC1
+        {
+            get { return m_BiasMatchC1; }
+            set
+            {
+                SetProperty(ref m_BiasMatchC1, value);
+            }
+        }
+        public float BiasMatchC2
+        {
+            get { return m_BiasMatchC2; }
+            set
+            {
+                SetProperty(ref m_BiasMatchC2, value);
+            }
+        }
+        public float MatchC1
+        {
+            get { return m_MatchC1; }
+            set
+            {
+                SetProperty(ref m_MatchC1, value);
+            }
+        }
+        public float MatchC2
+        {
+            get { return m_MatchC2; }
+            set
+            {
+                SetProperty(ref m_MatchC2, value);
+            }
+        }
+        public int BiasMatchWorkMode
+        {
+            get { return m_BiasMatchWorkMode; }
+            set
+            {
+                SetProperty(ref m_BiasMatchWorkMode, value);
+            }
+        }
+        public int MatchWorkMode
+        {
+            get { return m_MatchWorkMode; }
+            set
+            {
+                SetProperty(ref m_MatchWorkMode, value);
+            }
+        }
+
+        public float BRfReflectPower
+        {
+            get { return m_BRfReflectPower; }
+            set
+            {
+                SetProperty(ref m_BRfReflectPower, value);
+            }
+        }
+        public float BRfForwardPowerFeedBack
+        {
+            get { return m_BRfForwardPowerFeedBack; }
+            set
+            {
+                SetProperty(ref m_BRfForwardPowerFeedBack, value);
+            }
+        }
+
+        public float SRfReflectPower
+        {
+            get { return m_SRfReflectPower; }
+            set
+            {
+                SetProperty(ref m_SRfReflectPower, value);
+            }
+        }
+        public float SRfForwardPowerFeedBack
+        {
+            get { return m_SRfForwardPowerFeedBack; }
+            set
+            {
+                SetProperty(ref m_SRfForwardPowerFeedBack, value);
+            }
+        }
+        public int ESCHVOutputVoltage
+        {
+            get { return m_ESCHVOutputVoltage; }
+            set
+            {
+                SetProperty(ref m_ESCHVOutputVoltage, value);
+            }
+        }
+        public float ChillerTemperature
+        {
+            get { return m_ChillerTemperature; }
+            set
+            {
+                SetProperty(ref m_ChillerTemperature, value);
+            }
+        }
+        public bool IsLidClosed
+        {
+            get { return m_IsLidClosed; }
+            set
+            {
+                SetProperty(ref m_IsLidClosed, value);
+            }
+        }
+
+        public bool IsSlitDoorClosed
+        {
+            get { return m_IsSlitDoorClosed; }
+            set
+            {
+                SetProperty(ref m_IsSlitDoorClosed, value);
+            }
+        }
+
+        public bool LiftPinIsUp
+        {
+            get { return m_LiftPinIsUp; }
+            set
+            {
+                SetProperty(ref m_LiftPinIsUp, value);
+            }
+        }
+
+        public int TurboPumpRotationalSpeed
+        {
+            get { return m_TurboPumpRotationalSpeed; }
+            set
+            {
+                SetProperty(ref m_TurboPumpRotationalSpeed, value);
+            }
+        }
+
+        public float ESCHePressure
+        {
+            get { return m_ESCHePressure; }
+            set
+            {
+                SetProperty(ref m_ESCHePressure, value);
+            }
+        }
+
+        public float ProcessHighPressure
+        {
+            get { return m_ProcessHighPressure; }
+            set
+            {
+                SetProperty(ref m_ProcessHighPressure, value);
+            }
+        }
+        public float ProcessLowPressure
+        {
+            get { return m_ProcessLowPressure; }
+            set
+            {
+                SetProperty(ref m_ProcessLowPressure, value);
+            }
+        }
+        public float ForelinePressure
+        {
+            get { return m_ForelinePressurePressure; }
+            set
+            {
+                SetProperty(ref m_ForelinePressurePressure, value);
+            }
+        }
         public bool SourceRFFanInterlock
         {
             get { return m_SourceRFFanInterlock; }
@@ -333,304 +525,151 @@ namespace Venus_MainPages.ViewModels
             get { return m_RtConfigValues; }
             set { SetProperty(ref m_RtConfigValues, value); }
         }
-        public Dictionary<string, object> RtDataValues
-        {
-            get { return m_RtDataValues; }
-            set { SetProperty(ref m_RtDataValues, value); }
-        }
+
+        #region 阀
         public bool GasFinalValveIsOpen
         {
             get { return m_GasFinalValveIsOpen; }
-            set 
-            {
-                SetProperty(ref m_GasFinalValveIsOpen, value);
-            }
+            set { SetProperty(ref m_GasFinalValveIsOpen, value); }
         }
         public bool PVN21ValveIsOpen
         {
             get { return m_PVN21ValveIsOpen; }
-            set 
-            {               
-                SetProperty(ref m_PVN21ValveIsOpen, value); 
-            }
+            set { SetProperty(ref m_PVN21ValveIsOpen, value); }
         }
         public bool PVN22ValveIsOpen
         {
             get { return m_PVN22ValveIsOpen; }
-            set 
-            {
-               SetProperty(ref m_PVN22ValveIsOpen, value); 
-            }
+            set { SetProperty(ref m_PVN22ValveIsOpen, value); }
         }
         public bool N2ValveIsOpen
         {
             get { return m_N2ValveIsOpen; }
-            set 
-            {
-                //if (value != m_N2ValveIsOpen)
-                //{
-                //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.N2, value);
-                //}
-                SetProperty(ref m_N2ValveIsOpen, value); 
-            }
+            set { SetProperty(ref m_N2ValveIsOpen, value); }
         }
         public bool PV11ValveIsOpen
         {
             get { return m_PV11ValveIsOpen; }
-            set 
-            {
-                //if (value != m_PV11ValveIsOpen)
-                //{
-                //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.PV11, value);
-                //}
-                SetProperty(ref m_PV11ValveIsOpen, value); }
+            set { SetProperty(ref m_PV11ValveIsOpen, value); }
         }
         public bool PV12ValveIsOpen
         {
             get { return m_PV12ValveIsOpen; }
-            set 
-            {
-                SetProperty(ref m_PV12ValveIsOpen, value); 
-            }
+            set { SetProperty(ref m_PV12ValveIsOpen, value); }
         }
         public bool MFC1ValveIsOpen
         {
             get { return m_MFC1ValveIsOpen; }
-            set 
-            {
-                SetProperty(ref m_MFC1ValveIsOpen, value);
-            }
+            set { SetProperty(ref m_MFC1ValveIsOpen, value); }
         }
         public bool PV21ValveIsOpen
         {
             get { return m_PV21ValveIsOpen; }
-            set
-            {
-                //if (value != m_PV21ValveIsOpen)
-                //{
-                //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.PV21, value);
-                //}
-                SetProperty(ref m_PV21ValveIsOpen, value);
-            }
+            set { SetProperty(ref m_PV21ValveIsOpen, value); }
         }
         public bool PV22ValveIsOpen
         {
             get { return m_PV22ValveIsOpen; }
-            set 
-            {
-                //if (value != m_PV22ValveIsOpen)
-                //{
-                //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.PV22, value);
-                //}
-                SetProperty(ref m_PV22ValveIsOpen, value); 
-            }
+            set { SetProperty(ref m_PV22ValveIsOpen, value); }
         }
         public bool MFC2ValveIsOpen
         {
             get { return m_MFC2ValveIsOpen; }
-            set
-            {
-                SetProperty(ref m_MFC2ValveIsOpen, value); 
-            }
+            set { SetProperty(ref m_MFC2ValveIsOpen, value); }
         }
         public bool PV31ValveIsOpen
         {
             get { return m_PV31ValveIsOpen; }
-            set 
-            {
-                //if (value != m_PV31ValveIsOpen)
-                //{
-                //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.PV31, value);
-                //}
-                SetProperty(ref m_PV31ValveIsOpen, value); 
-            }
+            set { SetProperty(ref m_PV31ValveIsOpen, value); }
         }
         public bool PV32ValveIsOpen
         {
             get { return m_PV32ValveIsOpen; }
-            set 
-            {
-                //if (value != m_PV32ValveIsOpen)
-                //{
-                //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.PV32, value);
-                //}
-                SetProperty(ref m_PV32ValveIsOpen, value);
-            }
+            set { SetProperty(ref m_PV32ValveIsOpen, value); }
         }
         public bool MFC3ValveIsOpen
         {
             get { return m_MFC3ValveIsOpen; }
-            set 
-            {
-                SetProperty(ref m_MFC3ValveIsOpen, value); 
-            }
+            set { SetProperty(ref m_MFC3ValveIsOpen, value); }
         }
         public bool PV41ValveIsOpen
         {
             get { return m_PV41ValveIsOpen; }
-            set 
-            {
-                //if (value != m_PV41ValveIsOpen)
-                //{
-                //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.PV41, value);
-                //}
-                SetProperty(ref m_PV41ValveIsOpen, value); 
-            }
+            set { SetProperty(ref m_PV41ValveIsOpen, value); }
         }
         public bool PV42ValveIsOpen
         {
             get { return m_PV42ValveIsOpen; }
-            set 
-            {
-                //if (value != m_PV42ValveIsOpen)
-                //{
-                //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.PV42, value);
-                //}
-                SetProperty(ref m_PV42ValveIsOpen, value); 
-            }
+            set { SetProperty(ref m_PV42ValveIsOpen, value); }
         }
         public bool MFC4ValveIsOpen
         {
             get { return m_MFC4ValveIsOpen; }
-            set 
-            {
-                //if (value != m_MFC4ValveIsOpen)
-                //{
-                //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.Mfc4, value);
-                //}
-                SetProperty(ref m_MFC4ValveIsOpen, value); 
-            }
+            set { SetProperty(ref m_MFC4ValveIsOpen, value); }
         }
         public bool MFC5ValveIsOpen
         {
             get { return m_MFC5ValveIsOpen; }
-            set 
-            {
-                //if (value != m_MFC5ValveIsOpen)
-                //{
-                //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.Mfc5, value);
-                //}
-                SetProperty(ref m_MFC5ValveIsOpen, value); 
-            }
+            set { SetProperty(ref m_MFC5ValveIsOpen, value); }
         }
         public bool MFC6ValveIsOpen
         {
             get { return m_MFC6ValveIsOpen; }
-            set
-            {
-                //if (value != m_MFC6ValveIsOpen)
-                //{
-                //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.Mfc6, value);
-                //}
-                SetProperty(ref m_MFC6ValveIsOpen, value); 
-            }
+            set { SetProperty(ref m_MFC6ValveIsOpen, value); }
         }
         public bool MFC7ValveIsOpen
         {
             get { return m_MFC7ValveIsOpen; }
-            set
-            {
-                //if (value != m_MFC7ValveIsOpen)
-                //{
-                //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.Mfc7, value);
-                //}
-                SetProperty(ref m_MFC7ValveIsOpen, value); 
-            }
+            set { SetProperty(ref m_MFC7ValveIsOpen, value); }
         }
         public bool MFC8ValveIsOpen
         {
             get { return m_MFC8ValveIsOpen; }
-            set 
-            {
-                //if (value != m_MFC8ValveIsOpen)
-                //{
-                //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.Mfc8, value);
-                //}
-                SetProperty(ref m_MFC8ValveIsOpen, value); 
-            }
+            set { SetProperty(ref m_MFC8ValveIsOpen, value); }
         }
         public bool PVHe1ValveIsOpen
         {
             get { return m_PVHe1ValveIsOpen; }
-            set 
-            {
-                //if (value != m_PVHe1ValveIsOpen)
-                //{
-                //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.PVHe1, value);
-                //}
-                SetProperty(ref m_PVHe1ValveIsOpen, value); 
-            }
+            set { SetProperty(ref m_PVHe1ValveIsOpen, value); }
         }
         public bool PVHe2ValveIsOpen
         {
             get { return m_PVHe2ValveIsOpen; }
-            set 
-            {
-                //if (value != m_PVHe2ValveIsOpen)
-                //{
-                //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.PVHe2, value);
-                //}
-                SetProperty(ref m_PVHe2ValveIsOpen, value); 
-            }
+            set { SetProperty(ref m_PVHe2ValveIsOpen, value); }
         }
         public bool TurboPumpPumpingValveIsOpen
         {
             get { return m_TurboPumpPumpingValveIsOpen; }
-            set 
-            {
-                //if (value != m_TurboPumpPumpingValveIsOpen)
-                //{
-                //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.TurboPumpPumping, value);
-
-                //}
-                SetProperty(ref m_TurboPumpPumpingValveIsOpen, value); 
-            }
+            set { SetProperty(ref m_TurboPumpPumpingValveIsOpen, value); }
         }
         public bool TurboPumpPurgeValveIsOpen
         {
             get { return m_TurboPumpPurgeValveIsOpen; }
-            set
-            {
-                //if (value != m_TurboPumpPurgeValveIsOpen)
-                //{ 
-                //InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.TurboPumpPurge,value);
-
-                //}
-                SetProperty(ref m_TurboPumpPurgeValveIsOpen, value); 
-            }
+            set { SetProperty(ref m_TurboPumpPurgeValveIsOpen, value); }
         }
         public bool SoftPumpValveIsOpen
         {
             get { return m_SoftPumpValveIsOpen; }
-            set 
-            {
-                //if (value != m_SoftPumpValveIsOpen)
-                //{
-                //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.SoftPump, value);
-
-                //}
-                SetProperty(ref m_SoftPumpValveIsOpen, value); 
-            }
+            set { SetProperty(ref m_SoftPumpValveIsOpen, value); }
         }
         public bool FastPumpValveIsOpen
         {
             get { return m_FastPumpValveIsOpen; }
-            set 
-            {
-                //if (value != m_FastPumpValveIsOpen)
-                //{
-                //    InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ControlValve", (int)ValveType.FastPump, value);
-
-                //}
-                SetProperty(ref m_FastPumpValveIsOpen, value); 
-            }
+            set { SetProperty(ref m_FastPumpValveIsOpen, value); }
         }
-
-        public AITPumpData MainPumpData
+        public bool GuageValveIsOpen
+        {
+            get { return m_GuageValveIsOpen; }
+            set { SetProperty(ref m_GuageValveIsOpen, value); }
+        }
+        #endregion
+        public Dictionary<string, object> RtDataValues
         {
-            get { return m_MainPumpData; }
-            set { SetProperty(ref m_MainPumpData, value); }
+            get { return m_RtDataValues; }
+            set { SetProperty(ref m_RtDataValues, value); }
         }
+       
+        
 
         public bool PumpIsOpen
         {
@@ -989,7 +1028,7 @@ namespace Venus_MainPages.ViewModels
                     //    return;
                     //}
 
-                    _oldmfc = mfc;
+                    //_oldmfc = mfc;
                     InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.GasFlow}", mfc);
                 //}
             });
@@ -1342,25 +1381,30 @@ namespace Venus_MainPages.ViewModels
             N2ValveIsOpen = (bool)RtDataValues[$"{ModuleName}.ValveN2.IsOpen"];
             SoftPumpValveIsOpen = (bool)RtDataValues[$"{ModuleName}.ValveSoftPump.IsOpen"];
             FastPumpValveIsOpen = (bool)RtDataValues[$"{ModuleName}.ValveFastPump.IsOpen"];
+            GuageValveIsOpen = (bool)RtDataValues[$"{ModuleName}.ValveGuage.IsOpen"];
             PVHe1ValveIsOpen = (bool)RtDataValues[$"{ModuleName}.ValvePVHe1.IsOpen"];
             PVHe2ValveIsOpen = (bool)RtDataValues[$"{ModuleName}.ValvePVHe2.IsOpen"];
             PVN21ValveIsOpen = (bool)RtDataValues[$"{ModuleName}.ValvePVN21.IsOpen"];
-            PVN22ValveIsOpen = (bool)RtDataValues[$"{ModuleName}.ValvePVN22.IsOpen"];
-            HVIsOn= (bool)RtDataValues[$"{ModuleName}.ESCHV.IsOn"];
-
-
+            PVN22ValveIsOpen = (bool)RtDataValues[$"{ModuleName}.ValvePVN22.IsOpen"];           
             TurboPumpPumpingValveIsOpen = (bool)RtDataValues[$"{ModuleName}.ValveTurboPumpPumping.IsOpen"];
             TurboPumpPurgeValveIsOpen = (bool)RtDataValues[$"{ModuleName}.ValveTurboPumpPurge.IsOpen"];
 
+            HVIsOn = (bool)RtDataValues[$"{ModuleName}.ESCHV.IsOn"];
 
             PumpIsOpen = (bool)RtDataValues[$"{ModuleName}.PumpIsRunning"];
             TurboIsOpen = (bool)RtDataValues[$"{ModuleName}.TurboPumpIsRunning"];
 
             BRFIsOn = (bool)RtDataValues[$"{ModuleName}.BRfIsOn"];
             SRFIsOn = (bool)RtDataValues[$"{ModuleName}.SRfIsOn"];
+            LiftPinIsUp= (bool)RtDataValues[$"{ModuleName}.LiftPinIsUp"];
+            IsSlitDoorClosed = (bool)RtDataValues[$"{ModuleName}.IsSlitDoorClosed"];
+            IsLidClosed = (bool)RtDataValues[$"{ModuleName}.IsLidClosed"];
+
+            PendulumValvePosition = float.Parse(RtDataValues[$"{ModuleName}.GetPVPosition"].ToString());
 
+            TurboPumpRotationalSpeed = Convert.ToInt32( RtDataValues[$"{ModuleName}.TurboPumpRotationalSpeed"].ToString());
 
-            PositionValue = -((int)(((int)RtDataValues[$"{ModuleName}.GetPVPosition"]) * 0.09));
+            PositionValue = -((int)((PendulumValvePosition) * 0.09));
 
 
             PMState currentState = (PMState)Enum.Parse(typeof(PMState), RtDataValues[$"{ModuleName}.FsmState"].ToString());
@@ -1385,7 +1429,12 @@ namespace Venus_MainPages.ViewModels
             ForelineHeaterData = (AITHeaterData)RtDataValues[$"{ModuleName}.ForelineHeater.DeviceData"];
             WallHeaterData = (AITHeaterData)RtDataValues[$"{ModuleName}.WallHeater.DeviceData"];
 
+            ProcessHighPressure= float.Parse(RtDataValues[$"{ModuleName}.ProcessHighPressure"].ToString());
+            ProcessLowPressure = float.Parse(RtDataValues[$"{ModuleName}.ProcessLowPressure"].ToString());
+            ForelinePressure = float.Parse(RtDataValues[$"{ModuleName}.ForelinePressure"].ToString());
+            ESCHePressure = float.Parse(RtDataValues[$"{ModuleName}.ESCHePressure"].ToString());
 
+            ChillerTemperature = float.Parse(RtDataValues[$"{ModuleName}.Chiller.Temp"].ToString());
 
 
 
@@ -1401,8 +1450,32 @@ namespace Venus_MainPages.ViewModels
             SensorGasBoxDoor= (bool)RtDataValues[$"{ModuleName}.SensorGasBoxDoor"];
             SensorGasBoxPressure= (bool)RtDataValues[$"{ModuleName}.SensorGasBoxPressure"];
 
+            IsATM=  (bool)RtDataValues[$"{ModuleName}.IsATM"];
+            IsVAC = (bool)RtDataValues[$"{ModuleName}.IsVAC"];
+
+            ESCHVOutputVoltage= (int)RtDataValues[$"{ModuleName}.ESCHV.OutputVoltage"];
+
+            SRfReflectPower= float.Parse(RtDataValues[$"{ModuleName}.SRfReflectPower"].ToString());
+            SRfForwardPowerFeedBack = float.Parse(RtDataValues[$"{ModuleName}.SRfForwardPowerFeedBack"].ToString());
+
+            BRfReflectPower = float.Parse(RtDataValues[$"{ModuleName}.BRfReflectPower"].ToString());
+            BRfForwardPowerFeedBack = float.Parse(RtDataValues[$"{ModuleName}.BRfForwardPowerFeedBack"].ToString());
+
+
+            MatchWorkMode=RtDataValues.Keys.Contains($"{ModuleName}.{VenusDevice.Match}.WorkMode") ? (int)RtDataValues[$"{ModuleName}.{VenusDevice.Match}.WorkMode"] : 0;            
+            BiasMatchWorkMode = RtDataValues.Keys.Contains($"{ModuleName}.{VenusDevice.BiasMatch}.WorkMode") ?   (int)RtDataValues[$"{ ModuleName}.{VenusDevice.BiasMatch}.WorkMode"]:0;
+
+            MatchC1= RtDataValues.Keys.Contains($"{ModuleName}.{VenusDevice.Match}.C1") ? float.Parse(RtDataValues[$"{ModuleName}.{VenusDevice.Match}.C1"].ToString()):0;
+            MatchC2 = RtDataValues.Keys.Contains($"{ModuleName}.{VenusDevice.Match}.C2") ? float.Parse(RtDataValues[$"{ModuleName}.{VenusDevice.Match}.C12"].ToString()) : 0;
+
+
+            BiasMatchC1 = RtDataValues.Keys.Contains($"{ModuleName}.{VenusDevice.BiasMatch}.C1") ? float.Parse(RtDataValues[$"{ModuleName}.{VenusDevice.BiasMatch}.C1"].ToString()):0;
+            BiasMatchC2 = RtDataValues.Keys.Contains($"{ModuleName}.{VenusDevice.BiasMatch}.C2") ? float.Parse(RtDataValues[$"{ModuleName}.{VenusDevice.BiasMatch}.C2"].ToString()) : 0;
+
+
         }
 
+
         private void addConfigKeys()
         {
             m_RtConfigKeys.Add($"{ModuleName}.Pump.PumpBasePressure");
@@ -1420,12 +1493,7 @@ namespace Venus_MainPages.ViewModels
             m_RtDataKeys.Add($"{ModuleName}.MfcGas8");
             m_RtDataKeys.Add($"{ModuleName}.MfcHe");
             m_RtDataKeys.Add($"{ModuleName}.MfcN2");
-
-            m_RtDataKeys.Add($"{ModuleName}.MfcN2");
-
-
-         
-
+       
 
             m_RtDataKeys.Add($"{ModuleName}.ForelinePressure");
             m_RtDataKeys.Add($"{ModuleName}.ProcessHighPressure");
@@ -1521,6 +1589,8 @@ namespace Venus_MainPages.ViewModels
             m_RtDataKeys.Add($"{ModuleName}.WallHeater.DeviceData");
             m_RtDataKeys.Add($"{ModuleName}.FsmState");
 
+
+
         }
         #endregion
     }

+ 2 - 6
Venus/Venus_MainPages/ViewModels/PlatformViewModel.cs

@@ -44,11 +44,11 @@ namespace Venus_MainPages.ViewModels
             {
                 if (m_WaferInPosSensor?.Value != value.Value)
                 {
-                    if (value.Value == true)
+                    if (value.Value == true && LLAWaferIsVisibility==Visibility.Collapsed)
                     {
                         InvokeClient.Instance.Service.DoOperation("CreateWafer", "LLA", 0);
                     }
-                    else
+                    else if(value.Value == false && LLAWaferIsVisibility == Visibility.Visible)
                     {
                         InvokeClient.Instance.Service.DoOperation("DeleteWafer", "LLA", 0);
                     }
@@ -332,10 +332,6 @@ namespace Venus_MainPages.ViewModels
             m_RtDataKeys.Add($"LLA.HasWafer");
             m_RtDataKeys.Add($"LLA.ModuleWaferList");
             m_RtDataKeys.Add($"{ModuleName}.SensorSmallWaferInPos");
-
-
-
-
         }
 
         #endregion

+ 29 - 30
Venus/Venus_MainPages/Views/OverView.xaml

@@ -498,7 +498,7 @@
             <ctrls:FlowPipe  Height="8"  Width="70" Canvas.Left="1264" Canvas.Top="272"   />
             <TextBlock Text="Guage" Canvas.Left="1272" Canvas.Top="248"/>
 
-            <customControls:CommonValveControl   ValveOrientation="Horizontal" Status="{Binding RtDataValues[PMA.ValveGuage.IsOpen],Mode=TwoWay}" Height="20" Width="20" Canvas.Left="1280" Canvas.Top="265" IsCanEdit="True" Tag="27" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}"/>
+            <customControls:CommonValveControl   ValveOrientation="Horizontal" Status="{Binding GuageValveIsOpen,Mode=TwoWay}" Height="20" Width="20" Canvas.Left="1280" Canvas.Top="265" IsCanEdit="True" Tag="27" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}"/>
 
             <Border    BorderBrush="Gray"  BorderThickness="0"  Width="18" Height="6" Canvas.Left="1315" Canvas.Top="164" >
                 <Border.RenderTransform>
@@ -524,8 +524,8 @@
                     </LinearGradientBrush>
                 </Border.Background>
             </Border>
-            <Ellipse Width="20" Height="20"  Canvas.Left="1302" Canvas.Top="150" Fill="{Binding RtDataValues[PMA.IsATM],Converter={StaticResource boolToColor}}"  Stroke="Silver" StrokeThickness="2"></Ellipse>
-            <Ellipse Width="20" Height="20"  Canvas.Left="1272" Canvas.Top="200" Fill="{Binding RtDataValues[PMA.IsVAC],Converter={StaticResource boolToColor}}"  Stroke="Silver" StrokeThickness="2"></Ellipse>
+            <Ellipse Width="20" Height="20"  Canvas.Left="1302" Canvas.Top="150" Fill="{Binding IsATM,Converter={StaticResource boolToColor}}"  Stroke="Silver" StrokeThickness="2"></Ellipse>
+            <Ellipse Width="20" Height="20"  Canvas.Left="1272" Canvas.Top="200" Fill="{Binding IsVAC,Converter={StaticResource boolToColor}}"  Stroke="Silver" StrokeThickness="2"></Ellipse>
             <TextBlock Text="ATM" Canvas.Left="1300" Canvas.Top="134"/>
             <TextBlock Text="VAC" Canvas.Left="1270" Canvas.Top="220"/>
             <ctrls:Pipe2     Canvas.Left="1242" Canvas.Top="195" HorizontalAlignment="Left" VerticalAlignment="Top" RotateTransformValue="-90" />
@@ -664,18 +664,18 @@
           
 
             <!--chamber管道标签-->
-            <ctrls:TextboxWithLabel  Canvas.Top="156" Canvas.Left="1326" LabelValue="CM2(mTorr)" TextBoxValue="{Binding RtDataValues[PMA.ProcessHighPressure],StringFormat='F1'}" TextBoxColor="#D7E4BD"/>
-            <ctrls:TextboxWithLabel  Canvas.Top="248" Canvas.Left="1318" LabelValue="CM1(mTorr)" TextBoxValue="{Binding RtDataValues[PMA.ProcessLowPressure],StringFormat='F1'}" TextBoxColor="#D7E4BD"/>
+            <ctrls:TextboxWithLabel  Canvas.Top="156" Canvas.Left="1326" LabelValue="CM2(mTorr)" TextBoxValue="{Binding ProcessHighPressure,StringFormat='F1'}" TextBoxColor="#D7E4BD"/>
+            <ctrls:TextboxWithLabel  Canvas.Top="248" Canvas.Left="1318" LabelValue="CM1(mTorr)" TextBoxValue="{Binding ProcessLowPressure,StringFormat='F1'}" TextBoxColor="#D7E4BD"/>
             <!--<ctrls:TextboxWithLabel  Canvas.Top="633" Canvas.Left="880"  LabelValue="Pressure(mToor)" TextBoxValue="{Binding HePressureSetpoint,Mode=TwoWay}" TextBoxColor="White" IsReadOnly="False"/>-->
             <ctrls:TextboxWithLabel  Canvas.Top="633" Canvas.Left="820" TextBoxValue="{Binding HeGasSetpoint,Mode=TwoWay}"    LabelValue="Flow(sccm)/Pressure(Torr)"  TextBoxColor="White" IsReadOnly="False"/>
             <Ellipse Width="20" Height="20"  Canvas.Top="651.5" Canvas.Left="775" Fill="{Binding MFCHeData.IsWarning,Converter={StaticResource boolToColor4}}"  Stroke="Silver" StrokeThickness="2" ToolTip="Pressure Alarm"></Ellipse>
 
-            <ctrls:TextboxWithLabel  Canvas.Top="633" Canvas.Left="1280" LabelValue="CM3(mTorr)" TextBoxValue="{Binding RtDataValues[PMA.ForelinePressure],StringFormat='F1'}" TextBoxColor="#D7E4BD" />
+            <ctrls:TextboxWithLabel  Canvas.Top="633" Canvas.Left="1280" LabelValue="CM3(mTorr)" TextBoxValue="{Binding  ForelinePressure,StringFormat='F1'}" TextBoxColor="#D7E4BD" />
             <ctrls:TextboxWithLabel  Canvas.Top="464" Canvas.Left="1290" LabelValue="Position(‰)" TextBoxValue="{Binding RtDataValues[PMA.GetPVPosition],StringFormat='F0'}" TextBoxColor="#D7E4BD" />
             <ctrls:TextboxWithLabel  Canvas.Top="510" Canvas.Left="1320" LabelValue="Flow(sccm)" TextBoxValue="{Binding MFCN2Data.FeedBack,StringFormat='F1'}" TextBoxColor="#D7E4BD" />
             <ctrls:TextboxWithLabel  Canvas.Top="510" Canvas.Left="1360" TextBoxValue="{Binding N2SetPoint,Mode=TwoWay}" IsReadOnly="False"  LabelValue="Turbo N2" ToolTip="{Binding MFCN2Data.SetPoint,StringFormat='F1'}" TextBoxColor="White" Visibility="Collapsed"/>
 
-            <ctrls:TextboxWithLabel  Canvas.Top="556" Canvas.Left="952" LabelValue="Pressure(mTorr)" TextBoxValue="{Binding RtDataValues[PMA.ESCHePressure],StringFormat='F1'}"  TextBoxColor="#D7E4BD"/>
+            <ctrls:TextboxWithLabel  Canvas.Top="556" Canvas.Left="952" LabelValue="Pressure(mTorr)" TextBoxValue="{Binding ESCHePressure,StringFormat='F1'}"  TextBoxColor="#D7E4BD"/>
             <Border    BorderBrush="Gray"  BorderThickness="0"  Width="15" Height="6" Canvas.Top="581" Canvas.Left="1033">
                 <Border.Background>
                     <LinearGradientBrush StartPoint="0.5 0" EndPoint="0.5 1">
@@ -695,7 +695,7 @@
                     </LinearGradientBrush>
                 </Border.Background>
             </Border>
-            <ctrls:TextboxWithLabel  Canvas.Top="550" Canvas.Left="1280" LabelValue="Speed(rpm)" TextBoxValue="{Binding RtDataValues[PMA.TurboPumpRotationalSpeed],StringFormat='F0'}" TextBoxColor="#D7E4BD" />
+            <ctrls:TextboxWithLabel  Canvas.Top="550" Canvas.Left="1280" LabelValue="Speed(rpm)" TextBoxValue="{Binding TurboPumpRotationalSpeed}" TextBoxColor="#D7E4BD" />
             <TextBlock Canvas.Top="600" Canvas.Left="1280" Text="ISO"/>
 
             <!--加热-->
@@ -717,16 +717,16 @@
 
             <!--Chamber-->
             <ctrls:Chamber Canvas.Left="1034" Canvas.Top="224" 
-                       IsLiftPinUp="{Binding RtDataValues[PMA.LiftPinIsUp]}" 
-                       IsOpenSlitDoor="{Binding RtDataValues[PMA.IsSlitDoorClosed],Converter={StaticResource BoolToBool}}" 
-                       IsLidOpen="{Binding RtDataValues[PMA.IsLidClosed],Converter={StaticResource BoolToBool}}"  
+                       IsLiftPinUp="{Binding LiftPinIsUp}" 
+                       IsOpenSlitDoor="{Binding IsSlitDoorClosed,Converter={StaticResource BoolToBool}}" 
+                       IsLidOpen="{Binding IsLidClosed,Converter={StaticResource BoolToBool}}"  
                        IsBRFOn="{Binding BRFIsOn}"
                        IsSRFOn="{Binding SRFIsOn}"
                         />
 
-            <Ellipse Width="20" Height="20" Fill="{Binding RtDataValues[PMA.LiftPinIsUp],Converter={StaticResource boolToColor}}"  Canvas.Left="1065" Canvas.Top="466" Stroke="Silver" StrokeThickness="2"/>
+            <Ellipse Width="20" Height="20" Fill="{Binding LiftPinIsUp,Converter={StaticResource boolToColor}}"  Canvas.Left="1065" Canvas.Top="466" Stroke="Silver" StrokeThickness="2"/>
             <Button Height="20" Width="100" Content="Pin Up" Canvas.Left="1100" Canvas.Top="466" Command="{Binding PinUpDownCommand}" CommandParameter="True" Style="{StaticResource SysBtnStyle}" Foreground="White"/>
-            <Ellipse Width="20" Height="20" Fill="{Binding RtDataValues[PMA.LiftPinIsDown],Converter={StaticResource boolToColor}}" Canvas.Left="1065" Canvas.Top="490" Stroke="Silver" StrokeThickness="2"/>
+            <Ellipse Width="20" Height="20" Fill="{Binding LiftPinIsUp,Converter={StaticResource boolToColor2}}" Canvas.Left="1065" Canvas.Top="490" Stroke="Silver" StrokeThickness="2"/>
             <Button Height="20" Width="100" Content="Pin Down" Canvas.Left="1100" Canvas.Top="490" Command="{Binding PinUpDownCommand}" CommandParameter="False" Style="{StaticResource SysBtnStyle}" Foreground="White"/>
             
             <ctrls:Pump Canvas.Top="700"  Canvas.Left="1244" Width="35" Height="35" IsOpen="{Binding PumpIsOpen,Mode=TwoWay}">
@@ -924,8 +924,8 @@
             </Grid.ColumnDefinitions>
             <TextBlock  Text="SRF Match Mode"  FontSize="15" VerticalAlignment="Center"  HorizontalAlignment="Center"/>
             <StackPanel Grid.Column="1" Grid.ColumnSpan="2" Orientation="Horizontal">
-                <RadioButton  Content="Manual" VerticalContentAlignment="Center" Command="{Binding SetMatchModeCommand}" CommandParameter="SRFManual" IsChecked="{Binding RtDataValues[PMA.Match.WorkMode],Converter={StaticResource converters:IntToBoolConverter},Mode=OneWay}"/>
-                <RadioButton  Content="Auto"   VerticalContentAlignment="Center" Command="{Binding SetMatchModeCommand}" CommandParameter="SRFAuto" Margin="10,0,0,0" IsChecked="{Binding RtDataValues[PMA.Match.WorkMode],Converter={StaticResource converters:IntToBoolConverter2},Mode=OneWay}"/>
+                <RadioButton  Content="Manual" VerticalContentAlignment="Center" Command="{Binding SetMatchModeCommand}" CommandParameter="SRFManual" IsChecked="{Binding MatchWorkMode,Converter={StaticResource converters:IntToBoolConverter},Mode=OneWay}"/>
+                <RadioButton  Content="Auto"   VerticalContentAlignment="Center" Command="{Binding SetMatchModeCommand}" CommandParameter="SRFAuto" Margin="10,0,0,0" IsChecked="{Binding MatchWorkMode,Converter={StaticResource converters:IntToBoolConverter2},Mode=OneWay}"/>
             </StackPanel>
 
 
@@ -935,19 +935,19 @@
             <TextBlock Grid.Row="4" Text="SRF Match C2(%)" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="10,0,0,0"/>
 
             <TextBox   Grid.Row="1" Grid.Column="1" Width="Auto" Height="Auto" Text="{Binding SRFFwdPowerSetpoint}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"    BorderThickness="0" />
-            <TextBlock Grid.Row="2" Grid.Column="1" Width="Auto" Height="Auto" Text="{Binding RtDataValues[PMA.SRfReflectPower],StringFormat='F1'}"  Background="#E8E8E8" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center" Grid.ColumnSpan="2"/>
+            <TextBlock Grid.Row="2" Grid.Column="1" Width="Auto" Height="Auto" Text="{Binding SRfReflectPower,StringFormat='F1'}"  Background="#E8E8E8" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center" Grid.ColumnSpan="2"/>
             <TextBox   Grid.Row="3" Grid.Column="1" Width="Auto" Height="Auto" Text="{Binding SRFMatchC1}"  HorizontalContentAlignment="Center" VerticalContentAlignment="Center"    BorderThickness="0" />
             <TextBox   Grid.Row="4" Grid.Column="1" Width="Auto" Height="Auto" Text="{Binding SRFMatchC2}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"    BorderThickness="0" />
 
-            <TextBlock Grid.Row="1" Grid.Column="2" Width="Auto" Height="Auto" Text="{Binding RtDataValues[PMA.SRfForwardPowerFeedBack],StringFormat='F1'}"  Background="#E8E8E8" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center"/>
+            <TextBlock Grid.Row="1" Grid.Column="2" Width="Auto" Height="Auto" Text="{Binding SRfForwardPowerFeedBack,StringFormat='F1'}"  Background="#E8E8E8" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center"/>
             <!--<TextBlock Grid.Row="2" Grid.Column="2" Width="Auto" Height="Auto" Text="0.0"  Background="#E8E8E8" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center"/>-->
-            <TextBlock Grid.Row="3" Grid.Column="2" Width="Auto" Height="Auto" Text="{Binding RtDataValues[PMA.Match.C1],StringFormat='F1'}" Background="#E8E8E8" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center"/>
-            <TextBlock Grid.Row="4" Grid.Column="2" Width="Auto" Height="Auto" Text="{Binding RtDataValues[PMA.Match.C2],StringFormat='F1'}"  Background="#E8E8E8" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center"/>
+            <TextBlock Grid.Row="3" Grid.Column="2" Width="Auto" Height="Auto" Text="{Binding MatchC1,StringFormat='F1'}" Background="#E8E8E8" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center"/>
+            <TextBlock Grid.Row="4" Grid.Column="2" Width="Auto" Height="Auto" Text="{Binding MatchC2,StringFormat='F1'}"  Background="#E8E8E8" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center"/>
 
             <TextBlock  Text="BRF Match Mode" Grid.Row="5" FontSize="15" VerticalAlignment="Center"  HorizontalAlignment="Center"/>
             <StackPanel Grid.Row="5" Grid.Column="1" Grid.ColumnSpan="2" Orientation="Horizontal">
-                <RadioButton  Content="Manual" VerticalContentAlignment="Center" Command="{Binding SetMatchModeCommand}" CommandParameter="BRFManual" IsChecked="{Binding RtDataValues[PMA.BiasMatch.WorkMode],Converter={StaticResource converters:IntToBoolConverter},Mode=OneWay}"/>
-                <RadioButton  Content="Auto"   VerticalContentAlignment="Center" Command="{Binding SetMatchModeCommand}" CommandParameter="BRFAuto" Margin="10,0,0,0" IsChecked="{Binding RtDataValues[PMA.BiasMatch.WorkMode],Converter={StaticResource converters:IntToBoolConverter2},Mode=OneWay}"/>
+                <RadioButton  Content="Manual" VerticalContentAlignment="Center" Command="{Binding SetMatchModeCommand}" CommandParameter="BRFManual" IsChecked="{Binding BiasMatchWorkMode,Converter={StaticResource converters:IntToBoolConverter},Mode=OneWay}"/>
+                <RadioButton  Content="Auto"   VerticalContentAlignment="Center" Command="{Binding SetMatchModeCommand}" CommandParameter="BRFAuto" Margin="10,0,0,0" IsChecked="{Binding BiasMatchWorkMode,Converter={StaticResource converters:IntToBoolConverter2},Mode=OneWay}"/>
             </StackPanel>
 
             <TextBlock Grid.Row="6" Text="BRF Fwd Power(W)" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" Padding="10,0,0,0"/>
@@ -963,10 +963,10 @@
             <TextBox   Grid.Row="8" Grid.Column="1" Width="Auto" Height="Auto" Text="0.0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"    BorderThickness="0" />
             <TextBox   Grid.Row="9" Grid.Column="1" Width="Auto" Height="Auto" Text="0.0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"    BorderThickness="0" />
 
-            <TextBlock Grid.Row="6" Grid.Column="2" Width="Auto" Height="Auto" Text="{Binding RtDataValues[PMA.BRfForwardPowerFeedBack],StringFormat='F1'}"  Background="#E8E8E8" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center"/>
-            <TextBlock Grid.Row="7" Grid.Column="1" Width="Auto" Height="Auto" Text="{Binding RtDataValues[PMA.BRfReflectPower],StringFormat='F1'}"  Background="#E8E8E8" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center" Grid.ColumnSpan="2"/>
-            <TextBlock Grid.Row="8" Grid.Column="2" Width="Auto" Height="Auto" Text="{Binding RtDataValues[PMA.BiasMatch.C1],StringFormat='F1'}"  Background="#E8E8E8" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center"/>
-            <TextBlock Grid.Row="9" Grid.Column="2" Width="Auto" Height="Auto" Text="{Binding RtDataValues[PMA.BiasMatch.C2],StringFormat='F1'}"  Background="#E8E8E8" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center"/>
+            <TextBlock Grid.Row="6" Grid.Column="2" Width="Auto" Height="Auto" Text="{Binding BRfForwardPowerFeedBack,StringFormat='F1'}"  Background="#E8E8E8" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center"/>
+            <TextBlock Grid.Row="7" Grid.Column="1" Width="Auto" Height="Auto" Text="{Binding BRfReflectPower,StringFormat='F1'}"  Background="#E8E8E8" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center" Grid.ColumnSpan="2"/>
+            <TextBlock Grid.Row="8" Grid.Column="2" Width="Auto" Height="Auto" Text="{Binding BiasMatch.C1,StringFormat='F1'}"  Background="#E8E8E8" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center"/>
+            <TextBlock Grid.Row="9" Grid.Column="2" Width="Auto" Height="Auto" Text="{Binding BiasMatch.C2,StringFormat='F1'}"  Background="#E8E8E8" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center"/>
             <TextBlock Grid.Row="10" Grid.Column="2" Width="Auto" Height="Auto" Text="0.0"  Background="#E8E8E8" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center"/>
 
         </Grid>
@@ -1005,10 +1005,9 @@
             <!--<TextBox Grid.Row="3" Grid.Column="1" Width="Auto" Height="Auto" Text="0.0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0" />
             <TextBox Grid.Row="4" Grid.Column="1" Width="Auto" Height="Auto" Text="0.0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0" />-->
 
-            <TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding RtDataValues[PMA.ESCHV.OutputVoltage]}" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center"/>
+            <TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding ESCHVOutputVoltage}" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center"/>
+
 
-            <!--<TextBlock Grid.Row="3" Grid.Column="2" Text="{Binding RtDataValues[PMA.ChillerTem],StringFormat='F1'}" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center" />
-            <TextBlock Grid.Row="4" Grid.Column="2" Text="" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center"/>-->
         </Grid>
 
         <Grid Width="400" Height="25"  Background="#E8E8E8" unity:GridOptions.LineBrush="#afb4db" unity:GridOptions.ShowBorder="True" Canvas.Left="500" Canvas.Top="318">
@@ -1028,8 +1027,8 @@
             <TextBox Grid.Row="0" Grid.Column="1" Width="Auto" Height="Auto" Text="{Binding ChillerTempSetpoint}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0" />
             <!--<TextBox Grid.Row="1" Grid.Column="1" Width="Auto" Height="Auto" Text="{Binding WallTempSetpoint}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderBrush="White"  BorderThickness="0" />-->
 
-            <TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding RtDataValues[PMA.Chiller.Temp],StringFormat='F1'}" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center" />
-            <!--<TextBlock Grid.Row="1" Grid.Column="2" Text="{Binding RtDataValues[PMA.WallTempFeedBack],StringFormat='F1'}" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center"/>-->
+            <TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding ChillerTemperature,StringFormat='F1'}" FontSize="15" TextBlock.TextAlignment="Center" VerticalAlignment="Center" Block.TextAlignment="Center" />
+           
 
             <!--<Button Grid.Row="0" Grid.Column="3" Content="Set" Style="{x:Null}" Margin="2" Command="{Binding SetChillerTempCommand}" Cursor="Hand"/>-->
             <StackPanel Orientation="Horizontal" Grid.Row="0" Grid.Column="3">

+ 21 - 1
Venus/Venus_MainPages/Views/PartialPressureView.xaml

@@ -3,10 +3,30 @@
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
              xmlns:local="clr-namespace:Venus_MainPages.Views"
              mc:Ignorable="d" 
              d:DesignHeight="450" d:DesignWidth="800">
     <Grid>
-            
+        <Grid.ColumnDefinitions>
+            <ColumnDefinition/>
+            <ColumnDefinition/>
+        </Grid.ColumnDefinitions>
+        <lvc:CartesianChart  LegendLocation="Right" Hoverable="False" Grid.Column="1" Height="600">
+            <lvc:CartesianChart.Series>
+
+                <lvc:LineSeries Title="Current"  Width="1" Values="1,2,3,4,5,6,7" 
+                                                      
+                                                      MaxWidth="1" />
+                <lvc:LineSeries Title="Reference"  Width="1" Values="1,2,4,5,6,9,1" 
+                                                      
+                                                      MaxWidth="1"  />
+            </lvc:CartesianChart.Series>
+
+            <lvc:CartesianChart.AxisX>
+                <lvc:Axis Title="VAT Position" Labels="{Binding LineXLabels}"  />
+            </lvc:CartesianChart.AxisX>
+
+        </lvc:CartesianChart>
     </Grid>
 </UserControl>

+ 27 - 25
Venus/Venus_MainPages/Views/TMView.xaml.cs

@@ -69,40 +69,42 @@ namespace Venus_MainPages.Views
 
         private async void AutoButton_Click(object sender, RoutedEventArgs e)
         {
+            robot.RobotTAction = WaferRobotTAction.LLA;
+            await Task.Delay(1000);
 
-            //robot.RobotXAction = WaferRobotXAction.Extend;
-            //await Task.Delay(2000);
+            robot.RobotXAction = WaferRobotXAction.Extend;
+            await Task.Delay(2000);
 
-            //robot.Wafer = 1;
-            //await Task.Delay(200);
+            robot.Wafer = 1;
+            await Task.Delay(200);
 
-            //robot.RobotXAction = WaferRobotXAction.Retract;
-            //await Task.Delay(2000);
+            robot.RobotXAction = WaferRobotXAction.Retract;
+            await Task.Delay(2000);
 
-            //robot.RobotTAction = WaferRobotTAction.PMC;
-            //await Task.Delay(1000);
+            robot.RobotTAction = WaferRobotTAction.PMC;
+            await Task.Delay(1000);
 
-            //robot.RobotXAction = WaferRobotXAction.Extend;
-            //await Task.Delay(2000);
+            robot.RobotXAction = WaferRobotXAction.Extend;
+            await Task.Delay(2000);
 
-            //robot.Wafer = 0;
-            //await Task.Delay(200);
+            robot.Wafer = 0;
+            await Task.Delay(200);
 
-            //robot.RobotXAction = WaferRobotXAction.Retract;
-            //await Task.Delay(2000);
+            robot.RobotXAction = WaferRobotXAction.Retract;
+            await Task.Delay(2000);
 
-            //robot.RobotTAction = WaferRobotTAction.T_Origin;
+            robot.RobotTAction = WaferRobotTAction.T_Origin;
 
-            blockingCollection.Add(WaferRobotTAction.PMA);
-            blockingCollection.Add(WaferRobotTAction.PMB);
-            blockingCollection.Add(WaferRobotTAction.PMC);
-            blockingCollection.Add(WaferRobotTAction.PMD);
-            blockingCollection.Add(WaferRobotTAction.PMC);
-            blockingCollection.Add(WaferRobotTAction.PMB);
-            blockingCollection.Add(WaferRobotTAction.PMA);
-            blockingCollection.Add(WaferRobotTAction.PMB);
-            blockingCollection.Add(WaferRobotTAction.PMC);
-            blockingCollection.Add(WaferRobotTAction.PMD);
+            //blockingCollection.Add(WaferRobotTAction.PMA);
+            //blockingCollection.Add(WaferRobotTAction.PMB);
+            //blockingCollection.Add(WaferRobotTAction.PMC);
+            //blockingCollection.Add(WaferRobotTAction.PMD);
+            //blockingCollection.Add(WaferRobotTAction.PMC);
+            //blockingCollection.Add(WaferRobotTAction.PMB);
+            //blockingCollection.Add(WaferRobotTAction.PMA);
+            //blockingCollection.Add(WaferRobotTAction.PMB);
+            //blockingCollection.Add(WaferRobotTAction.PMC);
+            //blockingCollection.Add(WaferRobotTAction.PMD);
 
         }
 

+ 32 - 0
Venus/Venus_MainPages/Views/VATPerformanceView.xaml

@@ -0,0 +1,32 @@
+<UserControl x:Class="Venus_MainPages.Views.VATPerformanceView"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:Venus_MainPages.Views"
+             xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
+             mc:Ignorable="d" 
+             d:DesignHeight="450" d:DesignWidth="800">
+    <Grid>
+        <Grid.ColumnDefinitions>
+            <ColumnDefinition/>
+            <ColumnDefinition/>
+        </Grid.ColumnDefinitions>
+        <lvc:CartesianChart  LegendLocation="Right" Hoverable="False" Grid.Column="1" Height="600">
+            <lvc:CartesianChart.Series>
+
+                <lvc:ColumnSeries Title="Current"  Width="1" Values="1,2,3,4,5,6,7"  
+                                                      
+                                                      MaxWidth="1"  ColumnPadding="2"/>
+                <lvc:ColumnSeries Title="Reference"  Width="1" Values="1,2,6,4,5,1,7"  
+                                                      
+                                                      MaxWidth="1"  ColumnPadding="2"/>
+            </lvc:CartesianChart.Series>
+
+            <lvc:CartesianChart.AxisX>
+                <lvc:Axis Title="VAT Position" Labels="{Binding LineXLabels}"  />
+            </lvc:CartesianChart.AxisX>
+
+        </lvc:CartesianChart>
+    </Grid>
+</UserControl>

+ 28 - 0
Venus/Venus_MainPages/Views/VATPerformanceView.xaml.cs

@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace Venus_MainPages.Views
+{
+    /// <summary>
+    /// VATPerformanceView.xaml 的交互逻辑
+    /// </summary>
+    public partial class VATPerformanceView : UserControl
+    {
+        public VATPerformanceView()
+        {
+            InitializeComponent();
+        }
+    }
+}

+ 1 - 0
Venus/Venus_RT/Devices/AdTecRF.cs

@@ -728,6 +728,7 @@ namespace Venus_RT.Devices
             DATA.Subscribe($"{Module}.{Name}.C2", () => TunePosition2);
             DATA.Subscribe($"{Module}.{Name}.WorkMode", () => (int)WorkMode);
 
+
             OP.Subscribe($"{Module}.{Name}.SetC1", (func, args) =>
             {
                 return true;

+ 1 - 1
Venus/Venus_RT/Devices/JetPM.cs

@@ -425,7 +425,7 @@ namespace Venus_RT.Devices
             });
             DATA.Subscribe($"{Name}.BRfForwardPowerFeedBack", () => _GeneratorBias.ForwardPower);
             DATA.Subscribe($"{Name}.BRfReflectPower", () => BiasReflectPower);
-            DATA.Subscribe($"{Name}.TurboPumpRotationalSpeed", () => _TurboPump.RotationalSpeed);
+            DATA.Subscribe($"{Name}.TurboPumpRotationalSpeed", () => _TurboPump?.RotationalSpeed);
             DATA.Subscribe($"{Name}.PendulumValve.Position", () => _pendulumValve.Position);
             DATA.Subscribe($"{Name}.PendulumValve.Pressure", () => _pendulumValve.Pressure);
             DATA.Subscribe($"{Name}.PendulumValve.IsOpen", () => _pendulumValve.IsOpen);

+ 1 - 1
Venus/Venus_Themes/Converters/BoolToColor2.cs

@@ -13,7 +13,7 @@ namespace Venus_Themes.Converters
         public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
         {
 
-            return (bool)value ?  new SolidColorBrush(Colors.Gray): new SolidColorBrush(Colors.Green);
+            return (bool)value ?  new SolidColorBrush(Colors.Gray): new SolidColorBrush(Colors.Lime);
         }
 
         public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)

+ 24 - 0
Venus/Venus_UI/Config/VenusMenu.json

@@ -42,6 +42,12 @@
         "Name": "Partial Pressure",
         "View": "PartialPressureView",
         "IsShow": "true"
+      },
+      {
+        "Id": "VATPerformance",
+        "Name": "VAT Performance",
+        "View": "VATPerformanceView",
+        "IsShow": "true"
       }
 
     ]
@@ -91,6 +97,12 @@
         "View": "PartialPressureView",
         "IsShow": "true"
 
+      },
+      {
+        "Id": "VATPerformance",
+        "Name": "VAT Performance",
+        "View": "VATPerformanceView",
+        "IsShow": "true"
       }
 
     ]
@@ -134,6 +146,12 @@
         "IsShow": "true",
         "Name": "Partial Pressure",
         "View": "PartialPressureView"
+      },
+      {
+        "Id": "VATPerformance",
+        "Name": "VAT Performance",
+        "View": "VATPerformanceView",
+        "IsShow": "true"
       }
 
     ]
@@ -180,6 +198,12 @@
         "IsShow": "true",
         "Name": "Partial Pressure",
         "View": "PartialPressureView"
+      },
+      {
+        "Id": "VATPerformance",
+        "Name": "VAT Performance",
+        "View": "VATPerformanceView",
+        "IsShow": "true"
       }
 
     ]

+ 6 - 0
Venus/Venus_UI/Venus_UI.csproj

@@ -58,6 +58,12 @@
     <Reference Include="CommonServiceLocator">
       <HintPath>..\ThirdParty\CommonServiceLocator.dll</HintPath>
     </Reference>
+    <Reference Include="LiveCharts">
+      <HintPath>..\ThirdParty\LiveCharts.dll</HintPath>
+    </Reference>
+    <Reference Include="LiveCharts.Wpf">
+      <HintPath>..\ThirdParty\LiveCharts.Wpf.dll</HintPath>
+    </Reference>
     <Reference Include="log4net">
       <HintPath>..\ThirdParty\log4net.dll</HintPath>
     </Reference>