| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413 | 
							- <?xml version="1.0" encoding="utf-8"?>
 
- <TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.12">
 
-   <POU Name="FIMSSEQUENCE" Id="{ccd53ff0-004a-4e41-8b19-d824f47f7c88}" SpecialFunc="None">
 
-     <Declaration><![CDATA[FUNCTION_BLOCK FIMSSEQUENCE
 
- VAR_INPUT
 
- 	Enable	:BOOL;
 
- 	StopCmd_In_b	:BOOL;
 
- 	LoadCmd_In_b	:BOOL;
 
- 	UnloadCmd_In_b	:BOOL;
 
- 	Open_Close_Cmd_In_b	:BOOL;
 
- 	Open_Close_Count	:BOOL;
 
- 	PodSeqAlmRst_In_b	:BOOL;
 
- 	N2PurgeBypassEN_In_b	:BOOL;
 
- 	FoupInPodPos_In_b	:BOOL;
 
- 	FoupInRetractPos_In_b	:BOOL;
 
- 	FoupInExtendPos_In_b	:BOOL;
 
- 	FoupInSealPos_In_b	:BOOL;
 
- 	FoupInRlsPos_In_b	:BOOL;
 
- 	FoupLatchOnPos_In_b	:BOOL;
 
- 	FoupLatchOffPos_In_b	:BOOL;
 
- 	PodVacStatus_In_b	:BOOL;
 
- 	PodVacATM_In_b	:BOOL;
 
- 	O2Check_EN	:BOOL;
 
- 	O2Check_Done_In_b	:BOOL;
 
- 	PodDrXaxisAvoidInUpPos_In_b	:BOOL;
 
- 	PodDrXaxisAvoidInDnPos_In_b	:BOOL;
 
- 	PodDrYClsPos_In_b	:BOOL;
 
- 	PodDrYOpPos_In_b	:BOOL;
 
- 	N2PurgeValOpPos_In_b	:BOOL;
 
- 	N2PurgeValClPos_In_b	:BOOL;
 
- END_VAR
 
- VAR_OUTPUT
 
- 	EnableOutput	:BOOL;
 
- 	LoadOTAlm_Out_b	:BOOL;
 
- 	UnloadOTAlm_Out_b	:BOOL;
 
- 	PodLoadDone_Out_b	:BOOL;
 
- 	PodUnloadDone_Out_b	:BOOL;
 
- 	PodRunning_Out_b	:BOOL;
 
- 	PodRetractVal_Out_b	:BOOL;
 
- 	PodExtendVal_Out_b	:BOOL;
 
- 	PodVacOpVal_Out_b	:BOOL;
 
- 	PodVacClsVal_Out_b	:BOOL;
 
- 	PodFoupLatchOffVal_Out_b	:BOOL;
 
- 	PodFoupLatchonVal_Out_b	:BOOL;
 
- 	PodSealVal_Out_b	:BOOL;
 
- 	PodRealseVal_Out_b	:BOOL;
 
- 	N2PurgePodOpVal_Out_b	:BOOL;
 
- 	N2PurgePodClsVal_Out_b	:BOOL;
 
- 	O2CheckVal_Out_b	:BOOL;
 
- 	PodDrXaxisAvoidOpVal_Out_b	:BOOL;
 
- 	PodDrXaxisAvoidClsVal_Out_b	:BOOL;
 
- 	PodDrYOpVal_Out_b	:BOOL;
 
- 	PodDrYClsVal_Out_b	:BOOL;
 
- END_VAR
 
- VAR
 
- 	UnloadStage	:	INT	;
 
- 	FIMSUnloadTrig	:	R_TRIG	;
 
- 	UnloadOTAlm	:	TON	;
 
- 	LoadStage	:	INT	;
 
- 	FIMSLoadTrig	:	R_TRIG	;
 
- 	LoadOTAlm	:	TON	;
 
- 	FIMSTrigDleyOn	:	TON	;
 
- 	FIMSUnloadDlyOn	:	TON	;
 
- 	PodLoadRunning_b	:	BOOL	;
 
- 	PodUnloadRunning_b	:	BOOL	;
 
- 	loadottime	:	TIME	;
 
- 	unloadottime	:	TIME	;
 
- 	KeyStatusTON	:	TON	;
 
- 	KeyStatusTON1	:	TON	;
 
- 	UnloadVacOffDly	:	TON	;
 
- 	UNLOAD_STEP_DELAY_EN	:	BOOL	;
 
- 	UNLOAD_STEP_NEXT	:	INT	;
 
- 	UNLOAD_STEP_DELAY	:	TON	;
 
- 	UNLOAD_STEP_DELAY_TIME	:	TIME	;
 
- 	LOAD_STEP_DELAY_EN	:	BOOL	;
 
- 	LOAD_STEP_NEXT	:	INT	;
 
- 	LOAD_STEP_DELAY	:	TON	;
 
- 	LOAD_STEP_DELAY_TIME	:	TIME	;
 
- END_VAR
 
- ]]></Declaration>
 
