瀏覽代碼

1.添加TM/LLA/LLB 平衡阀
2.LL 控压功能优化

lixiang 10 月之前
父節點
當前提交
ed7c537c19

+ 5 - 0
Venus/Venus_Core/VenusDevice.cs

@@ -63,6 +63,8 @@
         ValveLoadlockVent,
         ValveLoadlockPumping,
         ValvePurge,
+        
+
         MfcGas1,
         MfcGas2,
         MfcGas3,
@@ -244,6 +246,9 @@
         LLBFastVentValve,
         TMVacAtmMode,
         LinerDoor,
+        TMVentExhaustValve,
+        LLAVentExhaustValve,
+        LLBVentExhaustValve,
     }
 
     public enum StateData

+ 1 - 9
Venus/Venus_MainPages/Converters/mTorrToPaConverter.cs

@@ -16,15 +16,7 @@ namespace Venus_MainPages.Converters
         public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
         {
             if (value == null) return 0.0;
-            if (ModuleManager.ModulePressureType == PressureType.mTorr)
-            {
-                return (System.Convert.ToSingle(value) );
-
-            }
-            else
-            { 
-                return (System.Convert.ToSingle(value) * 0.1333);
-            }
+            return (System.Convert.ToSingle(value) * 0.1333);
         }
 
         public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)

+ 59 - 13
Venus/Venus_MainPages/ViewModels/TMOperationViewModel.cs

@@ -1,5 +1,6 @@
 using Aitex.Core.Common.DeviceData;
 using Aitex.Core.RT.Log;
+using ExcelLibrary.BinaryFileFormat;
 using MECF.Framework.Common.DataCenter;
 using MECF.Framework.Common.Equipment;
 using MECF.Framework.Common.OperationCenter;
@@ -9,6 +10,7 @@ using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.Linq;
+using System.Reflection;
 using System.Windows.Threading;
 using Venus_Core;
 using Venus_MainPages.Unity;
@@ -51,6 +53,12 @@ namespace Venus_MainPages.ViewModels
         private bool m_LLBFastPumpValveIsOpen;
         private bool m_LLBPurgeValveIsOpen;
         private bool m_LLBVentValveIsOpen;
+
+        private bool m_TMVentExhaustValveIsOpen;
+        private bool m_LLAVentExhaustValveIsOpen;
+        private bool m_LLBVentExhaustValveIsOpen;
+
+
         private List<string> m_RtDataKeys = new List<string>();
 
         private int m_TMOutChamberPressure;
@@ -147,6 +155,25 @@ namespace Venus_MainPages.ViewModels
             get { return m_LLBVentValveIsOpen; }
             set { SetProperty(ref m_LLBVentValveIsOpen, value); }
         }
