Posts by Fubini
-
-
INT $MOT_TEMP[12];CURRENT MOTOR TEMPERATURE IN KELVIN","Current motor temperature is available in KRL through this system variable. Array values go from axis 1 to 12, unit is Kelvin, and tolerance is +/-12 Kelvin.
Fubini
-
Your start Position POINT={X 700, Y 0, Z 500, A 90 , B 0, C 180} is not unique. First Position in a program always has to be unique. That can be achieved by either using a E6AXIS type where all components necessary {A1, .., A6, E1, ..., E6} are defined or as in your case a E6POS where for the robot also status and turn are programmed {X, Y, Z, A, B, C, S, T, E1, ...., E6}. You can leave out the external axes E1, ..., E6 if you do not have any. So basically the first destination point in a program can not be of FRAME type.
Fubini
-
Hi
I usually use kdiff3 (http://kdiff3.sourceforge.net/). It is free and allows comparing pretty much everything on file basis after extracting the archives.
Fubini
-
Hi bmike,
looking into bas.src reveals in the older versions (V4.1.7) syntax was:
$BASE=EK(EX_AX_DATA[EX_AX_NO].ROOT,EX_AX_DATA[EX_AX_NO].EX_KIN,EX_AX_DATA[EX_AX_NO].OFFSET)
so it is pretty much the same as in newer versions:
$BASE=EK(MACHINE_DEF[MACH_IDX].ROOT,MACHINE_DEF[MACH_IDX].MECH_TYPE,BASE_DATA[BASE_NO])
So basically the offset is not stored in BASE_DATA[17...] but in EX_AX_DATA[EX_AX_NO].OFFSET
Fubini
-
This Version works:
DEF TEST( )
;FOLD INI;%{PE}%V3.2.0,%MKUKATPBASIS,%CINIT,%VCOMMON,%P
;FOLD BAS INI;%{E}%V3.2.0,%MKUKATPBASIS,%CINIT,%VINIT,%P
GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
INTERRUPT ON 3
BAS (#INITMOV,0 )
;ENDFOLD (BAS INI)
;ENDFOLD (INI)
BAS(#VEL_PTP, 10)
BAS(#ACC_PTP, 10)
PTP $POS_ACT
$APO.CDIS=0.1
$APO.CORI=1
$APO.CVEL=100
$APO.CPTP=50
BAS(#VEL_PTP, 75)
$IPO_MODE=#BASE
$TOOL=TOOL_DATA[1]
$VEL.CP=0.083
EX_BASE(17,2)
LIN {X 860,Y 0, Z 360.25, A 93.92, B 0, C 0, E1 -137.71} C_VEL
LIN {X 860,Y 0, Z 250, A 93.92, B 0, C 0, E1 -137.71} C_VEL
$VEL.CP=0.167
LIN {X 860,Y 0, Z 250, A 93.92, B 0, C 0, E1 -137.71} C_VEL
LIN {X 860,Y -7.93, Z 249.87, A 93.92, B -1.81, C -0.12, E1 -139.53} C_VEL
LIN {X 860,Y -15.86, Z 249.5, A 93.93, B -3.63, C -0.25, E1 -141.34} C_VEL
LIN {X 860,Y -23.76, Z 248.87, A 93.94, B -5.44, C -0.37, E1 -143.16} C_VEL
LIN {X 860,Y -31.65, Z 247.99, A 93.95, B -7.26, C -0.5, E1 -144.98} C_VEL
ENDDEF EX_BASE(BASE_NO :IN,MACH_IDX :IN)
INT BASE_NO , MACH_IDX
MY_FRAME = BASE_DATA[BASE_NO]:{x 0.0,y 0.0, z 0.0, a 0.0, b -90.0, c 0.0}
$BASE=EK(MACHINE_DEF[MACH_IDX].ROOT, MACHINE_DEF[MACH_IDX].MECH_TYPE,BASE_DATA[BASE_NO]:{x 0.0,y 0.0, z 0.0, a 0.0, b -90.0, c 0.0})
$ACT_BASE=BASE_NO
ENDPlease note that I will not be able to do your work. Read a about expert programming and especially krl-sytax. In your case the error messages pretty cleary stated the problems: in line
$BASE=EK(MACHINE_DEF[MACH_IDX].ROOT, MACHINE_DEF[MACH_IDX].MECH_TYPE,BASE_DATA[BASE_NO]:{x 0.0,y 0.0, z 0.0, a 0.0, b -90.0, c 0.0})
you wrote "c 0,0)" instead of "c 0.0}"
In my previous correction i only corrected your wrong subroutine calls and did not check for syntax on a real controller.
Fubini
-
Probably you never did expert programming before. Please read the System Integrators Manual for more on this stuff. Just a quick hack, that probably get you furthrt but will not yet solve all your Problems:
&ACCESS RVE
DEF DEGRO1( )
;FOLD INI;%{PE}%V3.2.0,%MKUKATPBASIS,%CINIT,%VCOMMON,%P
;FOLD BAS INI;%{E}%V3.2.0,%MKUKATPBASIS,%CINIT,%VINIT,%P
GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
INTERRUPT ON 3
BAS (#INITMOV,0 )
;ENDFOLD (BAS INI)
;ENDFOLD (INI)
BAS(#VEL_PTP, 10)
BAS(#ACC_PTP, 10)
PTP $POS_ACT
$APO.CDIS=0.1
$APO.CORI=1
$APO.CVEL=100
$APO.CPTP=50
BAS(#VEL_PTP, 75)
$IPO_MODE=#BASE
$TOOL=TOOL_DATA[1]
$VEL.CP=0.083
EX_BASE(17,2)
LIN {X 860,Y 0, Z 360.25, A 93.92, B 0, C 0, E1 -137.71} C_VEL
LIN {X 860,Y 0, Z 250, A 93.92, B 0, C 0, E1 -137.71} C_VEL
$VEL.CP=0.167
LIN {X 860,Y 0, Z 250, A 93.92, B 0, C 0, E1 -137.71} C_VEL
LIN {X 860,Y -7.93, Z 249.87, A 93.92, B -1.81, C -0.12, E1 -139.53} C_VEL
LIN {X 860,Y -15.86, Z 249.5, A 93.93, B -3.63, C -0.25, E1 -141.34} C_VEL
LIN {X 860,Y -23.76, Z 248.87, A 93.94, B -5.44, C -0.37, E1 -143.16} C_VEL
LIN {X 860,Y -31.65, Z 247.99, A 93.95, B -7.26, C -0.5, E1 -144.98} C_VEL
...
ENDDEF EX_BASE(BASE_NO :IN,MACH_IDX :IN)
INT BASE_NO , MACH_IDX
$BASE=EK(MACHINE_DEF[MACH_IDX].ROOT, MACHINE_DEF[MACH_IDX].MECH_TYPE,BASE_DATA[BASE_NO]:{x 0.0,y 0.0, z 0.0, a 0.0, b -90.0, c 0,0))
$ACT_BASE=BASE_NO
ENDReport to moderator Logged
-
Does your code read like in your previous post:
DEF EX_BASE(17,2)
INT 17 , 2
...
ENDThen you should modify it to
DEF EX_BASE (BASE_NO :IN , MACH_IDX : IN)
INT BASE_NO , MACH_IDX
...
END -
"wrist ptp" is Setting $ORI_TYPE = #JOINT.
-
Hi,
looks ok for me. Of course I can not state wether you external kinematic set up is don correct. It is always easier to just check it out. Set the TCP close to your external axis and activate your base. Then cartesian jog the external axis. The Robot should stay at the same Position in relation to your external axis base (visually and $pos_act stands still).
Fubini
-
Ticktack method definetly works, so what exactly is not working. Probably you just did not deactivate the dropping back to user Level after 300 seconds or .... Just use Forum search with keyword Authentication.config to find many further examples.
Fubini
-
-
Just take a look at method
DEF EX_BASE (BASE_NO :IN , MACH_IDX : IN)
of bas.src. It pretty much shows how the $config.dat values are used. Using this information and my prevoius post you would be able to use a e.g. call
EX_BASE(13,5)
call in your programs to activate geometric coupling for base 13 and machine 5 according to you $config.dat.
Fubini
-
Hi,
see http://www.robot-forum.com/rob…etails/msg50461/#msg50461
and study what bas.src does with the EK command.
By the way asigning $BASE=base_data[17] never would work, but external kinematic bases were stored in base_data[17 ...]. Bas.src then evaluated the index and applied the corresponding EK command.
Fubini
-
Hi,
you need to set your axis to endless using $AXIS_TYPE[6] = 5. If the axis is not endless (e.g. $AXIS_TYPE[6]=3) +-358° are the maximal values for any robot, because with the turn you can only separate two times 360° to be unique. Endless axes always run shortest path so no turn is used.
Fubini
-
Hi,
as I was looking at the controllers source code to study your problem I noticed a recent change because of problems sounding similar to yours. Hence looking at the internal KUKA error database I found ticket number CRDB63679. That ticket is closed for V8.3.19. Of course I can not give official KUKA statements here, but referring to this number probably will get you help.
Fubini
-
Hi,
just found out there was an issue with this monitoring function. It should be fixed in V8.3.19. So maybe talking to your Kuka representative and getting you a newer V8.3 should help.
Fubini
-
Hi,
in theory a floor robot can be used on the ceiling only if
[list type=decimal]
- no absolute accuracy package is used
- the Robot type has no weight balancing System
[/list]But in any case I would talk to your local KUKA representive for a official ok.
Fubini
-
Hi,
and probably in your case b is Close to 90°? Hence what you are seeing is the so called "euler singularity" (or the "gimbal lock"). This has been discussed many times. Just use Forum or Google search with keywords "euler singularity" or "gimbal lock".
Fubini
-
Hi,
there are no absolute values because they are defined by the robots dynamic model, see http://www.robot-forum.com/rob…-specs/msg70851/#msg70851
Fubini