[r36]: / trunk / Display_Escape_PLC / Plc Logic / Application / Puzzle / BalastTank_PRG / svnobj  Maximize  Restore  History

Download this file

54 lines (51 with data), 11.3 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
PROGRAM BalastTank_PRG
VAR
	UM	: PACK_ML.UnitMode; 
	xInit				: BOOL := FALSE; // Flag for initialization
	ActualStep : INT :=0;
	 
 	moveAbsolute 	: MC_MoveAbsolute_Festo;
	StopBoat		: MC_Stop_Festo;
	StopLinear 		: MC_Stop_Festo;
	LinearStatus	: MC_ReadStatus_Festo;
	home 			: BOOL;
	CMMT_ST_Rotery_Boot_MoveAbsolute :MC_MoveAbsolute_Festo;
IF NOT xInit THEN	
	UM				(		sName := 'Normal Operation', 
							dwAllowsLeavingFromStates := PACK_ML.State.Stopped OR PACK_ML.State.Aborted OR PACK_ML.State.Idle, 
			home := CMMT_ST_Rotery_Boot.Home(Position := 0,HomingMethod := 0);
			IF home THEN				
				ActualStep := ActualStep + 10;	
		220:
			IF CMMT_ST_Rotery_Boot.HomingValid THEN				
				ActualStep := 10;	
					
		300:
			ActualStep := 0;
			UM.ActingStateCompleted();	
	END_CASE
PACK_ML.State.Completing :
		UM.ActingStateCompleted();		
PACK_ML.State.Aborting :
	CMMT_ST_Rotery_Boot.DisableDrive();
PACK_ML.State.Stopping:
	CASE ActualStep OF
		0:
			StopBoat.Execute := TRUE;
			StopLinear.Execute := TRUE;
			ActualStep := 10;
		10:
			IF BoatStatus.Stopping AND LinearStatus.Stopping THEN;
				StopLinear.Execute := FALSE;
				StopBoat.Execute := FALSE;
				ActualStep := 20;	
			END_IF			
		20:
			UM.ActingStateCompleted();		
PACK_ML.State.Clearing:
			IF CMMT_ST_Rotery_Boot.AxisError THEN
			CMMT_ST_Rotery_Boot.Reset();
			ActualStep := 0;	
			UM.ActingStateCompleted();			
END_CASE
// couple axis to functionblocks here
BoatStatus (Axis := CMMT_ST_Rotery_Boot, Enable := TRUE);
StopBoat ( Axis := CMMT_ST_Rotery_Boot);