+
+        public bool TMVentExhaustValveIsOpen
+        {
+            get { return m_TMVentExhaustValveIsOpen; }
+            set { SetProperty(ref m_TMVentExhaustValveIsOpen, value); }
+        }
+
+        public bool LLAVentExhaustValveIsOpen
+        {
+            get { return m_LLAVentExhaustValveIsOpen; }
+            set { SetProperty(ref m_LLAVentExhaustValveIsOpen, value); }
+        }
+
+        public bool LLBVentExhaustValveIsOpen
+        {
+            get { return m_LLBVentExhaustValveIsOpen; }
+            set { SetProperty(ref m_LLBVentExhaustValveIsOpen, value); }
+        }
+
         public int TMChamberPressureSetPoint
         {
             get { return m_TMChamberPressureSetPoint; }
@@ -367,9 +394,9 @@ namespace Venus_MainPages.ViewModels
             _ChamberDoorCloseCommand ?? (_ChamberDoorCloseCommand = new DelegateCommand<object>(OnChamberDoorClose));
 
 
-        //private DelegateCommand _SetTMChamberPressureCommand;
-        //public DelegateCommand SetTMChamberPressureCommand =>
-        //    _SetTMChamberPressureCommand ?? (_SetTMChamberPressureCommand = new DelegateCommand(OnSetTMChamberPressure));
+        private DelegateCommand _SetTMChamberPressureCommand;
+        public DelegateCommand SetTMChamberPressureCommand =>
+            _SetTMChamberPressureCommand ?? (_SetTMChamberPressureCommand = new DelegateCommand(OnSetTMChamberPressure));
 
         private DelegateCommand _OnlineCommand;
         public DelegateCommand OnlineCommand =>
@@ -498,12 +525,19 @@ namespace Venus_MainPages.ViewModels
         {
             InvokeClient.Instance.Service.DoOperation($"{obj?.ToString()}.SlitDoor.Close");
         }
-        //private void OnSetTMChamberPressure()
-        //{
-        //    //InvokeClient.Instance.Service.DoOperation($"TM.SetChamberPressure", TMChamberPressureSetPoint);
-        //    //TMOutChamberPressure = TMChamberPressureSetPoint;
-        //    ////InvokeClient.Instance.Service.DoOperation("System.SetConfig", "TM.ControlPressureSetPoint", TMChamberPressureSetPoint.ToString());
-        //}
+        private void OnSetTMChamberPressure()
+        {
+            if (CommonFunction.GetValue<bool>(RtDataValues, $"{m_ModuleCheckedName}.IsEnableControlPressure"))
+            {
+                InvokeClient.Instance.Service.DoOperation($"{m_ModuleCheckedName}.{RtOperation.AbortControlPressure}");
+
+            }
+            else
+            { 
+                InvokeClient.Instance.Service.DoOperation($"{m_ModuleCheckedName}.{RtOperation.ControlPressure}");
+            }
+
+        }
         private void OnOnline()
         {
             InvokeClient.Instance.Service.DoOperation($"{m_ModuleCheckedName}.{RtOperation.Online}");
@@ -542,17 +576,22 @@ namespace Venus_MainPages.ViewModels
             LLBFastPumpValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, "TM.LLBFastPumpValve.IsOpen");
             LLBPurgeValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, "TM.LLBPurgeValve.IsOpen");
             LLBVentValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, "TM.LLBVentValve.IsOpen");
+            LLAVentExhaustValveIsOpen= CommonFunction.GetValue<bool>(RtDataValues, "TM.LLAVentExhaustValve.IsOpen");
+            LLBVentExhaustValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, "TM.LLBVentExhaustValve.IsOpen");
+            TMVentExhaustValveIsOpen = CommonFunction.GetValue<bool>(RtDataValues, "TM.TMVentExhaustValve.IsOpen");
+
+
             IsOFFline = !CommonFunction.GetValue<bool>(RtDataValues, $"{m_ModuleCheckedName}.IsOnline");
             TMIsOFFline = !CommonFunction.GetValue<bool>(RtDataValues, $"TM.IsOnline");
             TMCurrentState = (TMState)(Enum.Parse(typeof(TMState), RtDataValues[$"TM.FsmState"].ToString()));
             LLACurrentState = (LLState)(Enum.Parse(typeof(LLState), RtDataValues[$"LLA.FsmState"].ToString()));
             LLBCurrentState = (LLState)(Enum.Parse(typeof(LLState), RtDataValues[$"LLB.FsmState"].ToString()));
             TMIsHoming = TMCurrentState == TMState.Initializing || (TMState)(Enum.Parse(typeof(TMState), RtDataValues[$"TM.FsmState"].ToString())) == TMState.InitializingRB;
-            if (m_TMOperationView != null)
-            {
-                m_TMOperationView.stepBar.Progress = CommonFunction.GetValue<int>(RtDataValues, "TM.Home.StepNo");
+            //if (m_TMOperationView != null)
+            //{
+            //    m_TMOperationView.stepBar.Progress = CommonFunction.GetValue<int>(RtDataValues, "TM.Home.StepNo");
 
-            }
+            //}
         }
         private void addDataKeys()
         {
@@ -574,6 +613,11 @@ namespace Venus_MainPages.ViewModels
             m_RtDataKeys.Add($"TM.LLBSoftPumpValve.IsOpen");
             m_RtDataKeys.Add($"TM.LLBFastPumpValve.IsOpen");
 
+            m_RtDataKeys.Add($"TM.TMVentExhaustValve.IsOpen");
+            m_RtDataKeys.Add($"TM.LLAVentExhaustValve.IsOpen");
+            m_RtDataKeys.Add($"TM.LLBVentExhaustValve.IsOpen");
+
+
             m_RtDataKeys.Add($"TM.TMVacSwitch.Value");
             m_RtDataKeys.Add($"TM.LLAVacSwitch.Value");
             m_RtDataKeys.Add($"TM.LLBVacSwitch.Value");
@@ -619,6 +663,8 @@ namespace Venus_MainPages.ViewModels
             m_RtDataKeys.Add("TM.PMCSlitDoor.IsClosed");
             m_RtDataKeys.Add("TM.PMDSlitDoor.IsClosed");
 
+            m_RtDataKeys.Add("LLA.IsEnableControlPressure");
+            m_RtDataKeys.Add("LLB.IsEnableControlPressure");
 
         }
 

