Browse Source

update safety data

chenkui 2 days ago
parent
commit
1193dac6f8

+ 195 - 475
Framework/Common/Device/Safety/SafetyData.cs

@@ -20,317 +20,208 @@ namespace MECF.Framework.Common.Device.Safety
         /// </summary>
         private bool _mainCommErr;
         /// <summary>
-        /// Loader/Puf通信故障
+        /// Main Function Block故障
         /// </summary>
-        private bool _loaderPufCommErr;
+        private bool _mainFbErr;
         /// <summary>
-        /// srd通信故障
+        /// VPW状态
         /// </summary>
-        private bool _srdCommErr;
-        /// <summary>
-        /// transporter通信故障
-        /// </summary>
-        private bool _transportCommErr;
-        /// <summary>
-        /// Twincat Function Block故障
-        /// </summary>
-        private bool _mainFunctionBlockErr;
-        /// <summary>
-        /// loader/puf function block故障
-        /// </summary>
-        private bool _loaderPufFunctionBlockErr;
-        /// <summary>
-        /// srd function block故障
-        /// </summary>
-        private bool _srdFunctionBlockErr;
-        /// <summary>
-        /// Transporter function block故障
-        /// </summary>
-        private bool _transporterFunctionBlockErr;
-        /// <summary>
-        /// 数据是否初始化
-        /// </summary>
-        private bool _isDataInitialized;
-
-        #region HotConnect
+        private double _vpwHotConectState;
         /// <summary>
-        /// loader Hot Connect状态
+        /// VPW通信故障
         /// </summary>
-        private double _loaderHotConnectState;
+        private bool _vpwCommErr;
         /// <summary>
-        /// ldr hot connect状态
+        /// VPW function block故障
         /// </summary>
-        private double _ldrHotConnectState;
+        private bool _vpwFbErr;
         /// <summary>
-        /// prc hot connect状态
+        /// RES1_2状态
         /// </summary>
-        private double _prcHotConnectState;
+        private double _res12HotConectState;
         /// <summary>
-        /// transporter hot connect状态
+        /// RES1_2通信故障
         /// </summary>
-        private double _transporterHotConnectState;
+        private bool _res12CommErr;
         /// <summary>
-        /// puf hot connect状态
+        /// RES1_2 Function Block故障
         /// </summary>
-        private double _pufHotConnectState;
+        private bool _res12FbErr;
         /// <summary>
-        /// srd hot connect状态
+        /// RES3_4状态
         /// </summary>
-        private double _srdHotConnectState;
+        private double _res34HotConectState;
         /// <summary>
-        /// reservoir1 hot connect状态
+        /// RES3_4通信故障
         /// </summary>
-        private double _reservoir1HotConnectState;
+        private bool _res34CommErr;
         /// <summary>
-        /// reservoir2 hot connect状态
+        /// RES3_4Function Block故障
         /// </summary>
-        private double _reservoir2HotConnectState;
+        private bool _res34FbErr;
         /// <summary>
-        /// FFU hot connect状态
+        /// Facility状态
         /// </summary>
-        private double _ffuHotConnectState;
-        #endregion
-
-        #region Restart
+        private double _facilityHotConectState;
         /// <summary>
-        /// Run stop
+        /// Facility通信故障
         /// </summary>
-        private bool _runStop;
+        private bool _facilityCommErr;
         /// <summary>
-        /// Err ack
+        /// Facility Function Block故障
         /// </summary>
-        private bool _errAck;
+        private bool _facilityFbErr;
         /// <summary>
-        /// sls restart
+        /// PlatingCell1_2状态
         /// </summary>
-        private bool _slsRestart;
+        private double _plating12HotConectState;
         /// <summary>
-        /// tx sto mon Restart
+        /// Plating1_2通信故障
         /// </summary>
-        private bool _txStoMonRestart;
+        private bool _plating12CommErr;
         /// <summary>
-        /// tx sto1 estop restart
+        /// Plating1_2 Function Block故障
         /// </summary>
-        private bool _txSto1EstopRestart;
+        private bool _plating12FbErr;
         /// <summary>
-        /// tx sto2 estop restart
+        /// Plating3_4状态
         /// </summary>
-        private bool _txSto2EstopRestart;
+        private double _plating34HotConectState;
         /// <summary>
-        /// ldr/puf sto mon restart
+        /// Plating3_4通信故障
         /// </summary>
-        private bool _ldrPufStoMonRestart;
+        private bool _plating34CommErr;
         /// <summary>
-        /// ldr/puf Sto1 Estop Restart
+        /// Plating34 Function Block故障
         /// </summary>
-        private bool _ldrPufSto1EstopRestart;
+        private bool _plating34FbErr;
         /// <summary>
-        /// ldr/puf sto2 estop restart
+        /// SRD状态
         /// </summary>
-        private bool _ldrPufSto2EstopRestart;
+        private double _srdHotConnectState;
         /// <summary>
-        /// srd sto estop restart
+        /// SRD通信故障
         /// </summary>
-        private bool _srdStoEstopRestart;
+        private bool _srdCommErr;
         /// <summary>
-        /// pump sto estop restart
+        /// SRD Function Block故障
         /// </summary>
-        private bool _pumpStoEstopRestart;
+        private bool _srdFbErr;
         /// <summary>
-        /// fluid estop restart
+        /// 数据是否初始化
         /// </summary>
-        private bool _fluidEstopRestart;
-        #endregion
+        private bool _isDataInitialized;
 
-        #region door lock
-        /// <summary>
-        /// loader door lock
-        /// </summary>
-        private bool _loaderDoorLock;
-        /// <summary>
-        /// Loader Door Locked
-        /// </summary>
-        private bool _loaderDoorLocked;
+        #region Restart
         /// <summary>
-        /// Lower Loader Panel Removed
+        /// Run stop
         /// </summary>
-        private bool _lowerLoaderPanelRemoved;
+        private bool _runStop;
         /// <summary>
-        /// Loader Panel Removed
+        /// Err ack
         /// </summary>
-        private bool _loaderPanelRemoved;
+        private bool _errAck;
         /// <summary>
-        /// Buffer door lock
+        /// VPW Estop restart
         /// </summary>
-        private bool _bufferDoorLock;
+        private bool _vpwStoEstopRestart;
         /// <summary>
-        /// Buffer door locked
+        /// Res12 Estop restart
         /// </summary>
-        private bool _bufferDoorLocked;
+        private bool _res12StoEstopRestart;
         /// <summary>
-        /// Buffer Panel Removed
+        /// Res34 Estop restart
         /// </summary>
-        private bool _bufferPanelRemoved;
+        private bool _res34StoEstopRestart;
         /// <summary>
-        /// Process door lock
+        /// Plating cell 1_2 sto1 estop restart
         /// </summary>
-        private bool _processDoorLock;
+        private bool _platingCell12Sto1EstopRestart;
         /// <summary>
-        /// Process door1 locked
+        /// Plating cell 1_2 sto2 estop restart
         /// </summary>
-        private bool _processDoor1Locked;
+        private bool _platingCell12Sto2EstopRestart;
         /// <summary>
-        /// Process door2 locked
+        /// Plating cell 3_4 sto1 estop restart
         /// </summary>
-        private bool _processDoor2Locked;
+        private bool _platingCell34Sto1EstopRestart;
         /// <summary>
-        /// Process door3 locked
+        /// Plating cell 3_4 sto2 estop restart
         /// </summary>
-        private bool _processDoor3Locked;
+        private bool _platingCell34Sto2EstopRestart;
         /// <summary>
-        /// Process door4 locked
+        /// Facility sto estop restart
         /// </summary>
-        private bool _processDoor4Locked;
+        private bool _facilityStoEstopRestart;
         /// <summary>
-        /// Process Upper Panels On
+        /// SRD Sto Estop restart
         /// </summary>
-        private bool _processUpperPanelsOn;
+        private bool _srdStoEstopRestart;
         #endregion
+
+        #region Doors Lock
         /// <summary>
-        /// SRD Top Panel Removed
-        /// </summary>
-        private bool _srdTopPanelRemoved;
-        //SRD Lower Panel Removed
-        private bool _srdLowerPanelRemoved;
-        /// <summary>
-        /// Plumbing Door Closed
-        /// </summary>
-        private bool _plumbingDoorClosed;
-        /// <summary>
-        /// Process Halt Button1
-        /// </summary>
-        private bool _processHaltButton1;
-        /// <summary>
-        /// Process Halt Button2
+        /// Req Aligner Door Lock
         /// </summary>
-        private bool _processHaltButton2;
+        private bool _reqAlignerDoorLock;
         /// <summary>
-        /// Loader Halt Button
+        /// Req cassette doors lock
         /// </summary>
-        private bool _loaderHaltButton;
+        private bool _reqCassetteDoorsLock;
         /// <summary>
-        /// Mode Selector Switch
+        /// Req cell 1_2 doors lock
         /// </summary>
-        private bool _modeSelectorSwitch;
+        private bool _reqCell12DoorsLock;
         /// <summary>
-        /// Mode Siren
+        /// Req cell doors lock
         /// </summary>
-        private bool _modeSiren;
-
-        #region SLS
-        private bool _loaderRotationSls;
-        private bool _loaderSwingASls;
-        private bool _loaderSwingBSls;
-        private bool _loaderTiltASls;
-        private bool _loaderTiltBSls;
-        private bool _puf1VerticalSls;
-        private bool _puf2VerticalSls;
-        private bool _loaderGantrySls;
-        private bool _loaderElevatorSls;
-        private bool _processGantrySls;
-        private bool _processElevatorSls;
+        private bool _reqCell34DoorsLock;
         #endregion
 
-        #region Disable
+        #region locked
         /// <summary>
-        /// Puf vertical disable
+        /// Cell1_2 Doors Left Locked
         /// </summary>
-        private bool _pufVerticalDisable;
+        private bool _cell12DoorsLeftLocked;
         /// <summary>
-        /// Puf1 flip/Rotation Disable
+        /// Cell1_2 Doors Right Locked
         /// </summary>
-        private bool _puf1FlipRotationDisable;
+        private bool _cell12DoorsRightLocked;
         /// <summary>
-        /// Puf2 flip/rotation disable
+        /// Cell3_4 Doors Left Locked
         /// </summary>
-        private bool _puf2FlipRotationDisable;
+        private bool _cell34DoorsLeftLocked;
         /// <summary>
-        /// loader disable
+        /// Cell3_4 Doors Right Locked
         /// </summary>
-        private bool _loaderDisable;
+        private bool _cell34DoorsRightLocked;
         /// <summary>
-        /// transporter disable
+        /// Aligner Door closed
         /// </summary>
-        private bool _transporterDisable;
+        private bool _alignerDoorClosed;
         /// <summary>
-        /// srd arm disable
+        /// Cassette Doors Left locked
         /// </summary>
-        private bool _srdArmDisable;
+        private bool _cassetteDoorsLeftLocked;
         /// <summary>
-        /// srd rotation disable
+        /// Cassette Doors Right locked
         /// </summary>
-        private bool _srdRotationDisable;
+        private bool _cassetteDoorsRightLocked;
         #endregion
 
-        #region safety
-        /// <summary>
-        /// Transporter safe SLS
-        /// </summary>
-        private bool _transporterSafeSls;
-        /// <summary>
-        /// Loader Safe Sls
-        /// </summary>
-        private bool _loaderSafeSls;
-        /// <summary>
-        /// Puf Vertical Safe Sls
-        /// </summary>
-        private bool _pufVerticalSafeSls;
-        /// <summary>
-        /// Loader Safe Sto
-        /// </summary>
-        private bool _loaderSafeSto;
-        /// <summary>
-        /// Puf Vertical Safe Sto
-        /// </summary>
-        private bool _pufVerticalSafeSto;
-        /// <summary>
-        /// Puf1 Flip/Rotation Safe Sto
-        /// </summary>
-        private bool _puf1FlipRotationSafeSto;
-        /// <summary>
-        /// Puf2 Flip/Rotation Safe Sto
-        /// </summary>
-        private bool _puf2FlipRotationSafeSto;
-        /// <summary>
-        /// Transporter Safe Sto
-        /// </summary>
-        private bool _transporterSafeSto;
-        /// <summary>
-        /// SRD Arm Safe Sto
-        /// </summary>
-        private bool _srdArmSafeSto;
-        /// <summary>
-        /// SRD Rotation Safe Sto
-        /// </summary>
-        private bool _srdRotationSafeSto;
+        #region Closed
+        private bool _res12DoorClosed;
+        private bool _res34DoorClosed;
+        private bool _vpwDoorClosed;
+        private bool _plumblingDoorClosed;
+        private bool _srdPanelClosed;
         #endregion
 