-     <Implementation>
 
-       <ST><![CDATA[	IF NOT LoadCmd_In_b OR ( LoadOTAlm_Out_b AND PodSeqAlmRst_In_b ) OR StopCmd_In_b THEN
 
- 		LoadOTAlm(	In:= FALSE , PT:= T#60s , Q=> LoadOTAlm_Out_b , ET=>loadottime );
 
- 		LoadStage := 0 ;
 
- 		PodLoadRunning_b := FALSE ;
 
- 		LOAD_STEP_DELAY_EN:=FALSE;
 
- 		LOAD_STEP_NEXT:=0;
 
- 	END_IF ;
 
- 	
 
- 	IF NOT UnloadCmd_In_b OR ( UnloadOTAlm_Out_b AND PodSeqAlmRst_In_b ) OR StopCmd_In_b THEN
 
- 		UnloadOTAlm(	In:= FALSE , PT:= T#60s , Q=> UnloadOTAlm_Out_b , ET=>unloadottime );
 
- 		UnloadStage := 0 ;
 
- 		PodUnloadRunning_b := FALSE ;
 
- 		UNLOAD_STEP_DELAY_EN:=FALSE;
 
- 		UNLOAD_STEP_NEXT:=0;
 
- 	END_IF;
 
- 	
 
- 	IF Enable THEN
 
- 	//Alarm
 
- 	IF LoadCmd_In_b AND NOT StopCmd_In_b AND LoadStage>0 THEN 
 
- 		LoadOTAlm(	In:= TRUE , PT:= T#60s , Q=> LoadOTAlm_Out_b , ET=>loadottime );
 
- 	(*ELSIF NOT LoadCmd_In_b OR ( LoadOTAlm_Out_b AND PodSeqAlmRst_In_b ) OR StopCmd_In_b THEN
 
- 		LoadOTAlm(	In:= FALSE , PT:= T#60s , Q=> LoadOTAlm_Out_b , ET=>loadottime );
 
- 		LoadStage := 0 ;
 
- 		PodLoadRunning_b := FALSE ;*)
 
- 	END_IF;
 
- 	
 
- 	IF UnloadCmd_In_b AND NOT StopCmd_In_b AND UnloadStage>0 THEN 
 
- 		UnloadOTAlm(	In:= TRUE , PT:= T#60s , Q=> UnloadOTAlm_Out_b , ET=>unloadottime );
 
- 	(*ELSIF NOT UnloadCmd_In_b OR ( UnloadOTAlm_Out_b AND PodSeqAlmRst_In_b ) OR StopCmd_In_b THEN
 
- 		UnloadOTAlm(	In:= FALSE , PT:= T#60s , Q=> UnloadOTAlm_Out_b , ET=>unloadottime );
 
- 		UnloadStage := 0 ;
 
- 		PodUnloadRunning_b := FALSE ;*)
 
- 	END_IF;
 
- 	
 
- 	//Unload
 
- 	FIMSUnloadDlyOn.In := UnloadCmd_In_b ;
 
- 	FIMSUnloadDlyOn((*In:=,*) PT:=T#100MS(*, Q=>, ET=>*));
 
- 	UNLOAD_STEP_DELAY(In:=UNLOAD_STEP_DELAY_EN,PT:=UNLOAD_STEP_DELAY_TIME);
 
- 	IF UnloadCmd_In_b THEN
 
- 		FIMSUnloadTrig(	Clk:= FIMSUnloadDlyOn.Q );
 
- 		IF FIMSUnloadTrig.Q THEN
 
- 			UnloadStage := 0 ;
 
- 		END_IF;
 
- 		CASE UnloadStage OF
 
- 			0://门板Y轴归位
 
- 				PodLoadDone_Out_b := FALSE ;
 
- 				PodUnloadDone_Out_b := FALSE ;
 
- 				PodUnloadRunning_b := TRUE ;
 
- 				PodDrYClsVal_Out_b := TRUE ;
 
- 				PodDrYOpVal_Out_b := FALSE ;
 
- 				(*UnloadOTAlm(	In:= PodDrYClsVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> UnloadOTAlm_Out_b [*, ET=>*] );*)
 
- 				IF PodDrYClsVal_Out_b AND PodDrYClsPos_In_b AND NOT PodDrYOpPos_In_b AND NOT UnloadOTAlm_Out_b 
 
- 				 THEN
 
- 					UNLOAD_STEP_DELAY_EN:=TRUE;
 
- 					UNLOAD_STEP_NEXT:=10;
 
- 					UNLOAD_STEP_DELAY_TIME:=T#200ms;
 
- 					UnloadStage := 200 ;
 
- 				END_IF;
 
- 			10://Pod 门板移动 seal
 
- 				PodSealVal_Out_b := TRUE ;
 
- 				PodRealseVal_Out_b := FALSE ;
 
- 				(*UnloadOTAlm(	In:= PodSealVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> UnloadOTAlm_Out_b [*, ET=>*] );*)
 
- 				IF PodSealVal_Out_b AND FoupInSealPos_In_b AND NOT FoupInRlsPos_In_b AND NOT UnloadOTAlm_Out_b THEN
 
- 					N2PurgePodClsVal_Out_b := TRUE ;
 
- 					UNLOAD_STEP_DELAY_EN:=TRUE;
 
- 					UNLOAD_STEP_NEXT:=30;
 
- 					UNLOAD_STEP_DELAY_TIME:=T#200ms;
 
- 					UnloadStage := 200 ;
 
- 				END_IF;
 
- 			(*20://pod门板x轴避让归位
 
- 				PodDrXaxisAvoidClsVal_Out_b :=TRUE ;
 
- 				PodDrXaxisAvoidOpVal_Out_b := FALSE ;
 
- 				[*UnloadOTAlm(	In:= PodDrXaxisAvoidClsVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> UnloadOTAlm_Out_b [*, ET=>*] );*]
 
- 				IF PodDrXaxisAvoidClsVal_Out_b AND PodDrXaxisAvoidInDnPos_In_b AND NOT PodDrXaxisAvoidInUpPos_In_b AND NOT UnloadOTAlm_Out_b THEN 
 
- 					UnloadStage := 30;
 
- 				END_IF;*)
 
- 			30://foup latch on
 
- 				PodFoupLatchonVal_Out_b := TRUE ;
 
- 				PodFoupLatchoffVal_Out_b  := FALSE ;
 
- 				KeyStatusTON(In:=PodFoupLatchonVal_Out_b, PT:=T#1s(*, Q=>, ET=>*));
 
- 				(*UnloadOTAlm(	In:= PodFoupLatchonVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> UnloadOTAlm_Out_b [*, ET=>*] );*)
 
- 				IF PodFoupLatchonVal_Out_b AND FoupLatchOnPos_In_b AND NOT FoupLatchOffPos_In_b AND NOT UnloadOTAlm_Out_b AND KeyStatusTON.Q THEN
 
- 					UNLOAD_STEP_DELAY_EN:=TRUE;
 
- 					UNLOAD_STEP_NEXT:=40;
 
- 					UNLOAD_STEP_DELAY_TIME:=T#200ms;
 
- 					UnloadStage := 200 ;
 
- 				END_IF;
 
- 			
 
- 			40://Vacuum off
 
- 				PodVacClsVal_Out_b := TRUE ;
 
- 				PodVacOpVal_Out_b := FALSE ;
 
- 				UnloadVacOffDly(In:=PodVacClsVal_Out_b, PT:=T#1.5s(*, Q=>, ET=>*));
 
- 				IF PodVacATM_In_b OR UnloadVacOffDly.Q(*PodVacClsVal_Out_b AND PodVacStatus_In_b*) THEN
 
- 					UNLOAD_STEP_DELAY_EN:=TRUE;
 
- 					UNLOAD_STEP_NEXT:=50;
 
- 					UNLOAD_STEP_DELAY_TIME:=T#200ms;
 
- 					UnloadStage := 200 ;
 
- 				END_IF;
 
- 			
 
- 			50:// retract
 
- 				KeyStatusTON(In:=FALSE, PT:=T#1s(*, Q=>, ET=>*));
 
- 				PodRetractVal_Out_b := TRUE ;
 
- 				PodExtendVal_Out_b := FALSE ;
 
- 				(*UnloadOTAlm(	In:= PodRetractVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> UnloadOTAlm_Out_b [*, ET=>*] );*)
 
- 				IF PodRetractVal_Out_b AND FoupInRetractPos_In_b AND NOT FoupInExtendPos_In_b AND NOT UnloadOTAlm_Out_b (*AND FoupInPodPos_In_b*)THEN
 
- 					UNLOAD_STEP_DELAY_EN:=TRUE;
 
- 					UNLOAD_STEP_NEXT:=100;
 
- 					UNLOAD_STEP_DELAY_TIME:=T#200ms;
 
- 					UnloadStage := 200 ;
 
- 				END_IF;
 
- 			100://Unload done
 
- 				UnloadOTAlm(	In:= FALSE , PT:= T#60s , Q=> UnloadOTAlm_Out_b (*, ET=>*));
 
- 				PodUnloadRunning_b := FALSE ;
 
- 				PodUnloadDone_Out_b := TRUE ;
 
- 				UNLOAD_STEP_DELAY_EN:=FALSE;
 
- 				
 
- 			200://each step delay time
 
- 				 IF UNLOAD_STEP_DELAY.Q
 
- 					 THEN
 
- 					 UNLOAD_STEP_DELAY_EN:=FALSE;
 
- 					 UnloadStage := UNLOAD_STEP_NEXT ;
 
- 				 END_IF;
 
- 		END_CASE;
 
- 	END_IF;
 
- 	
 
- 	//Load
 
- 	(*FIMSTrigDleyOn.In := LoadCmd_In_b ;*)
 
- 	FIMSTrigDleyOn.In := LoadCmd_In_b ;
 
- 	FIMSTrigDleyOn((*In:= LoadCmd_In_b ,*) PT:= T#100MS (*, Q=>, ET=>*));
 
- 	LOAD_STEP_DELAY(In:=LOAD_STEP_DELAY_EN,PT:=LOAD_STEP_DELAY_TIME);
 
- 	IF LoadCmd_In_b THEN
 
- 		FIMSLoadTrig(	Clk:= FIMSTrigDleyOn.Q );
 
- 		IF FIMSLoadTrig.Q=TRUE THEN
 
- 			LoadStage:= 0;
 
- 		END_IF;
 
- 		CASE LoadStage OF
 
- 			0://载台上foup有无检测
 
- 				PodUnloadDone_Out_b := FALSE ;
 
- 				PodLoadDone_Out_b := FALSE ;
 
- 				PodLoadRunning_b := TRUE ;
 
- 				(*LoadOTAlm.In := NOT PodSeqAlmRst_In_b ;*)
 
- 				(*LoadOTAlm([*In:=,*] PT:=T#60s, Q=>LoadOTAlm_Out_b[*, ET=>*]);*)
 
- 				IF FoupInPodPos_In_b AND NOT LoadOTAlm_Out_b THEN
 
- 					LoadOTAlm.In :=FALSE ;
 
- 					LOAD_STEP_DELAY_EN:=TRUE;
 
- 					LOAD_STEP_NEXT:=10;
 
- 					LOAD_STEP_DELAY_TIME:=T#200ms;
 
- 					loadStage := 200 ;
 
- 				END_IF;
 
- 			10: //dock
 
- 				PodExtendVal_Out_b :=TRUE;
 
- 				PodRetractVal_Out_b:=FALSE;
 
- 				(*LoadOTAlm1(In:= PodExtendVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s, Q=> LoadOTAlm_Out_b [*, ET=>*] );*)
 
- 				IF PodExtendVal_Out_b=TRUE AND FoupInExtendPos_In_b=TRUE AND NOT FoupInRetractPos_In_b=TRUE AND NOT LoadOTAlm_Out_b=TRUE THEN
 
- 					LOAD_STEP_DELAY_EN:=TRUE;
 
- 					LOAD_STEP_NEXT:=20;
 
- 					LOAD_STEP_DELAY_TIME:=T#200ms;
 
- 					loadStage := 200 ;
 
- 				END_IF;
 
- 			20: //vacuum on
 
- 				PodVacOpVal_Out_b := TRUE ;
 
- 				PodVacClsVal_Out_b := FALSE ;
 
- 				IF PodVacOpVal_Out_b=TRUE (* AND PodVacStatus_In_b=TRUE *) THEN
 
- 					LOAD_STEP_DELAY_EN:=TRUE;
 
- 					LOAD_STEP_NEXT:=30;
 
- 					LOAD_STEP_DELAY_TIME:=T#200ms;
 
- 					loadStage := 200 ;
 
- 				END_IF;
 
- 			30: //foup latch off
 
- 				PodFoupLatchoffVal_Out_b := TRUE ;
 
- 				PodFoupLatchonVal_Out_b := FALSE ;
 
- 				KeyStatusTON1(In:=PodFoupLatchoffVal_Out_b, PT:=T#1s(*, Q=>, ET=>*));
 
- 				(*LoadOTAlm2(	In:= PodFoupLatchoffVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> LoadOTAlm_Out_b [*, ET=>*] );*)
 
- 				IF PodFoupLatchoffVal_Out_b AND FoupLatchOffPos_In_b AND NOT FoupLatchOnPos_In_b AND NOT LoadOTAlm_Out_b AND KeyStatusTON1.Q THEN
 
- 					LOAD_STEP_DELAY_EN:=TRUE;
 
- 					LOAD_STEP_NEXT:=31;
 
- 					LOAD_STEP_DELAY_TIME:=T#200ms;
 
- 					loadStage := 200 ;
 
- 				END_IF;
 
- 			
 
- 			31://N2 Purge Judge
 
- 				IF N2PurgeBypassEN_In_b AND O2Check_EN
 
- 					THEN 
 
- 					loadStage := 40 ;
 
- 				ELSE
 
- 					loadStage := 50;
 
- 				END_IF;
 
- 			
 
- 			
 
- 			40://pod门板x轴避让归位   N2 SEAL
 
- 				PodDrXaxisAvoidClsVal_Out_b :=TRUE ;
 
- 				PodDrXaxisAvoidOpVal_Out_b := FALSE ;
 
- 				(*UnloadOTAlm(	In:= PodDrXaxisAvoidClsVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> UnloadOTAlm_Out_b [*, ET=>*] );*)
 
- 				IF PodDrXaxisAvoidClsVal_Out_b AND PodDrXaxisAvoidInDnPos_In_b AND NOT PodDrXaxisAvoidInUpPos_In_b AND NOT UnloadOTAlm_Out_b THEN 
 
- 					LOAD_STEP_DELAY_EN:=TRUE;
 
- 					LOAD_STEP_NEXT:=41;
 
- 					LOAD_STEP_DELAY_TIME:=T#0ms;
 
- 					loadStage := 41 ;
 
- 				END_IF;
 
- 			41: //Pod 门板移动 release
 
- 				PodRealseVal_Out_b := TRUE ;
 
- 				PodSealVal_Out_b := FALSE ;
 
- 				(*LoadOTAlm3(	In:= PodRealseVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> LoadOTAlm_Out_b [*, ET=>*] );*)		
 
- 				IF PodRealseVal_Out_b AND FoupInRlsPos_In_b AND NOT FoupInSealPos_In_b AND NOT LoadOTAlm_Out_b THEN
 
- 					N2PurgePodClsVal_Out_b := TRUE ;
 
- 					LOAD_STEP_DELAY_EN:=TRUE;
 
- 					LOAD_STEP_NEXT:=42;
 
- 					LOAD_STEP_DELAY_TIME:=T#0ms;
 
- 					loadStage := 42 ;
 
- 				END_IF;
 
- 			42: //N2 Purge and O2 detect
 
- 				N2PurgePodOpVal_Out_b := TRUE ;
 
- 				N2PurgePodClsVal_Out_b :=FALSE ;
 
- 				O2CheckVal_Out_b := TRUE ;
 
- 				IF N2PurgePodOpVal_Out_b AND N2PurgeValOpPos_In_b AND NOT N2PurgeValClPos_In_b AND O2Check_Done_In_b AND NOT LoadOTAlm_Out_b THEN
 
- 					LOAD_STEP_DELAY_EN:=TRUE;
 
- 					LOAD_STEP_NEXT:=43;
 
- 					LOAD_STEP_DELAY_TIME:=T#0ms;
 
- 					loadStage := 43 ;
 
- 				END_IF;
 
- 			43://Pod 门板移动 seal
 
- 				PodSealVal_Out_b := TRUE ;
 
- 				PodRealseVal_Out_b := FALSE ;
 
- 				(*UnloadOTAlm(	In:= PodSealVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> UnloadOTAlm_Out_b [*, ET=>*] );*)
 
- 				IF PodSealVal_Out_b AND FoupInSealPos_In_b AND NOT FoupInRlsPos_In_b AND NOT UnloadOTAlm_Out_b THEN
 
- 					N2PurgePodClsVal_Out_b := TRUE ;
 
- 					LOAD_STEP_DELAY_EN:=TRUE;
 
- 					LOAD_STEP_NEXT:=50;
 
- 					LOAD_STEP_DELAY_TIME:=T#200ms;
 
- 					loadStage := 200 ;
 
- 				END_IF;
 
- 			50: // X轴避让
 
- 				PodDrXaxisAvoidOpVal_Out_b := TRUE ;
 
- 				PodDrXaxisAvoidClsVal_Out_b := FALSE ;
 
- 				(*LoadOTAlm4(	In:= PodDrXaxisAvoidOpVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> LoadOTAlm_Out_b [*, ET=>*] );*)
 
- 				IF PodDrXaxisAvoidOpVal_Out_b AND PodDrXaxisAvoidInUpPos_In_b AND NOT PodDrXaxisAvoidInDnPos_In_b AND NOT LoadOTAlm_Out_b THEN 
 
- 					LOAD_STEP_DELAY_EN:=TRUE;
 
- 					LOAD_STEP_NEXT:=51;
 
- 					LOAD_STEP_DELAY_TIME:=T#0ms;
 
- 					loadStage := 51 ;
 
- 				END_IF;
 
- 			51: //Pod 门板移动 release
 
- 				PodRealseVal_Out_b := TRUE ;
 
- 				PodSealVal_Out_b := FALSE ;
 
- 				(*LoadOTAlm3(	In:= PodRealseVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> LoadOTAlm_Out_b [*, ET=>*] );*)
 
- 				IF PodRealseVal_Out_b AND FoupInRlsPos_In_b AND NOT FoupInSealPos_In_b AND NOT LoadOTAlm_Out_b THEN
 
- 					LOAD_STEP_DELAY_EN:=TRUE;
 
- 					LOAD_STEP_NEXT:=52;
 
- 					LOAD_STEP_DELAY_TIME:=T#200ms;
 
- 					loadStage := 200 ;
 
- 				END_IF;
 
- 			52://X轴避让
 
- 				PodDrXaxisAvoidOpVal_Out_b := TRUE ;
 
- 				PodDrXaxisAvoidClsVal_Out_b := FALSE ;
 
- 				//LoadOTAlm4(	In:= PodDrXaxisAvoidOpVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> LoadOTAlm_Out_b [*, ET=>*] );
 
- 				IF PodDrXaxisAvoidOpVal_Out_b AND PodDrXaxisAvoidInUpPos_In_b AND NOT PodDrXaxisAvoidInDnPos_In_b AND NOT LoadOTAlm_Out_b THEN 
 
- 					LOAD_STEP_DELAY_EN:=TRUE;
 
- 					LOAD_STEP_NEXT:=60;
 
- 					LOAD_STEP_DELAY_TIME:=T#200ms;
 
- 					loadStage := 200 ;
 
- 				END_IF;
 
- 				
 
- 			 (*53://vacuum off
 
- 				KeyStatusTON(In:=FALSE, PT:=T#1s[*, Q=>, ET=>*]);
 
- 				PodVacClsVal_Out_b := TRUE ;
 
- 				PodVacOpVal_Out_b := FALSE ;
 
- 				IF PodVacClsVal_Out_b AND PodVacStatus_In_b THEN
 
- 					LoadStage := 60 ;
 
- 				END_IF; *)
 
- 			60://Y轴移动
 
- 				PodDrYOpVal_Out_b := TRUE ;
 
- 				PodDrYClsVal_Out_b := FALSE ;
 
- 				(*LoadOTAlm5(	In:= PodDrYOpVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> UnloadOTAlm_Out_b [*, ET=>*] );*)
 
- 				IF PodDrYOpVal_Out_b AND PodDrYOpPos_In_b AND NOT PodDrYClsPos_In_b AND NOT UnloadOTAlm_Out_b THEN
 
- 					LOAD_STEP_DELAY_EN:=TRUE;
 
- 					LOAD_STEP_NEXT:=100;
 
- 					LOAD_STEP_DELAY_TIME:=T#0ms;
 
- 					loadStage := 100 ;
 
- 				END_IF;
 
- 			100://Load done
 
- 				LoadOTAlm(	In:= FALSE , PT:= T#60s , Q=> LoadOTAlm_Out_b (*, ET=>*));
 
- 				PodLoadRunning_b := FALSE ;
 
- 				PodLoadDone_Out_b := TRUE ;
 
- 						
 
- 			200://each step delay time
 
- 				 IF LOAD_STEP_DELAY.Q
 
- 					 THEN
 
- 					 LOAD_STEP_DELAY_EN:=FALSE;
 
- 					 loadStage := LOAD_STEP_NEXT ;
 
- 				 END_IF;
 
- 		END_CASE;
 
- 	END_IF;
 
- 	
 
- 	
 
- 	
 
- 	
 
- 	
 
- 	
 
- 	
 
- 	
 
- 	
 
- 	
 
- 	
 
- 	
 
- 	
 
- 	
 
- 	
 
- 	
 
- 	
 
- 	
 
- 	
 
- 	
 
- 	
 
- 	PodRunning_Out_b := PodLoadRunning_b OR PodUnloadRunning_b ;
 
- 	
 
- 	END_IF;]]></ST>
 
-     </Implementation>
 
-     <LineIds Name="FIMSSEQUENCE">
 
-       <LineId Id="17" Count="36" />
 
-       <LineId Id="412" Count="0" />
 
-       <LineId Id="54" Count="78" />
 
-       <LineId Id="134" Count="11" />
 
-       <LineId Id="411" Count="0" />
 
-       <LineId Id="146" Count="154" />
 
-       <LineId Id="302" Count="29" />
 
-       <LineId Id="9" Count="0" />
 
-     </LineIds>
 
-   </POU>
 
- </TcPlcObject>
 
 
  |