10#191 ) ) THEN GVL.FIMSManualSt.FIMS1LatchOff1_b := FALSE ; GVL.FIMSManualSt.FIMS1LatchOn1_b := FALSE ; GVL.FIMSManualSt.FIMS1LatchOff2_b := FALSE ; GVL.FIMSManualSt.FIMS1LatchOn2_b := FALSE ; GVL.FIMSManualSt.FIMS2LatchOff1_b := FALSE ; GVL.FIMSManualSt.FIMS2LatchOn1_b := FALSE ; GVL.FIMSManualSt.FIMS2LatchOff2_b := FALSE ; GVL.FIMSManualSt.FIMS2LatchOn2_b := FALSE ; GVL.FIMSManualSt.FIMS1Seal_b := FALSE ; GVL.FIMSManualSt.FIMS1Release_b := FALSE ; GVL.FIMSManualSt.FIMS2Seal_b := FALSE ; GVL.FIMSManualSt.FIMS2Release_b := FALSE ; GVL.FIMSManualSt.FIMS1DoorClose_b := FALSE ; GVL.FIMSManualSt.FIMS1DoorOpen_b := FALSE ; GVL.FIMSManualSt.FIMS2DoorClose_b := FALSE ; GVL.FIMSManualSt.FIMS2DoorOpen_b := FALSE ; GVL.FIMSManualSt.FIMS1AvoidanceDown_b := FALSE ; GVL.FIMSManualSt.FIMS1AvoidanceUp_b := FALSE ; GVL.FIMSManualSt.FIMS2AvoidanceDown_b := FALSE ; GVL.FIMSManualSt.FIMS2AvoidanceUp_b := FALSE ; GVL.FIMSManualSt.FIMS1Undock_b := FALSE ; GVL.FIMSManualSt.FIMS1Dock_b := FALSE ; GVL.FIMSManualSt.FIMS2Undock_b := FALSE ; GVL.FIMSManualSt.FIMS2Dock_b := FALSE ; GVL.FIMSManualSt.FIMS1VacuumClose_b := FALSE ; GVL.FIMSManualSt.FIMS1VacuumOpen_b := FALSE ; GVL.FIMSManualSt.FIMS2VacuumClose_b := FALSE ; GVL.FIMSManualSt.FIMS2VacuumOpen_b := FALSE ; P_First_RunMode:=TRUE; END_IF; //TP change mode from teach to host , reset all valve output TPHOST(Clk:=TP_EN(*, Q=>*)); IF TPHOST.Q THEN GVL.FIMSValveAct.FIMS1VacuumClose_b := FALSE ; GVL.FIMSValveAct.FIMS1VacuumOpen_b := FALSE ; GVL.FIMSValveAct.FIMS2VacuumClose_b := FALSE ; GVL.FIMSValveAct.FIMS2VacuumOpen_b := FALSE ; GVL.FIMSValveAct.FIMS1LatchOff1_b := FALSE ; GVL.FIMSValveAct.FIMS1LatchOn1_b := FALSE ; GVL.FIMSValveAct.FIMS1LatchOff2_b := FALSE ; GVL.FIMSValveAct.FIMS1LatchOn2_b := FALSE ; GVL.FIMSValveAct.FIMS2LatchOff1_b := FALSE ; GVL.FIMSValveAct.FIMS2LatchOn1_b := FALSE ; GVL.FIMSValveAct.FIMS2LatchOff2_b := FALSE ; GVL.FIMSValveAct.FIMS2LatchOn2_b := FALSE ; GVL.FIMSValveAct.FIMS1Seal_b := FALSE ; GVL.FIMSValveAct.FIMS1Release_b := FALSE ; GVL.FIMSValveAct.FIMS2Seal_b := FALSE ; GVL.FIMSValveAct.FIMS2Release_b := FALSE ; GVL.FIMSValveAct.FIMS1DoorClose_b := FALSE ; GVL.FIMSValveAct.FIMS1DoorOpen_b := FALSE ; GVL.FIMSValveAct.FIMS2DoorClose_b := FALSE ; GVL.FIMSValveAct.FIMS2DoorOpen_b := FALSE ; GVL.FIMSValveAct.FIMS1AvoidanceDown_b := FALSE ; GVL.FIMSValveAct.FIMS1AvoidanceUp_b := FALSE ; GVL.FIMSValveAct.FIMS2AvoidanceDown_b := FALSE ; GVL.FIMSValveAct.FIMS2AvoidanceUp_b := FALSE ; GVL.FIMSValveAct.FIMS1Undock_b := FALSE ; GVL.FIMSValveAct.FIMS1Dock_b := FALSE ; //GVL.VTDO[9].Area3.BitData[6] := FALSE ; GVL.FIMSValveAct.FIMS2Dock_b := FALSE ; END_IF; //N2 PURGE IF NDO.Sys_LA_O2_Check_First_EN THEN UI_LA_O2_Check_First_EN:=TRUE; ELSE UI_LA_O2_Check_First_EN:=FALSE; END_IF; IF NDO.Sys_FIMS1_O2_Check_EN THEN UI_FIMS1_O2_Check_EN:=TRUE; ELSE UI_FIMS1_O2_Check_EN:=FALSE; END_IF; IF NDO.Sys_FIMS2_O2_Check_EN THEN UI_FIMS2_O2_Check_EN:=TRUE; ELSE UI_FIMS2_O2_Check_EN:=FALSE; END_IF; IF NDO.Sys_N2_PURGE_PROCESS THEN UI_N2_PURGE_PROCESS:=TRUE; ELSE UI_N2_PURGE_PROCESS:=FALSE; END_IF; IF TO_UI_LA_O2_Check_OT THEN NDI.ILK_LA_O2_Check_OT:=TRUE; ELSE NDI.ILK_LA_O2_Check_OT:=FALSE; END_IF; IF TO_UI_FIMS1_O2_Check_OT THEN NDI.ILK_FIMS1_O2_Check_OT:=TRUE; ELSE NDI.ILK_FIMS1_O2_Check_OT:=FALSE; END_IF; IF TO_UI_FIMS2_O2_Check_OT THEN NDI.ILK_FIMS2_O2_Check_OT:=TRUE; ELSE NDI.ILK_FIMS2_O2_Check_OT:=FALSE; END_IF; //UI 设定 LA_O2_Over_Time:=REAL_TO_TIME(AO.UI_LA_O2_Over_Time); LA_O2_Check_Time:=REAL_TO_TIME(AO.UI_LA_O2_Check_Time); FOUP_O2_Over_Time:=REAL_TO_TIME(AO.UI_FOUP_O2_Over_Time); FOUP_O2_Check_Time:=REAL_TO_TIME(AO.UI_FOUP_O2_Check_Time); Exchange_LA_TO_FOUP_Wait_Time:=REAL_TO_TIME(AO.UI_Exchange_LA_TO_FOUP_Wait_Time); Exchange_FOUP_TO_LA_Wait_Time:=REAL_TO_TIME(AO.UI_Exchange_FOUP_TO_LA_Wait_Time); Exchange_FOUP_TO_FOUP_Wait_Time:=REAL_TO_TIME(AO.UI_Exchange_FOUP_TO_FOUP_Wait_Time); UI_LA_O2_Check_SV:=AO.UI_LA_O2_Check_SV; UI_FOUP_O2_Check_SV:=AO.UI_FOUP_O2_Check_SV; //O2 DETECT IF NOT NDI.FIMS1_FOUP_exist THEN FIMS1_O2_Check_Done:=FALSE;END_IF; //FOUP1不在位, FIMS1 O2 check done复位 IF NOT NDI.FIMS2_FOUP_exist THEN FIMS2_O2_Check_Done:=FALSE;END_IF; //FOUP2不在位, FIMS2 O2 check done复位 IF NOT UI_N2_PURGE_PROCESS //N2 PURGE过程结束, 所有O2 check done 复位 THEN LA_O2_Check_Done:=FALSE; FIMS1_O2_Check_Done:=FALSE; FIMS2_O2_Check_Done:=FALSE; END_IF; N2_PURGE_PROCESS_Trig(Clk:=UI_N2_PURGE_PROCESS); IF N2_PURGE_PROCESS_Trig.Q //N2 PURGE流程开始,初始化 THEN O2_Detect_STEP:=0; TO_UI_LA_O2_Check_OT:=FALSE; TO_UI_FIMS1_O2_Check_OT:=FALSE; TO_UI_FIMS2_O2_Check_OT:=FALSE; END_IF; IF UI_N2_PURGE_PROCESS THEN CASE O2_Detect_STEP OF 0: IF UI_LA_O2_Check_First_EN AND NOT LA_O2_Check_Done THEN O2_Detect_STEP:=10; ELSE O2_Detect_STEP:=1; END_IF; 1: IF UI_FIMS1_O2_Check_EN AND NOT FIMS1_O2_Check_Done THEN O2_Detect_STEP:=20; ELSIF UI_FIMS2_O2_Check_EN AND NOT FIMS2_O2_Check_Done THEN O2_Detect_STEP:=30; ELSIF NOT LA_O2_Check_Done THEN O2_Detect_STEP:=10; ELSE O2_Detect_STEP:=0; END_IF; //LA 10://判断 IF NDO.POD1_exhaust_switch_open=TRUE THEN NDO.POD1_exhaust_switch_open:=FALSE; LA_O2_Exchange_Wait.In:=TRUE; LA_O2_Exchange_Wait.PT:=Exchange_FOUP_TO_LA_Wait_Time; O2_Detect_STEP:=11; ELSE O2_Detect_STEP:=12; END_IF; 11://阀切换等待 LA_O2_Exchange_Wait(); IF LA_O2_Exchange_Wait.Q THEN LA_O2_Exchange_Wait.In:=FALSE; O2_Detect_STEP:=12; END_IF; 12: LA_O2_Arrival_Timer.In:=TRUE; LA_O2_Arrival_Timer.PT:=LA_O2_Over_Time; LA_O2_Check_Timer.In:=TRUE; LA_O2_Check_Timer.PT:=LA_O2_Check_Time; O2_Detect_STEP:=13; 13://O2 DETECT确认及超时时间 LA_O2_Arrival_Timer(); LA_O2_Check_Timer(); IF LA_O2_Arrival_Timer.Q THEN TO_UI_LA_O2_Check_OT:=TRUE; END_IF; IF LA_O2_Check_Timer.Q AND GVL.O2.ActValPV_Real<=UI_LA_O2_Check_SV THEN LA_O2_Check_Done:=TRUE; LA_O2_Check_Timer.In:=FALSE; LA_O2_Arrival_Timer.In:=FALSE; O2_Detect_STEP:=0; END_IF; //FIMS1 20://判断 IF NDO.POD1_exhaust_switch_open=TRUE AND NDO.POD2_exhaust_switch_open=FALSE //AV61开,AV62关 THEN O2_Detect_STEP:=22; END_IF; IF NDO.POD1_exhaust_switch_open=FALSE AND NDO.POD2_exhaust_switch_open=FALSE //AV61关,AV62关 THEN NDO.POD1_exhaust_switch_open:=TRUE; FIMS1_O2_Exchange_Wait.In:=TRUE; FIMS1_O2_Exchange_Wait.PT:=Exchange_LA_TO_FOUP_Wait_Time; O2_Detect_STEP:=21; END_IF; IF NDO.POD1_exhaust_switch_open=FALSE AND NDO.POD2_exhaust_switch_open=TRUE //AV61关,AV62开 THEN NDO.POD1_exhaust_switch_open:=TRUE; NDO.POD2_exhaust_switch_open:=FALSE; FIMS1_O2_Exchange_Wait.In:=TRUE; IF Exchange_LA_TO_FOUP_Wait_Time>Exchange_FOUP_TO_FOUP_Wait_Time //时间选择较长者 THEN FIMS1_O2_Exchange_Wait.PT:=Exchange_LA_TO_FOUP_Wait_Time; ELSE FIMS1_O2_Exchange_Wait.PT:=Exchange_FOUP_TO_FOUP_Wait_Time; END_IF; O2_Detect_STEP:=21; END_IF; IF NDO.POD1_exhaust_switch_open=TRUE AND NDO.POD2_exhaust_switch_open=TRUE //AV61开,AV62开 THEN NDO.POD2_exhaust_switch_open:=FALSE; FIMS1_O2_Exchange_Wait.In:=TRUE; FIMS1_O2_Exchange_Wait.PT:=Exchange_FOUP_TO_FOUP_Wait_Time; O2_Detect_STEP:=21; END_IF; 21://阀切换等待 FIMS1_O2_Exchange_Wait(); IF FIMS1_O2_Exchange_Wait.Q THEN FIMS1_O2_Exchange_Wait.In:=FALSE; O2_Detect_STEP:=22; END_IF; 22://O2 CHECK START IF FIMS1_O2_Check_Start THEN FIMS1_O2_Arrival_Timer.In:=TRUE; FIMS1_O2_Arrival_Timer.PT:=FOUP_O2_Over_Time; FIMS1_O2_Check_Timer.In:=TRUE; FIMS1_O2_Check_Timer.PT:=FOUP_O2_Check_Time; O2_Detect_STEP:=23; END_IF; 23://O2 DETECT确认及超时时间 FIMS1_O2_Arrival_Timer(); FIMS1_O2_Check_Timer(); IF FIMS1_O2_Arrival_Timer.Q THEN TO_UI_FIMS1_O2_Check_OT:=TRUE; END_IF; IF FIMS1_O2_Check_Timer.Q AND GVL.O2.ActValPV_Real<=UI_FOUP_O2_Check_SV THEN FIMS1_O2_Check_Done:=TRUE; FIMS1_O2_Check_Timer.In:=FALSE; FIMS1_O2_Arrival_Timer.In:=FALSE; O2_Detect_STEP:=0; END_IF; //FIMS2 30://判断 IF NDO.POD1_exhaust_switch_open=TRUE AND NDO.POD2_exhaust_switch_open=TRUE //AV61开,AV62开 THEN O2_Detect_STEP:=32; END_IF; IF NDO.POD1_exhaust_switch_open=FALSE AND NDO.POD2_exhaust_switch_open=TRUE //AV61关,AV62开 THEN NDO.POD1_exhaust_switch_open:=TRUE; FIMS2_O2_Exchange_Wait.In:=TRUE; FIMS2_O2_Exchange_Wait.PT:=Exchange_LA_TO_FOUP_Wait_Time; O2_Detect_STEP:=31; END_IF; IF NDO.POD1_exhaust_switch_open=FALSE AND NDO.POD2_exhaust_switch_open=FALSE //AV61关,AV62关 THEN NDO.POD1_exhaust_switch_open:=TRUE; NDO.POD2_exhaust_switch_open:=TRUE; FIMS2_O2_Exchange_Wait.In:=TRUE; IF Exchange_LA_TO_FOUP_Wait_Time>Exchange_FOUP_TO_FOUP_Wait_Time //时间选择较长者 THEN FIMS2_O2_Exchange_Wait.PT:=Exchange_LA_TO_FOUP_Wait_Time; ELSE FIMS2_O2_Exchange_Wait.PT:=Exchange_FOUP_TO_FOUP_Wait_Time; END_IF; O2_Detect_STEP:=31; END_IF; IF NDO.POD1_exhaust_switch_open=TRUE AND NDO.POD2_exhaust_switch_open=FALSE //AV61开,AV62关 THEN NDO.POD2_exhaust_switch_open:=TRUE; FIMS2_O2_Exchange_Wait.In:=TRUE; FIMS2_O2_Exchange_Wait.PT:=Exchange_FOUP_TO_FOUP_Wait_Time; O2_Detect_STEP:=31; END_IF; 31://阀切换等待 FIMS2_O2_Exchange_Wait(); IF FIMS2_O2_Exchange_Wait.Q THEN FIMS2_O2_Exchange_Wait.In:=FALSE; O2_Detect_STEP:=32; END_IF; 32://O2 CHECK START IF FIMS2_O2_Check_Start THEN FIMS2_O2_Arrival_Timer.In:=TRUE; FIMS2_O2_Arrival_Timer.PT:=FOUP_O2_Over_Time; FIMS2_O2_Check_Timer.In:=TRUE; FIMS2_O2_Check_Timer.PT:=FOUP_O2_Check_Time; O2_Detect_STEP:=33; END_IF; 33://O2 DETECT确认及超时时间 FIMS2_O2_Arrival_Timer(); FIMS2_O2_Check_Timer(); IF FIMS2_O2_Arrival_Timer.Q THEN TO_UI_FIMS2_O2_Check_OT:=TRUE; END_IF; IF FIMS2_O2_Check_Timer.Q AND GVL.O2.ActValPV_Real<=UI_FOUP_O2_Check_SV THEN FIMS2_O2_Check_Done:=TRUE; FIMS2_O2_Check_Timer.In:=FALSE; FIMS2_O2_Arrival_Timer.In:=FALSE; O2_Detect_STEP:=0; END_IF; END_CASE; END_IF; //FIMS1 FIMS1( Enable:= (TP_EN AND (FIMS1LoadCmd_b OR FIMS1UnloadCmd_b)) OR (NOT TP_EN AND GVL.FIMSManualSt.AutoOrManual_b), StopCmd_In_b:= FIMS1StopCmd_b, LoadCmd_In_b:= FIMS1LoadCmd_b, UnloadCmd_In_b:= FIMS1UnloadCmd_b, Open_Close_Cmd_In_b:= 0, Open_Close_Count:= 0, PodSeqAlmRst_In_b:= FIMS1AlarmReset_b, N2PurgeBypassEN_In_b:= FIMS1N2PurgeBypass_b, FoupInPodPos_In_b:= FIMS1FoupCheck_b, FoupInRetractPos_In_b:= NDI.FIMS1_FOUP_undock, FoupInExtendPos_In_b:= NDI.FIMS1_FOUP_dock, FoupInSealPos_In_b:= NDI.FIMS1_seal, FoupInRlsPos_In_b:= NDI.FIMS1_release, FoupLatchOnPos_In_b:= NDI.FIMS1_FOUP_latch_on, FoupLatchOffPos_In_b:= NDI.FIMS1_FOUP_latch_off, PodVacStatus_In_b:= NDI.FIMS1_FOUP_negative_Pressure, PodVacATM_In_b:= NDI.FIMS1_FOUP_ordinary_Pressure, O2Check_EN:= UI_FIMS1_O2_Check_EN, O2Check_Done_In_b:= FIMS1_O2_Check_Done, PodDrXaxisAvoidInUpPos_In_b:= NDI.FIMS1_collision_avoidance_up, PodDrXaxisAvoidInDnPos_In_b:= NDI.FIMS1_collision_avoidance_down, PodDrYClsPos_In_b:= NDI.FIMS1_door_close, PodDrYOpPos_In_b:= NDI.FIMS1_door_open, N2PurgeValOpPos_In_b:= NDI.FIMS1_exhaust_open_position, N2PurgeValClPos_In_b:= NDI.FIMS1_exhaust_close_position, EnableOutput=> , LoadOTAlm_Out_b=> GVL.FIMSDI[0].LoadAlarm_b, UnloadOTAlm_Out_b=> GVL.FIMSDI[0].UnloadAlarm_b, PodLoadDone_Out_b=> GVL.FIMSDI[0].LoadComplete_b, PodUnloadDone_Out_b=> GVL.FIMSDI[0].UnloadComplete_b, PodRunning_Out_b=> GVL.FIMSDI[0].Running_b, PodRetractVal_Out_b=> GVL.FIMSValveAct.FIMS1Undock_b, PodExtendVal_Out_b=> GVL.FIMSValveAct.FIMS1Dock_b, PodVacOpVal_Out_b=> GVL.FIMSValveAct.FIMS1VacuumOpen_b, PodVacClsVal_Out_b=> GVL.FIMSValveAct.FIMS1VacuumClose_b, PodFoupLatchOffVal_Out_b=> GVL.FIMSValveAct.FIMS1LatchOff1_b, PodFoupLatchonVal_Out_b=> GVL.FIMSValveAct.FIMS1LatchOn1_b, PodSealVal_Out_b=> GVL.FIMSValveAct.FIMS1Seal_b, PodRealseVal_Out_b=> GVL.FIMSValveAct.FIMS1Release_b, N2PurgePodOpVal_Out_b=> , N2PurgePodClsVal_Out_b=> , O2CheckVal_Out_b=> FIMS1_O2_Check_Start, PodDrXaxisAvoidOpVal_Out_b=> GVL.FIMSValveAct.FIMS1AvoidanceUp_b, PodDrXaxisAvoidClsVal_Out_b=> GVL.FIMSValveAct.FIMS1AvoidanceDown_b, PodDrYOpVal_Out_b=> GVL.FIMSValveAct.FIMS1DoorOpen_b, PodDrYClsVal_Out_b=> GVL.FIMSValveAct.FIMS1DoorClose_b); IF TP_EN THEN GVL.FIMSValveAct.FIMS1LatchOff2_b := GVL.FIMSValveAct.FIMS1LatchOff1_b ; GVL.FIMSValveAct.FIMS1LatchOn2_b := GVL.FIMSValveAct.FIMS1LatchOn1_b ; END_IF; //FIMS2 FIMS2( Enable:= (TP_EN AND (FIMS2LoadCmd_b OR FIMS2UnloadCmd_b)) OR (NOT TP_EN AND GVL.FIMSManualSt.AutoOrManual_b), StopCmd_In_b:= FIMS2StopCmd_b, LoadCmd_In_b:= FIMS2LoadCmd_b, UnloadCmd_In_b:= FIMS2UnloadCmd_b, Open_Close_Cmd_In_b:= 0, Open_Close_Count:= 0, PodSeqAlmRst_In_b:= FIMS2AlarmReset_b, N2PurgeBypassEN_In_b:= FIMS2N2PurgeBypass_b, FoupInPodPos_In_b:= FIMS2FoupCheck_b, FoupInRetractPos_In_b:= NDI.FIMS2_FOUP_undock, FoupInExtendPos_In_b:= NDI.FIMS2_FOUP_dock, FoupInSealPos_In_b:= NDI.FIMS2_seal, FoupInRlsPos_In_b:= NDI.FIMS2_release, FoupLatchOnPos_In_b:= NDI.FIMS2_FOUP_latch_on, FoupLatchOffPos_In_b:= NDI.FIMS2_FOUP_latch_off, PodVacStatus_In_b:= NDI.FIMS2_FOUP_negative_Pressure, PodVacATM_In_b:= NDI.FIMS2_FOUP_ordinary_Pressure, O2Check_EN:= UI_FIMS2_O2_Check_EN, O2Check_Done_In_b:= FIMS2_O2_Check_Done, PodDrXaxisAvoidInUpPos_In_b:= NDI.FIMS2_collision_avoidance_up, PodDrXaxisAvoidInDnPos_In_b:= NDI.FIMS2_collision_avoidance_down, PodDrYClsPos_In_b:= NDI.FIMS2_door_close, PodDrYOpPos_In_b:= NDI.FIMS2_door_open, N2PurgeValOpPos_In_b:= NDI.FIMS2_exhaust_open_position, N2PurgeValClPos_In_b:= NDI.FIMS2_exhaust_close_position, EnableOutput=> , LoadOTAlm_Out_b=> GVL.FIMSDI[0].LoadAlarm_b, UnloadOTAlm_Out_b=> GVL.FIMSDI[0].UnloadAlarm_b, PodLoadDone_Out_b=> GVL.FIMSDI[0].LoadComplete_b, PodUnloadDone_Out_b=> GVL.FIMSDI[0].UnloadComplete_b, PodRunning_Out_b=> GVL.FIMSDI[0].Running_b, PodRetractVal_Out_b=> GVL.FIMSValveAct.FIMS2Undock_b, PodExtendVal_Out_b=> GVL.FIMSValveAct.FIMS2Dock_b, PodVacOpVal_Out_b=> GVL.FIMSValveAct.FIMS2VacuumOpen_b, PodVacClsVal_Out_b=> GVL.FIMSValveAct.FIMS2VacuumClose_b, PodFoupLatchOffVal_Out_b=> GVL.FIMSValveAct.FIMS2LatchOff1_b, PodFoupLatchonVal_Out_b=> GVL.FIMSValveAct.FIMS2LatchOn1_b, PodSealVal_Out_b=> GVL.FIMSValveAct.FIMS2Seal_b, PodRealseVal_Out_b=> GVL.FIMSValveAct.FIMS2Release_b, N2PurgePodOpVal_Out_b=> , N2PurgePodClsVal_Out_b=> , O2CheckVal_Out_b=> FIMS2_O2_Check_Start, PodDrXaxisAvoidOpVal_Out_b=> GVL.FIMSValveAct.FIMS2AvoidanceUp_b, PodDrXaxisAvoidClsVal_Out_b=> GVL.FIMSValveAct.FIMS2AvoidanceDown_b, PodDrYOpVal_Out_b=> GVL.FIMSValveAct.FIMS2DoorOpen_b, PodDrYClsVal_Out_b=> GVL.FIMSValveAct.FIMS2DoorClose_b); IF TP_EN THEN GVL.FIMSValveAct.FIMS2LatchOff2_b := GVL.FIMSValveAct.FIMS2LatchOff1_b ; GVL.FIMSValveAct.FIMS2LatchOn2_b := GVL.FIMSValveAct.FIMS2LatchOn1_b ; END_IF; //???? IF NOT TP_EN AND NOT GVL.FIMSManualSt.AutoOrManual_b THEN GVL.FIMSValveAct.FIMS1LatchOff1_b := GVL.FIMSManualSt.FIMS1LatchOff1_b ; GVL.FIMSValveAct.FIMS1LatchOn1_b := GVL.FIMSManualSt.FIMS1LatchOn1_b ; GVL.FIMSValveAct.FIMS1LatchOff2_b := GVL.FIMSManualSt.FIMS1LatchOff2_b ; GVL.FIMSValveAct.FIMS1LatchOn2_b := GVL.FIMSManualSt.FIMS1LatchOn2_b ; GVL.FIMSValveAct.FIMS2LatchOff1_b := GVL.FIMSManualSt.FIMS2LatchOff1_b ; GVL.FIMSValveAct.FIMS2LatchOn1_b := GVL.FIMSManualSt.FIMS2LatchOn1_b ; GVL.FIMSValveAct.FIMS2LatchOff2_b := GVL.FIMSManualSt.FIMS2LatchOff2_b ; GVL.FIMSValveAct.FIMS2LatchOn2_b := GVL.FIMSManualSt.FIMS2LatchOn2_b ; GVL.FIMSValveAct.FIMS1Seal_b := GVL.FIMSManualSt.FIMS1Seal_b ; GVL.FIMSValveAct.FIMS1Release_b := GVL.FIMSManualSt.FIMS1Release_b ; GVL.FIMSValveAct.FIMS2Seal_b := GVL.FIMSManualSt.FIMS2Seal_b ; GVL.FIMSValveAct.FIMS2Release_b := GVL.FIMSManualSt.FIMS2Release_b ; GVL.FIMSValveAct.FIMS1DoorClose_b := GVL.FIMSManualSt.FIMS1DoorClose_b ; GVL.FIMSValveAct.FIMS1DoorOpen_b := GVL.FIMSManualSt.FIMS1DoorOpen_b ; GVL.FIMSValveAct.FIMS2DoorClose_b := GVL.FIMSManualSt.FIMS2DoorClose_b ; GVL.FIMSValveAct.FIMS2DoorOpen_b := GVL.FIMSManualSt.FIMS2DoorOpen_b ; GVL.FIMSValveAct.FIMS1AvoidanceDown_b := GVL.FIMSManualSt.FIMS1AvoidanceDown_b ; GVL.FIMSValveAct.FIMS1AvoidanceUp_b := GVL.FIMSManualSt.FIMS1AvoidanceUp_b ; GVL.FIMSValveAct.FIMS2AvoidanceDown_b := GVL.FIMSManualSt.FIMS2AvoidanceDown_b ; GVL.FIMSValveAct.FIMS2AvoidanceUp_b := GVL.FIMSManualSt.FIMS2AvoidanceUp_b ; GVL.FIMSValveAct.FIMS1Undock_b := GVL.FIMSManualSt.FIMS1Undock_b ; GVL.FIMSValveAct.FIMS1Dock_b := GVL.FIMSManualSt.FIMS1Dock_b ; GVL.FIMSValveAct.FIMS2Undock_b := GVL.FIMSManualSt.FIMS2Undock_b ; GVL.FIMSValveAct.FIMS2Dock_b := GVL.FIMSManualSt.FIMS2Dock_b ; GVL.FIMSValveAct.FIMS1VacuumClose_b := GVL.FIMSManualSt.FIMS1VacuumClose_b ; GVL.FIMSValveAct.FIMS1VacuumOpen_b := GVL.FIMSManualSt.FIMS1VacuumOpen_b ; GVL.FIMSValveAct.FIMS2VacuumClose_b := GVL.FIMSManualSt.FIMS2VacuumClose_b ; GVL.FIMSValveAct.FIMS2VacuumOpen_b := GVL.FIMSManualSt.FIMS2VacuumOpen_b ; END_IF; ]]>