-        #region Plumbing
-        /// <summary>
-        /// Pump EDM
-        /// </summary>
-        private bool _pumpEdm;
-        /// <summary>
-        /// Reservoir High Level
-        /// </summary>
-        private bool _reservoirHighLevel;
-        /// <summary>
-        /// Fluid Enable EDM
-        /// </summary>
-        private bool _fluidEnableEdm;
+        #region Halt
+        private bool _haltButtonLeft;
+        private bool _haltButtonRight;
         #endregion
 
-        private double _srdArmReset;
         #endregion
 
         #region 属性
@@ -344,332 +235,161 @@ namespace MECF.Framework.Common.Device.Safety
         /// </summary>
         public bool MainCommErr { get { return _mainCommErr; } set { _mainCommErr = value;InvokePropertyChanged(nameof(MainCommErr)); } }
         /// <summary>
-        /// Loader/puf通信故障
-        /// </summary>
-        public bool LoaderPufCommErr { get { return _loaderPufCommErr; } set { _loaderPufCommErr = value;InvokePropertyChanged(nameof(LoaderPufCommErr)); } }
-        /// <summary>
-        /// SRD通信故障
-        /// </summary>
-        public bool SrdCommErr { get { return _srdCommErr; } set { _srdCommErr = value;InvokePropertyChanged(nameof(SrdCommErr)); } }
-        /// <summary>
-        /// Transport 通信故障
+        /// Main Function Block故障
         /// </summary>
-        public bool TransportCommErr { get { return _transportCommErr; } set { _transportCommErr = value;InvokePropertyChanged(nameof(TransportCommErr)); } }
+        public bool MainFbErr { get { return _mainFbErr; } set { _mainFbErr = value;InvokePropertyChanged(nameof (MainFbErr)); } }
         /// <summary>
-        /// Twincat function block错误
-        /// </summary>
-        public bool MainFunctionBlockErr { get { return _mainFunctionBlockErr; } set { _mainFunctionBlockErr = value; InvokePropertyChanged(nameof(MainFunctionBlockErr)); } }
-        /// <summary>
-        /// Loader/Puf function block错误
-        /// </summary>
-        public bool LoaderPufFunctionBlockErr { get { return _loaderPufFunctionBlockErr; } set { _loaderPufFunctionBlockErr = value;InvokePropertyChanged(nameof(LoaderPufFunctionBlockErr)); } }
-        /// <summary>
-        /// srd function block错误
-        /// </summary>
-        public bool SrdFunctionBlockErr { get { return _srdFunctionBlockErr; } set { _srdFunctionBlockErr = value;InvokePropertyChanged(nameof(SrdFunctionBlockErr)); } }
-        /// <summary>
-        /// Transporter Function Block 错误
+        /// 数据是否初始化
         /// </summary>
-        public bool TransporterFunctionBlockErr { get { return _transporterFunctionBlockErr; } set { _transporterFunctionBlockErr = value;InvokePropertyChanged(nameof(TransporterFunctionBlockErr)); } }
+        public bool IsDataInitialized { get { return _isDataInitialized; } set { _isDataInitialized = value; InvokePropertyChanged(nameof(IsDataInitialized)); } }
+       
+        public double VpwHotConnectState { get { return _vpwHotConectState; } set { _vpwHotConectState = value;InvokePropertyChanged(nameof(VpwHotConnectState)); } }
 
-        #region Hot connect状态
-        /// <summary>
-        /// Loader Hot connect状态
-        /// </summary>
-        public double LoaderHotConnectState { get { return _loaderHotConnectState; } set { _loaderHotConnectState = value; InvokePropertyChanged(nameof(LoaderHotConnectState)); } }
-        /// <summary>
-        /// Puf Hot connect状态
-        /// </summary>
-        public double PufHotConnectState { get { return _pufHotConnectState; } set { _pufHotConnectState = value;InvokePropertyChanged(nameof(PufHotConnectState)); } }
-        /// <summary>
-        /// Srd Hot connect状态
-        /// </summary>
-        public double SrdHotConnectState { get { return _srdHotConnectState; } set { _srdHotConnectState = value;InvokePropertyChanged(nameof(SrdHotConnectState)); } }
-        /// <summary>
-        /// ldr Hot connect 状态
-        /// </summary>
-        public double LdrHotConnectState { get { return _ldrHotConnectState; } set { _ldrHotConnectState = value;InvokePropertyChanged(nameof(LdrHotConnectState)); } }
-        /// <summary>
-        /// Prc Hot Connect状态
-        /// </summary>
-        public double PrcHotConnectState { get { return _prcHotConnectState; } set { _prcHotConnectState = value;InvokePropertyChanged(nameof(PrcHotConnectState)); } }
-        /// <summary>
-        /// Reservoir1 Hot connect状态
-        /// </summary>
-        public double Reservoir1HotConnectState { get { return _reservoir1HotConnectState; } set { _reservoir1HotConnectState = value; InvokePropertyChanged(nameof(Reservoir1HotConnectState)); } }
-        /// <summary>
-        /// Reservoir2 Hot connect状态
-        /// </summary>
-        public double Reservoir2HotConnectState { get { return _reservoir2HotConnectState; } set { _reservoir2HotConnectState = value;InvokePropertyChanged(nameof(Reservoir2HotConnectState)); } }
-        /// <summary>
-        /// FFU Hot Connect 状态
-        /// </summary>
-        public double FFUHotConnectState { get { return _ffuHotConnectState; } set { _ffuHotConnectState = value; InvokePropertyChanged(nameof(FFUHotConnectState)); } }
-        /// <summary>
-        /// transporter hot connect state
-        /// </summary>
-        public double TransporterHotConnectState { get { return _transporterHotConnectState; } set { _transporterHotConnectState = value;InvokePropertyChanged(nameof(TransporterHotConnectState)); } }
-        #endregion
+        public bool VpwCommErr { get { return _vpwCommErr; }set { _vpwCommErr = value; InvokePropertyChanged(nameof(VpwCommErr)); } }
 
-        #region Restart
-        /// <summary>
-        /// RunStop
-        /// </summary>
-        public bool RunStop { get { return _runStop; } set { _runStop = value; InvokePropertyChanged(nameof(RunStop)); } }
-        /// <summary>
-        /// err ack
-        /// </summary>
-        public bool ErrAck { get { return _errAck; } set { _errAck = value;InvokePropertyChanged(nameof(ErrAck)); } }
-        /// <summary>
-        /// sls restart
-        /// </summary>
-        public bool SlsRestart { get { return _slsRestart; } set { _slsRestart = value;InvokePropertyChanged(nameof(SlsRestart)); } }
-        /// <summary>
-        /// tx sto mon restart
-        /// </summary>
-        public bool TxStoMonRestart { get { return _txStoMonRestart; } set { _txStoMonRestart = value;InvokePropertyChanged(nameof(TxStoMonRestart)); } }
-        /// <summary>
-        /// tx sto1 estop restart
-        /// </summary>
-        public bool TxSto1EstopRestart { get { return _txSto1EstopRestart; } set { _txSto1EstopRestart = value;InvokePropertyChanged(nameof(TxSto1EstopRestart)); } }
-        /// <summary>
-        /// tx sto2 estop restart
-        /// </summary>
-        public bool TxSto2EstopRestart { get { return _txSto2EstopRestart; } set { _txSto2EstopRestart = value;InvokePropertyChanged(nameof(TxSto2EstopRestart)); } }
-        /// <summary>
-        /// Loader/Puf sto Mon restart
-        /// </summary>
-        public bool LdrPufStoMonRestart { get { return _ldrPufStoMonRestart; } set { _ldrPufStoMonRestart = value;InvokePropertyChanged(nameof(LdrPufStoMonRestart)); } }
-        /// <summary>
-        /// Loader/Puf sto1 estop restart
-        /// </summary>
-        public bool LdrPufSto1EstopRestart { get { return _ldrPufSto1EstopRestart; } set { _ldrPufSto1EstopRestart = value;InvokePropertyChanged(nameof(LdrPufSto1EstopRestart)); } }
-        /// <summary>
-        /// Loader/Puf sto2 estop restart
-        /// </summary>
-        public bool LdrPufSto2EstopRestart { get { return _ldrPufSto2EstopRestart; } set { _ldrPufSto2EstopRestart = value;InvokePropertyChanged(nameof(LdrPufSto2EstopRestart)); } }
-        /// <summary>
-        /// SRD sto estop restart
-        /// </summary>
-        public bool SrdStoEstopRestart { get { return _srdStoEstopRestart; } set { _srdStoEstopRestart = value;InvokePropertyChanged(nameof(SrdStoEstopRestart)); } }
-        /// <summary>
-        /// Pump sto estop restart
-        /// </summary>
-        public bool PumpStoEstopRestart { get { return _pumpStoEstopRestart; } set { _pumpStoEstopRestart = value;InvokePropertyChanged(nameof(PumpStoEstopRestart)); } }
-        /// <summary>
-        /// Fluid Estop restart
-        /// </summary>
-        public bool FluidEstopRestart { get { return _fluidEstopRestart; } set { _fluidEstopRestart = value;InvokePropertyChanged(nameof(FluidEstopRestart)); } }
-        #endregion
+        public bool VpwFbErr { get {return _vpwFbErr; } set {_vpwFbErr = value; InvokePropertyChanged(nameof (VpwFbErr)); } }
 
-        #region door lock
-        /// <summary>
-        /// Load Door Lock
-        /// </summary>
-        public bool LoaderDoorLock { get { return _loaderDoorLock; } set { _loaderDoorLock = value;InvokePropertyChanged(nameof(LoaderDoorLock)); } }
-        /// <summary>
-        /// Load Door Locked
-        /// </summary>
-        public bool LoaderDoorLocked { get { return _loaderDoorLocked; } set { _loaderDoorLocked = value;InvokePropertyChanged(nameof(LoaderDoorLocked)); } }
-        /// <summary>
-        /// Loader Panel removed
-        /// </summary>
-        public bool LoaderPanelRemoved { get { return _loaderPanelRemoved; } set { _loaderPanelRemoved = value;InvokePropertyChanged(nameof(LoaderPanelRemoved)); } }
-        /// <summary>
-        /// Lower Loader Panel Removed
-        /// </summary>
-        public bool LowerLoaderPanelRemoved { get { return _lowerLoaderPanelRemoved; } set { _lowerLoaderPanelRemoved = value; InvokePropertyChanged(nameof(LowerLoaderPanelRemoved)); } }
-        /// <summary>
-        /// Buffer Door Lock
-        /// </summary>
-        public bool BufferDoorLock { get { return _bufferDoorLock; } set { _bufferDoorLock = value;InvokePropertyChanged(nameof(BufferDoorLock)); } }
-        /// <summary>
-        /// Buffer Door Locked
-        /// </summary>
-        public bool BufferDoorLocked { get { return _bufferDoorLocked; } set { _bufferDoorLocked = value;InvokePropertyChanged(nameof(BufferDoorLocked)); } }
-        /// <summary>
-        /// Buffer Panel Removed
-        /// </summary>
-        public bool BufferPanelRemoved { get { return _bufferPanelRemoved; } set { _bufferPanelRemoved = value;InvokePropertyChanged(nameof(BufferPanelRemoved)); } }
-        /// <summary>
-        /// Process Door Lock
-        /// </summary>
-        public bool ProcessDoorLock { get { return _processDoorLock; } set { _processDoorLock = value;InvokePropertyChanged(nameof(ProcessDoorLock)); } }
-        /// <summary>
-        /// Process Door1 Locked
-        /// </summary>
-        public bool ProcessDoor1Locked { get { return _processDoor1Locked; } set { _processDoor1Locked = value;InvokePropertyChanged(nameof(ProcessDoor1Locked)); } }
-        /// <summary>
-        /// Process Door2 Locked
-        /// </summary>
-        public bool ProcessDoor2Locked { get { return _processDoor2Locked; } set { _processDoor2Locked = value;InvokePropertyChanged(nameof(ProcessDoor2Locked)); } }
-        /// <summary>
-        /// Process Door3 Locked
-        /// </summary>
-        public bool ProcessDoor3Locked { get { return _processDoor3Locked; } set { _processDoor3Locked = value;InvokePropertyChanged(nameof(ProcessDoor3Locked)); } }
-        /// <summary>
-        /// Process Door4 Locked
-        /// </summary>
-        public bool ProcessDoor4Locked { get { return _processDoor4Locked; } set { _processDoor4Locked = value;InvokePropertyChanged(nameof(ProcessDoor4Locked)); } }
-        /// <summary>
-        /// Process Upper Panels On
-        /// </summary>
-        public bool ProcessUpperPanelsOn { get { return _processUpperPanelsOn; } set { _processUpperPanelsOn = value;InvokePropertyChanged(nameof(ProcessUpperPanelsOn)); } }
-        #endregion
-        /// <summary>
-        /// Srd top panel removed
-        /// </summary>
-        public bool SrdTopPanelRemoved { get { return _srdTopPanelRemoved; } set { _srdTopPanelRemoved = value;InvokePropertyChanged(nameof(SrdTopPanelRemoved)); } }
-        /// <summary>
-        /// SRD Lower Panel Removed
-        /// </summary>
-        public bool SrdLowerPanelRemoved { get { return _srdLowerPanelRemoved; } set { _srdLowerPanelRemoved = value;InvokePropertyChanged(nameof(SrdLowerPanelRemoved)); } }
-        /// <summary>
-        /// Plumbing Door Closed
-        /// </summary>
-        public bool PlumbingDoorClosed { get { return _plumbingDoorClosed; } set { _plumbingDoorClosed = value;InvokePropertyChanged(nameof(PlumbingDoorClosed)); } }
+        public double Res12HotConnectState { get { return _res12HotConectState; } set { _res12HotConectState = value;InvokePropertyChanged(nameof(Res12HotConnectState)); } }
 
