Unit kuka

DescriptionusesClasses, Interfaces, Objects and RecordsFunctions and ProceduresTypesConstantsVariables

Description

 

Overview

Classes, Interfaces, Objects and Records

Name Description
record logentry  
record ramplog  
record subinfo  

Functions and Procedures

function inttostr(i:longint):string;
procedure showsafe;
procedure clearlist;
procedure subshow;
procedure makesubprgscreen(active:integer);
procedure updatesubstarts;
procedure comwritech_c(port:byte;ch:char);
procedure comwrite_c(port:byte;st:string);
function comreadch_c(port:byte):char;
procedure setcubeinfo;
procedure cube_set_mled;
procedure cube_set_bled;
procedure cube_clr_mled;
procedure cube_clr_bled;
procedure cube_set_beep;
procedure cube_clr_beep;
procedure cube_blink_m;
procedure cube_blink_b;
procedure cube_blink_none;
procedure cube_set_text(txt:string);
procedure writeleds;
procedure clrled(led:string);
procedure setled(led:string);
procedure clrlcd;
procedure setlcdinv;
procedure clrlcdinv;
procedure setlcdcur(row,col:byte);
procedure SetCursor(On: Boolean);
procedure trigger;
procedure write_enc_opts;
procedure enable_enc_reset(ax:integer);
procedure disable_enc_reset(ax:integer);
procedure set_do;
procedure maketargetscreen(active:integer);
procedure makesubseqscreen(active:integer);
procedure checkdist;
procedure makescreen;
procedure get_enc(ax:integer);
procedure setdop1;
procedure confirmbeep;
procedure sendstatus;
procedure init;
procedure setstv(ax:integer);
procedure clrstv(ax:integer);
procedure setspeed(ax:integer);
procedure get_status;
procedure show_status;
procedure loadlog(nam:string);
procedure testpos(ax:integer);
procedure log_it(ax:integer);
Procedure ser_transmit(ax:integer);
procedure checkax;
procedure calcspeeds;
procedure go;
procedure getpos;
procedure saveposfile;
procedure insertpos;
procedure modifypos;
procedure deletepos;
procedure listfiles;
procedure newfile;
procedure showmode;
procedure dopmode;
procedure dologview;
procedure checkkeys;
procedure loadzeropos;
procedure flash;
procedure closegripper;
procedure opengripper;
function ser_map3(ser_inl:byte):char;
function ser_map2(ser_inl:byte):char;
procedure getlabel(code:byte);
procedure preparenextsubstep;
function ser_map(ser_in:byte):char;

Types

allpos=array[0..7] of longint;

Constants

lastax=5;
autolog=false;
do_log_lower=false;
subseqstart=1;
subseqend=2;
spd_div=200;
waittime=25;
gripwaittime=4000;
dio1=$f000;
dio2=$f008;
dio3=$f028;
dop1=$f030;
dop2=$f038;
enc1=$9f20;
enc2=$9f40;
enc3=$9f60;
dac=$9f10;
dac_sh=$9f12;
dac_oen=$9f14;
base=$d000;
targets=0;
subvalues=1;
sublabels=2;
stop=0;
up=1;
down=2;
max=3;
slow=4;
rmanual=5;
scr_val_top=19;
scr_menu=17;
scr_dir=1;
scr_pos=5;
scr_pos2=10;
scr_speed=25;
scr_target=30;
scr_dist=45;
scr_info=60;
scr_go=67;
scr_ref=75;
scr_mode=50;
scr_sak=20;
scr_ovr=40;
scr_time=60;
scr_drive=1;
scr_lognr=65;
scr_targets=30;
sak_na=0;
sak_ok=1;
sak_no=2;
hand=1;
single=2;
auto=3;
gopen=1;
gclosed=2;

Variables

