|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FB42 SEQ1 P02 : SEQ1 Feeding pick & place |
|
|
|
Netzwerk 1: Pre-Setting "DI MAIN P02".M00.RdyToStart := NOT "DI MAIN P02".M00.HomPosRun AND "DI MAIN GLB".M00.HomPosSR AND "DI MAIN GLB".M00.AutoCmpltMa_run; |
|
|
|
Netzwerk 2: Define last step #SSM(LAST_STEP := 5); |
|
|
|
Netzwerk 3: Step Switching Mechanism (SSM) CASE #SSM.S.stepact OF 0: // Waiting for SEQ1 to start #SSM.S.stepd := #SSM.S.steps; "DI MAIN P02".M00.SEQ1_Busy := "DI MAIN P02".to_P01_Handling.Request := FALSE;
1: // P02_to_P01_Handling.Request IF #SSM.S.stepfc THEN "DI MAIN P02".to_P01_Handling.Done := FALSE; ELSE #SSM.S.stepd := "DI MAIN P02".to_P01_Handling.Request := "DI MAIN P02".M00.RdyToStart AND "DI MAIN P01".to_P02_Feeding.Request; END_IF;
2: // Query Syringe LightBar, and Carrier atPos IF NOT "E02 M200 Syringe LightBar" THEN "DI MAIN P02".M00.SEQ1_Busy := TRUE; "DI OUT P02".M200.DRV.CmdExe_WP := "HMI KEY".P02.M200.F12_Enable_WP AND #SSM.S.stepa; ELSIF "E02 M200 Syringe LightBar" THEN "DI OUT P02".M200.DRV.CmdExe_WP := FALSE; IF NOT "DI OUT P02".M200.FD_BACK AND "E02 M200 Carrier atPos" THEN #SSM.S.stepd := "DI MAIN P02".M00.SEQ1_WP1_DnOK := TRUE; #RunTimeCountr := 0; END_IF; END_IF; IF #RunTimeCountr > #RunTimeSetVal THEN #SSM.S."1_FAULT_00_15".%X0 := TRUE; END_IF;
3: // P02_to_P01_Handling.EnabledToMove "DI MAIN P02".to_P01_Handling.EnabledToMove := "DI MAIN P01".to_P02_Feeding.Request; IF "DI OUT P01".C100.FB_HP AND "DI OUT P01".V100.FB_WP AND "DI MAIN P01".to_P02_Feeding.EnabledToMove THEN #SSM.S.stepd := "DI MAIN P02".to_P01_Handling.Done := TRUE; END_IF;
4: // Waiting for P01.to_P02_Feeding.Done IF "DI MAIN P01".to_P02_Feeding.Done THEN "DI MAIN P02".to_P01_Handling.EnabledToMove := "DI MAIN P01".to_P02_Feeding.EnabledToMove := FALSE; #SSM.S.stepd := TRUE; END_IF;
5: // Waiting for Handling and Feeding Done IF #SSM.S.stepfc THEN #SSM.S.c1.set := 20; "DI MAIN P02".to_P01_Handling.Request := FALSE; ELSE #SSM.S.c1.start := "DI MAIN P01".to_P02_Feeding.Done AND "DI MAIN P02".to_P01_Handling.Done; "DI OUT P02".M201.DRV.CmdExe_WP := "HMI KEY".P02.M201.F12_Enable_WP AND #SSM.S.c1.start AND #SSM.S.stepa; IF #SSM.S.c1.done THEN "DI OUT P02".M201.DRV.CmdExe_WP := "DI MAIN P01".to_P02_Feeding.Done := "DI MAIN P02".to_P01_Handling.Done := FALSE; IF NOT "DI OUT P02".M201.FD_BACK THEN #RunTimeCountr := 0; IF ("DI MAIN P01".M00.ProductCounter.GoodParts) MOD "HMI KEY".TargetValues.BlisterMatrix.NumOfRows = 0 THEN "DI MAIN P02".M00.ProductCounter.GoodParts := "DI MAIN P02".M00.ProductCounter.GoodParts + 1; // Blister counter "DI MAIN P02".M00.SEQ1_Done := TRUE; END_IF; #SSM.S.stepd := NOT "DI MAIN P02".M00.SEQ1_Done; END_IF; END_IF; END_IF; END_CASE; |
|