-        /// <summary>
-        /// Process Halt Button1
-        /// </summary>
-        public bool ProcessHaltButton1 { get { return _processHaltButton1; } set { _processHaltButton1 = value;InvokePropertyChanged(nameof(ProcessHaltButton1)); } }
+        public bool Res12CommErr { get { return _res12CommErr; }set {_res12CommErr = value;InvokePropertyChanged(nameof(Res12CommErr)); } } 
+        public bool Res12FbErr { get { return _res12FbErr; } set { _res12FbErr = value; InvokePropertyChanged(nameof(Res12FbErr)); } }
 
-        /// <summary>
-        /// Process Halt Button2
-        /// </summary>
-        public bool ProcessHaltButton2 { get { return _processHaltButton2; } set { _processHaltButton2 = value; InvokePropertyChanged(nameof(ProcessHaltButton2)); } }
-        /// <summary>
-        /// Loader Halt Button
-        /// </summary>
-        public bool LoaderHaltButton { get { return _loaderHaltButton; } set { _loaderHaltButton = value;InvokePropertyChanged(nameof(LoaderHaltButton)); } }
-        /// <summary>
-        /// Mode Selector Switch
-        /// </summary>
-        public bool ModeSelectorSwitch { get { return _modeSelectorSwitch; } set { _modeSelectorSwitch = value;InvokePropertyChanged(nameof(ModeSelectorSwitch)); } }
-        /// <summary>
-        /// ModeSiren
-        /// </summary>
-        public bool ModeSiren { get { return _modeSiren; } set { _modeSiren = value;InvokePropertyChanged(nameof(ModeSiren)); } }
+        public double Res34HotConnectState { get { return _res34HotConectState; } set { _res34HotConectState = value;InvokePropertyChanged(nameof( Res34HotConnectState)); } }  
 
-        #region SLS
-        public bool LoaderRotationSls { get { return _loaderRotationSls; } set { _loaderRotationSls = value;InvokePropertyChanged(nameof(LoaderRotationSls)); } }
+        public bool Res34CommErr { get { return _res34CommErr; }set{_res34CommErr = value;InvokePropertyChanged(nameof (Res34CommErr)); } }
 
-        public bool LoaderSwingASls { get { return _loaderSwingASls; } set { _loaderSwingASls = value;InvokePropertyChanged(nameof(LoaderSwingASls)); } }
+        public bool Res34FbErr { get { return _res34FbErr; } set { _res34FbErr = value; InvokePropertyChanged(nameof(Res34FbErr)); } }
 
-        public bool LoaderSwingBSls { get { return _loaderSwingBSls; } set { _loaderSwingBSls = value;InvokePropertyChanged(nameof(LoaderSwingBSls)); } }
+        public double FacilityHotConnectState { get { return _facilityHotConectState;}set { _facilityHotConectState = value; InvokePropertyChanged(nameof(FacilityHotConnectState));} }
 
-        public bool LoaderTiltASls { get { return _loaderTiltASls; } set { _loaderTiltASls = value;InvokePropertyChanged(nameof(LoaderTiltASls)); } }
+        public bool FacilityCommErr { get { return _facilityCommErr; } set { _facilityCommErr = value; InvokePropertyChanged(nameof(FacilityCommErr)); } }
+        public bool FacilityFbErr { get { return _facilityFbErr; }set { _facilityFbErr = value;InvokePropertyChanged(nameof(FacilityFbErr)); } }    
 
-        public bool LoaderTiltBSls { get { return _loaderTiltBSls; } set { _loaderTiltBSls = value;InvokePropertyChanged(nameof(LoaderTiltBSls)); } }
+        public double Plating12HotConnectState { get { return _plating12HotConectState; } set { _plating12HotConectState = value; InvokePropertyChanged(nameof(Plating12HotConnectState)); } }
 
-        public bool Puf1VerticalSls { get { return _puf1VerticalSls; } set { _puf1VerticalSls = value;InvokePropertyChanged(nameof(Puf1VerticalSls)); } }
+        public bool Plating12CommErr { get { return _plating12CommErr; } set { _plating12CommErr = value; InvokePropertyChanged(nameof(Plating12CommErr)); } }
 
-        public bool Puf2VerticalSls { get { return _puf2VerticalSls; } set { _puf2VerticalSls = value;InvokePropertyChanged(nameof(Puf2VerticalSls)); } }
+        public bool Plating12FbErr { get { return _plating12FbErr;}set { _plating12FbErr = value;InvokePropertyChanged(nameof (Plating12FbErr)); } }
 
-        public bool LoaderGantrySls { get { return _loaderGantrySls; } set { _loaderGantrySls = value; InvokePropertyChanged(nameof(LoaderGantrySls)); } }
+        public double Plating34HotConnectState { get { return _plating34HotConectState; } set { _plating34HotConectState = value; InvokePropertyChanged(nameof(Plating34HotConnectState)); } }
 
-        public bool LoaderElevatorSls { get { return _loaderElevatorSls; } set { _loaderElevatorSls = value;InvokePropertyChanged(nameof(LoaderElevatorSls)); } }
+        public bool Plating34CommErr { get { return _plating34CommErr; } set { _plating34CommErr = value; InvokePropertyChanged(nameof(Plating34CommErr)); } }
 
-        public bool ProcessGantrySls { get { return _processGantrySls; } set { _processGantrySls = value;InvokePropertyChanged(nameof(ProcessGantrySls)); } }
+        public bool Plating34FbErr { get { return _plating34FbErr; } set { _plating34FbErr = value; InvokePropertyChanged(nameof(Plating34FbErr)); } }
 
-        public bool ProcessElevatorSls { get { return _processElevatorSls; } set { _processElevatorSls = value;InvokePropertyChanged(nameof(ProcessElevatorSls)); } }
-        #endregion
+        public double SrdHotConnectState { get { return _srdHotConnectState; } set { _srdHotConnectState = value; InvokePropertyChanged(nameof(SrdHotConnectState)); } }
 
-        #region Disable
+        #region Restart
         /// <summary>
-        /// Puf Vertical Disable
+        /// Run stop
         /// </summary>
-        public bool PufVerticalDisable { get { return _pufVerticalDisable; } set { _pufVerticalDisable = value;InvokePropertyChanged(nameof(PufVerticalDisable)); } }
+        public bool RunStop { get { return _runStop; } set { _runStop = value;InvokePropertyChanged(nameof(RunStop)); } }
         /// <summary>
-        /// Puf1 Flip Rotation Disable
+        /// Err ack
         /// </summary>
-        public bool Puf1FlipRotationDisable { get { return _puf1FlipRotationDisable; } set { _puf1FlipRotationDisable = value;InvokePropertyChanged(nameof(Puf1FlipRotationDisable)); } }
+        public bool ErrAck { get { return _errAck; } set { _errAck = value;InvokePropertyChanged(nameof(ErrAck)); } }  
         /// <summary>
-        /// Puf2 Flip Rotation Disable
+        /// VPW Estop restart
         /// </summary>
-        public bool Puf2FlipRotationDisable { get { return _puf2FlipRotationDisable; } set { _puf2FlipRotationDisable = value; InvokePropertyChanged(nameof(Puf2FlipRotationDisable)); }  }
+        public bool VpwStoEstopRestart { get { return _vpwStoEstopRestart; } set { _vpwStoEstopRestart = value;InvokePropertyChanged(nameof(VpwStoEstopRestart)); } }
         /// <summary>
-        /// Loader Disable
+        /// Res12 Estop restart
         /// </summary>
-        public bool LoaderDisable { get { return _loaderDisable; } set { _loaderDisable = value;InvokePropertyChanged(nameof(LoaderDisable)); } }
+        public bool Res12StoEstopRestart { get { return _res12StoEstopRestart; } set { _res12StoEstopRestart = value;InvokePropertyChanged(nameof(Res12StoEstopRestart)); } }
         /// <summary>
-        /// Transporter Disable
+        /// Res34 Estop restart
         /// </summary>
-        public bool TransporterDisable { get { return _transporterDisable; } set { _transporterDisable = value;InvokePropertyChanged(nameof(TransporterDisable)); } }
+        public bool Res34StoEstopRestart { get { return _res34StoEstopRestart; } set { _res34StoEstopRestart = value;InvokePropertyChanged(nameof(Res34StoEstopRestart)); } }
         /// <summary>
-        /// Srd Arm Disable
+        /// Plating cell 1_2 sto1 estop restart
         /// </summary>
-        public bool SrdArmDisable { get { return _srdArmDisable; } set { _srdArmDisable = value;InvokePropertyChanged(nameof(SrdArmDisable)); } }
+        public bool PlatingCell12Sto1EstopRestart { get { return _platingCell12Sto1EstopRestart; } set { _platingCell12Sto1EstopRestart = value;InvokePropertyChanged(nameof(PlatingCell12Sto1EstopRestart)); } }
         /// <summary>
-        /// Srd Rotation disable
+        /// Plating cell 1_2 sto2 estop restart
         /// </summary>
-        public bool SrdRotationDisable { get { return _srdRotationDisable; } set { _srdRotationDisable = value;InvokePropertyChanged(nameof(SrdRotationDisable)); } }
-        #endregion
-
-        #region Safety 
+        public bool PlatingCell12Sto2EstopRestart { get { return _platingCell12Sto2EstopRestart; } set { _platingCell12Sto2EstopRestart = value;InvokePropertyChanged(nameof(PlatingCell12Sto2EstopRestart)); } }
         /// <summary>
-        /// Transporter Safe Sls
+        /// Plating cell 3_4 sto1 estop restart
         /// </summary>
-        public bool TransporterSafeSls { get { return _transporterSafeSls; } set { _transporterSafeSls = value;InvokePropertyChanged(nameof(TransporterSafeSls)); } }
+        public bool PlatingCell34Sto1EstopRestart { get { return _platingCell34Sto1EstopRestart; } set { _platingCell34Sto1EstopRestart = value;InvokePropertyChanged(nameof(PlatingCell34Sto1EstopRestart)); } }
         /// <summary>
-        /// Loader Safe Sls
+        /// Plating cell 3_4 sto2 estop restart
         /// </summary>
-        public bool LoaderSafeSls { get { return _loaderSafeSls; } set { _loaderSafeSls = value;InvokePropertyChanged(nameof (LoaderSafeSls)); } }
+        public bool PlatingCell34Sto2EstopRestart { get { return _platingCell34Sto2EstopRestart; } set { _platingCell34Sto2EstopRestart = value;InvokePropertyChanged(nameof(PlatingCell34Sto2EstopRestart)); } }
         /// <summary>
-        /// Puf vertical safe sls
+        /// Facility sto estop restart
         /// </summary>
-        public bool PufVerticalSafeSls { get { return _pufVerticalSafeSls; } set { _pufVerticalSafeSls = value;InvokePropertyChanged(nameof(PufVerticalSafeSls)); } }
+        public bool FacilityStoEstopRestart { get { return _facilityStoEstopRestart; } set { _facilityStoEstopRestart = value;InvokePropertyChanged(nameof(FacilityStoEstopRestart)); } }
         /// <summary>
-        /// Loader Safe sto
+        /// SRD Sto Estop restart
         /// </summary>
-        public bool LoaderSafeSto { get { return _loaderSafeSto; } set { _loaderSafeSto = value;InvokePropertyChanged(nameof(LoaderSafeSto)); } }
+        public bool SrdStoEstopRestart { get { return _srdStoEstopRestart; } set { _srdStoEstopRestart = value;InvokePropertyChanged(nameof(SrdStoEstopRestart)); } }
+        #endregion
+
+        #region Doors Lock
         /// <summary>
-        /// Puf vertical safe sto
+        /// Req Aligner Door Lock
         /// </summary>
