|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FB SEQ1 P02 : Sequencer 1 Pallet transfer at P02 |
|
|
|
Network 1: Call actual SSM #SSM(LAST_STEP := 6); |
|
|
|
Network 2: Pre-Setting "DI MAIN P02".M00.ProductCounter.DlyOnReset(IN := "DI MAIN P02".M00.ProductCounter.ResetGoodProducts, PT := "DI MAIN P02".M00.ProductCounter.DlyOnReset.PT); IF "DI MAIN P02".M00.ProductCounter.DlyOnReset.Q THEN "DI MAIN P02".M00.ProductCounter.GoodProducts := "DI MAIN P02".M00.ProductCounter.SetCounter; END_IF; "DI MAIN P02".M00.RdyToStart := "DI MAIN GLB".M00.AutoCmpltMa_run OR "DI MAIN GLB".M00.InchCmpltMa_run; |
|
|
|
Network 3: CASE-Function corresponds to actual SSM CASE #SSM.S.stepact OF 0: // waiting for SEQ to start "DI MAIN P02".M00.SEQ1_Busy := FALSE; IF NOT "DI MAIN P02".M00.RdyToStart THEN RETURN; ELSE IF "HMI KEY".Message.Programme_1_Selected AND ("HMI KEY".ProgChoice_1.WorkPiece_1.PalletPlaceOn_X OR "HMI KEY".ProgChoice_1.WorkPiece_2.PalletPlaceOn_X OR "HMI KEY".ProgChoice_1.WorkPiece_3.PalletPlaceOn_X) = 0 OR "HMI KEY".Message.Programme_2_Selected AND ("HMI KEY".ProgChoice_2.WorkPiece_1.PalletPlaceOn_X OR "HMI KEY".ProgChoice_2.WorkPiece_2.PalletPlaceOn_X OR "HMI KEY".ProgChoice_2.WorkPiece_3.PalletPlaceOn_X) = 0 OR "HMI KEY".Message.Programme_3_Selected AND ("HMI KEY".ProgChoice_3.WorkPiece_1.PalletPlaceOn_X OR "HMI KEY".ProgChoice_3.WorkPiece_2.PalletPlaceOn_X OR "HMI KEY".ProgChoice_3.WorkPiece_3.PalletPlaceOn_X) = 0 THEN #SSM.S."1_FAULT_00_15".%X0 := TRUE; "DI MAIN GLB".M00.AutoCmpltMa_run := FALSE; RETURN; ELSE #SSM.S."1_FAULT_00_15".%X0 := FALSE; END_IF; #SSM.S.stepd := #SSM.S.steps AND "DI MAIN P01".to_P02_Pallet.Request AND "DI OUT P02".M32_Pallet_Data.Pallet_Code <> 16#0000_0000; END_IF;
1: // Y406/Y410 work stopper WP, Y410 outlet stopper WP "DI OUT P02".Y406.VLV_O.CmdExe_WP := "HMI KEY".P02.Y406.F12_Enable_WP; "DI OUT P02".Y410.VLV_O.CmdExe_WP := "HMI KEY".P02.Y410.F12_Enable_WP; #SSM.S.stepd := "DI OUT P02".Y406.FB_WP AND "DI OUT P02".Y410.FB_WP;
2: // C401/C402 pallet fixing unit WP "DI OUT P02".C402.VLV_OC.CmdExe_HP := "DI OUT P02".C401.VLV_OC.CmdExe_HP := FALSE; "DI OUT P02".C401.VLV_OC.CmdExe_WP := "HMI KEY".P02.C401.F12_Enable_WP AND "DI OUT P02"."M32_Interface".DRV.RdyToGiveOver; "DI OUT P02".C402.VLV_OC.CmdExe_WP := "HMI KEY".P02.C402.F12_Enable_WP AND "DI OUT P02"."M32_Interface".DRV.RdyToGiveOver; #SSM.S.stepd := "DI MAIN P02".to_P01_Pallet.ReadyToGo := "DI OUT P02".M33.DRV.CC.RdyToGiveOver_ToNC AND "DI OUT P02".C401.FB_WP AND "DI OUT P02".C402.FB_WP AND #SSM.S.stepa;
3: // Waiting for response P01 to P02 pallet done IF "DI MAIN P01".to_P02_Pallet.Done THEN #SSM.S.stepd := TRUE; "DI MAIN P02".to_P01_Pallet.ReadyToGo := FALSE; END_IF;
4: // C401/C402 pallet fixing unit HP "DI MAIN P01".to_P02_Pallet.Done "DI MAIN P02".M00.SEQ1_Busy := TRUE; "DI OUT P02".C402.VLV_OC.CmdExe_WP := "DI OUT P02".C401.VLV_OC.CmdExe_WP := FALSE; "DI OUT P02".C401.VLV_OC.CmdExe_HP := "HMI KEY".P02.C401.F11_Enable_HP; "DI OUT P02".C402.VLV_OC.CmdExe_HP := "HMI KEY".P02.C402.F11_Enable_HP; #SSM.S.stepd := "DI OUT P02".C401.FB_HP AND "DI OUT P02".C402.FB_HP;
5: // M32 pallet pick-up conveyor WP, M33 pallet outlet conveyor WP "DI OUT P02".M32.DRV.CmdExe_WP := "HMI KEY".P02.M32.F12_Enable_WP AND "E02 M32 LimSwitch";
"DI OUT P02".M33.DRV.CmdExe_WP := "HMI KEY".P02.M33.F12_Enable_WP AND NOT "E02 M33 LimSwitch"; #SSM.S.stepd := "DI MAIN P02".to_P01_Pallet.DoneACK := "E02 M33 LimSwitch";
6: // Waiting for message P01_to_P02_Pallet.DoneACK IF #SSM.S.stepfc THEN "DI OUT P02".M32_Pallet_Data.Pallet_Code := 16#0000_0000; "DI MAIN P02".M00.ProductCounter.GoodProducts := "DI MAIN P02".M00.ProductCounter.GoodProducts + 1; // Pallet counter ELSIF "DI MAIN P01".to_P02_Pallet.DoneACK AND NOT #SSM.S.steplo THEN "DI MAIN P02".M00.SEQ1_Done := TRUE; END_IF; END_CASE; |
|