123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628 |
- <?xml version="1.0" encoding="utf-8"?>
- <TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.12">
- <POU Name="FIMS" Id="{c49a8530-954d-4021-bf6f-7b9ddd515fb8}" SpecialFunc="None">
- <Declaration><![CDATA[FUNCTION_BLOCK FIMS
- VAR_INPUT
- TP_EN:BOOL;
- END_VAR
- VAR_OUTPUT
- END_VAR
- VAR
- PODManMode : BOOL ;
- FIMS1O2Status_b : BOOL ;
- FIMS1 : FIMSSequence ;
- FIMS1VacuumStatus_b : BOOL ;
- FIMS2 : FIMSSequence ;
- FIMS2VacuumStatus_b : BOOL ;
- FIMS1LoadCmd_b : BOOL ;
- FIMS1UnloadCmd_b : BOOL ;
- FIMS2LoadCmd_b : BOOL ;
- FIMS2UnloadCmd_b : BOOL ;
- FIMS1AlarmReset_b : BOOL ;
- FIMS2AlarmReset_b : BOOL ;
- FIMS1StopCmd_b : BOOL ;
- FIMS2StopCmd_b : BOOL ;
- FIMS1FoupCheck_b : BOOL ;
- FIMS2FoupCheck_b : BOOL ;
- FIMS1N2PurgeBypass_b : BOOL ;
- FIMS2N2PurgeBypass_b : BOOL ;
- MANUALBYPASS1 : BOOL ;
- MANUALBYPASS2 : BOOL ;
- TPHOST : R_TRIG ;
- LA_O2_Check_Done : BOOL ;
- FIMS1_O2_Check_Start : BOOL ;
- FIMS2_O2_Check_Start : BOOL ;
- FIMS1_O2_Check_Done : BOOL ;
- FIMS2_O2_Check_Done : BOOL ;
- UI_LA_O2_Check_First_EN : BOOL ;
- UI_FIMS1_O2_Check_EN : BOOL ;
- UI_FIMS2_O2_Check_EN : BOOL ;
- UI_N2_PURGE_PROCESS : BOOL ;
- UI_LA_O2_Over_Time : INT ;
- UI_LA_O2_Check_Time : INT ;
- UI_FOUP_O2_Over_Time : INT ;
- UI_FOUP_O2_Check_Time : INT ;
- UI_Exchange_LA_TO_FOUP_Wait_Time : INT ;
- UI_Exchange_FOUP_TO_LA_Wait_Time : INT ;
- UI_Exchange_FOUP_TO_FOUP_Wait_Time : INT ;
- UI_LA_O2_Check_SV : REAL ;
- UI_FOUP_O2_Check_SV : REAL ;
- TO_UI_LA_O2_Check_OT : BOOL ;
- TO_UI_FIMS1_O2_Check_OT : BOOL ;
- TO_UI_FIMS2_O2_Check_OT : BOOL ;
- LA_O2_Over_Time : TIME ;
- LA_O2_Check_Time : TIME ;
- FOUP_O2_Over_Time : TIME ;
- FOUP_O2_Check_Time : TIME ;
- Exchange_LA_TO_FOUP_Wait_Time : TIME ;
- Exchange_FOUP_TO_LA_Wait_Time : TIME ;
- Exchange_FOUP_TO_FOUP_Wait_Time : TIME ;
- LA_O2_Arrival_Timer : TON ;
- LA_O2_Check_Timer : TON ;
- LA_O2_Exchange_Wait : TON ;
- FIMS1_O2_Arrival_Timer : TON ;
- FIMS1_O2_Check_Timer : TON ;
- FIMS1_O2_Exchange_Wait : TON ;
- FIMS2_O2_Arrival_Timer : TON ;
- FIMS2_O2_Check_Timer : TON ;
- FIMS2_O2_Exchange_Wait : TON ;
- O2_Detect_STEP : INT ;
- N2_PURGE_PROCESS_Trig : R_TRIG ;
- N2_PURGE_UI_SV: INT;
- P_First_RunMode:BOOL;
- END_VAR
- ]]></Declaration>
- <Implementation>
- <ST><![CDATA[//FIMS控制切换 上位机/操作手柄
- IF NOT TP_EN AND GVL.FIMSManualSt.AutoOrManual_b THEN
- FIMS1LoadCmd_b := GVL.FIMSManualSt.FIMS1AutoLoadCmd_b ;
- FIMS1UnloadCmd_b := GVL.FIMSManualSt.FIMS1AutoUnloadCmd_b ;
- FIMS2LoadCmd_b := GVL.FIMSManualSt.FIMS2AutoLoadCmd_b ;
- FIMS2UnloadCmd_b := GVL.FIMSManualSt.FIMS2AutoUnloadCmd_b ;
- FIMS1AlarmReset_b := ( GVL.FIMSDI[0].LoadAlarm_b OR GVL.FIMSDI[0].UnloadAlarm_b ) AND GVL.FIMSManualSt.FIMSAlarmReset_b ;
- FIMS2AlarmReset_b := ( GVL.FIMSDI[1].LoadAlarm_b OR GVL.FIMSDI[1].UnloadAlarm_b ) AND GVL.FIMSManualSt.FIMSAlarmReset_b ;
- FIMS1StopCmd_b := GVL.FIMSManualSt.FIMS1Stop_b ;
- FIMS2StopCmd_b := GVL.FIMSManualSt.FIMS2Stop_b ;
- FIMS1FoupCheck_b := NDI.FIMS1_FOUP_exist OR GVL.FIMSManualSt.FIMS1FoupBypass_b ;
- FIMS2FoupCheck_b := NDI.FIMS2_FOUP_exist OR GVL.FIMSManualSt.FIMS2FoupBypass_b ;
- FIMS1N2PurgeBypass_b := NOT GVL.FIMSManualSt.FIMS1N2PurgeBypass_b ;
- FIMS2N2PurgeBypass_b := NOT GVL.FIMSManualSt.FIMS2N2PurgeBypass_b ;
- ELSIF TP_EN THEN
- FIMS1LoadCmd_b := GVL.FIMSDO[0].LoadCommand_b ;
- FIMS1UnloadCmd_b := GVL.FIMSDO[0].UnloadCommand_b ;
- FIMS2LoadCmd_b := GVL.FIMSDO[1].LoadCommand_b ;
- FIMS2UnloadCmd_b := GVL.FIMSDO[1].UnloadCommand_b ;
- FIMS1AlarmReset_b := GVL.FIMSDO[0].AlarmReset_b ;
- FIMS2AlarmReset_b := GVL.FIMSDO[1].AlarmReset_b ;
- FIMS1StopCmd_b := GVL.FIMSDO[0].Stop_b ;
- FIMS2StopCmd_b := GVL.FIMSDO[1].Stop_b ;
- FIMS1FoupCheck_b := MANUALBYPASS1 OR NDI.FIMS1_FOUP_exist ;
- FIMS2FoupCheck_b := MANUALBYPASS2 OR NDI.FIMS2_FOUP_exist ;
- FIMS1N2PurgeBypass_b := GVL.FIMSDO[0].N2PurgeBypass_b ;
- FIMS2N2PurgeBypass_b := GVL.FIMSDO[1].N2PurgeBypass_b ;
- END_IF;
- IF NOT P_First_RunMode OR TP_EN OR ( NOT TP_EN AND ( ANY_TO_UINT(AO.TPUINumber)<> 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;
-
-
- ]]></ST>
- </Implementation>
- <LineIds Name="FIMS">
- <LineId Id="802" Count="59" />
- <LineId Id="1535" Count="1" />
- <LineId Id="862" Count="1" />
- <LineId Id="1607" Count="0" />
- <LineId Id="864" Count="33" />
- <LineId Id="901" Count="82" />
- <LineId Id="1608" Count="0" />
- <LineId Id="984" Count="351" />
- <LineId Id="1460" Count="1" />
- <LineId Id="275" Count="0" />
- </LineIds>
- </POU>
- </TcPlcObject>
|