Thanks!
It is some variant of Denso VM-60B1G
https://www.densorobotics-europe.com/en/system/file…pdf/vm/VMEN.pdf
Thanks!
It is some variant of Denso VM-60B1G
https://www.densorobotics-europe.com/en/system/file…pdf/vm/VMEN.pdf
Hello,
Does someone know which robot is the one in the attached picture?
This is a robotic system for neurosurgery from around 2005. and I really cannot identify the robot.
The picture is also in the link http://tinyurl.com/jtnh86y.
Any help is appreciated.
Regards,
Marko
panic mode - Thank you for the advice.
we asked Kuka for a software upgrade and got this answer:
QuoteDisplay More
Software update: I’ve seen your software version is 8.3.17 HF01. Do you have problems with it?
If you have no problems, I would advise not to update your robot.
Mit freundlichen Grüßen / Kind regards
Martin Tiefenbrunner
SkyeFire - Thank you for the info and questions.
What does your EKI setup look like?
What do you exactly mean, where can I find this info?
QuoteHow often are you TX/RXing data, and how often do you open/close the ports?
We use RET=EKI_GetReal() and RET = EKI_Send() in every cycle of the SPS. So probably 60 times a second.
We open and close ports maybe once in an hour, when we reconnect after making some modifications to robot programs.
QuoteAre you sending raw ASCII, Binary, or XML-formatted data?
XML.
QuoteTo see if you have the same thing going on, open up the DiagNostic Monitor and scroll down the list until you find the EKI module and select it.
How do I get to the DiagNostic Monitor in win7 on the Kuka control pc?
QuoteThe fix we eventually found was to set both Messages and Display to "warning", in the EKI channel config file.
Where can I find this config file?
Quote
Other things to look for: you should have 2sec, minimum, between closing an EKI channel and re-opening it. Also, consecutive EKI_SENDs on a given channel should have at least 0.5sec delay between them. Violating either of these rules will cause the error counter to slowly, silently, stack up until the Sys14 fault eventually occurs.
We have a program that we wrote in c++ which worked with the 60Hz read/write rate for hours normaly. We got no sys 14 errors in 4 years.
Now we are developing a new PC program that seems to crash with sys error 14.
Where can I find this counter?
I didnt get an opportunity to look at the log files to see if EKI log has some meaningfull info.
We will test the 0.5s delay in eki_send to see if it solves the issue with our new PC application.
Quote
A cold boot resets the counters. However, nothing else seems to.
Is there a sys variable that holds info about the system error 14 so that we can alarm the user to restart the kuka control PC?
Hello,
We are working on an Agilus robot: KR6 R900 KRC4, KSS 8.3.17 HF1. We have the EthernetKRL option version 2.2.2.
We have encountered a problem when communicating to with a PC via EthernetKRL: System error 14 in task tEkiNetRcv and the message header has KSS13025. This error cannot be reset and a cold boot of the robot controller is needed. I have read a post from Skyfire where he also got this error but caused by interrupts and continuous motions.
Our SPS is running after this error but no program can be selected and no robot motions (via the pendant in T1/T2) can be performed.
My questions are:
1. Does some system variable hold information that this error has occurred (Sys err 14) so that I can send a DO to the PLC or an XML message to the PC?
2. Is it possible to make a cold boot by some input signals and do it via the SPS? The idea is to automatically restart the robot if the error occurred.
3. Did somebody get a similar message while working with EthernetKRL?
Unfortunately, I don't have the EthernetKRL log but probably by the middle of next week I will try to acquire it and I will edit this post.
Thank you.
Thank you for the insight.
Well I think you are right but I am not an expert in KUKA bots so please help me if you can.
Below is our SPS.sub
I see that in the user PLC loop we have put the calls for starting our main rutine CWRITE($CMD,STAT,MODE,"RUN /R1/kbd_main_slijedno()").
Probably this is no good. How should it be set?
The code:
is not the one that stops the main routine kbd_main_slijedno() on E-STOP because the variable IPAD is not set to 999 on E-STOP.
We have configured the X11 safety interface and also the X12 connector.
Any help and guidance would be appreciated.
What happens with the SPS.sub on E-STOP? Does it reset and then maybe goes through the initialization and calls CELL.src?
Also the connection through KUKA KRL XML resets and cannot connect as long as I havent acknowledged the E-STOP. The connection is set in SPS.sub. Probably by all this that I have wrote you could know the answer?
SPS.sub: (also the CELL.src is in the bottom of my message.)
&ACCESS RVO
&REL 76
&COMMENT PLC on control
DEF SPS ( )
;FOLD DECLARATIONS
;FOLD BASISTECH DECL
;Automatik extern
DECL STATE_T STAT
DECL MODUS_T MODE
;ENDFOLD (BASISTECH DECL)
;FOLD USER DECL
; Please insert user defined declarations
DECL EKI_STATUS RET
BOOL S
;ENDFOLD (USER DECL)
;ENDFOLD (DECLARATIONS)
;FOLD INI
;FOLD AUTOEXT INIT
INTERRUPT DECL 91 WHEN $PRO_STATE1==#P_FREE DO RESET_OUT ()
INTERRUPT ON 91
$LOOP_MSG[]=" "
MODE=#SYNC
$H_POS=$H_POS
;Automatik extern
IF $MODE_OP==#EX THEN
CWRITE($CMD,STAT,MODE,"RUN /R1/CELL()")
ENDIF
;ENDFOLD (AUTOEXT INIT)
;FOLD BACKUPMANAGER PLC INIT
BM_ENABLED = FALSE
BM_OUTPUTVALUE = 0
;ENDFOLD (BACKUPMANAGER PLC INIT)
;FOLD TQM_INIT
TorqueDefinitions()
;ENDFOLD (TQM_INIT)
;FOLD USER INIT
; Please insert user defined initialization commands
wait sec 0.1
RET=EKI_Close("FRI_2_SDI")
wait sec 0.1
RET=EKI_Clear("FRI_2_SDI")
wait sec 0.1
RET=EKI_Init("FRI_2_SDI")
wait sec 0.1
RET=EKI_Open("FRI_2_SDI")
wait sec 0.1
;ENDFOLD (USER INIT)
;ENDFOLD (INI)
$OUT[5]=TRUE
LOOP
WAIT FOR NOT($POWER_FAIL)
TORQUE_MONITORING()
;FOLD BACKUPMANAGER PLC
IF BM_ENABLED THEN
BM_OUTPUTSIGNAL = BM_OUTPUTVALUE
ENDIF
;ENDFOLD (BACKUPMANAGER PLC)
;FOLD USER PLC
;Make your modifications here
;***** AUTO-EXTERNAL PROGRAM START
IF $MODE_OP==#EX THEN
CWRITE($CMD,STAT,MODE,"RUN /R1/kbd_main_slijedno()")
ENDIF
IF $IN[3]==TRUE THEN
CWRITE($CMD,STAT,MODE,"RUN /R1/kbd_main_slijedno()")
ENDIF
IF IPAD==999 THEN
CWRITE($CMD,STAT,MODE,"CANCEL /R1/kbd_main_slijedno()")
$OUT[3]=TRUE
ENDIF
IF $FLAG[1]==TRUE THEN
RET=EKI_SetReal("FRI_2_SDI","Robot/ACKNOWLEDGE/@X",ACKN)
RET=EKI_SetFrame("FRI_2_SDI","Robot/AXIS", ACT_AXIS)
RET = EKI_Send("FRI_2_SDI","Robot")
ENDIF
IF $FLAG[998]==TRUE THEN
RET=EKI_GetReal("FRI_2_SDI","Sensor/KAMERA/@Z",KAM.z)
RET=EKI_GetReal("FRI_2_SDI","Sensor/KAMERA/@Y",KAM.y)
RET=EKI_GetReal("FRI_2_SDI","Sensor/KAMERA/@X",KAM.x)
RET=EKI_GetReal("FRI_2_SDI","Sensor/KAMERA/@A",KAM.a)
POM=POM+0.001
$FLAG[998]=false
RET=EKI_ClearBuffer("FRI_2_SDI","Sensor")
ENDIF
IPAD_INT=IPAD
IF $FLAG[1]==FALSE THEN
POM=1
RET=EKI_Close("FRI_2_SDI")
WAIT SEC 0.1
POM=2
RET=EKI_Clear("FRI_2_SDI")
WAIT SEC 0.1
POM=3
RET=EKI_Init("FRI_2_SDI")
WAIT SEC 0.1
POM=4
RET=EKI_Open("FRI_2_SDI")
POM=5
WAIT SEC 0.1
POM=6
ENDIF
;ENDFOLD (USER PLC)
ENDLOOP
;FOLD ;%{H}
;FOLD
END
;ENDFOLD
DEF RESET_OUT ( )
INT N
MsgLoop(" ")
IF REFLECT_PROG_NR == 1 THEN
FOR N = 0 TO PGNO_LENGTH - 1
$OUT[PGNO_FBIT_REFL + N] = FALSE
ENDFOR
ENDIF
IF (PGNO_REQ>0) THEN
$OUT[PGNO_REQ]=FALSE
ELSE
IF (PGNO_REQ<0) THEN
$OUT[-PGNO_REQ]=TRUE
ENDIF
ENDIF
END
;FOLD USER SUBROUTINE
; Integrate your user defined subroutines
;ENDFOLD (USER SUBROUTINE)
;ENDFOLD
Display More
CELL.src:
&ACCESS RVP
&COMMENT HANDLER on external automatic
DEF CELL ( )
;EXT EXAMPLE1 ( )
;EXT EXAMPLE2 ( )
;EXT EXAMPLE3 ( )
;FOLD INIT
DECL CHAR DMY[3]
DMY[]="---"
;ENDFOLD (INIT)
;FOLD BASISTECH INI
GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
INTERRUPT ON 3
BAS (#INITMOV,0 )
;ENDFOLD (BASISTECH INI)
;FOLD CHECK HOME
$H_POS=XHOME
IF CHECK_HOME==TRUE THEN
P00 (#CHK_HOME,#PGNO_GET,DMY[],0 ) ;Testing Home-Position
ENDIF
;ENDFOLD (CHECK HOME)
;FOLD PTP HOME Vel= 100 % DEFAULT;%{PE}%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
$H_POS=XHOME
PDAT_ACT=PDEFAULT
BAS (#PTP_DAT )
FDAT_ACT=FHOME
BAS (#FRAMES )
BAS (#VEL_PTP,100 )
PTP XHOME
;ENDFOLD
;FOLD AUTOEXT INI
P00 (#INIT_EXT,#PGNO_GET,DMY[],0 ) ; Initialize extern mode
;ENDFOLD (AUTOEXT INI)
LOOP
P00 (#EXT_PGNO,#PGNO_GET,DMY[],0 )
SWITCH PGNO ; Select with Programnumber
CASE 1
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
;EXAMPLE1 ( ) ; Call User-Program
CASE 2
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
;EXAMPLE2 ( ) ; Call User-Program
CASE 3
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
;EXAMPLE3 ( ) ; Call User-Program
DEFAULT
P00 (#EXT_PGNO,#PGNO_FAULT,DMY[],0 )
ENDSWITCH
ENDLOOP
END
Display More
Hello,
I have mostly been programing FANUC robots and there in auto mode if you press the E-STOP button you reset the error and the robot resumes the pprogram at the line where the pointer was.
When I tried this with our KUKA bot running KSS 8.3 I was suprised to find out taht the E-STOP fully terminates the program. Is this ususal behavior and how can I configure the E-STOP just to stop the pointer and turn on the brakes and then to acknowledge the error and resume where the pointer left off.
Maybe I am doing something wrong, please help.
Regards,
cosva
Hi panic mode,
Thank you for the hint for the Multi submit.
We were hoping that we could solve whatever seems to stop the SPS but we couldn't find what it is. It is probably some wrong formatting of messages recieved from KRL XML. We cannot solve the issue of these messages so we thought we could restart the SPS if it crashes.
How shoud we write the code for calling the SPS.sub when an interrupt is triggered. Is some special coding needed to start the SPS from the running robot program?
Hello,
We are runnng a KRC4 controller and sometimes the SPS sub crashes/deselects by itself in automatic external mode.
Is it possible to somehow select and start the SPS using an external digital input or maybe by the robot itself? Can another parallel proces be set that monitors the SPS and if the SPS is not running then to trigger software signals that would simulate the user input on the touch screen for starting the SPS? In the KUKA manuals there is only the option to do this manualy by a human operator touchin the touch screen.
One alternative for us would be also a possibility to actually reset (like from the Shutdown menu) the robot controller by an external signal and wait for it to boot up. Because on boot the SPS starts 100% of the time.
In the SPS we have KRLXML which communicates all the time and gives information to the robot programs.
I really hope that somenone has a fix or workaround for our issue.
Regards,
cosva
Hello,
Maybe I should formulate two shorter questions because I see that I have probably written too much information in my earlier post.
1. Is it possible to restore factory mastering in the KRC4? (KR6 Agilus robot)
2. Is it possible to manually write the mastering data? (because I have written on a sheet of paper the factory mastering results i.e. offset angles from where the MEMD registered 0 on each axis - as described in my first post)
Any help would be appreciated as we cannot work with the robot at this moment because of the poor mastering.
Thank you in advance.
Regards,
Marko
Hello,
We are working with the KR6 Agilus 6 axis robot. When the robot first came in March this year we didnt master the robot and we worked with the factory mastering. In time we realized that the robot was not accurate enough, and also we couldnt calibrate a tool better than 1 mm of error (4 point method).
The Agilus robot is mastered with the MEMD device and axis 6 has scratched markes that need to be aligned. I have checked the mastering with the MEMD and axis 1-3 were ok(or I think these results are OK):
Axis position difference for A1 was -0.002deg (motor angle difference 0.2deg)
Axis position difference for A2 was 0.04deg (motor angle difference -4.7deg)
Axis position difference for A3 was 0.029deg (motor angle difference -2.99)
But A4 and A5 were way off:
Axis position difference for A4 was -0.8deg (motor angle difference -75.91)
Axis position difference for A5 was -0.155deg (motor angle difference -14.24)
So I have mastered the robot and thought that this would fix all our problems regarding the poor robot accuracy (TCP calibration errors, rotation around the TCP).
So as axis A4,A5 and A6 are mechanicaly coupled I needed to remaster all three in this order. I firstly remastered A1-A3 and then A4,A5 and finally A6. The errors of axis position difference after mastering for each axes were under 0.002deg. I have done the mastering without any load on the robot.
Afterwards I have tried to calibrate the robot TCP (a very light aluminum flange and some other mechanical elements were put on the robot flange - not heavier than 0.7 kg and with the centre of mass around 50mm in z axis). The TCP was around 250mm in Z direction, 50 in X and 100 in Y. I tried calibrating the TCP few times but I have got errors around 3-5mm each time! I tried calibrating some other TCP's but the errors were present again.
My conclusion is that my mastering introudced these errors as the robot worked more accurate before this mastering!
These are my questions and I would be very greatfull if someone could help:
1. Is it possible to restore the old mastering? This is most very important as we cannot work with the robot at this moment as it is very unacurate. (I tried restoring the old robot archive with the old mastering but no luck - I have got errors again when calibrating the TCP. I used the MEMD to check the mastering and all axes were in the range of 0.002deg)
2. How is it possible that the new mastering is less accurate than the factory one?
3.Is it possible that the robot has some mechanical failure inside the arm where motors for axis A4-A6 are?
Kind regards,
Marko
Hi bert,
Great programs. You gave me a turbo boost in my Kuka programming skills!
Thanks again for coding the frame creation in KRL!
Regards
I'll give him a few hours and see how he gets on with it. If he does a decent job I'll post up the results later.
So has he done a decent job?
You can even post your frame interpolation KRL code because I think that I might find it useful to see how to you handle maths in KRL...
Display More
I was quite tempted to have a go at this today, but it turns out I've got some proper work that needs doing.Anyway, I'll explain the process that I would use.
I guess that the first question to ask is how good is your maths - specifically 3D transforms and matrices? If you're familiar with these it should be a reasonably easy task. If not (which I guess is more likely, since not many people know this stuff well), then it's going to take a bit longer.
1. Collect the 3 points into variables.
2. Subtract the origin coordinates from the x-axis point coordinates to get the x direction vector.
3. Subtract the origin coordinates from the xy plane point coordinates to get another vevtor in the xy plane.
3a. (Almost forgot) Normalise the two vectors by dividing the elements by the length of the vectors.
4. Take the cross product of the two vectors that you have to create the z direction vector.
5. Take the cross product of the z and x vectors to create the y direction vector.
6. You now construct the rotation matrix for the frame. The first column contains the elements of the x direction vector, the second column takes the y direction, the third column takes the z vector.
7. Now calculate the ABC values from the rotation matrix:CodeA = Atan2(rot[2, 1], rot[2, 2]); B = Atan2(-rot[2, 0], Sqrt(rot[2, 1] * rot[2, 1] + rot[2, 2] * rot[2, 2])); C = Atan2(rot[1, 0], rot[0, 0]);
I took this code from a c# program (and simplified it a little), but I can't remember exactly what maths functions are available in KRC, so you'll have to figure out how to do the above calculations in the controller.
Thanks for the reply!
I feel really "stupid" now that I "made" you write the whole procedure but hopefully it will help also someone else!
I will program the function in C++ or Matlab because I suppose that it will be too much of a bother to do it in KRL...
To me it is very strange that Kuka does not have this function embedded inside it's software...
Thanks again!
Hi!
Is it possible to obtain the Kuka office Lite demo? I called Kuka but they cannot provide it
If someone can share the software please send me an e-mail or PM.
Thanks in advance!
Kind regards,
cosva
That's not a simple task. Are you doing this just for initial setup, or does it have to be done on the fly in the program?
Well the problem is that I am not doing it for an initial set up. While running a program the robot calculates 3 points which should describe a new base frame. So it should be done on the fly without stopping the running program...
The former is a simple menu-driven setup task under CONFIGURE>MEASURE>BASE. The latter involves some non-trivial mathematical coding.
Well a certain workaround before coding the mathematics for creating a new base frame for me could be the manual menu-driven setup but with one certain addition. Is it possible to move a robot to a certain position and then use CONFIGURE>MEASURE>BASE and only record one point depicting the origin. Then start the robot program again where the robot moves to the positive x direction point, I would then record this point in the same CONFIGURE>MEASURE>BASE. And make the same procedure for the point in xy plane. My problem is that whenever I exit the CONFIGURE>MEASURE>BASE procedure I cannot get back inside the one which I started and I was not able to split the screen to have a program and also the CONFIGURE>MEASURE>BASE window.
On a FANUC robot I could do this, the R30iA controller allowed simultaneous creation of a frame and in another window I could run a robot program and drive the robot to the calculated positions. Is this possible with KUKA? I hope that the answer will be positive
Hello!
I need to create a new base coordinate system within a running program. The robot will move to three calculated points where one will depict the origin, the second point the positive x axis direction and the third a point in the xy plane. in other words I need to copy the 3 point base calculation process within a program. Is there a function that can do this? Three points as input arguments and a calculated base[x] frame as an output?
Then I would assign this frame as the active base frame and move the robot to predefined positions.
Thank you in advance!
cosva
Thanks!
Hi!
Does anyone have the KAREL file KLIOTYPS.KL.? I am unable to find it
in the KAREL manual.
Thanks!
cosva