File diff suppressed because it is too large
+ 41 - 56
Venus/Venus_MainPages/Views/TMOperationView.xaml


+ 0 - 3
Venus/Venus_RT/Config/PM/Kepler2200A/Kepler2200AInterlock.xml

@@ -1,9 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Interlock xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 
-
-
-
 	<Action do="DO_PVN21" value="true" tip="PVN21" tip.zh-CN="" tip.en-US="DO-00" >
 		<Limit di="DI_Lid_Closed"		value="true" tip="DI Lid Closed"			tip.zh-CN="" tip.en-US="DI-0" />
 		<Limit di="DI_Slit_Door_Close_POS"	value="true" tip="DI Slit Door Close POS"	tip.zh-CN="" tip.en-US="DI-11" />

二進制
Venus/Venus_RT/Config/TM/DeviceModelVenus_MF.xml


+ 1 - 1
Venus/Venus_RT/Config/TM/_ioDefineVenus_MF.xml

@@ -140,7 +140,7 @@
 		<DO_ITEM Index="17" Name="DO_Fast_Pumping_Valve_LLB" Device="" Addr="w1.01" />
 		<DO_ITEM Index="18" Name="DO_Purge_Valve_LLB" Device="" Addr="w1.02" />
 		<DO_ITEM Index="19" Name="DO_Vent_Valve_LLB" Device="" Addr="w1.03" />
-		<DO_ITEM Index="10" Name="DO_Vent_Exhaust_Valve_LLB" Device="" Addr="w1.04" />
+		<DO_ITEM Index="20" Name="DO_Vent_Exhaust_Valve_LLB" Device="" Addr="w1.04" />
 		<DO_ITEM Index="21" Name="DO_LLB_Slit_Door_E_Open" Device="" Addr="w1.05" />
 		<DO_ITEM Index="22" Name="DO_LLB_Slit_Door_E_Close" Device="" Addr="w1.06" />
 		<DO_ITEM Index="23" Name="DO_LLB_Slit_Door_T_Open" Device="" Addr="w1.07" />

+ 3 - 0
Venus/Venus_RT/Devices/IODevices/IoCylinder.cs

