hey guy could do with pointing in the right direction. I need the robot to wait for an input to be on for 10 seconds before it continues with its program how would i go about this many thanks on advance p
kuka robot needs to wait for an input to be on for a certain amount of time
-
n_makin -
December 3, 2019 at 1:34 PM -
Thread is Unresolved
-
- Go to Best Answer
-
use timer. if signal drops reset timer. when timer is done you are good to go.
-
-
Actually ,there is a system build-in function for timer limit: EXTFCTP BOOL TIMER_LIMIT (REAL SECONDS:IN)
It returns true , when the timer is out. FOR EXAMPLE:
WAIT FOR $IN[1] AND TIMER_LIMIT(10)
-
Well! Learn something every day. That one doesn't appear to be documented in any of my manuals -- I wonder how long it's been around?
-
and which timer it refers to? last initialized one?
-
- Best Answer
This system build-in function should have been there for really a long time, i believe(I had idea about it around 2011).There are many system build-in functions/subprograms you can refer to the data file Operate.dat,but it has been hidden in the KRC4 systems.
This timer function has nothing to do with the 64 system $TIMER[], and it must be used together with WAIT FOR command,you can use it in Robot/submit interpreter.Even if the timer limit is used in SPS and over 16 ms,it could not stop sps program.Thus i believe it's based on system time, and has nothing to do with interpreter time.
Below is part of system functions and subprograms i took out from data file:
SQL
Display MoreDELETE_BACKWARD_BUFFER ( ) DIAG_START(DIAGPAR_T PAR :OUT,DIAGOPT_T OPT :OUT) DIAG_STOP() GET_DIAGSTATE() GETSYSSTATE(CHAR CMD[64] :IN,INT IPAR :OUT,REAL RPAR :OUT) IS_KEY_PRESSED(INT KEY :IN) GETCYCDEF(INT INDEX :IN) GET_DECL_PLACE(CHAR VARNAME[80] :IN) CHECKPIDONRDC() PIDTORDC(CHAR STRVAR[470] :IN) DELETE_PID_ON_RDC() CAL_TO_RDC() SET_MAM_ON_HD(E6AXIS VALUES :IN) COPY_MAM_HD_TO_RDC() CREATE_RDC_ARCHIVE() RESTORE_RDC_ARCHIVE() DELETE_RDC_CONTENT() RDC_FILE_TO_HD(CHAR FILENAME[128] :IN) CHECK_MAM_ON_RDC() GET_RDC_FS_STATE() SET_SYSTEM_DATA(CHAR OWNER_NAME[16] :IN,CHAR OWNER_AXNAME[5] :IN,CHAR VAR_NAME[64] :IN,REAL VALUE :IN) SET_SYSTEM_DATA_DELAYED(CHAR OWNER_NAME[16] :IN,CHAR OWNER_AXNAME[5] :IN,CHAR VAR_NAME[64] :IN,REAL VALUE :IN) GET_SYSTEM_DATA(CHAR OWNER_NAME[16] :IN,CHAR OWNER_AXNAME[5] :IN,CHAR VAR_NAME[64] :IN,INT STATUS :OUT) ERR_CLEAR (ERROR_T PERR :OUT ) ERR_RAISE (ERROR_T PERR :OUT ) EXTFCTP REAL ABS(REAL X :IN) EXTFCTP REAL SQRT(REAL X :IN) EXTFCTP REAL SIN(REAL X :IN) EXTFCTP REAL COS(REAL X :IN) EXTFCTP REAL TAN(REAL X :IN) EXTFCTP REAL ACOS(REAL X :IN) EXTFCTP REAL ATAN2(REAL X :IN,REAL Y :IN) EXTFCTP INT MBX_REC(INT MBX_ID :IN,STOPMESS MESS :OUT) EXTFCTP FRAME TOOL_ADJ(FRAME X :OUT) EXTFCTP FRAME EK(FRAME TKRWE :IN,ESYS EXKIN :IN,FRAME TBAFL :IN) EXTFCTP FRAME LK(FRAME ROOT :IN,CHAR IP_ADDR[24] :IN,FRAME OFFSET :IN,ESYS EXKIN :IN) EXTFCTP E6AXIS INVERSE(E6POS TOOLPOS :IN,E6AXIS START_AXIS :IN,INT STATUS :OUT) EXTFCTP E6POS FORWARD(E6AXIS AXVAL :IN,INT STATUS :OUT) EXTFCTP E6POS INV_POS(E6POS POS_VALUES :IN) EXTFCTP INT IOCTL(CHAR DRVNAME[256] :IN,INT REQUEST :IN,INT ARGUMENT :IN) EXTFCTP INT CIOCTL(INT HANDLE :IN,INT REQUEST :IN,INT ARGUMENT :IN,CHAR PARAM[128] :IN,INT RETVAL :OUT) EXTFCTP INT SYNC() EXTFCTP VAR_STATE VARSTATE(CHAR VAR_STR[80] :IN) EXTFCTP BOOL WSPACEGIVE(INT SPACEID :IN) EXTFCTP BOOL WSPACETAKE(INT SPACEID :IN,INT ADVANCE :IN) EXTP SYNCCMD (SYNCTYPE SYNC_T :IN,CHAR ID_NAME[64] :IN,INT COOP_LIST :IN ) EXTFCTP RET_C_PSYNC_E CANCELPROGSYNC(CANCEL_PSYNC_E CMD :IN,CHAR ID_NAME[64] :IN) EXTFCTP BOOL REMOTECMD(CHAR IP_ADDR[24] :IN,CHAR CMD[128] :IN) EXTFCTP CHAR REMOTEREAD(CHAR IP_ADDR[24] :IN,CHAR VARIABLE[128] :IN,INT ERROR :OUT) EXTFCTP INT STRLEN(CHAR STRVAR[2047] :IN) EXTFCTP INT STRDECLLEN(CHAR STRVAR[2047] :OUT) EXTFCTP BOOL STRCLEAR(CHAR STRVAR[2047] :OUT) EXTFCTP INT STRADD(CHAR STRDEST[2047] :OUT,CHAR STRTOADD[2047] :IN) EXTFCTP INT STRFIND(INT STARTAT :IN,CHAR STRVAR[2047] :IN,CHAR STRFIND[2047] :IN,CASE_SENSE_T CASE_MODE :IN) EXTFCTP BOOL STRCOMP(CHAR STRCOMP[2047] :IN,CHAR STRCOMP2[2047] :IN,CASE_SENSE_T CASE_MODE :IN) EXTFCTP BOOL STRCOPY(CHAR STRDEST[2047] :OUT,CHAR STRSOURCE[2047] :IN) EXTFCTP BOOL ISMESSAGESET(INT MESSAGENO :IN) EXTFCTP BOOL TIMER_LIMIT(REAL SECONDS :IN) EXTFCTP INT SET_KRLMSG(EKRLMSGTYPE TYPE :IN,KRLMSG_T MSG :OUT,KRLMSGPAR_T PAR[3] :OUT,KRLMSGOPT_T OPT :OUT) EXTFCTP BOOL EXISTS_KRLMSG(INT NHANDLE :IN) EXTFCTP BOOL CLEAR_KRLMSG(INT NHANDLE :IN) EXTFCTP INT SET_KRLDLG(KRLMSG_T MSG :OUT,KRLMSGPAR_T PAR[3] :OUT,KRLMSGDLGSK_T SK[7] :OUT,KRLMSGOPT_T OPT :OUT) EXTFCTP BOOL SET_KRLDLGANSWER(INT NHANDLE :IN,INT ANSWERSK :IN) EXTFCTP BOOL EXISTS_KRLDLG(INT NHANDLE :IN,INT ANSWER :OUT) EXTFCTP INT GET_MSGBUFFER(MSGBUF_T MSGBUF[100] :OUT) EXTFCTP BOOL STRTOREAL(CHAR STRVAR[256] :IN,REAL RETVAL :OUT) EXTFCTP BOOL STRTOBOOL(CHAR STRVAR[256] :IN,BOOL RETVAL :OUT) EXTFCTP BOOL STRTOINT(CHAR STRVAR[256] :IN,INT RETVAL :OUT) EXTFCTP BOOL STRTOSTRING(CHAR STRVAR[256] :IN,CHAR RETVAL[256] :OUT) EXTFCTP BOOL STRTOFRAME(CHAR STRVAR[256] :IN,FRAME RETVAL :OUT) EXTFCTP BOOL STRTOPOS(CHAR STRVAR[256] :IN,POS RETVAL :OUT) EXTFCTP BOOL STRTOE3POS(CHAR STRVAR[256] :IN,E3POS RETVAL :OUT) EXTFCTP BOOL STRTOE6POS(CHAR STRVAR[256] :IN,E6POS RETVAL :OUT) EXTFCTP BOOL STRTOAXIS(CHAR STRVAR[256] :IN,AXIS RETVAL :OUT) EXTFCTP BOOL STRTOE3AXIS(CHAR STRVAR[256] :IN,E3AXIS RETVAL :OUT) EXTFCTP BOOL STRTOE6AXIS(CHAR STRVAR[256] :IN,E6AXIS RETVAL :OUT) EXTFCTP VAR_TYPE VARTYPE(CHAR VAR_STR[80] :IN) EXTFCTP REAL FRAND(REAL MIN_VAL :IN,REAL MAX_VAL :IN) EXTFCTP INT GETVARSIZE(SYS_VARS MESSAGENO :IN) EXTFCTP INT MAXIMIZE_USEDXROBVERS() EXTFCTP INT SET_USEDXROBVERS(INT MAJORVERS :IN,INT MINORVERS :IN) EXTFCTP INT SET_OPT_FILTER(E6POS TARGETPOS :IN)
-
yup, just tried it in OL. it is addon to WAIT FOR and starts timing when WAIT FOR is reached.
-
Nice! I always had to build my own functions for that before. I wonder why they wouldn't document that?
-
and timers are confusing for plenty of people.... i don't know what they are thinking when coming up with various terms. specially when doing negatives.
$TIMER_STOP is bad, $TIMER_RUN is better
$ALARM_STOP is bad, $ESTOP_OK is better
etc.
-
... data file Operate.dat,but ...
Took me some broken F12 key caps to realize there is this hidden dat file. Very useful indeed.