[r34]: / trunk / Display_Escape_PLC / Plc Logic / Application / Function Blocks / IO / Coordinate_Panel_StateMachine / svnobj  Maximize  Restore  History

Download this file

106 lines (102 with data), 16.6 kB

  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 ;