@@ -257,7 +257,10 @@ namespace Venus_RT.Devices
                         }
                         else
                         {
+                            var value = _doON.Check(false, out var reason2);
+
                             if (!_doON.Check(false, out var reason))
+
                                 LOG.Write(eEvent.ERR_DEVICE_INFO, Module, $"{Name}气缸信号无法关闭, interlock, " + reason);
                             else
                                 LOG.Write(eEvent.ERR_DEVICE_INFO, Module, $"{Name}气缸信号仍然打开");

+ 9 - 0
Venus/Venus_RT/Devices/TM/JetTM.cs

@@ -72,6 +72,11 @@ namespace Venus_RT.Devices
 
         private readonly IoValve _TMVacAtmMode;
 
+        private readonly IoValve _TMVentExhaustValve;
+        private readonly IoValve _LLAVentExhaustValve;
+        private readonly IoValve _LLBVentExhaustValve;
+
+
         private readonly IoSensor _TMPowerOn;
         private readonly IoSensor _TMInSafty;
         private readonly IoSensor _WaferLeakSensor;
@@ -281,6 +286,10 @@ namespace Venus_RT.Devices
 
             _TMVacAtmMode = DEVICE.GetDevice<IoValve>($"TM.{VenusDevice.TMVacAtmMode}");
 
+            _TMVentExhaustValve= DEVICE.GetDevice<IoValve>($"TM.{VenusDevice.TMVentExhaustValve}");
+            _LLAVentExhaustValve = DEVICE.GetDevice<IoValve>($"TM.{VenusDevice.LLAVentExhaustValve}");
+            _LLBVentExhaustValve = DEVICE.GetDevice<IoValve>($"TM.{VenusDevice.LLBVentExhaustValve}");
+
 
             _LLBSoftPumpValve = DEVICE.GetDevice<IoValve>($"TM.{VenusDevice.LLBSoftPumpValve}");
             _LLBFastPumpValve   = DEVICE.GetDevice<IoValve>($"TM.{VenusDevice.LLBFastPumpValve}");

+ 59 - 46
Venus/Venus_RT/Modules/LLs/LLEntity.cs

@@ -121,12 +121,13 @@ namespace Venus_RT.Modules
         private readonly MFLeakCheckRoutine _leakCheckRoutine;
         private readonly MFPurgeRoutine _purgeRoutine;
         private readonly int _slotNumber = 4;
-        private bool startControlPressureFlag = true;
+        //private bool startControlPressureFlag = true;
 
         private int _controlPressureCheckPoint = 100;
         private int _controlPressureSetPoint = 90;
         private int _controlFlowSetPoint = 90;
 
+        private bool _isEnableControlPressure;
         public LLEntity(ModuleName module)
         {
             Module = module;
@@ -157,12 +158,17 @@ namespace Venus_RT.Modules
             OP.Subscribe($"{Module}.{RtOperation.Include}", (cmd, args) => FnSetInclude());
             OP.Subscribe($"{Module}.{RtOperation.Exclude}", (cmd, args) => FnSetExclude());
 
+            OP.Subscribe($"{Module}.{RtOperation.ControlPressure}", (cmd, args) => StartControlPressure());
+            OP.Subscribe($"{Module}.{RtOperation.AbortControlPressure}", (cmd, args) => StopControlPressure());
+
             DATA.Subscribe($"{Module}.FsmState", () => (((STATE)fsm.State).ToString()), SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.FsmPrevState", () => (((PMState)fsm.PrevState).ToString()), SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.FsmLastMessage", () => (((MSG)fsm.LastMsg).ToString()), SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.IsOnline", () => IsOnline, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.IsInclude", () => IsInclude, SubscriptionAttribute.FLAG.IgnoreSaveDB);
             DATA.Subscribe($"{Module}.IsBusy", () => IsBusy, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+            DATA.Subscribe($"{Module}.IsEnableControlPressure", () => _isEnableControlPressure, SubscriptionAttribute.FLAG.IgnoreSaveDB);
+
             return true;
         }
         private void InitFsmMap()
@@ -299,62 +305,21 @@ namespace Venus_RT.Modules
 
                 return true;
             }
-
-            startControlPressureFlag = false;
-            _controlPressureCheckPoint = SC.GetValue<int>($"{Module}.ControlPressureCheckPoint");
-            _controlPressureSetPoint = SC.GetValue<int>($"{Module}.ControlPressureSetPoint");
-            _controlFlowSetPoint = SC.GetValue<int>($"{Module}.{Module}_MFC1.DefaultSetPoint");
-            //_JetTM.TurnFastPumpValve(Module, true);
-
-            _JetTM.TurnSoftPumpValve(Module, true);
-
-
-            _JetTM.TurnPurgeValve(Module, true);
-
-            if (Module == ModuleName.LLA)
-            {
-                _JetTM.SwitchLLAPressureMode(true);
-                _JetTM.SetLLAPressure((int)ConvertPressureUnit.ConvertPaTomtorr(_controlPressureSetPoint));
-            }
-            else if (Module == ModuleName.LLB)
-            {
-                _JetTM.SwitchLLBPressureMode(true);
-                _JetTM.SetLLBPressure((int)ConvertPressureUnit.ConvertPaTomtorr(_controlPressureSetPoint));
-            }
-
+            StartControlPressure();
             Status = LLStatus.Ready_For_TM;
 
             return true;
         }
 
         private bool fnExitTMReady(object[] param)
-        {
-            
-
+        {           
             if (RouteManager.IsATMMode)
             {
                 Status = LLStatus.Not_Ready;
 
                 return true;
-            }
-
-
-            //_JetTM.TurnFastPumpValve(Module, false);
-            _JetTM.TurnSoftPumpValve(Module, false);
-
-            _JetTM.TurnPurgeValve(Module, false);
-
-            if (Module == ModuleName.LLA)
-            {
-                _JetTM.SwitchLLAPressureMode(false);
-                _JetTM.SetLLAPressure(0);
-            }
-            else if (Module == ModuleName.LLB)
-            {
-                _JetTM.SwitchLLBPressureMode(false);
-                _JetTM.SetLLBPressure(0);
-            }
-
+            }         
+            StopControlPressure();
             Status = LLStatus.Not_Ready;
 
             return true;
@@ -642,6 +607,54 @@ namespace Venus_RT.Modules
             _ventingRoutine.Abort();
             return true;
         }
