Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
KUKA KRC4 Online programming - analog output
#1
Hi,
I am using the KUKA robot driver for online programming together with the RoboDKsync.src program. Does the RoboDKsync program support analog output? I fear it does not, looking at the code, just want to be sure:

Code:
CASE 10
COM_ACTCNT = COM_ACTCNT + 1
io_id = COM_VALUE1
IF COM_VALUE2 > 0.5 THEN
   $OUT[io_id] = TRUE
ELSE
   $OUT[io_id] = FALSE
ENDIF
COM_ACTION = 0
Best regards
David
#2
Hi David,
It doesn't support Analog Outputs. At this moment, in RoboDK you'll find a Set Digital Output instruction or Wait Digital Input instruction. However, you can customize the KUKA driver and change the AOUT for ANOUT to work with analog outputs. You can also map different IDs to different groups. For example, any ID over 10 applies to Analog Outputs. In RoboDK I'm not sure if you to set a digital output to a value other than 0/False or 1/True, I believe this should work with KUKA. If it is not the case we could provide an update in a few days to support this feature.
Albert
#3
Hi Albert,
thanks for the suggestion, but messing with KUKA driver may be a little bit beyond my capabilities. I think I can (ab)use the customised section of RoboDKsync for my purposes, just as you proposed in the other thread:
https://robodk.com/forum/Thread-Pyton-Sp...ng-project
[url=https://robodk.com/forum/Thread-Pyton-Specific-post-processor-and-run-mode-for-machining-project][/url]
For offline programming it should be no problem, just as you say. I have not tried that yet, but looking at the post processor that should work out just fine.
Best regards
David
#4
Hi David,
It is not complicated to update the robot driver to support Analog Output.
On the robot program, around line 128 you'll see the section where you can manage digital outputs (you took the right code snippet). You can update it to map Output ID 11 to 20 to analog output 1-10. This would translate to the following code:

CASE 10
COM_ACTCNT = COM_ACTCNT + 1
io_id = COM_VALUE1
IF io_id > 10 THEN
   ; Assume it is an (Analog Output)
   io_id = io_id - 10
   $ANOUT[io_id] = COM_VALUE2
ELSE
   ; Default behavior (Digital Output)
   IF COM_VALUE2 > 0.5 THEN
       $OUT[io_id] = TRUE
   ELSE
       $OUT[io_id] = FALSE
   ENDIF
ENDIF
COM_ACTION = 0
#5
Hi Albert,
thank you for getting back to this. I misunderstood you when you said I could customise the robot driver. I thought you ment the apikuka.exe (respectively its sources).
That is a nice and sophisticated solution, thanks for that!
Best regards
David
  




Users browsing this thread:
1 Guest(s)