waitforinput:boolean;
winput:char;
subseqcount:integer;
subseq_idx:integer;
subprg_idx:integer;
oldswitches:byte;
switches:byte;
randomstep:boolean;
safeposition:boolean;
nextrandomidx:integer;
lastrandomidx:integer;
safenow:boolean;
safecount:integer;
nextstep:integer;
beginseq:boolean;
substarts:array[0..100] of subinfo;
accspd:array[1..6] of integer;
linspd:array[1..6] of integer;
do_log_upper:boolean;
do_log:boolean;
linmode:boolean;
axtestlog:array[1..6] of ramplog;
axlog:array[1..6] of ramplog;
brdistfakt:array[1..6] of real;
axmax:array[1..6] of word;
cubeinfo:byte;
first:integer;
val1:integer;
i:integer;
j:integer;
maindel:integer;
targetgripstate:longint;
oldgripstate:longint;
gripstate:longint;
griptmp:byte;
ovr: Byte;
input: Byte;
ser_in: Byte;
ser_in2: Byte;
com: Byte;
sel_ax:integer;
videowait:boolean;
cubemode:boolean;
slowmode:boolean;
labelmode:boolean;
posstr:string;
dop1_val:word;
old_pgm_mode:integer;
pgm_mode:integer;
enc_res:array[1..6] of boolean;
gripper:boolean;
gripper_finished:boolean;
aerger:boolean;
oldaerger:boolean;
selmode:boolean;
ctrlmode:word;
serialdiv:byte;
currentprg:string[12];
currentsub:string[12];
all_stop:boolean;
old_all_stop:boolean;
refmode:boolean;
oldrefmode:boolean;
nachlauf:boolean;
brake:boolean;
program_mode:boolean;
condition:boolean;
conditionmode:boolean;
service:boolean;
driveon:boolean;
dop_active:boolean;
manual:array[1..6] of boolean;
oldsval:byte;
sval:byte;
sak:array[1..6] of integer;
timer: htimerobj;
time: longint;
slotime: longint;
griptime: longint;
keytimer:htimerobj;
slotimer:htimerobj;
griptimer:htimerobj;
logcount:integer;
logmax:array[1..6] of word;
lognr:longint;
statcount:longint;
keys_enabled:boolean;
listmode:integer;
prefix:string;
video_playing:boolean;
di_val1:byte;
di_val2:byte;
di_val3:byte;
old_di_val1:byte;
old_di_val2:byte;
old_di_val3:byte;
nc_ready:boolean;
dac_oen_val:word;
do_val:byte;
extport:byte;
inifile:file of longint;
posfile:file of allpos;
cval:longint;
k:char;
sercount:byte;
man_speed:array[1..6,1..5] of word;
man_spd_idx:integer;
speed:array[1..6] of word;
minupspeed:array[1..6] of word;
mindownspeed:array[1..6] of word;
maxupspeed:array[1..6] of word;
maxdownspeed:array[1..6] of word;
absmaxupspeed:array[1..6] of word;
absmaxdownspeed:array[1..6] of word;
minaccupspeed:array[1..6] of word;
minaccdownspeed:array[1..6] of word;
trackspeed:array[1..6] of word;
m:array[1..6] of word;
ramp:array[1..6] of byte;
step:array[1..6] of word;
dir:array[1..6] of byte;
wait:array[1..6] of byte;
pos:allpos;
temppos:allpos;
originpos:allpos;
swmax:allpos;
swmin:allpos;
target:allpos;
params:allpos;
program_pos:array[0..100] of allpos;
subseq:array[0..100] of allpos;
zeropos:allpos;
program_step:integer;
program_max:longint;
program_first:longint;
program_last:longint;
dist:allpos;
storedpos:allpos;
preval:array[1..6] of word;
refok:array[1..6] of boolean;
gopos:array[1..6] of boolean;
ledarray:array[1..11] of byte;
tlname:string;
subprgcount:integer;

Description

Functions and Procedures

function inttostr(i:longint):string;

{*function inttostr(i:longint):string;*}

procedure showsafe;

{*show safe position sequence count*}

procedure clearlist;

{*clear targets list area on screen*}