+
+        private bool StartControlPressure()
+        {
+            _isEnableControlPressure = true;
+            _controlPressureCheckPoint = SC.GetValue<int>($"{Module}.ControlPressureCheckPoint");
+            _controlPressureSetPoint = SC.GetValue<int>($"{Module}.ControlPressureSetPoint");
+            _controlFlowSetPoint = SC.GetValue<int>($"{Module}.{Module}_MFC1.DefaultSetPoint");
+            //_JetTM.TurnFastPumpValve(Module, true);
+
+            _JetTM.TurnSoftPumpValve(Module, true);
+
+
+            _JetTM.TurnPurgeValve(Module, true);
+            _JetTM.TurnN2Valve(true);
+            if (Module == ModuleName.LLA)
+            {
+                _JetTM.SwitchLLAPressureMode(true);
+                _JetTM.SetLLAPressure((int)ConvertPressureUnit.ConvertPaTomtorr(_controlPressureSetPoint));
+            }
+            else if (Module == ModuleName.LLB)
+            {
+                _JetTM.SwitchLLBPressureMode(true);
+                _JetTM.SetLLBPressure((int)ConvertPressureUnit.ConvertPaTomtorr(_controlPressureSetPoint));
+            }
+            return true;
+        }
+        private bool StopControlPressure() 
+        {
+            _isEnableControlPressure = false;
+
+            //_JetTM.TurnFastPumpValve(Module, false);
+            _JetTM.TurnSoftPumpValve(Module, false);
+
+            _JetTM.TurnPurgeValve(Module, false);
+            _JetTM.TurnN2Valve(false);
+
+            if (Module == ModuleName.LLA)
+            {
+                _JetTM.SwitchLLAPressureMode(false);
+                _JetTM.SetLLAPressure(0);
+            }
+            else if (Module == ModuleName.LLB)
+            {
+                _JetTM.SwitchLLBPressureMode(false);
+                _JetTM.SetLLBPressure(0);
+            }
+            return true;
+        }
         private void _debugRoutine()
         {
             int flag = 0;

二進制
Venus/Venus_Simulator/Config/_ioDefineVenus_MF.xml


+ 24 - 24
Venus/Venus_Themes/UserControls/NiceUIControls/NiceMainTM.xaml

@@ -161,8 +161,8 @@
                 <Rectangle Cursor="Hand" DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl,AncestorLevel=1}}" Style="{StaticResource PMDDoorAnimation}"  Fill="{StaticResource doorColor3}"   VerticalAlignment="Top"    Height="20" Width="102"   Canvas.Top="200" Canvas.Left="-2" Name="door1">
                     <Rectangle.ContextMenu >
                         <ContextMenu>
-                            <MenuItem Header="Open Door"  Click="OpenPMDDoor_Click"     IsChecked="{Binding PMDDoorIsOpen}" IsEnabled="{Binding PMDDoorIsOpen,Converter={StaticResource BoolToBool}}"/>
-                            <MenuItem Header="Close Door" Click="ClosePMDDoor_Click"    IsChecked="{Binding PMDDoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding PMDDoorIsOpen}"/>
+                            <MenuItem Header="PMD Open Door"  Click="OpenPMDDoor_Click"     IsChecked="{Binding PMDDoorIsOpen}" IsEnabled="{Binding PMDDoorIsOpen,Converter={StaticResource BoolToBool}}"/>
+                            <MenuItem Header="PMD Close Door" Click="ClosePMDDoor_Click"    IsChecked="{Binding PMDDoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding PMDDoorIsOpen}"/>
                         </ContextMenu>
                     </Rectangle.ContextMenu>
                 </Rectangle>
@@ -172,8 +172,8 @@
                     </Rectangle.RenderTransform>
                     <Rectangle.ContextMenu >
                         <ContextMenu>
