Operator screen to control 4 variables at a given coordinate on a grid.

We want to be able to set a single point in the center of a grid.

Using that center point, we use offsets from there to get the positions we want.

The program data we want operators to be able to access for a given point on the grid is:

· Timing of spray head

· Pattern of spray head

· Possible waittime

· A Boolean to determine if we use the position or not (used for the screen maker later on)

-36in to 36in with a resolution of 0.5in for two axes creates 20736 routines and 82944 variables.

Ideally, while the robot is running, an operator can press a grid point (picture of grid) with the pendant. This gives them opportunity to change one of four variables.

Is there a more compact way to code this?

Is it necessary to create this many variables, in order to store everything for later use?

Ex:

CONST robtarget centerpos:=[[-490.16,1517.62,1804.67],[0.262408,-0.265629,-0.646938,0.664872],[1,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

PERS num row:=0

PERS num column:=0

PERS num timing0_0.25:=0

PERS num pattern0_0.25:=0

PERS num waittime0_0.25:=0

PERS bool positionused0_0.25:=FALSE

PERS num timing0_0.5:=0

PERS num pattern0_0.5:=0

PERS num waittime0_0.5:=0

PERS bool positionused0_0.5:=FALSE

PERS num timing0_0.75:=0

PERS num pattern0_0.75:=0

PERS num waittime0_0.75:=0

PERS bool positionused0_0.75:=FALSE

PERS num timing0_1:=0

PERS num pattern0_1:=0

PERS num waittime0_1:=0

PERS bool positionused0_1:=FALSE

Proc 0,0.25()

row:=0

column:=0.25

spraypos:=Offs(centerpos, row6.35, column6.35, 0);

MoveL spraypos, v400, fine, t_spray;

timing0_0.25:=1

pattern0_0.25:=5

waittime0_0.25:=0

positionused0_0.25:=TRUE

Return;

EndProc

Proc 0,0.5()

row:=0

column:=0.5

spraypos:=Offs(centerpos, row6.35, column6.35, 0);

MoveL spraypos, v400, fine, t_spray;

timing0_0.5:=2

pattern0_0.5:=6

waittime0_0.25:=0

positionused0_0.5:=TRUE

Return;

EndProc

Proc 0,0.75()

row:=0

column:=0.75

spraypos:=Offs(centerpos, row6.35, column6.35, 0);

timing0_0.75:=2

pattern0_0.75:=6

waittime0_0.75:=0

positionused0_0.75:=TRUE

Return;

EndProc

Proc 0,1()

row:=0

column:=1

spraypos:=Offs(centerpos, row6.35, column6.35, 0);

timing0_1:=2

pattern0_1:=6

waittime0_1:=0

positionused0_1:=TRUE

Return;

EndProc

PROC Spray_Path()

MoveL Home, v400, z50, t_spray;

MoveL above_die, v400, z50, t_spray;

0,0.75;

0,1;

0,0.25;

0,1;

0,0.5;

MoveL above_die, v400, z50, t_spray;

MoveL Home, v400, z50, t_spray;

EndProc