procedure subshow;

{*debug *}

procedure makesubprgscreen(active:integer);

{*show subprg with labels, startid and step count*}

procedure updatesubstarts;

{*redo subprg list*}

procedure comwritech_c(port:byte;ch:char);
 
procedure comwrite_c(port:byte;st:string);
 
function comreadch_c(port:byte):char;
 
procedure setcubeinfo;
 
procedure cube_set_mled;
 
procedure cube_set_bled;
 
procedure cube_clr_mled;
 
procedure cube_clr_bled;
 
procedure cube_set_beep;
 
procedure cube_clr_beep;
 
procedure cube_blink_m;
 
procedure cube_blink_b;
 
procedure cube_blink_none;
 
procedure cube_set_text(txt:string);
 
procedure writeleds;

{*write led status to schleicher uhg*} {***********************************************************}

procedure clrled(led:string);

{*clear single led status in ledarray,call writeleds afterwards*} {***********************************************************}

procedure setled(led:string);

{*set single led status in ledarray,call writeleds afterwards*} {***********************************************************}

procedure clrlcd;

{*clear lcd screen on schleicher uhg*} {***********************************************************}

procedure setlcdinv;

{*set inverse mode for subsequent text writes on schleicher uhg*} {***********************************************************}

procedure clrlcdinv;

{*clear inverse mode for subsequent text writes on schleicher uhg*} {***********************************************************}

procedure setlcdcur(row,col:byte);

{*cursor positioning on schleicher uhg*} {***********************************************************}

procedure SetCursor(On: Boolean);

{*set screen cursor on/off*} {***************************************************************}

procedure trigger;

{*trigger for oscilloscope on external port*} {***************************************************************}

procedure write_enc_opts;

{*for encoder reset enable, not used yet*} {***************************************************************}

procedure enable_enc_reset(ax:integer);

{*set bits for encoder reset enable and write them*} {***************************************************************}

procedure disable_enc_reset(ax:integer);

{*clear bits for encoder reset enable and write them*} {***************************************************************}

procedure set_do;

{*set digital outputs*} {***************************************************************}

procedure maketargetscreen(active:integer);

{*show program positions*} {***************************************************************}

procedure makesubseqscreen(active:integer);

{*show subsequence positions*} {***************************************************************}

procedure checkdist;

{*calculate distances for all axes*} {***************************************************************}

procedure makescreen;

{*print static parts of screen*} {***************************************************************}

procedure get_enc(ax:integer);

{*get real position value, add teilistwert in 2s complement*} {***************************************************************}

procedure setdop1;

{*set digital relais output value*} {******************************************************}

procedure confirmbeep;

{*beep all beepers to confirm keypress*} {***************************************************************}

procedure sendstatus;

{*send status to schleicher uhg and cube control*} {***************************************************************}

procedure init;

{*initialize machine*} {***************************************************************}

procedure setstv(ax:integer);

{*set stillstandsvorgabe for axes*} {***************************************************************}

procedure clrstv(ax:integer);

{*clr stillstandsvorgabe for axes*} {***************************************************************}

procedure setspeed(ax:integer);

{*set speed for axes*} {***************************************************************}

procedure get_status;

{*get status values from hardware*} {***************************************************************}

procedure show_status;

{*show hardware status*} {***************************************************************}

procedure loadlog(nam:string);

{**************************************************************}

procedure testpos(ax:integer);

{*check ax position, correct speeds or stop*} {***************************************************************}

procedure log_it(ax:integer);

{***************************************************************}

Procedure ser_transmit(ax:integer);

{*how to get 32 bit data over a 7bit connection, not used yet*} {***************************************************************}

procedure checkax;

{*check encoders / call testpos for all ax*} {***************************************************************}

procedure calcspeeds;

{*calculate speeds and start movement*} {***************************************************************}

procedure go;

{*set axes in motion for real*}

procedure getpos;

{*read program*} {***************************************************************}

procedure saveposfile;