-        public bool PufVerticalSafeSto { get { return _pufVerticalSafeSto; } set { _pufVerticalSafeSto = value;InvokePropertyChanged(nameof(PufVerticalSafeSto)); } }
+        public bool ReqAlignerDoorLock { get { return _reqAlignerDoorLock; } set { _reqAlignerDoorLock = value;InvokePropertyChanged(nameof(ReqAlignerDoorLock)); } }
         /// <summary>
-        /// Puf1 Flip rotation safe sto
+        /// Req cassette doors lock
         /// </summary>
-        public bool Puf1FlipRotationSafeSto { get { return _puf1FlipRotationSafeSto; } set { _puf1FlipRotationSafeSto = value; InvokePropertyChanged(nameof(Puf1FlipRotationSafeSto)); } }
+        public bool ReqCassetteDoorsLock { get { return _reqCassetteDoorsLock; } set { _reqCassetteDoorsLock = value;InvokePropertyChanged(nameof(ReqCassetteDoorsLock)); } }
         /// <summary>
-        /// Puf2 Flip rotation safe sto
+        /// Req cell 1_2 doors lock
         /// </summary>
-        public bool Puf2FlipRotationSafeSto { get { return _puf2FlipRotationSafeSto; } set { _puf2FlipRotationSafeSto = value;InvokePropertyChanged(nameof(Puf2FlipRotationSafeSto)); } }
+        public bool ReqCell12DoorsLock { get { return _reqCell12DoorsLock; } set { _reqCell12DoorsLock = value;InvokePropertyChanged(nameof(ReqCell12DoorsLock)); } }
         /// <summary>
-        /// Transporter Safe Sto
+        /// Req cell doors lock
         /// </summary>
-        public bool TransporterSafeSto { get { return _transporterSafeSto; } set { _transporterSafeSto = value;InvokePropertyChanged(nameof(TransporterSafeSto)); } }
+        public bool ReqCell34DoorsLock { get { return _reqCell34DoorsLock; } set { _reqCell34DoorsLock = value; InvokePropertyChanged(nameof(ReqCell34DoorsLock)); } }
+        #endregion
+
+        #region locked
         /// <summary>
-        /// Srd Arm safe sto
+        /// Cell1_2 Doors Left Locked
         /// </summary>
-        public bool SrdArmSafeSto { get { return _srdArmSafeSto; } set { _srdArmSafeSto = value;InvokePropertyChanged(nameof(SrdArmSafeSto)); } }
+        public bool Cell12DoorsLeftLocked { get { return _cell12DoorsLeftLocked; } set { _cell12DoorsLeftLocked = value;InvokePropertyChanged(nameof(Cell12DoorsLeftLocked)); } }
         /// <summary>
-        /// Srd Rotation Safe Sto
+        /// Cell1_2 Doors Right Locked
         /// </summary>
-        public bool SrdRotationSafeSto { get { return _srdRotationSafeSto; } set { _srdRotationSafeSto = value;InvokePropertyChanged(nameof(SrdRotationSafeSto)); } }
-        #endregion
-
-        #region Plumbling
+        public bool Cell12DoorsRightLocked { get { return _cell12DoorsRightLocked; } set { _cell12DoorsRightLocked = value;InvokePropertyChanged(nameof(Cell12DoorsRightLocked)); } }
         /// <summary>
-        /// Pump EDM
+        /// Cell3_4 Doors Left Locked
         /// </summary>
-        public bool PumpEdm { get { return _pumpEdm; } set { _pumpEdm = value; InvokePropertyChanged(nameof(PumpEdm)); } }
+        public bool Cell34DoorsLeftLocked { get { return _cell34DoorsLeftLocked; } set { _cell34DoorsLeftLocked = value;InvokePropertyChanged(nameof(Cell34DoorsLeftLocked)); } }
         /// <summary>
-        /// Reservoir High Level
+        /// Cell3_4 Doors Right Locked
         /// </summary>
-        public bool ReservoirHighLevel { get { return _reservoirHighLevel; } set { _reservoirHighLevel = value;InvokePropertyChanged(nameof(ReservoirHighLevel)); } }
+        public bool Cell34DoorsRightLocked { get { return _cell34DoorsRightLocked; } set { _cell34DoorsRightLocked = value;InvokePropertyChanged(nameof(Cell34DoorsRightLocked)); } }
         /// <summary>
-        /// Fluid EDM
+        /// Aligner Door closed
         /// </summary>
-        public bool FluidEnableEdm { get { return _fluidEnableEdm; } set { _fluidEnableEdm = value;InvokePropertyChanged(nameof(FluidEnableEdm)); } }   
+        public bool AlignerDoorClosed { get { return _alignerDoorClosed; } set { _alignerDoorClosed = value;InvokePropertyChanged(nameof(AlignerDoorClosed)); } }
+        /// <summary>
+        /// Cassette Doors Left locked
+        /// </summary>
+        public bool CassetteDoorsLeftLocked { get { return _cassetteDoorsLeftLocked; } set { _cassetteDoorsLeftLocked = value;InvokePropertyChanged(nameof(CassetteDoorsLeftLocked)); } }
+        /// <summary>
+        /// Cassette Doors Right locked
+        /// </summary>
+        public bool CassetteDoorsRightLocked { get { return _cassetteDoorsRightLocked; } set { _cassetteDoorsRightLocked = value;InvokePropertyChanged(nameof(CassetteDoorsRightLocked)); } }
+        #endregion
+
+        #region Closed
+        public bool Res12DoorClosed { get { return _res12DoorClosed; } set { _res12DoorClosed = value;InvokePropertyChanged(nameof(Res12DoorClosed)); } }
+        public bool Res34DoorClosed { get { return _res34DoorClosed; } set { _res34DoorClosed = value;InvokePropertyChanged(nameof(Res34DoorClosed)); } }
+        public bool VpwDoorClosed { get { return _vpwDoorClosed; } set { _vpwDoorClosed = value;InvokePropertyChanged(nameof(VpwDoorClosed)); } }
+        public bool PlumblingDoorClosed { get { return _plumblingDoorClosed; } set { _plumblingDoorClosed = value;InvokePropertyChanged(nameof(PlumblingDoorClosed)); } }
+        public bool SrdPanelClosed { get { return _srdPanelClosed; } set { _srdPanelClosed = value;InvokePropertyChanged(nameof(SrdPanelClosed)); } }  
+        #endregion
+
+        #region Halt
+        public bool HaltButtonLeft { get { return _haltButtonLeft; } set { _haltButtonLeft = value;InvokePropertyChanged(nameof(HaltButtonLeft)); } }
+        public bool HaltButtonRight { get { return _haltButtonRight; } set { _haltButtonRight = value;InvokePropertyChanged(nameof(HaltButtonRight)); } }
         #endregion
 
-        public double SRDArmReset { get { return _srdArmReset; } set { _srdArmReset = value; InvokePropertyChanged(nameof(SRDArmReset)); } }
 
-        /// <summary>
-        /// 数据是否初始化
-        /// </summary>
-        public bool IsDataInitialized { get { return _isDataInitialized; } set { _isDataInitialized = value; InvokePropertyChanged(nameof(IsDataInitialized)); } }
         #endregion
     }
 }

+ 278 - 359
PunkHPX8_RT/Devices/Safety/SafetyDevice.cs

