|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
To go to next HMI image use the touch buttons; some of them are interactive. |
OB1 Main : Main Program Sweep |
|
|
|
Netzwerk 1: Start measuring runtime (Start Cycle)
"HMI SYS".Support.LastCycle := RUNTIME("HMI SYS".Support.LastCycle_inout); |
|
|
|
Netzwerk 2: Pulse generator
"HMI SYS".Support.Sav_Clock_Byte := "HMI SYS".Support.Sav_Clock_Byte XOR "Clock_Byte"; "M00 PLC Impulse" := "HMI SYS".Support.Sav_Clock_Byte AND "Clock_Byte"; "HMI SYS".Support.Sav_Clock_Byte := "Clock_Byte"; |
|
|
|
Netzwerk 3: CALL distributor
"DI MAIN GLB"(); //---— |
|
|
|
Netzwerk 4: First cycle evaluation
U "M00 log 1" L s5t#2s SE "T00 OB1 FirstCycle SE" U "T00 OB1 FirstCycle SE" = "M00 OB1 FirstCycle" |
|
|
|
Netzwerk 5: Flag logic =0, =1
"M00 log 0" := FALSE; "M00 log 1" := TRUE; |
|
|
|
Netzwerk 6: End measuring runtime (End Cycle)
"HMI SYS".Support.LastCycle := RUNTIME("HMI SYS".Support.LastCycle_inout); "HMI SYS".Support.LastCycle_real := LREAL_TO_REAL(IN := "HMI SYS".Support.LastCycle); |
|
|
|
FB20 MAIN GLB : Global signals evaluation |
|
|
|
Netzwerk 1: Fault acknowledgement
"M00 ACK Imp" := NOT "M00 ACK FP" AND "HMI KEY".SYS.GLB.F1_AckKey; "M00 ACK FP" := "HMI KEY".SYS.GLB.F1_AckKey; |
|
|
|
Netzwerk 2: Call main station safety program
"M00 EStp ok" := "E00 1A1 EStop OK"; |
|
|
|
Netzwerk 3: GLB FLT faults monitoring
#FLT(FLT_MODULE := "M00 FLT ModuStp"); |
|
|
|
Netzwerk 4: Assigned failure complete machine
"M00 FltCmpltMaIS" := "M00 FLT ModuStp" OR "M01 FLT ModuStp"; |
|
|
|
Netzwerk 5: Set failure complet machine
IF "M00 FltCmpltMaIS" THEN "M00 FltCmpltMaSR" := true; END_IF;
IF "M00 FltCmpltMaSR" AND NOT "M00 Flt ACK" THEN IF "M00 FltCmpltMaSR" AND "M00 ACK Imp" THEN "M00 Flt ACK" := TRUE; END_IF; ELSIF NOT "M00 FltCmpltMaIS" AND "M00 Flt ACK" THEN "M00 FltCmpltMaSR" := "M00 Flt ACK" := FALSE; END_IF; |
|
|
|
Netzwerk 6: Query assembly module at home position
"M00 HomPos" := "M01 HomPos"; IF "M00 HomPos" THEN "M00 HomPosSR" := TRUE; END_IF; |
|
|
|
Netzwerk 7: Start operating mode AUTOMATIC
IF "HMI KEY".SYS.GLB.F3_OM_AUTO_ON AND ("M00 HomPosSR" OR "M00 HomPos")THEN "M00 OM AUTO" := TRUE; "M00 OM MANUAL" := "M00 OM HOME POS" := "M00 ManuCmpltMa run" := FALSE; END_IF; IF "M00 OM AUTO" AND "HMI KEY".SYS.GLB.F5_Start AND ("M00 HomPosSR" OR "M00 HomPos") THEN "M00 AutoCmpltMa run" := TRUE; END_IF; |
|
|
|
Netzwerk 8: Start operating mode MANUAL
IF "HMI KEY".SYS.GLB.F4_OM_MANU_ON THEN "M00 OM MANUAL":=TRUE; "M00 OM AUTO" := "M00 AutoCmpltMa run" := "M00 OM HOME POS" := FALSE; END_IF; IF "HMI KEY".SYS.GLB.F5_Start AND "M00 OM MANUAL" THEN "M00 ManuCmpltMa run":= TRUE; END_IF;
"M00 ManuCmpltMa Imp" := NOT "M00 ManuCmpltMa run" AND "M00 ManuCmpltM FN"; "M00 ManuCmpltM FN" := "M00 ManuCmpltMa run"; #Halt_TOF_Pulse(IN := "M00 ManuCmpltMa Imp",PT := t#600ms); |
|
|
|
Netzwerk 9: STOP all operating mode
#tmp_save := "M00 OM HOME POS" OR "HMI KEY".SYS.GLB.F8_Stop AND ("M00 AutoCmpltMa run" OR "M00 ManuCmpltMa run"); IF #tmp_save OR "M00 FltCmpltMaSR" THEN "M00 AutoCmpltMa run" := FALSE; END_IF; IF #tmp_save OR "M00 ManuCmpltMa Imp" THEN "M00 ManuCmpltMa run" := FALSE; END_IF; |
|
|
|
Netzwerk 10: Impuls Start complete machine
"M00 TrnsSysRun Imp" := NOT "M00 TrnsSysRun FP" AND ("M00 AutoCmpltMa run" OR "M00 ManuCmpltMa run" OR #SET.SET.S.steps); "M00 TrnsSysRun FP" := "M00 AutoCmpltMa run" OR "M00 ManuCmpltMa run" OR #SET.SET.S.steps; |
|
|
|
Netzwerk 11: Show key colour on HMI
"HMI KEY".SYS.GLB.F15_OM_ON_RUN := "M00 TrnsSysRun FP"; "HMI KEY".SYS.GLB.F11_Show_KeyColour_Start_Stop := "M00 AutoCmpltMa run" OR "M00 ManuCmpltMa run" OR #SET.SET.S.steps; "HMI KEY".SYS.GLB.F14_Show_Key_Start_Stop := "M00 OM AUTO" OR "M00 OM MANUAL" OR "M00 OM HOME POS"; |
|
|
|
Netzwerk 12: Enable running each module
"M00 Enabled" := "M00 OM HOME POS" AND NOT "M00 FltCmpltMaSR"; "M01 Enabled" := "M00 AutoCmpltMa run" AND NOT "M00 FltCmpltMaSR"; |
|
|
|
Netzwerk 13: START home position complete machine
IF "HMI KEY".SYS.GLB.F7_OM_HOM_POS_ON AND NOT "M00 HomPos" THEN "M00 OM HOME POS" := TRUE; "M00 OM AUTO" := "M00 OM MANUAL" := FALSE; END_IF; IF "HMI KEY".SYS.GLB.F5_Start AND "M00 OM HOME POS" AND NOT "M00 FltCmpltMaSR" THEN #SET.SET.S.steps := TRUE; "M00 HomPosSR" := FALSE; END_IF; IF NOT "M00 OM HOME POS" OR "HMI KEY".SYS.GLB.F8_Stop THEN #SET.SET.S.steps := FALSE; END_IF;
"M00 Active" := #SET.SET.S.steps; #SET.SET.S.steph := "M00 FltCmpltMaSR"; #SET(ACT_STEP => #SET.STEP_NO); |
|
|
|
FB31 SET P01 : SET Move DSM Multi Pro to home position |
|
|
|
Netzwerk 1: SET query home position
// query pneumatics at HP #tmp_pneumatic_hp := "DI OUT P01"."C01-2 Washer above".FB_HP AND "DI OUT P01"."C01-3 Washer below".FB_HP AND "DI OUT P01"."C01-2 Tray above".FB_HP AND "DI OUT P01"."C03-4 Tray below".FB_HP AND NOT "A01 Y30 GreasNozzel 1 on" AND NOT "A01 Y31 GreasNozzel 2 on"; // Query 30T1-Z DSM Multi Pro ready to start and at HP #tmp_tox_line_x_hp := "DI OUT P01"."30T1_Z".DRV.Support.InPos AND "DI OUT P01"."30T1_Z".DRV.Support.HomDone AND "HMI KEY".P01."30T1_Z".F11_Enable_HP AND "HMI KEY".P01."30T1_Z".F12_Enable_WP;
"M01 HomPos" := #tmp_pneumatic_hp AND #tmp_tox_line_x_hp; "M01 MW38" := 0; |
|
|
|
Netzwerk 2: SET execute home position
#SET(MAX_STEP := 4); #ACT_STEP := #SET.S.stepact; |
|
|
|
Netzwerk 3: Step jump distributor
CASE #SET.S.stepact OF 0: // Waiting for enable IF #SET.S.steps THEN "M01 MW38" := 0; #SET.S.stepd := TRUE; "DI OUT P01"."DSM IO".IN.ProcessNumber := 0; END_IF; 1: // Set pneumatics to home position "DI OUT P01"."C01-2 Washer above".VLV.CmdExe_WP := FALSE; "DI OUT P01"."C01-2 Washer above".VLV.CmdExe_HP := "HMI KEY".P01."C01-2 Washer above".F11_Enable_HP;
"DI OUT P01"."C01-3 Washer below".VLV.CmdExe_WP := FALSE; "DI OUT P01"."C01-3 Washer below".VLV.CmdExe_HP := "HMI KEY".P01."C01-3 Washer below".F11_Enable_HP;
"DI OUT P01"."C01-2 Tray above".VLV.CmdExe_WP := FALSE; "DI OUT P01"."C01-2 Tray above".VLV.CmdExe_HP := "HMI KEY".P01."C01-2 Tray above".F11_Enable_HP;
"DI OUT P01"."C03-4 Tray below".VLV.CmdExe_WP := FALSE; "DI OUT P01"."C03-4 Tray below".VLV.CmdExe_HP := "HMI KEY".P01."C03-4 Tray below".F11_Enable_HP;
"DI OUT P01"."Y30 GreasNozzel 1".VLV.CmdExe_WP := "DI OUT P01"."Y31 GreasNozzel 2".VLV.CmdExe_WP := FALSE; #SET.S.stepd := #tmp_pneumatic_hp;
2: // 30T1-Z DSN Multi Pro axis referencing #SET.S.stepd := "DI OUT P01"."30T1_Z".DRV.Support.HomDone;
3: // Move 30T1-Z DSN Multi Pro to home position IF #SET.S.stepfc THEN "DI OUT P01"."30T1_Z".DRV.MC_MoveAbsolute.Position := 5.0; "DI OUT P01"."30T1_Z".DRV.Support.SetVelo := 20.0; RETURN; ELSE "M01 30T1_Z GoToPosAbso" := TRUE; END_IF; IF "DI OUT P01"."30T1_Z"."MC MoveAbsolute".Done THEN #SET.S.stepd := TRUE; END_IF;
4: // End running home position IF "M01 HomPos" THEN "M01 RunHomPos" := FALSE; END_IF; END_CASE; |
|