{*write program to disk*} {***************************************************************}

procedure insertpos;

{*insert duplicate after current step and write to disk*} {***************************************************************}

procedure modifypos;

{*modify position set to current and save to disk*} {***************************************************************}

procedure deletepos;

{*delete current position and write to disk*} {***************************************************************}

procedure listfiles;

{*list .dat files in c:\kukaprg*} {***************************************************************}

procedure newfile;

{*create new program file*} {***************************************************************}

procedure showmode;
 
procedure dopmode;

{*change dig out directly, will be obsolete*} {***************************************************************}

procedure dologview;
 
procedure checkkeys;

{*general keyboard input check routine*} {***************************************************************}

procedure loadzeropos;

{*set target to all zero*} {***************************************************************}

procedure flash;

{*all purpose bitflasher or so*} {***************************************************************}

procedure closegripper;

{***************************************************************}

procedure opengripper;

{***************************************************************}

function ser_map3(ser_inl:byte):char;

{*check input from video box on com2*} {***************************************************************}

function ser_map2(ser_inl:byte):char;

{*check input from control box at wrist*} {***************************************************************}

procedure getlabel(code:byte);

{*label input for schleicher, not used*} {***************************************************************}

procedure preparenextsubstep;

{*put coordinates into target var*} {*prepare next step in listmode subvalues, insert safe steps if subseqstart*}

function ser_map(ser_in:byte):char;

{*key map for schleicher UHG*} {***************************************************************}

Types

allpos=array[0..7] of longint;

logindex

Constants

lastax=5;

graph,

autolog=false;
 
do_log_lower=false;
 
subseqstart=1;
 
subseqend=2;
 
spd_div=200;
 
waittime=25;

*wait between pgm steps*

gripwaittime=4000;

*wait for gripper*

dio1=$f000;

*hardware adresses*

dio2=$f008;
 
dio3=$f028;
 
dop1=$f030;
 
dop2=$f038;
 
enc1=$9f20;
 
enc2=$9f40;
 
enc3=$9f60;
 
dac=$9f10;
 
dac_sh=$9f12;
 
dac_oen=$9f14;
 
base=$d000;
 
targets=0;

*listmode*

subvalues=1;
 
sublabels=2;
 
stop=0;

*motion status*

up=1;
 
down=2;
 
max=3;
 
slow=4;
 
rmanual=5;
 
scr_val_top=19;

*screen positions*

scr_menu=17;
 
scr_dir=1;
 
scr_pos=5;
 
scr_pos2=10;
 
scr_speed=25;
 
scr_target=30;
 
scr_dist=45;
 
scr_info=60;
 
scr_go=67;
 
scr_ref=75;
 
scr_mode=50;
 
scr_sak=20;
 
scr_ovr=40;
 
scr_time=60;
 
scr_drive=1;
 
scr_lognr=65;
 
scr_targets=30;
 
sak_na=0;

*sak status*

sak_ok=1;
 
sak_no=2;
 
hand=1;

*general modes*

single=2;
 
auto=3;
 
gopen=1;

*gripper modes*

gclosed=2;
 

Variables

waitforinput:boolean;
 
winput:char;
 
subseqcount:integer;
 
subseq_idx:integer;
 
subprg_idx:integer;
 
oldswitches:byte;
 
switches:byte;
 
randomstep:boolean;
 
safeposition:boolean;
 
nextrandomidx:integer;
 
lastrandomidx:integer;
 
safenow:boolean;
 
safecount:integer;
 
nextstep:integer;
 
beginseq:boolean;
 
substarts:array[0..100] of subinfo;
 
accspd:array[1..6] of integer;
 
linspd:array[1..6] of integer;
 
do_log_upper:boolean;
 
do_log:boolean;
 
linmode:boolean;
 
axtestlog:array[1..6] of ramplog;
 
axlog:array[1..6] of ramplog;
 
brdistfakt:array[1..6] of real;
 
axmax:array[1..6] of word;
 