@@ -25,115 +25,219 @@ namespace PunkHPX8_RT.Devices.Safety
     public class SafetyDevice : BaseDevice, IDevice
     {
         #region 常量
-        private const string TWINCAT_STATE = "TwincatState";
-        private const string MAIN_COMM_ERR = "MainCommErr";
-        private const string LOADER_PUF_COMM_ERR="LoaderPufCommErr";
-        private const string SRD_COMM_ERR = "SrdCommErr";
-        private const string TRANSPORTER_COMM_ERR="TransportCommErr";
-        private const string MAIN_FUNCTION_BLOCK_ERR= "MainFunctionBlockErr";
-        private const string LOADER_PUF_FUNCTION_BLOCK_ERR="LoaderPufFunctionBlockErr";
-        private const string SRD_FUNCTION_BLOCK_ERR = "SrdFunctionBlockErr";
-        private const string TRANSPORTER_FUNCTION_BLOCK_ERR="TransporterFunctionBlockErr";
+
         private const string IS_INITIALIZED = "IsInitialized";
         private const double OP_HOT_CONNECT_STATE = 8;
-        #region Hot Connect
-        private const string HOT_CONNECT_STATE = "HotConnectState";
-        private const string LOADER_HOT_CONNECT_STATE= "LoaderHotConnectState";
-        private const string PUF_HOT_CONNECT_STATE="PufHotConnectState";
-        private const string SRD_HOT_CONNECT_STATE="SrdHotConnectState";
-        private const string TRANSPORTER_HOT_CONNECT_STATE="TransporterHotConnectState";
-        private const string LDR_HOT_CONNECT_STATE="LdrHotConnectState";
-        private const string PRC_HOT_CONNECT_STATE="PrcHotConnectState";
-        private const string RESERVOIR1_HOT_CONNECT_STATE="Reservoir1HotConnectState";
-        private const string RESERVOIR2_HOT_CONNECT_STATE="Reservoir2HotConnectState";
-        private const string FFU_HOT_CONNECT_STATE="FFUHotConnectState";
-        #endregion
 
-        #region Restart
-        private const string RUNSTOP = "RunStop";
-        private const string ERRACK = "ErrAck";
-        private const string SLS_RESTART = "SlsRestart";
-        private const string TX_STO_MON_Restart = "TxStoMonRestart";
-        private const string TX_STO1_ESTOP_Restart = "TxSto1EstopRestart";
-        private const string TX_STO2_ESTOP_RESTART = "TxSto2EstopRestart";
-        private const string LDR_PUF_STO_MON_RESTART = "LdrPufStoMonRestart";
-        private const string LDR_PUF_STO1_ESTOP_RESTART = "LdrPufSto1EstopRestart";
-        private const string LDR_PUF_STO2_ESTOP_RESTART = "LdrPufSto2EstopRestart";
-        private const string SRD_STO_ESTOP_RESTART = "SrdStoEstopRestart";
-        private const string PUMP_STO_ESTOP_RESTART = "PumpStoEstopRestart";
-        private const string FLUID_ESTOP_RESTART = "FluidEstopRestart";
+        #region Hot_Connect
+        /// <summary>
+        /// Twincat状态
+        /// </summary>
+        private const string TWINCAT_STATE="TwincatState";
+        /// <summary>
+        /// Main通信故障
+        /// </summary>
+        private const string MAIN_COMM_ERR="MainCommErr";
+        /// <summary>
+        /// Main Function Block故障
+        /// </summary>
+        private const string  MAIN_FB_ERR="MainFbErr";
+        /// <summary>
+        /// VPW状态
+        /// </summary>
+        private const string VPW_HOTCONNECT_STATE="VpwHotConectState";
+        /// <summary>
+        /// VPW通信故障
+        /// </summary>
+        private const string VPW_COMM_ERR="VpwCommErr";
+        /// <summary>
+        /// VPW function block故障
+        /// </summary>
+        private const string VPW_FB_ERR="VpwFbErr";
+        /// <summary>
+        /// RES1_2状态
+        /// </summary>
+        private const string RES1_2_HOT_CONNECT_STATE="Res12HotConectState";
+        /// <summary>
+        /// RES1_2通信故障
+        /// </summary>
+        private const string RES1_2_COMM_ERR="Res12CommErr";
+        /// <summary>
+        /// RES1_2 Function Block故障
+        /// </summary>
+        private const string RES1_2_FB_ERR="Res12FbErr";
+        /// <summary>
+        /// RES3_4状态
+        /// </summary>
+        private const string RES3_4_HOT_CONNECT_STATE="Res34HotConectState";
+        /// <summary>
+        /// RES3_4通信故障
+        /// </summary>
+        private const string RES3_4_COMM_ERR="Res34CommErr";
+        /// <summary>
+        /// RES3_4Function Block故障
+        /// </summary>
+        private const string RES3_4_FB_ERR="Res34FbErr";
+        /// <summary>
+        /// Facility状态
+        /// </summary>
+        private const string FACILITY_HOT_CONNECT_STATE="FacilityHotConectState";
+        /// <summary>
+        /// Facility通信故障
+        /// </summary>
+        private const string FACILITY_COMM_ERR="FacilityCommErr";
+        /// <summary>
+        /// Facility Function Block故障
+        /// </summary>
+        private const string FACILITY_FB_ERR="FacilityFbErr";
+        /// <summary>
+        /// PlatingCell1_2状态
+        /// </summary>
+        private const string PLATING1_2_HOT_CONNECT_STATE="Plating12HotConectState";
+        /// <summary>
+        /// Plating1_2通信故障
+        /// </summary>
+        private const string PLATING1_2_COMM_ERR="Plating12CommErr";
+        /// <summary>
+        /// Plating1_2 Function Block故障
+        /// </summary>
+        private const string PLATING1_2_FB_ERR="Plating12FbErr";
+        /// <summary>
+        /// Plating3_4状态
+        /// </summary>
+        private const string PLATING3_4_HOT_CONNECT_STATE="Plating34HotConectState";
+        /// <summary>
+        /// Plating3_4通信故障
+        /// </summary>
+        private const string PLATING3_4_COMM_ERR="Plating34CommErr";
+        /// <summary>
+        /// Plating34 Function Block故障
+        /// </summary>
+        private const string PLATING3_4_FB_ERR="Plating34FbErr";
+        /// <summary>
+        /// SRD状态
+        /// </summary>
+        private const string SRD_HOT_CONNECT_STATE="SrdHotConnectState";
+        /// <summary>
+        /// SRD通信故障
+        /// </summary>
+        private const string SRD_COMM_ERR="SrdCommErr";
+        /// <summary>
+        /// SRD Function Block故障
+        /// </summary>
+        private const string SRD_FB_ERR="SrdFbErr";
         #endregion
 
-        #region Door Lock
-        private const string LOADER_DOOR_LOCK= "LoaderDoorLock";
-        private const string LOADER_DOOR_LOCKED="LoaderDoorLocked";
-        private const string LOADER_PANEL_REMOVED="LoaderPanelRemoved";
-        private const string LOWER_LOADER_PANEL_REMOVED = "LowerLoaderPanelRemoved";
-        private const string BUFFER_DOOR_LOCK="BufferDoorLock";
-        private const string BUFFER_DOOR_LOCKED="BufferDoorLocked";
-        private const string BUFFER_PANEL_REMOVED = "BufferPanelRemoved";
-        private const string PROCESS_DOOR_LOCK="ProcessDoorLock";
-        private const string PROCESS_DOOR1_LOCKED="ProcessDoor1Locked";
-        private const string PROCESS_DOOR2_LOCKED="ProcessDoor2Locked";
-        private const string PROCESS_DOOR3_LOCKED="ProcessDoor3Locked";
-        private const string PROCESS_DOOR4_LOCKED="ProcessDoor4Locked";
-        private const string PROCESS_UPPER_PANELS_ON = "ProcessUpperPanelsOn";
+        #region restart
+        /// <summary>
+        /// Run stop
+        /// </summary>
+        private const string RUN_STOP="RunStop";
+        /// <summary>
+        /// Err ack
+        /// </summary>
+        private const string ERR_ACK="ErrAck";
+        /// <summary>
+        /// VPW Estop restart
+        /// </summary>
+        private const string VPW_STO_ESTOP_RESTART="VpwStoEstopRestart";
+        /// <summary>
+        /// Res12 Estop restart
+        /// </summary>
+        private const string RES1_2_STO_ESTOP_RESTART="Res12StoEstopRestart";
+        /// <summary>
+        /// Res34 Estop restart
+        /// </summary>
+        private const string RES3_4_STO_ESTOP_RESTART="Res34StoEstopRestart";
+        /// <summary>
+        /// Plating cell 1_2 sto1 estop restart
+        /// </summary>
+        private const string PLATING_CELL1_2_STO1_ESTOP_RESTART="PlatingCell12Sto1EstopRestart";
+        /// <summary>
+        /// Plating cell 1_2 sto2 estop restart
+        /// </summary>
+        private const string PLATING_CELL1_2_STO2_ESTOP_RESTART="PlatingCell12Sto2EstopRestart";
+        /// <summary>
+        /// Plating cell 3_4 sto1 estop restart
+        /// </summary>
+        private const string PLATING_CELL3_4_STO1_ESTOP_RESTART="PlatingCell34Sto1EstopRestart";
+        /// <summary>
+        /// Plating cell 3_4 sto2 estop restart
+        /// </summary>
+        private const string PLATING_CELL3_4_STO2_ESTOP_RESTART="PlatingCell34Sto2EstopRestart";
+        /// <summary>
+        /// Facility sto estop restart
+        /// </summary>
+        private const string FACILITY_STO_ESTOP_RESTART="FacilityStoEstopRestart";
+        /// <summary>
+        /// SRD Sto Estop restart
+        /// </summary>
+        private const string SRD_STO_ESTOP_RESTART="SrdStoEstopRestart";
         #endregion
 
-        private const string SRD_TOP_PANEL_REMOVED="SrdTopPanelRemoved";
-        private const string SRD_LOWER_PANEL_REMOVED="SrdLowerPanelRemoved";
-        private const string PLUMBING_DOOR_CLOSED = "PlumbingDoorClosed";
-        private const string PROCESS_HALT_BUTTON1="ProcessHaltButton1";
-        private const string PROCESS_HALT_BUTTON2="ProcessHaltButton2";
-        private const string LOADER_HALT_BUTTON= "LoaderHaltButton";
-        private const string MODE_SELECTOR_SWITCH="ModeSelectorSwitch";
-        private const string MODE_SIREN="ModeSiren";
-
-        #region SLS
-        private const string LOADER_ROTATION_SLS="LoaderRotationSls";
-        private const string LOADER_SWINGA_SLS="LoaderSwingASls";
-        private const string LOADER_SWINGB_SLS="LoaderSwingBSls";
-        private const string LOADER_TILTA_SLS="LoaderTiltASls";
-        private const string LOADER_TILTB_SLS="LoaderTiltBSls";
-        private const string PUF1_VERTICAL_SLS="Puf1VerticalSls";
-        private const string PUF2_VERTICAL_SLS="Puf2VerticalSls";
-        private const string LOADER_GANTRY_SLS="LoaderGantrySls";
-        private const string LOADER_ELEVATOR_SLS="LoaderElevatorSls";
-        private const string PROCESS_GANTRY_SLS="ProcessGantrySls";
-        private const string PROCESS_ELEVATOR_SLS="ProcessElevatorSls";
+        #region Doors Lock
+        /// <summary>
+        /// Req Aligner Door Lock
+        /// </summary>
+        private const string REQ_ALIGNER_DOOR_LOCK="ReqAlignerDoorLock";
+        /// <summary>
+        /// Req cassette doors lock
+        /// </summary>
+        private const string REQ_CASSETE_DOORS_LOCK="ReqCassetteDoorsLock";
+        /// <summary>
+        /// Req cell 1_2 doors lock
+        /// </summary>
+        private const string REQ_CELL1_2_DOORS_LOCK="ReqCell12DoorsLock";
+        /// <summary>
+        /// Req cell doors lock
+        /// </summary>
+        private const string REQ_CELL3_4_DOORS_LOCK="ReqCell34DoorsLock";
         #endregion
 
-        #region Disable
-        private const string PUF_VERTICAL_DISABLE= "PufVerticalDisable";
-        private const string PUF1_FLIP_ROTATION_DISABLE="Puf1FlipRotationDisable";
-        private const string PUF2_FLIP_ROTATION_DISABLE="Puf2FlipRotationDisable";
-        private const string LOADER_DISABLE="LoaderDisable";
-        private const string TRANSPORTER_DISABLE="TransporterDisable";
-        private const string SRD_ARM_DISABLE="SrdArmDisable";
-        private const string SRD_ROTATION_DISABLE="SrdRotationDisable";
+        #region locked
+        /// <summary>
+        /// Cell1_2 Doors Left Locked
+        /// </summary>
+        private const string CELL1_2_DOORS_LEFT_LOCKED="Cell12DoorsLeftLocked";
+        /// <summary>
+        /// Cell1_2 Doors Right Locked
+        /// </summary>
+        private const string CELL1_2_DOORS_RIGHT_LOCKED="Cell12DoorsRightLocked";
+        /// <summary>
+        /// Cell3_4 Doors Left Locked
+        /// </summary>
+        private const string CELL3_4_DOORS_LEFT_LOCKED="Cell34DoorsLeftLocked";
+        /// <summary>
+        /// Cell3_4 Doors Right Locked
+        /// </summary>
+        private const string CELL3_4_DOORS_RIGHT_LOCKED="Cell34DoorsRightLocked";
+        /// <summary>
+        /// Cassette Doors Left locked
+        /// </summary>
+        private const string CASSETE_DOORS_LEFT_LOCKED="CassetteDoorsLeftLocked";
+        /// <summary>
+        /// Cassette Doors Right locked
+        /// </summary>
+        private const string CASSETE_DOORS_RIGHT_LOCKED="CassetteDoorsRightLocked";
         #endregion
 
-        #region safety
-        private const string TRANSPORTER_SAFE_SLS="TransporterSafeSls";
-        private const string LOADER_SAFE_SLS="LoaderSafeSls";
-        private const string PUF_VERTICAL_SAFE_SLS="PufVerticalSafeSls";
-        private const string LOADER_SAFE_STO="LoaderSafeSto";
-        private const string PUF_VERTICAL_SAFE_STO="PufVerticalSafeSto";
-        private const string PUF1_FLIP_ROTATION_SAFE_STO="Puf1FlipRotationSafeSto";
-        private const string PUF2_FLIP_ROTATION_SAFE_STO="Puf2FlipRotationSafeSto";
-        private const string TRANSPORTER_SAFE_STO="TransporterSafeSto";
-        private const string SRD_ROTATION_SAFE_STO = "SrdRotationSafeSto";
-        private const string SRD_ARM_SAFE_STO="SrdArmSafeSto";
+        #region Closed
+        /// <summary>
+        /// Aligner Door closed
+        /// </summary>
+        private const string ALIGNER_DOOR_CLOSED="AlignerDoorClosed";
+        private const string RES1_2_DOOR_CLOED="Res12DoorClosed";
+        private const string RES3_4_DOOR_CLOED="Res34DoorClosed";
+        private const string VPW_DOOR_CLOSED="VpwDoorClosed";
+        private const string PLUMBLING_DOOR_CLOSED="PlumblingDoorClosed";
+        private const string SRD_PANEL_CLOSED="SrdPanelClosed";
         #endregion
 
-        #region Plumbling
-        private const string PUMP_EDM="PumpEdm";
-        private const string RESERVIOR_HIGH_LEVEL="ReservoirHighLevel";
-        private const string FLUID_ENABLE_EDM="FluidEnableEdm";
+        #region Halt
+        private const string HALT_BUTTON_LEFT="HaltButtonLeft";
+        private const string HALT_BUTTON_RIGHT="HaltButtonRight";
         #endregion
 
-        private const string SRD_ARM_RESET="SRDArmReset";
-
         private const string SAFETY_DATA="SafetyData";
 
         #endregion
@@ -220,61 +324,9 @@ namespace PunkHPX8_RT.Devices.Safety
                     LOG.WriteLog(eEvent.ERR_SAFETY, Module, "All On Error");
                 }
             }
-            SLSAxisModeSiren();
             return true;
         }
         /// <summary>
-        /// SLS模块下Axis Mode Siren
-        /// </summary>
-        private void SLSAxisModeSiren()
-        {
-
-            int count = 0;
-            //count += AxisModeSirenOn(SafetyData.Puf1VerticalSls, $"{ModuleName.PUF1}.Vertical");
-            //count += AxisModeSirenOn(SafetyData.Puf2VerticalSls, $"{ModuleName.PUF2}.Vertical");
-            //count += AxisModeSirenOn(SafetyData.LoaderTiltASls, $"{ModuleName.Loader1}.TiltA");
-            //count += AxisModeSirenOn(SafetyData.LoaderTiltBSls, $"{ModuleName.Loader1}.TiltB");
-            //count += AxisModeSirenOn(SafetyData.LoaderSwingASls, $"{ModuleName.Loader1}.SwingA");
-            //count += AxisModeSirenOn(SafetyData.LoaderSwingBSls, $"{ModuleName.Loader1}.SwingB");
-            //count += AxisModeSirenOn(SafetyData.LoaderRotationSls, $"{ModuleName.Loader1}.Rotation");
-            //count += AxisModeSirenOn(SafetyData.LoaderGantrySls, $"{ModuleName.Transporter2}.Gantry");
-            //count += AxisModeSirenOn(SafetyData.LoaderElevatorSls, $"{ModuleName.Transporter2}.Elevator");
-            //count += AxisModeSirenOn(SafetyData.ProcessGantrySls, $"{ModuleName.Transporter1}.Gantry");
-            //count += AxisModeSirenOn(SafetyData.ProcessElevatorSls, $"{ModuleName.Transporter1}.Elevator");
-            count += AxisModeSirenOn(!SafetyData.ModeSelectorSwitch, $"{ModuleName.PUF1}.Vertical");
-            count += AxisModeSirenOn(!SafetyData.ModeSelectorSwitch, $"{ModuleName.PUF2}.Vertical");
-            count += AxisModeSirenOn(!SafetyData.ModeSelectorSwitch, $"{ModuleName.Loader1}.TiltA");
-            count += AxisModeSirenOn(!SafetyData.ModeSelectorSwitch, $"{ModuleName.Loader1}.TiltB");
-            count += AxisModeSirenOn(!SafetyData.ModeSelectorSwitch, $"{ModuleName.Loader1}.ShuttleA");
-            count += AxisModeSirenOn(!SafetyData.ModeSelectorSwitch, $"{ModuleName.Loader1}.ShuttleB");
-            count += AxisModeSirenOn(!SafetyData.ModeSelectorSwitch, $"{ModuleName.Loader1}.Rotation");
-            count += AxisModeSirenOn(!SafetyData.ModeSelectorSwitch, $"{ModuleName.Transporter2}.Gantry");
-            count += AxisModeSirenOn(!SafetyData.ModeSelectorSwitch, $"{ModuleName.Transporter2}.Elevator");
-            count += AxisModeSirenOn(!SafetyData.ModeSelectorSwitch, $"{ModuleName.Transporter1}.Gantry");
-            count += AxisModeSirenOn(!SafetyData.ModeSelectorSwitch, $"{ModuleName.Transporter1}.Elevator");
-            if (count==0&&SafetyData.ModeSiren)
-            {
-                ModeSirenOff();
-            }
-        }
-        /// <summary>
-        /// Axis运动Mode Siren On
-        /// </summary>
-        /// <param name="jetAxisBase"></param>
-        private int AxisModeSirenOn(bool sls,string axisName)
-        {
-            JetAxisBase axis = DEVICE.GetDevice<JetAxisBase>(axisName);
-            if (axis != null && axis.IsSwitchOn)
-            {
-                if (axis.IsRun&&sls)
-                {
-                    ModeSirenOn();
-                    return 1;
-                }
-            }
-            return 0;
-        }
-        /// <summary>
         /// 初始化
         /// </summary>
         /// <returns></returns>