-                            <MenuItem Header="Open Door"  Click="OpenPMDDoor_Click"    IsChecked="{Binding PMDDoorIsOpen}" IsEnabled="{Binding PMDDoorIsOpen,Converter={StaticResource BoolToBool}}"/>
-                            <MenuItem Header="Close Door" Click="ClosePMDDoor_Click"    IsChecked="{Binding PMDDoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding PMDDoorIsOpen}"/>
+                            <MenuItem Header="PMD Open Door"  Click="OpenPMDDoor_Click"    IsChecked="{Binding PMDDoorIsOpen}" IsEnabled="{Binding PMDDoorIsOpen,Converter={StaticResource BoolToBool}}"/>
+                            <MenuItem Header="PMD Close Door" Click="ClosePMDDoor_Click"    IsChecked="{Binding PMDDoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding PMDDoorIsOpen}"/>
                         </ContextMenu>
                     </Rectangle.ContextMenu>
                 </Rectangle>
@@ -185,8 +185,8 @@
                 <Rectangle Cursor="Hand" DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl,AncestorLevel=1}}" Style="{StaticResource PMADoorAnimation}"  Fill="{StaticResource doorColor3}"   VerticalAlignment="Top"    Height="20" Width="102"   Canvas.Top="200" Canvas.Left="-2" >
                     <Rectangle.ContextMenu >
                         <ContextMenu>
-                            <MenuItem Header="Open Door"  Click="OpenPMADoor_Click"     IsChecked="{Binding PMADoorIsOpen}" IsEnabled="{Binding PMADoorIsOpen,Converter={StaticResource BoolToBool}}"/>
-                            <MenuItem Header="Close Door" Click="ClosePMADoor_Click"    IsChecked="{Binding PMADoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding PMADoorIsOpen}"/>
+                            <MenuItem Header="PMA Open Door"  Click="OpenPMADoor_Click"     IsChecked="{Binding PMADoorIsOpen}" IsEnabled="{Binding PMADoorIsOpen,Converter={StaticResource BoolToBool}}"/>
+                            <MenuItem Header="PMA Close Door" Click="ClosePMADoor_Click"    IsChecked="{Binding PMADoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding PMADoorIsOpen}"/>
                         </ContextMenu>
                     </Rectangle.ContextMenu>
                 </Rectangle>
@@ -196,8 +196,8 @@
                     </Rectangle.RenderTransform>
                     <Rectangle.ContextMenu >
                         <ContextMenu>
-                            <MenuItem Header="Open Door"  Click="OpenPMADoor_Click"     IsChecked="{Binding PMADoorIsOpen}" IsEnabled="{Binding PMADoorIsOpen,Converter={StaticResource BoolToBool}}"/>
-                            <MenuItem Header="Close Door" Click="ClosePMADoor_Click"    IsChecked="{Binding PMADoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding PMADoorIsOpen}"/>
+                            <MenuItem Header="PMA Open Door"  Click="OpenPMADoor_Click"     IsChecked="{Binding PMADoorIsOpen}" IsEnabled="{Binding PMADoorIsOpen,Converter={StaticResource BoolToBool}}"/>
+                            <MenuItem Header="PMA Close Door" Click="ClosePMADoor_Click"    IsChecked="{Binding PMADoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding PMADoorIsOpen}"/>
                         </ContextMenu>
                     </Rectangle.ContextMenu>
                 </Rectangle>
@@ -212,8 +212,8 @@
                 <Rectangle Cursor="Hand" DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl,AncestorLevel=1}}" Style="{StaticResource LLADoorAnimation}"  Fill="{StaticResource doorColor3}"   VerticalAlignment="Top"    Height="20" Width="102"   Canvas.Top="200" Canvas.Left="-2" >
                     <Rectangle.ContextMenu >
                         <ContextMenu>
-                            <MenuItem Header="Open Door"  Click="OpenLLADoor_Click"    IsChecked="{Binding LLADoorIsOpen}" IsEnabled="{Binding LLADoorIsOpen,Converter={StaticResource BoolToBool}}"/>
-                            <MenuItem Header="Close Door" Click="CloseLLADoor_Click"    IsChecked="{Binding LLADoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding LLADoorIsOpen}"/>
+                            <MenuItem Header="LLA Open Door"  Click="OpenLLADoor_Click"    IsChecked="{Binding LLADoorIsOpen}" IsEnabled="{Binding LLADoorIsOpen,Converter={StaticResource BoolToBool}}"/>
+                            <MenuItem Header="LLA Close Door" Click="CloseLLADoor_Click"    IsChecked="{Binding LLADoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding LLADoorIsOpen}"/>
                         </ContextMenu>
                     </Rectangle.ContextMenu>
                 </Rectangle>