cubeinfo:byte;
 
first:integer;
 
val1:integer;
 
i:integer;
 
j:integer;
 
maindel:integer;
 
targetgripstate:longint;
 
oldgripstate:longint;
 
gripstate:longint;
 
griptmp:byte;
 
ovr: Byte;
 
input: Byte;
 
ser_in: Byte;
 
ser_in2: Byte;
 
com: Byte;
 
sel_ax:integer;
 
videowait:boolean;
 
cubemode:boolean;
 
slowmode:boolean;
 
labelmode:boolean;
 
posstr:string;
 
dop1_val:word;
 
old_pgm_mode:integer;
 
pgm_mode:integer;
 
enc_res:array[1..6] of boolean;
 
gripper:boolean;
 
gripper_finished:boolean;
 
aerger:boolean;
 
oldaerger:boolean;
 
selmode:boolean;
 
ctrlmode:word;
 
serialdiv:byte;

log:array[4..6,0..3200] of logentry;

currentprg:string[12];
 
currentsub:string[12];
 
all_stop:boolean;
 
old_all_stop:boolean;
 
refmode:boolean;
 
oldrefmode:boolean;
 
nachlauf:boolean;
 
brake:boolean;
 
program_mode:boolean;
 
condition:boolean;
 
conditionmode:boolean;
 
service:boolean;
 
driveon:boolean;
 
dop_active:boolean;
 
manual:array[1..6] of boolean;
 
oldsval:byte;
 
sval:byte;
 
sak:array[1..6] of integer;
 
timer: htimerobj;
 
time: longint;
 
slotime: longint;
 
griptime: longint;
 
keytimer:htimerobj;
 
slotimer:htimerobj;
 
griptimer:htimerobj;
 
logcount:integer;
 
logmax:array[1..6] of word;
 
lognr:longint;
 
statcount:longint;
 
keys_enabled:boolean;
 
listmode:integer;
 
prefix:string;
 
video_playing:boolean;
 
di_val1:byte;
 
di_val2:byte;
 
di_val3:byte;
 
old_di_val1:byte;
 
old_di_val2:byte;
 
old_di_val3:byte;
 
nc_ready:boolean;
 
dac_oen_val:word;
 
do_val:byte;
 
extport:byte;
 
inifile:file of longint;
 
posfile:file of allpos;
 
cval:longint;
 
k:char;
 
sercount:byte;
 
man_speed:array[1..6,1..5] of word;
 
man_spd_idx:integer;
 
speed:array[1..6] of word;
 
minupspeed:array[1..6] of word;
 
mindownspeed:array[1..6] of word;
 
maxupspeed:array[1..6] of word;
 
maxdownspeed:array[1..6] of word;
 
absmaxupspeed:array[1..6] of word;
 
absmaxdownspeed:array[1..6] of word;
 
minaccupspeed:array[1..6] of word;
 
minaccdownspeed:array[1..6] of word;
 
trackspeed:array[1..6] of word;
 
m:array[1..6] of word;
 
ramp:array[1..6] of byte;
 
step:array[1..6] of word;

integer;

dir:array[1..6] of byte;
 
wait:array[1..6] of byte;
 
pos:allpos;
 
temppos:allpos;
 
originpos:allpos;
 
swmax:allpos;
 
swmin:allpos;
 
target:allpos;
 
params:allpos;

*params[0]=program_max*

program_pos:array[0..100] of allpos;
 
subseq:array[0..100] of allpos;
 
zeropos:allpos;

subseqmode:boolean;

program_step:integer;
 
program_max:longint;
 
program_first:longint;
 
program_last:longint;
 
dist:allpos;
 
storedpos:allpos;
 
preval:array[1..6] of word;
 
refok:array[1..6] of boolean;
 
gopos:array[1..6] of boolean;
 
ledarray:array[1..11] of byte;
 
tlname:string;
 
subprgcount:integer;
 

Generated by PasDoc 0.10.0 on 2006-05-28 21:17:23