@@ -309,12 +361,14 @@ namespace PunkHPX8_RT.Devices.Safety
         /// </summary>
         private void InitializeOperation()
         {
-            OP.Subscribe($"{Module}.LockProcessDoors", (cmd,args) => LockProcessDoor());
-            OP.Subscribe($"{Module}.UnlockProcessDoors", (cmd, args) => UnlockProcessDoor());
-            OP.Subscribe($"{Module}.LockLoaderDoors", (cmd, args) => LockLoaderDoor());
-            OP.Subscribe($"{Module}.UnlockLoaderDoors", (cmd, args) => UnlockLoaderDoor());
-            OP.Subscribe($"{Module}.LockBufferDoors", (cmd, args) => LockBufferDoor());
-            OP.Subscribe($"{Module}.UnlockBufferDoors", (cmd, args) => UnlockBufferDoor());
+            OP.Subscribe($"{Module}.LockAlignerDoor", (cmd,args) => LockAlignerDoor());
+            OP.Subscribe($"{Module}.UnlockAlignerDoor", (cmd, args) => UnlockAlignerDoor());
+            OP.Subscribe($"{Module}.LockCasseteDoor", (cmd, args) => LockCasseteDoor());
+            OP.Subscribe($"{Module}.UnlockCasseteDoor", (cmd, args) => UnlockCasseteDoor());
+            OP.Subscribe($"{Module}.LockCell12Door", (cmd, args) => LockCell12Door());
+            OP.Subscribe($"{Module}.UnlockCell12Door", (cmd, args) => UnlockCell12Door());
+            OP.Subscribe($"{Module}.LockCell34Door", (cmd, args) => LockCell34Door());
+            OP.Subscribe($"{Module}.UnlockCell34Door", (cmd, args) => UnlockCell34Door());
             OP.Subscribe($"{Module}.ResetOperation",(cmd, args) => ResetOperation());
             OP.Subscribe($"{Module}.AllOnOperation", (cmd, args) => AllOnOperation());
         }
@@ -324,97 +378,54 @@ namespace PunkHPX8_RT.Devices.Safety
         private void SubscribeValueAction()
         {
             BeckhoffIoSubscribeUpdateVariable( MAIN_COMM_ERR);
-            BeckhoffIoSubscribeUpdateVariable( LOADER_PUF_COMM_ERR);
-            BeckhoffIoSubscribeUpdateVariable( SRD_COMM_ERR);
-            BeckhoffIoSubscribeUpdateVariable( TRANSPORTER_COMM_ERR);
-            BeckhoffIoSubscribeUpdateVariable( MAIN_FUNCTION_BLOCK_ERR);
-            BeckhoffIoSubscribeUpdateVariable( LOADER_PUF_FUNCTION_BLOCK_ERR);
-            BeckhoffIoSubscribeUpdateVariable( SRD_FUNCTION_BLOCK_ERR);
-            BeckhoffIoSubscribeUpdateVariable( TRANSPORTER_FUNCTION_BLOCK_ERR);
-
             BeckhoffIoSubscribeUpdateVariable( TWINCAT_STATE);
-            BeckhoffIoSubscribeUpdateVariable( LOADER_HOT_CONNECT_STATE);
-            BeckhoffIoSubscribeUpdateVariable( FFU_HOT_CONNECT_STATE);
-            BeckhoffIoSubscribeUpdateVariable( PRC_HOT_CONNECT_STATE);
-            BeckhoffIoSubscribeUpdateVariable( LDR_HOT_CONNECT_STATE);
-            BeckhoffIoSubscribeUpdateVariable( TRANSPORTER_HOT_CONNECT_STATE);
-            BeckhoffIoSubscribeUpdateVariable( SRD_HOT_CONNECT_STATE);
-            BeckhoffIoSubscribeUpdateVariable( PUF_HOT_CONNECT_STATE);
-            BeckhoffIoSubscribeUpdateVariable( RESERVOIR2_HOT_CONNECT_STATE);
-            BeckhoffIoSubscribeUpdateVariable( RESERVOIR1_HOT_CONNECT_STATE);
-
-            BeckhoffIoSubscribeUpdateVariable( RUNSTOP);
-            BeckhoffIoSubscribeUpdateVariable( ERRACK);
-            BeckhoffIoSubscribeUpdateVariable( SLS_RESTART);
-            BeckhoffIoSubscribeUpdateVariable( TX_STO1_ESTOP_Restart);
-            BeckhoffIoSubscribeUpdateVariable( TX_STO_MON_Restart);
-            BeckhoffIoSubscribeUpdateVariable( TX_STO2_ESTOP_RESTART);
-            BeckhoffIoSubscribeUpdateVariable( LDR_PUF_STO_MON_RESTART);
-            BeckhoffIoSubscribeUpdateVariable( LDR_PUF_STO1_ESTOP_RESTART);
-            BeckhoffIoSubscribeUpdateVariable( LDR_PUF_STO2_ESTOP_RESTART);
+            BeckhoffIoSubscribeUpdateVariable( MAIN_FB_ERR);
+            BeckhoffIoSubscribeUpdateVariable( VPW_HOTCONNECT_STATE);
+            BeckhoffIoSubscribeUpdateVariable( VPW_COMM_ERR);
+            BeckhoffIoSubscribeUpdateVariable( VPW_FB_ERR);
+            BeckhoffIoSubscribeUpdateVariable( FACILITY_HOT_CONNECT_STATE);
+            BeckhoffIoSubscribeUpdateVariable( FACILITY_COMM_ERR);
+            BeckhoffIoSubscribeUpdateVariable( FACILITY_FB_ERR);
+            BeckhoffIoSubscribeUpdateVariable( RES1_2_HOT_CONNECT_STATE);
+            BeckhoffIoSubscribeUpdateVariable( RES1_2_COMM_ERR);
+            BeckhoffIoSubscribeUpdateVariable( RES1_2_FB_ERR);
+            BeckhoffIoSubscribeUpdateVariable( RES3_4_HOT_CONNECT_STATE);
+            BeckhoffIoSubscribeUpdateVariable( RES3_4_COMM_ERR);
+            BeckhoffIoSubscribeUpdateVariable( RES3_4_FB_ERR);
+            BeckhoffIoSubscribeUpdateVariable( PLATING1_2_HOT_CONNECT_STATE);
+            BeckhoffIoSubscribeUpdateVariable( PLATING1_2_COMM_ERR);
+            BeckhoffIoSubscribeUpdateVariable( PLATING1_2_FB_ERR);
+            BeckhoffIoSubscribeUpdateVariable( PLATING3_4_HOT_CONNECT_STATE);
+            BeckhoffIoSubscribeUpdateVariable( PLATING3_4_COMM_ERR);
+            BeckhoffIoSubscribeUpdateVariable( PLATING3_4_FB_ERR);
+            BeckhoffIoSubscribeUpdateVariable( ERR_ACK);
+            BeckhoffIoSubscribeUpdateVariable( RUN_STOP);
+            BeckhoffIoSubscribeUpdateVariable( CASSETE_DOORS_LEFT_LOCKED);
+            BeckhoffIoSubscribeUpdateVariable( CASSETE_DOORS_RIGHT_LOCKED);
+            BeckhoffIoSubscribeUpdateVariable( CELL1_2_DOORS_LEFT_LOCKED);
+            BeckhoffIoSubscribeUpdateVariable( CELL1_2_DOORS_RIGHT_LOCKED);
+            BeckhoffIoSubscribeUpdateVariable( CELL3_4_DOORS_LEFT_LOCKED);
+            BeckhoffIoSubscribeUpdateVariable( CELL3_4_DOORS_RIGHT_LOCKED);
+            BeckhoffIoSubscribeUpdateVariable( VPW_DOOR_CLOSED);
+            BeckhoffIoSubscribeUpdateVariable( SRD_PANEL_CLOSED);
+            BeckhoffIoSubscribeUpdateVariable( ALIGNER_DOOR_CLOSED);
+            BeckhoffIoSubscribeUpdateVariable( PLUMBLING_DOOR_CLOSED);
+            BeckhoffIoSubscribeUpdateVariable( SRD_PANEL_CLOSED);
+            BeckhoffIoSubscribeUpdateVariable( FACILITY_STO_ESTOP_RESTART);
+            BeckhoffIoSubscribeUpdateVariable( PLATING_CELL1_2_STO1_ESTOP_RESTART);
+            BeckhoffIoSubscribeUpdateVariable( PLATING_CELL1_2_STO2_ESTOP_RESTART);
+            BeckhoffIoSubscribeUpdateVariable( PLATING_CELL3_4_STO1_ESTOP_RESTART);
+            BeckhoffIoSubscribeUpdateVariable( PLATING_CELL3_4_STO2_ESTOP_RESTART);
+            BeckhoffIoSubscribeUpdateVariable( RES1_2_STO_ESTOP_RESTART);
+            BeckhoffIoSubscribeUpdateVariable( RES3_4_STO_ESTOP_RESTART);
             BeckhoffIoSubscribeUpdateVariable( SRD_STO_ESTOP_RESTART);
-            BeckhoffIoSubscribeUpdateVariable( PUMP_STO_ESTOP_RESTART);
-            BeckhoffIoSubscribeUpdateVariable( FLUID_ESTOP_RESTART);
-
-            BeckhoffIoSubscribeUpdateVariable( LOADER_DOOR_LOCK);
-            BeckhoffIoSubscribeUpdateVariable( LOADER_DOOR_LOCKED);
-            BeckhoffIoSubscribeUpdateVariable( LOADER_PANEL_REMOVED);
-            BeckhoffIoSubscribeUpdateVariable( LOWER_LOADER_PANEL_REMOVED);
-            BeckhoffIoSubscribeUpdateVariable( BUFFER_DOOR_LOCK);
-            BeckhoffIoSubscribeUpdateVariable( BUFFER_DOOR_LOCKED);
-            BeckhoffIoSubscribeUpdateVariable( BUFFER_PANEL_REMOVED);
-            BeckhoffIoSubscribeUpdateVariable( PROCESS_DOOR_LOCK);
-            BeckhoffIoSubscribeUpdateVariable( PROCESS_DOOR1_LOCKED);
-            BeckhoffIoSubscribeUpdateVariable( PROCESS_DOOR2_LOCKED);
-            BeckhoffIoSubscribeUpdateVariable( PROCESS_DOOR3_LOCKED);
-            BeckhoffIoSubscribeUpdateVariable( PROCESS_DOOR4_LOCKED);
-            BeckhoffIoSubscribeUpdateVariable( PROCESS_UPPER_PANELS_ON);
-
-            BeckhoffIoSubscribeUpdateVariable( SRD_TOP_PANEL_REMOVED);
-            BeckhoffIoSubscribeUpdateVariable( SRD_LOWER_PANEL_REMOVED);
-            BeckhoffIoSubscribeUpdateVariable( PLUMBING_DOOR_CLOSED);
-
-            BeckhoffIoSubscribeUpdateVariable( PROCESS_HALT_BUTTON1);
-            BeckhoffIoSubscribeUpdateVariable( PROCESS_HALT_BUTTON2);
-            BeckhoffIoSubscribeUpdateVariable( LOADER_HALT_BUTTON);
-            BeckhoffIoSubscribeUpdateVariable( MODE_SELECTOR_SWITCH);
-            BeckhoffIoSubscribeUpdateVariable( MODE_SIREN);
-
-            BeckhoffIoSubscribeUpdateVariable( LOADER_ROTATION_SLS);
-            BeckhoffIoSubscribeUpdateVariable( LOADER_SWINGA_SLS);
-            BeckhoffIoSubscribeUpdateVariable( LOADER_SWINGB_SLS);
-            BeckhoffIoSubscribeUpdateVariable( LOADER_TILTA_SLS);
-            BeckhoffIoSubscribeUpdateVariable( LOADER_TILTB_SLS);
-            BeckhoffIoSubscribeUpdateVariable( PUF1_VERTICAL_SLS);
-            BeckhoffIoSubscribeUpdateVariable( PUF2_VERTICAL_SLS);
-            BeckhoffIoSubscribeUpdateVariable( LOADER_GANTRY_SLS);
-            BeckhoffIoSubscribeUpdateVariable( LOADER_ELEVATOR_SLS);
-            BeckhoffIoSubscribeUpdateVariable( PROCESS_GANTRY_SLS);
-            BeckhoffIoSubscribeUpdateVariable( PROCESS_ELEVATOR_SLS);
-
-            BeckhoffIoSubscribeUpdateVariable( PUF_VERTICAL_DISABLE);
-            BeckhoffIoSubscribeUpdateVariable( PUF1_FLIP_ROTATION_DISABLE);
-            BeckhoffIoSubscribeUpdateVariable( PUF2_FLIP_ROTATION_DISABLE);
-            BeckhoffIoSubscribeUpdateVariable( LOADER_DISABLE);
-            BeckhoffIoSubscribeUpdateVariable( TRANSPORTER_DISABLE);
-            BeckhoffIoSubscribeUpdateVariable( SRD_ARM_DISABLE);
-            BeckhoffIoSubscribeUpdateVariable( SRD_ROTATION_DISABLE);
-            BeckhoffIoSubscribeUpdateVariable( TRANSPORTER_SAFE_SLS);
-            BeckhoffIoSubscribeUpdateVariable( LOADER_SAFE_SLS);
-            BeckhoffIoSubscribeUpdateVariable( PUF_VERTICAL_SAFE_SLS);
-            BeckhoffIoSubscribeUpdateVariable( LOADER_SAFE_STO);
-            BeckhoffIoSubscribeUpdateVariable( PUF_VERTICAL_SAFE_STO);
-            BeckhoffIoSubscribeUpdateVariable( PUF1_FLIP_ROTATION_SAFE_STO);
-            BeckhoffIoSubscribeUpdateVariable( PUF2_FLIP_ROTATION_SAFE_STO);
-            BeckhoffIoSubscribeUpdateVariable( TRANSPORTER_SAFE_STO);
-            BeckhoffIoSubscribeUpdateVariable( SRD_ARM_SAFE_STO);
-            BeckhoffIoSubscribeUpdateVariable( SRD_ROTATION_SAFE_STO);
-
-            BeckhoffIoSubscribeUpdateVariable( PUMP_EDM);
-            BeckhoffIoSubscribeUpdateVariable( RESERVIOR_HIGH_LEVEL);
-            BeckhoffIoSubscribeUpdateVariable(FLUID_ENABLE_EDM);
-
-            BeckhoffIoSubscribeUpdateVariable(SRD_ARM_RESET);
+            BeckhoffIoSubscribeUpdateVariable( VPW_STO_ESTOP_RESTART);
+            BeckhoffIoSubscribeUpdateVariable( REQ_ALIGNER_DOOR_LOCK);
+            BeckhoffIoSubscribeUpdateVariable( REQ_CASSETE_DOORS_LOCK);
+            BeckhoffIoSubscribeUpdateVariable( REQ_CELL1_2_DOORS_LOCK);
+            BeckhoffIoSubscribeUpdateVariable( REQ_CELL3_4_DOORS_LOCK);
+            BeckhoffIoSubscribeUpdateVariable(HALT_BUTTON_LEFT);
+            BeckhoffIoSubscribeUpdateVariable(HALT_BUTTON_RIGHT);
         }
         /// <summary>
         /// 订阅IO变量
