1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | ChildObjectGuids AddAttributeSubsequent IF NOT xInit THEN UM ( sName := 'Normal Operation', dwAllowsLeavingFromStates := PACK_ML.State.Stopped OR PACK_ML.State.Aborted OR PACK_ML.State.Idle, IF SysStrCmp(Client.sCommandToPLC, Client.LockCommands[0]) = 0 THEN //First Lock Function ; ELSIF SysStrCmp(Client.sCommandToPLC, 'UnSuspend') = 0 THEN UnSuspend(); END_CASE Client.iCommandToPLC := 0; Client.sCommandToPLC := ''; Client.bReadyToPLC := FALSE; CASE UM.CurrentState OF PACK_ML.State.Stopped: ; PACK_ML.State.Aborted: PACK_ML.State.Idle: PACK_ML.State.Complete : PACK_ML.State.Execute : IF CMMT_ST_Rotery_Boot.AxisError THEN Abort(); RETURN; END_IF home := CMMT_ST_Rotery_Boot.Home(Position := 0,HomingMethod := 0); IF home THEN Client.ActualStep := Client.ActualStep + 10; 220: IF CMMT_ST_Rotery_Boot.HomingValid THEN Client.ActualStep := 10; 300: StateComplete(); PACK_ML.State.Completing : StateComplete(); PACK_ML.State.Aborting : CMMT_ST_Rotery_Boot.DisableDrive(); StateComplete(); CASE Client.ActualStep OF StopBoat.Execute := TRUE; Client.ActualStep := 10; IF BoatStatus.Stopping AND LinearStatus.Stopping THEN; StopBoat.Execute := FALSE; END_IF PACK_ML.State.Clearing: CMMT_ST_Rotery_Boot.Reset(); END_CASE (*IF NOT (x_EmergencyGF AND NOT x_EmergencyFF) THEN Abort(); Client.Progress := puzzleTimer.iProcess; Stop(); BoatStatus (Axis := CMMT_ST_Rotery_Boot, Enable := TRUE); |