@@ -223,8 +223,8 @@
                     </Rectangle.RenderTransform>
                     <Rectangle.ContextMenu >
                         <ContextMenu>
-                            <MenuItem Header="Open Door"  Click="OpenLLADoor_Click"    IsChecked="{Binding LLADoorIsOpen}" IsEnabled="{Binding LLADoorIsOpen,Converter={StaticResource BoolToBool}}"/>
-                            <MenuItem Header="Close Door" Click="CloseLLADoor_Click"    IsChecked="{Binding LLADoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding DoorIsOpen}"/>
+                            <MenuItem Header="LLA Open Door"  Click="OpenLLADoor_Click"    IsChecked="{Binding LLADoorIsOpen}" IsEnabled="{Binding LLADoorIsOpen,Converter={StaticResource BoolToBool}}"/>
+                            <MenuItem Header="LLA Close Door" Click="CloseLLADoor_Click"    IsChecked="{Binding LLADoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding DoorIsOpen}"/>
                         </ContextMenu>
                     </Rectangle.ContextMenu>
                 </Rectangle>
@@ -239,8 +239,8 @@
                 <Rectangle Cursor="Hand" DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl,AncestorLevel=1}}" Style="{StaticResource LLBDoorAnimation}"  Fill="{StaticResource doorColor3}"   VerticalAlignment="Top"    Height="20" Width="102"   Canvas.Top="200" Canvas.Left="-2" >
                     <Rectangle.ContextMenu >
                         <ContextMenu>
-                            <MenuItem Header="Open Door"  Click="OpenLLBDoor_Click"    IsChecked="{Binding LLBDoorIsOpen}" IsEnabled="{Binding LLBDoorIsOpen,Converter={StaticResource BoolToBool}}"/>
-                            <MenuItem Header="Close Door" Click="CloseLLBDoor_Click"    IsChecked="{Binding LLBDoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding LLBDoorIsOpen}"/>
+                            <MenuItem Header="LLB Open Door"  Click="OpenLLBDoor_Click"    IsChecked="{Binding LLBDoorIsOpen}" IsEnabled="{Binding LLBDoorIsOpen,Converter={StaticResource BoolToBool}}"/>
+                            <MenuItem Header="LLB Close Door" Click="CloseLLBDoor_Click"    IsChecked="{Binding LLBDoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding LLBDoorIsOpen}"/>
                         </ContextMenu>
                     </Rectangle.ContextMenu>
                 </Rectangle>
@@ -250,8 +250,8 @@
                     </Rectangle.RenderTransform>
                     <Rectangle.ContextMenu >
                         <ContextMenu>
-                            <MenuItem Header="Open Door"  Click="OpenLLBDoor_Click"    IsChecked="{Binding LLBDoorIsOpen}" IsEnabled="{Binding LLBDoorIsOpen,Converter={StaticResource BoolToBool}}"/>
-                            <MenuItem Header="Close Door" Click="CloseLLBDoor_Click"    IsChecked="{Binding LLBDoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding LLBDoorIsOpen}"/>
+                            <MenuItem Header="LLB Open Door"  Click="OpenLLBDoor_Click"    IsChecked="{Binding LLBDoorIsOpen}" IsEnabled="{Binding LLBDoorIsOpen,Converter={StaticResource BoolToBool}}"/>
+                            <MenuItem Header="LLB Close Door" Click="CloseLLBDoor_Click"    IsChecked="{Binding LLBDoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding LLBDoorIsOpen}"/>
                         </ContextMenu>
                     </Rectangle.ContextMenu>
                 </Rectangle>
@@ -266,8 +266,8 @@
                 <Rectangle Cursor="Hand" DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl,AncestorLevel=1}}" Style="{StaticResource PMCDoorAnimation}"  Fill="{StaticResource doorColor3}"   VerticalAlignment="Top"    Height="20" Width="102"   Canvas.Top="200" Canvas.Left="-2" >
                     <Rectangle.ContextMenu >
                         <ContextMenu>