@@ -445,10 +456,6 @@ namespace PunkHPX8_RT.Devices.Safety
             {
                 _variableInitializeDic[variable] = true;
             }
-            if(variable.EndsWith("Sls"))
-            {
-                SlsChangedSpeed(variable,(bool)value);
-            }
             CheckIsDataAbonrmal(variable, value);
         }
 
@@ -540,84 +547,6 @@ namespace PunkHPX8_RT.Devices.Safety
         }
         #endregion
         
-
-        #region SLS
-        /// <summary>
-        /// SLS更改速度
-        /// </summary>
-        /// <param name="variable"></param>
-        /// <param name="sls"></param>
-        private void SlsChangedSpeed(string variable,bool sls)
-        {
-            int slsSpeed = SC.GetValue<int>("Twincat.SlsSpeed");
-            if(sls)
-            {
-                ModuleChangeSpeed(variable, slsSpeed);
-            }
-            else
-            {
-                ModuleChangeSpeed(variable, 100);
-            }
-        }
-        /// <summary>
-        /// 模块更改速度
-        /// </summary>
-        /// <param name="variable"></param>
-        /// <param name="percent"></param>
-        private void ModuleChangeSpeed(string variable,int percent)
-        {
-            switch(variable)
-            {
-                case PUF1_VERTICAL_SLS:
-                    UpdateAxisSpeed(DEVICE.GetDevice<JetAxisBase>($"{ModuleName.PUF1}.Vertical"), percent);
-                    break;
-                case PUF2_VERTICAL_SLS:
-                    UpdateAxisSpeed(DEVICE.GetDevice<JetAxisBase>($"{ModuleName.PUF2}.Vertical"), percent);
-                    break;
-                case LOADER_TILTA_SLS:
-                    UpdateAxisSpeed(DEVICE.GetDevice<JetAxisBase>($"{ModuleName.Loader1}.TiltA"), percent);
-                    break;
-                case LOADER_TILTB_SLS:
-                    UpdateAxisSpeed(DEVICE.GetDevice<JetAxisBase>($"{ModuleName.Loader1}.TiltB"), percent);
-                    break;
-                case LOADER_SWINGA_SLS:
-                    UpdateAxisSpeed(DEVICE.GetDevice<JetAxisBase>($"{ModuleName.Loader1}.ShuttleA"), percent);
-                    break;
-                case LOADER_SWINGB_SLS:
-                    UpdateAxisSpeed(DEVICE.GetDevice<JetAxisBase>($"{ModuleName.Loader1}.ShuttleB"), percent);
-                    break;
-                case LOADER_ROTATION_SLS:
-                    UpdateAxisSpeed(DEVICE.GetDevice<JetAxisBase>($"{ModuleName.Loader1}.Rotation"), percent);
-                    break;
-                case LOADER_GANTRY_SLS:
-                    UpdateAxisSpeed(DEVICE.GetDevice<JetAxisBase>($"{ModuleName.Transporter2}.Gantry"), percent);
-                    break;
-                case LOADER_ELEVATOR_SLS:
-                    UpdateAxisSpeed(DEVICE.GetDevice<JetAxisBase>($"{ModuleName.Transporter2}.Elevator"), percent);
-                    break;
-                case PROCESS_GANTRY_SLS:
-                    UpdateAxisSpeed(DEVICE.GetDevice<JetAxisBase>($"{ModuleName.Transporter1}.Gantry"), percent);
-                    break;
-                case PROCESS_ELEVATOR_SLS:
-                    UpdateAxisSpeed(DEVICE.GetDevice<JetAxisBase>($"{ModuleName.Transporter1}.Elevator"), percent);
-                    break;
-            }
-        }
-        /// <summary>
-        /// 更改Axis速度百分比
-        /// </summary>
-        /// <param name="jetAxisBase"></param>
-        /// <param name="percent"></param>
-        private void UpdateAxisSpeed(JetAxisBase jetAxisBase,int percent)
-        {
-            if (jetAxisBase != null)
-            {
-                jetAxisBase.ChangePercentSpeedAceleration(percent);
-            }
-        }
-
-        #endregion
-
         #region Reset
         /// <summary>
         /// Reset Operation
@@ -644,90 +573,80 @@ namespace PunkHPX8_RT.Devices.Safety
 
         #region Lock Door
         /// <summary>
-        /// Lock Process Door
+        /// Lock Aligner Door
         /// </summary>
         /// <returns></returns>
-        public bool LockProcessDoor()
+        public bool LockAlignerDoor()
         {
-            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{PROCESS_DOOR_LOCK}");
+            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{REQ_ALIGNER_DOOR_LOCK}");
             return IOModuleManager.Instance.WriteIoValue(ioName, true);
         }
         /// <summary>
         /// Unlock Process Door
         /// </summary>
         /// <returns></returns>
-        public bool UnlockProcessDoor()
+        public bool UnlockAlignerDoor()
         {
-            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{PROCESS_DOOR_LOCK}");
+            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{REQ_ALIGNER_DOOR_LOCK}");
             return IOModuleManager.Instance.WriteIoValue(ioName, false);
         }
         /// <summary>
-        /// Lock Buffer Door
+        /// Lock cassete Door
         /// </summary>
         /// <returns></returns>
-        public bool LockBufferDoor()
+        public bool LockCasseteDoor()
         {
-            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{BUFFER_DOOR_LOCK}");
+            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{REQ_CASSETE_DOORS_LOCK}");
             return IOModuleManager.Instance.WriteIoValue(ioName, true);
         }
         /// <summary>
-        /// Unlock Buffer Door
+        /// Unlock cassete Door
         /// </summary>
         /// <returns></returns>
-        public bool UnlockBufferDoor()
+        public bool UnlockCasseteDoor()
         {
-            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{BUFFER_DOOR_LOCK}");
+            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{REQ_CASSETE_DOORS_LOCK}");
             return IOModuleManager.Instance.WriteIoValue(ioName, false);
         }
         /// <summary>
-        /// Lock Loader Door
+        /// Lock Cell1_2 Door
         /// </summary>
         /// <returns></returns>
-        public bool LockLoaderDoor()
+        public bool LockCell12Door()
         {
-            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{LOADER_DOOR_LOCK}");
+            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{REQ_CELL1_2_DOORS_LOCK}");
             return IOModuleManager.Instance.WriteIoValue(ioName, true);
         }
         /// <summary>
-        /// Unlock Loader Door
+        /// Unlock Cell1_2 Door
         /// </summary>
         /// <returns></returns>
-        public bool UnlockLoaderDoor()
+        public bool UnlockCell12Door()
         {
-            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{LOADER_DOOR_LOCK}");
+            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{REQ_CELL1_2_DOORS_LOCK}");
             return IOModuleManager.Instance.WriteIoValue(ioName, false);
         }
-        #endregion
-
-        #region Mode Siren 
         /// <summary>
-        /// Mode Siren On
+        /// Lock Cell3_4 Door
         /// </summary>
         /// <returns></returns>
-        public bool ModeSirenOn()
+        public bool LockCell34Door()
         {
-            if (!SafetyData.ModeSiren)
-            {
-                string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{MODE_SIREN}");
-                return IOModuleManager.Instance.WriteIoValue(ioName, true);
-            }
-            return true;
+            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{REQ_CELL3_4_DOORS_LOCK}");
+            return IOModuleManager.Instance.WriteIoValue(ioName, true);
         }
         /// <summary>
-        /// Mode Siren Off
+        /// Unlock Cell3_4 Door
         /// </summary>
         /// <returns></returns>
-        public bool ModeSirenOff()
+        public bool UnlockCell34Door()
         {
-            if (SafetyData.ModeSiren)
-            {
-                string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{MODE_SIREN}");
-                return IOModuleManager.Instance.WriteIoValue(ioName, false);
-            }
-            return true;
+            string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{REQ_CELL3_4_DOORS_LOCK}");
+            return IOModuleManager.Instance.WriteIoValue(ioName, false);
         }
         #endregion
 
+
         public void Monitor()
         {
         }

+ 72 - 74
PunkHPX8_RT/Devices/Safety/SafetyResetRoutine.cs

@@ -10,6 +10,7 @@ using System.Threading.Tasks;
 using MECF.Framework.Common.Beckhoff.ModuleIO;
 using MECF.Framework.Common.TwinCat;
 using MECF.Framework.Common.IOCore;
