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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | 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 Lock_Start_CO := TRUE; END_IF 2 : //Key SendCommand(Command:= CommandType.Key,Value:=Client.KeyCommands[0]); 3 : //IO 4 : //Media 5 : //Hint 6 : //State IF SysStrCmp(Client.sCommandToPLC, 'SC') = 0 THEN StateComplete(); ELSIF SysStrCmp(Client.sCommandToPLC, 'Start') = 0 THEN Start(); ELSIF SysStrCmp(Client.sCommandToPLC, 'Stop') = 0 THEN Stop(); ELSIF SysStrCmp(Client.sCommandToPLC, 'Reset') = 0 THEN Reset(); ELSIF SysStrCmp(Client.sCommandToPLC, 'Abort') = 0 THEN Abort(); ELSIF SysStrCmp(Client.sCommandToPLC, 'Clear') = 0 THEN Clear(); ELSIF SysStrCmp(Client.sCommandToPLC, 'Hold') = 0 THEN Hold(); ELSIF SysStrCmp(Client.sCommandToPLC, 'UnHold') = 0 THEN Unhold(); ELSIF SysStrCmp(Client.sCommandToPLC, 'Suspend') = 0 THEN Suspend(); bl(ENABLE := TRUE,TIMELOW := T#250MS,TIMEHIGH:= T#500MS, OUT => x_Flash); T1on (PT := T#10S); END_IF IF Client.ActualStep = 30 THEN; T1on.IN := TRUE; ELSE T1on.IN := FALSE; CASE Client.ActualStep OF 0: i_CDPX_Window := 1; // Idle Window IF Lock_Start_CO THEN Client.ActualStep := 10; END_IF // IF x_Start_..... THEN // Client.ActualStep := 50; // END_IF 10: // Input Coordinates i_CDPX_Window := 2; Lock_Start_CO := FALSE; IF x_Check THEN; Client.ActualStep := Client.ActualStep + 10; f_trig (CLK:=x_Reset_CO); IF f_trig.Q THEN; Latitude_Input [1] := 0 ; Latitude_Input [2] := 0 ; Latitude_Input [3] := 0 ; Longitude_Input [1] := 0 ; Longitude_Input [2] := 0 ; Longitude_Input [3] := 0 ; IF x_Faulty THEN; sMessage_Coordinate := 'Mismatch Coordinates'; Client.Message := 'Mismatch Coordinates'; 20: // Check Coordinates IF Latitude_Input [1] = Latitude_Rev [1] AND Latitude_Input [2] = Latitude_Rev [2] //AND Latitude_Input [3] = Latitude_Rev [3] AND Longitude_Input [1] = Longitude_Rev [1] AND Longitude_Input [2] = Longitude_Rev [2] //AND Longitude_Input [3] = Longitude_Rev [3] THEN; sMessage_Coordinate := 'Coordinates match'; Client.Message := 'Coordinates match'; x_Faulty := FALSE; ELSE Client.ActualStep := Client.ActualStep - 10; IF T1on.Q THEN; Latitude_Input [2] := 0 ; Longitude_Input [2] := 0 ; sMessage_Coordinate := 'Enter Coordinates'; Client.ActualStep := 0; //i_CDPX_Window := 2; END_CASE; Lock_Start_CO := FALSE; PACK_ML.State.Starting : PACK_ML.State.Aborting : PACK_ML.State.Clearing : IF NOT x_EmergencyGF AND x_EmergencyFF THEN Abort(); messageQueue(Client := Client); {a9ed5b7e-75c5-4651-af16-d2c27e98cb94} VAR_IN_OUT END_VAR UM : PACK_ML.UnitMode; Lock_Start_CO : BOOL; // start command bl : blink; Latitude_Input : ARRAY[0..3] OF INT; Longitude_Input : ARRAY[0..3] OF INT; sMessage_Coordinate : STRING := 'Enter Coordinates'; x_Faulty : BOOL := FALSE ; x_Reset_CO : BOOL; i_CDPX_Window : INT := 1 ; |