FUNCTION 312 : VOID
TITLE =
VERSION : 0.1
VAR_INPUT
Handling_Unit_DB : BLOCK_DB ;
Counter_DB : BLOCK_DB ;
Cylinder_Up : BOOL ;
Z_retracted : BOOL ;
FB_Reference_Interface_1 : BOOL ;
Home_position : BOOL ;
Reference_Position : DINT ;
Initial_Position : DINT ;
Counter_Delay : TIMER ;
auxTimer : TIMER ;
END_VAR
VAR_OUTPUT
Motor_Clockwise : BOOL ;
Motor_Counterclockwise : BOOL ;
Reference_end : BOOL ;
Lift_cylinder : BOOL ;
Z_axis : BOOL ;
END_VAR
VAR_TEMP
JOB_DONE : BOOL ;
InitialPos_is_clockwise : BOOL ;
Actual_Position : DINT ;
Home_flag : BOOL ;
Clockwise_flag : BOOL ;
Counterclockwise_flag : BOOL ;
Done_reference : BOOL ;
auxFlag : BOOL ;
END_VAR
BEGIN
NETWORK
TITLE =Flags inisitalisation
// AUF #Handling_Unit_DB
// L B#16#0
// T DBB 12
// T DBB 13
// T DBB 14
// T DBB 15
// O DBX 4.0
// ON DBX 4.0
// S DBX 14.0
NETWORK
TITLE =Reference vertical cylinder
AN #Cylinder_Up;
S #Lift_cylinder;
NETWORK
TITLE =Reference Z axis
A #Cylinder_Up;
AN #Z_retracted;
R #Z_axis;
NETWORK
TITLE =Home position
AN #Home_position;
A #Z_retracted;
AN #Reference_end;
S #Home_flag;
A( ;
O #Home_position;
O #Clockwise_flag;
O #Counterclockwise_flag;
O #Reference_end;
) ;
R #Home_flag;
NOP 0;
NETWORK
TITLE =Counter Delay
A #Home_position;
L S5T#1S500MS;
SD #Counter_Delay;
NOP 0;
NOP 0;
NOP 0;
NOP 0;
NETWORK
TITLE =Counter reference
A( ;
O M 0.0;
ON M 0.0;
) ;
= L 7.0;
BLD 103;
A( ;
A #Home_position;
S M 0.4;
A #Counter_Delay;
R M 0.4;
A M 0.4;
) ;
= L 7.3;
BLD 103;
CALL "COUNT" , #Counter_DB (
SW_GATE := L 7.0,
JOB_REQ := L 7.3,
JOB_ID := W#16#1,
JOB_VAL := #Reference_Position,
COUNTVAL := #Actual_Position,
JOB_DONE := #JOB_DONE);
NOP 0;
NETWORK
TITLE =Arm is referenced
A #Home_position;
A #JOB_DONE;
S #Done_reference;
NETWORK
TITLE =Intial position detection
L #Initial_Position;
L #Reference_Position;
<D ;
= L 7.0;
A L 7.0;
BLD 102;
S #InitialPos_is_clockwise;
AN L 7.0;
R #InitialPos_is_clockwise;
NETWORK
TITLE =Jump for couterclockwise
A #InitialPos_is_clockwise;
JCN CCLK;
NETWORK
TITLE =Initial position clockwise
A( ;
L #Actual_Position;
L #Initial_Position;
>D ;
) ;
A #InitialPos_is_clockwise;
A #Counter_Delay;
A #JOB_DONE;
S #Clockwise_flag;
A( ;
L #Actual_Position;
L #Initial_Position;
<=D ;
) ;
R #Clockwise_flag;
NOP 0;
NETWORK
TITLE =Reference end Clockwise
A( ;
L #Actual_Position;
L #Initial_Position;
<=D ;
) ;
A #Done_reference;
= #Reference_end;
NETWORK
TITLE =Clockwise end
L #Actual_Position;
L #Initial_Position;
<=D ;
JC OUT;
NETWORK
TITLE =Initial position counterclokwise
CCLK: A( ;
L #Actual_Position;
L #Initial_Position;
<D ;
) ;
AN #InitialPos_is_clockwise;
A #Counter_Delay;
A #JOB_DONE;
S #Counterclockwise_flag;
A( ;
L #Actual_Position;
L #Initial_Position;
>=D ;
) ;
R #Counterclockwise_flag;
NOP 0;
NETWORK
TITLE =Reference end counterclockwise
A( ;
L #Actual_Position;
L #Initial_Position;
>=D ;
) ;
A #Done_reference;
= #Reference_end;
NETWORK
TITLE =Motor clockwise
OUT: A #Clockwise_flag;
= #Motor_Clockwise;
NETWORK
TITLE =Motor counterclockwise
O #Home_flag;
O #Counterclockwise_flag;
= #Motor_Counterclockwise;
END_FUNCTION