-                            <MenuItem Header="Open Door"  Click="OpenPMCDoor_Click"    IsChecked="{Binding PMCDoorIsOpen}" IsEnabled="{Binding PMCDoorIsOpen,Converter={StaticResource BoolToBool}}"/>
-                            <MenuItem Header="Close Door" Click="ClosePMCDoor_Click"    IsChecked="{Binding PMCDoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding PMCDoorIsOpen}"/>
+                            <MenuItem Header="PMC Open Door"  Click="OpenPMCDoor_Click"    IsChecked="{Binding PMCDoorIsOpen}" IsEnabled="{Binding PMCDoorIsOpen,Converter={StaticResource BoolToBool}}"/>
+                            <MenuItem Header="PMC Close Door" Click="ClosePMCDoor_Click"    IsChecked="{Binding PMCDoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding PMCDoorIsOpen}"/>
                         </ContextMenu>
                     </Rectangle.ContextMenu>
                 </Rectangle>
@@ -277,8 +277,8 @@
                     </Rectangle.RenderTransform>
                     <Rectangle.ContextMenu >
                         <ContextMenu>
-                            <MenuItem Header="Open Door"  Click="OpenPMCDoor_Click"    IsChecked="{Binding PMCDoorIsOpen}" IsEnabled="{Binding DoorIsOpen,Converter={StaticResource BoolToBool}}"/>
-                            <MenuItem Header="Close Door" Click="ClosePMCDoor_Click"    IsChecked="{Binding PMCDoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding PMCDoorIsOpen}"/>
+                            <MenuItem Header="PMC Open Door"  Click="OpenPMCDoor_Click"    IsChecked="{Binding PMCDoorIsOpen}" IsEnabled="{Binding DoorIsOpen,Converter={StaticResource BoolToBool}}"/>
+                            <MenuItem Header="PMC Close Door" Click="ClosePMCDoor_Click"    IsChecked="{Binding PMCDoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding PMCDoorIsOpen}"/>
                         </ContextMenu>
                     </Rectangle.ContextMenu>
                 </Rectangle>
@@ -293,8 +293,8 @@
                 <Rectangle Cursor="Hand" DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl,AncestorLevel=1}}" Style="{StaticResource PMBDoorAnimation}"  Fill="{StaticResource doorColor3}"   VerticalAlignment="Top"    Height="20" Width="102"   Canvas.Top="200" Canvas.Left="-2" >
                     <Rectangle.ContextMenu >
                         <ContextMenu>
-                            <MenuItem Header="Open Door"  Click="OpenPMBDoor_Click"     IsChecked="{Binding PMBDoorIsOpen}" IsEnabled="{Binding PMBDoorIsOpen,Converter={StaticResource BoolToBool}}"/>
-                            <MenuItem Header="Close Door" Click="ClosePMBDoor_Click"    IsChecked="{Binding PMBDoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding PMBDoorIsOpen}"/>
+                            <MenuItem Header="PMB Open Door"  Click="OpenPMBDoor_Click"     IsChecked="{Binding PMBDoorIsOpen}" IsEnabled="{Binding PMBDoorIsOpen,Converter={StaticResource BoolToBool}}"/>
+                            <MenuItem Header="PMB Close Door" Click="ClosePMBDoor_Click"    IsChecked="{Binding PMBDoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding PMBDoorIsOpen}"/>
                         </ContextMenu>
                     </Rectangle.ContextMenu>
                 </Rectangle>
@@ -304,8 +304,8 @@
                     </Rectangle.RenderTransform>
                     <Rectangle.ContextMenu >
                         <ContextMenu>
-                            <MenuItem Header="Open Door"  Click="OpenPMBDoor_Click"    IsChecked="{Binding PMBDoorIsOpen}" IsEnabled="{Binding PMBDoorIsOpen,Converter={StaticResource BoolToBool}}"/>
-                            <MenuItem Header="Close Door" Click="ClosePMBDoor_Click"    IsChecked="{Binding PMBDoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding PMBDoorIsOpen}"/>
+                            <MenuItem Header="PMB Open Door"  Click="OpenPMBDoor_Click"    IsChecked="{Binding PMBDoorIsOpen}" IsEnabled="{Binding PMBDoorIsOpen,Converter={StaticResource BoolToBool}}"/>
+                            <MenuItem Header="PMB Close Door" Click="ClosePMBDoor_Click"    IsChecked="{Binding PMBDoorIsOpen,Converter={StaticResource BoolToBool}}" IsEnabled="{Binding PMBDoorIsOpen}"/>
                         </ContextMenu>
                     </Rectangle.ContextMenu>
                 </Rectangle>