+using Aitex.Core.RT.Log;
 
 namespace PunkHPX8_RT.Devices.Safety
 {
@@ -17,27 +18,21 @@ namespace PunkHPX8_RT.Devices.Safety
     {
         private enum SafetyResetStep
         {
-            SrdArm,
             RunStop,
             ErrAck,
-            LockProcessDoors,
-            LockBufferDoors,
-            LockLoaderDoors,
-            TxSto1EstopRestart,
-            TxEstopDelay,
-            TxStoMonRestart,
-            TxMonDelay,
-            TxSto2EstopRestart,            
-            LdrPufSto1EstopRestart,
-            LdrPufEstopDelay,
-            LdrPufStoMonRestart,
-            LdrPufMonDelay,
-            LdrPufSto2EstopRestart,
-            SrdStoEstopRestart,
-            PumpStoEstopRestart,
-            PumpEstopDelay,
-            FluidEstopRestart,
-            FluidEstopDelay,
+            LockCasseteDoors,
+            LockCellDoors,
+            LockAlignerDoors,
+            FacilityStoEstopRestart,
+            FacilityEstopDelay,
+            PlatingCell12Sto1EstopRestart,
+            PlatingCell12Sto1EstopDelay,
+            PlatingCell12Sto2EstopRestart,
+            PlatingCell12Sto2EstopDelay,
+            PlatingCell34Sto1EstopRestart,
+            PlatingCell34Sto1EstopDelay,
+            PlatingCell34Sto2EstopRestart,
+            PlatingCell34Sto2EstopDelay,
             SlsRestart,
             End
         }
@@ -45,18 +40,12 @@ namespace PunkHPX8_RT.Devices.Safety
         private const string RUNSTOP = "RunStop";
         #endregion
         #region 内部变量
-        private SafetyArmResetRoutine _srdArmResetRoutine;
         private SafetyToggleRoutine _errAckToggleRoutine;
-        private SafetyToggleRoutine _txSto1EstopRestartRoutine;
-        private SafetyToggleRoutine _txStoMonRestartRoutine;
-        private SafetyToggleRoutine _txSto2EstopRestartRoutine;
-        private SafetyToggleRoutine _ldrPufSto1EstopRestart;
-        private SafetyToggleRoutine _ldrPufStoMonRestart;
-        private SafetyToggleRoutine _ldrPufSto2EstopRestart;
-        private SafetyToggleRoutine _srdStoEstopRestart;
-        private SafetyToggleRoutine _pumpStoEstopRestart;
-        private SafetyToggleRoutine _fluidEstopRestart;
-        private SafetyToggleRoutine _slsRestart;
+        private SafetyToggleRoutine _facilityStoEstopRestart;
+        private SafetyToggleRoutine _platingCell12Sto1EstopRestart;
+        private SafetyToggleRoutine _platingCell12Sto2EstopRestart;
+        private SafetyToggleRoutine _platingCell34Sto1EstopRestart;
+        private SafetyToggleRoutine _platingCell34Sto2EstopRestart;
         private SafetyDevice _device;
         #endregion
         /// <summary>
@@ -66,17 +55,11 @@ namespace PunkHPX8_RT.Devices.Safety
         public SafetyResetRoutine(string module) : base(module)
         {
             _errAckToggleRoutine = new SafetyToggleRoutine(module);
-            _txSto1EstopRestartRoutine = new SafetyToggleRoutine(module);
-            _txStoMonRestartRoutine=new SafetyToggleRoutine(module);
-            _txSto2EstopRestartRoutine=new SafetyToggleRoutine(module);
-            _ldrPufSto1EstopRestart=new SafetyToggleRoutine(module);
-            _ldrPufStoMonRestart=new SafetyToggleRoutine(module);
-            _ldrPufSto2EstopRestart=new SafetyToggleRoutine(module);
-            _srdStoEstopRestart=new SafetyToggleRoutine(module);
-            _pumpStoEstopRestart = new SafetyToggleRoutine(module);
-            _fluidEstopRestart=new SafetyToggleRoutine(module);
-            _slsRestart=new SafetyToggleRoutine(module);
-            _srdArmResetRoutine=new SafetyArmResetRoutine(module);
+            _facilityStoEstopRestart = new SafetyToggleRoutine(module);
+            _platingCell12Sto1EstopRestart=new SafetyToggleRoutine(module);
+            _platingCell12Sto2EstopRestart=new SafetyToggleRoutine(module);
+            _platingCell34Sto1EstopRestart= new SafetyToggleRoutine(module);    
+            _platingCell34Sto2EstopRestart = new SafetyToggleRoutine(module);
         }
 
         /// <summary>
@@ -92,43 +75,34 @@ namespace PunkHPX8_RT.Devices.Safety
         /// <returns></returns>
         public RState Monitor()
         {
-            Runner.Run(SafetyResetStep.SrdArm, () => { return _srdArmResetRoutine.Start("SRDArmReset") == RState.Running; },
-                () => { return CheckRoutineStatus(_srdArmResetRoutine); }, _delay_1s)
-                .Run(SafetyResetStep.RunStop, RunStop, _delay_1ms)
+            Runner.Run(SafetyResetStep.RunStop, RunStop, _delay_1ms)
                 .Run(SafetyResetStep.ErrAck, () => { return _errAckToggleRoutine.Start("ErrAck") == RState.Running; },
                 () => { return CheckRoutineStatus(_errAckToggleRoutine); }, _delay_1s)
-                .Run(SafetyResetStep.LockProcessDoors, () => { return _device.LockProcessDoor(); }, _delay_1ms)
-                .Run(SafetyResetStep.LockBufferDoors, () => { return _device.LockBufferDoor(); }, _delay_1ms)
-                .Run(SafetyResetStep.LockLoaderDoors, () => { return _device.LockLoaderDoor(); }, _delay_1ms)
-                .Run(SafetyResetStep.TxSto1EstopRestart, () => { return _txSto1EstopRestartRoutine.Start("TxSto1EstopRestart") == RState.Running; },
-                () => { return CheckRoutineStatus(_txSto1EstopRestartRoutine); }, _delay_1s)
-                .Delay(SafetyResetStep.TxEstopDelay,100)//100 delay
-                .Run(SafetyResetStep.TxStoMonRestart, () => { return _txStoMonRestartRoutine.Start("TxStoMonRestart") == RState.Running; },
-                () => { return CheckRoutineStatus(_txStoMonRestartRoutine); }, _delay_1s)
-                .Delay(SafetyResetStep.TxMonDelay, 100)//100 delay
-                .Run(SafetyResetStep.TxSto2EstopRestart, () => { return _txSto2EstopRestartRoutine.Start("TxSto2EstopRestart") == RState.Running; },
-                () => { return CheckRoutineStatus(_txSto2EstopRestartRoutine); }, _delay_1s)
-                .Run(SafetyResetStep.LdrPufSto1EstopRestart, () => { return _ldrPufSto1EstopRestart.Start("LdrPufSto1EstopRestart") == RState.Running; },
-                () => { return CheckRoutineStatus(_ldrPufSto1EstopRestart); }, _delay_1s)
-                .Delay(SafetyResetStep.LdrPufEstopDelay,_delay_1s)//1000 delay
-                .Run(SafetyResetStep.LdrPufStoMonRestart, () => { return _ldrPufStoMonRestart.Start("LdrPufStoMonRestart") == RState.Running; },
-                () => { return CheckRoutineStatus(_ldrPufStoMonRestart); }, _delay_1s)
-                .Delay(SafetyResetStep.LdrPufMonDelay, 100)//100 delay
-                .Run(SafetyResetStep.LdrPufSto2EstopRestart, () => { return _ldrPufSto2EstopRestart.Start("LdrPufSto2EstopRestart") == RState.Running; },
-                () => { return CheckRoutineStatus(_ldrPufSto2EstopRestart); }, _delay_1s)
-                .Run(SafetyResetStep.SrdStoEstopRestart, () => { return _srdStoEstopRestart.Start("SrdStoEstopRestart") == RState.Running; },
-                () => { return CheckRoutineStatus(_srdStoEstopRestart); }, _delay_1s)
-                .Run(SafetyResetStep.PumpStoEstopRestart, () => { return _pumpStoEstopRestart.Start("PumpStoEstopRestart") == RState.Running; },
-                () => { return CheckRoutineStatus(_pumpStoEstopRestart); }, _delay_1s)
-                .Delay(SafetyResetStep.PumpEstopDelay,100)//100 delay
-                .Run(SafetyResetStep.FluidEstopRestart, () => { return _fluidEstopRestart.Start("FluidEstopRestart") == RState.Running; },
-                () => { return CheckRoutineStatus(_fluidEstopRestart); }, _delay_1s)
-                .Delay(SafetyResetStep.FluidEstopDelay,_delay_1s)
+                .Run(SafetyResetStep.LockCasseteDoors, () => { return _device.LockCasseteDoor(); },CheckCasseteLocked, _delay_5s)
+                .Run(SafetyResetStep.LockCellDoors, LockCellDoors,CheckCellLocked, _delay_1ms)
+                .Run(SafetyResetStep.LockAlignerDoors, () => { return _device.LockAlignerDoor(); },CheckAlignerLocked, _delay_1ms)
+                .Run(SafetyResetStep.FacilityStoEstopRestart, () => { return _facilityStoEstopRestart.Start("FacilityStoEstopRestart") == RState.Running; },
+                () => { return CheckRoutineStatus(_facilityStoEstopRestart); }, _delay_1s)
+                .Delay(SafetyResetStep.FacilityEstopDelay,100)//100 delay
+                .Run(SafetyResetStep.PlatingCell12Sto1EstopDelay, () => { return _platingCell12Sto1EstopRestart.Start("PlatingCell12Sto1EstopRestart") == RState.Running; },
+                () => { return CheckRoutineStatus(_platingCell12Sto1EstopRestart); }, _delay_1s)
+                .Delay(SafetyResetStep.PlatingCell12Sto1EstopDelay, 100)//100 delay
+                .Run(SafetyResetStep.PlatingCell12Sto2EstopDelay, () => { return _platingCell12Sto2EstopRestart.Start("PlatingCell12Sto2EstopRestart") == RState.Running; },
+                () => { return CheckRoutineStatus(_platingCell12Sto2EstopRestart); }, _delay_1s)
+                .Delay(SafetyResetStep.PlatingCell12Sto1EstopDelay, 100)//100 delay
+                .Run(SafetyResetStep.PlatingCell34Sto1EstopDelay, () => { return _platingCell34Sto1EstopRestart.Start("PlatingCell34Sto1EstopRestart") == RState.Running; },
+                () => { return CheckRoutineStatus(_platingCell34Sto1EstopRestart); }, _delay_1s)
+                .Delay(SafetyResetStep.PlatingCell34Sto1EstopDelay, 100)//100 delay
+                .Run(SafetyResetStep.PlatingCell34Sto2EstopDelay, () => { return _platingCell34Sto1EstopRestart.Start("PlatingCell34Sto2EstopRestart") == RState.Running; },
+                () => { return CheckRoutineStatus(_platingCell34Sto2EstopRestart); }, _delay_1s)
+                .Delay(SafetyResetStep.PlatingCell34Sto1EstopDelay, 100)//100 delay
                 .Run(SafetyResetStep.SlsRestart, () => { return _slsRestart.Start("SlsRestart") == RState.Running; },
                 () => { return CheckRoutineStatus(_slsRestart); }, _delay_1s)
                 .End(SafetyResetStep.End, NullFun, _delay_1ms);
             return Runner.Status;
         }
+
+
         /// <summary>
         /// 
         /// </summary>
@@ -152,10 +126,34 @@ namespace PunkHPX8_RT.Devices.Safety
         /// 检验Process door locked状态
         /// </summary>
         /// <returns></returns>
-        private bool CheckProcessDoorLocked()
+        private bool CheckCasseteLocked()
+        {
+            return _device.SafetyData.CassetteDoorsLeftLocked&& _device.SafetyData.CassetteDoorsRightLocked;
+        }
+        /// <summary>
+        /// lock cell doors
+        /// </summary>
+        /// <returns></returns>
+        private bool LockCellDoors()
+        {
+            return _device.LockCell12Door() && _device.LockCell34Door();
+        }
+        /// <summary>
+        /// 检验Cell locked状态
+        /// </summary>
+        /// <returns></returns>
+        private bool CheckCellLocked()
+        {
+            return _device.SafetyData.Cell12DoorsLeftLocked && _device.SafetyData.Cell12DoorsRightLocked && _device.SafetyData.Cell34DoorsLeftLocked &&
+                _device.SafetyData.Cell34DoorsRightLocked;
+        }
+        /// <summary>
+        /// 检验Aligner door locked
+        /// </summary>
+        /// <returns></returns>
+        private bool CheckAlignerLocked()
         {
-            return _device.SafetyData.ProcessDoor1Locked && _device.SafetyData.ProcessDoor2Locked && _device.SafetyData.ProcessDoor3Locked &&
-                    _device.SafetyData.ProcessDoor4Locked;
+            return _device.SafetyData.AlignerDoorClosed;
         }
         /// <summary>
         /// 启动