Home

 

Erfahrung

 

Referenzen

 

Sondermaschinen

 

MSR-Maschinen

 

SPS-Programmierung

 

Visualisierung HMI

 

Elektro CAD

 

Leistungsprofil

 

Personalia

 

SW-Development

 

Dokumentation

 

 

 

Impressum & DSGVO

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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"();

>"DI MAIN P03"();

// ----

>"DI OUT P03"(); // *)more info to Zero-Pressure-Conveying

 

 

 

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 EStp 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 "M03 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" := "M03 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";

"M03 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 P03 : SET Stacker Crane move to home position

 

 

 

Netzwerk 1: SET query home position

// query pneumatics at HP

"M03 HomPos" :=

"E03 33N1_Z MiddleCntrl"

AND "DI OUT P03"."31N1_X".DRV.Support.HomDone

AND "DI OUT P03"."31N1_X".DRV.Support.InPos

AND "DI OUT P03"."32N1_Y".DRV.Support.HomDone

AND "DI OUT P03"."32N1_Y".DRV.Support.InPos

AND "DI OUT P03"."33N1_Z".DRV.Support.HomDone

AND "DI OUT P03"."33N1_Z".DRV.Support.InPos

AND "DI OUT P03"."31N1_X".DRV.Support.ActPos = "DI OUT P03".MANUAL.Axis_XYZ.TrgtFixPos[0].X

AND "DI OUT P03"."32N1_Y".DRV.Support.ActPos = "DI OUT P03".MANUAL.Axis_XYZ.TrgtFixPos[0].Y

AND "DI OUT P03"."33N1_Z".DRV.Support.ActPos = "DI OUT P03".MANUAL.Axis_XYZ.TrgtFixPos[0].Z;

// Pre-Setting

"M03 MW58" := 0;

 

 

 

Netzwerk 2: SET execute home position

 

#SET(MAX_STEP := 3);

#ACT_STEP := #SET.S.stepact;

#SET.S.DlyStart.PT := t#200ms;

 

 

 

Netzwerk 3: Step jump distributor

 

CASE #SET.S.stepact OF

0: // Waiting for enable

#SET.S.stepd :=

#SET.S.steps

AND "DI OUT P03"."31N1_X".DRV.Support.HomDone

AND "DI OUT P03"."32N1_Y".DRV.Support.HomDone

AND "DI OUT P03"."33N1_Z".DRV.Support.HomDone;

1: // Move 33N1_Z HP (middle)

IF #SET.S.stepfc THEN

"DI OUT P03"."33N1_Z".DRV.MC_MoveAbsolute.Position := "DI OUT P03".MANUAL.Axis_XYZ.TrgtFixPos[0].Z;

"DI OUT P03"."33N1_Z".DRV.Support.SetVelo := 100.0;

RETURN;

ELSE

"M03 33N1_Z GoToPosAbso" := TRUE;

END_IF;

#SET.S.stepd := "DI OUT P03"."33N1_Z"."MC MoveAbsolute".Done AND "E03 33N1_Z MiddleCntrl";

2: // Move XY-Axis HP

"POS REACHED P01"(START := #SET.S.DlyStart.Q,

TARGET_POS := "DI OUT P03".MANUAL.Axis_XYZ.TrgtFixPos[0],

SET_VELO := #Velo_XYaxis,

POS_WINDOW := FALSE,

PRECISION := 1.0,

TARGET_REACHED => #SET.S.stepd);

"M03 XY-GoToPosAbso" := TRUE;

3: // Query System HP

"M03 RunHomPos" := NOT "M03 HomPos";

END_CASE;

 

CEA Software Development

What you are seeing here is a section of the whole plant.

Using standard TCP/IP protocol, the Material Flow Computer (MFC) defines the storage shelve, and the storage depth for each box that is to be stored in one of the high-bay storage warehouse.