Hi SkyeFire,
I tried downloading the code from the robot, changing the $VEL_AXIS_MA variable value, and then uploading but it still reverted back to the original value...
Thanks,
bwait
Hi SkyeFire,
I tried downloading the code from the robot, changing the $VEL_AXIS_MA variable value, and then uploading but it still reverted back to the original value...
Thanks,
bwait
Hi SkyeFire,
Thank you for your response! Let me clarify...
I modified the variable $VEL_AXIS_MA in WorkVisual which subsequently reverted back to the previous value when I uploaded it to the robot. I will try downloading the code first, modifying the variable, and then uploading. When modifying RSI code, I use RSIVisual.
The reason we need to limit angular velocity to 30deg/s is because this is a requirement of SafeOp which will be installed on our finished product. This is a requirement in both poscorr motion and axiscorr motion.
Thanks again for all of your great responses. You & others on the forums have been very helpful! Hopefully, this clears up some of the confusion from previous posts.
Thanks,
bwait
Hi SkyeFire,
KRC4 compact controller, Work Visual 4.0 V 4.0.26_Build0312, RSI Visual 1.1.0.0.
I did not upload the code from the robot. However, I used the last version of the WV project downloaded to the robot and made a change to it. Should I be doing this differently?
I need to limit axial speed in both AXISCORR motion and POSCORR motion. Thanks for the info on AXISCORR motion. Any ideas on POSCORR motion?
Thanks!
bwait
I also tried modifying $VEL_AXIS_MA to a lower value (originally was 6000) but when I downloaded the code, it reverted back to the original velocity of 6000.
bwait
Hello,
I am trying to limit axis angular velocity to 30 deg/s for an RSI application. I have been told that RSI is not capable of this. However, is it possible to limit maximum axis velocity in KRL code?
Thanks!
bwait
Hello,
I am trying to restart RSI after an external emergency stop ($ALARM_STOP = F, $ALARM_STOP_INTERN = T) in automatic external mode. I am using a higher level PLC which sets the input lines on the Beckhoff board of the robot controller to try to do this. However, I can't find any documentation about how to use the input lines to restart after the external emergency stop. Is this possible? If so, how?
Thanks!
bwait
Thanks Skyefire!
We are on the same wavelength. I am currently pursuing all of your suggestions (or at least something very similar).
Thanks,
bwait
Thanks SkyeFire!
I agree that normally you shouldn't even be able to reach the soft limits programmatically. We are using RSI to control the robot and sometimes we get into a singularity or go too fast towards a limit (and can't stop quickly enough) which is how we end up exceeding the software limits. We provide position data to the RSI interface and it calculates the associated angles and moves the robot to reach the requested position...
Is it possible to programmatically change the axis limits? If so, I could change the limit(s), PTP $AXIS_ACT, move to a valid position inside the previous limits, & then reset my limit(s). I looked in the integrator manual and a few other places but can't find this anywhere.
Thanks,
bwait
We got this working. We called the stop function which exited out of MoveCorr and then we called the axiscorr program. Thanks for your help!
bwait
Thank you SkyeFire & panic mode for your replies!
panic mode:
I am a little confused. Sometimes the PTP command works to move the axis back in the valid range. Is this a problem because I am very close to the axis limit? It seems to be successful when I am further away from the axis limit (i.e. 172.5 when limit is 170). What would you suggest to do to handle this? My goal is to get the axis back in a valid range so PTP $AXIS_ACT does not give an error when executed.
Skyfire:
Originally I was calling PTP $AXIS_ACT when the axis was out of the valid range. This resulted in an error. So, I implemented the code to move the axis back into valid range before calling the PTP $AXIS_ACT command. Seems we have a chicken and an egg problem here. Any ideas on where to go from here?
Thanks!
bwait
Thank you Captain, SkyFire, & animisiewaz! I appreciate your replies!
Based on your replies I understood my mistake and implemented the following code for axis 1:
;Axis 1
IF $AXIS_ACT_MEAS.A1 >= 170 THEN
PTP {A1 167}
ENDIF
IF $AXIS_ACT_MEAS.A1 <= -170 THEN
PTP {A1 -167}
ENDIF
I have implemented similar code for all 6 axis and it works sometimes...
When it does not work, it errors with "Impermissible start move." When I look at the axis value via the pendant it is very close to the limit (i.e. 170.26 for axis 1). Any ideas on why I am getting this error occasionally? With a value outside the limits I specified, I would think that it should move to 167 every time.
Much Thanks!
bwait
Hi,
I am fairly new to KUKA robot programming. I am trying to do something that seems straight forward, but...
In some cases an axis ends up out of the valid range. For example, we may encounter a singularity which causes axis 4 to go to 185.5 degrees. Valid range is +/-185 degrees. In cell.src we call PTP $AXIS_ACT; but this gives us an error because it is outside the valid range. So, I implemented the following code:
;Move axis back in range if they are out of valid range
;Axis 1
IF $AXIS_ACT_MEAS.A1 >= 170 THEN
PTP {A1 167}
ENDIF
IF $AXIS_ACT_MEAS.A1 <= -170 THEN
PTP {A1 -167}
ENDIF
;Axis 2
IF $AXIS_ACT_MEAS.A2 >= 45 THEN
PTP {A2 42}
ENDIF
IF $AXIS_ACT_MEAS.A2 <= -190 THEN
PTP {A2 -187}
ENDIF
;Axis 3
IF $AXIS_ACT_MEAS.A3 >= 156 THEN
PTP {A3 153}
ENDIF
IF $AXIS_ACT_MEAS.A3 <= -120 THEN
PTP {A3 -117}
ENDIF
;Axis 4
IF $AXIS_ACT_MEAS.A4 >= 185 THEN
PTP {A4 182}
ENDIF
IF $AXIS_ACT_MEAS.A4 <= -185 THEN
PTP {A4 -182}
ENDIF
;Axis 5
IF $AXIS_ACT_MEAS.A5 >= 120 THEN
PTP {A5 117}
ENDIF
IF $AXIS_ACT_MEAS.A5 <= -120 THEN
PTP {A5 -117}
ENDIF
;Axis 6
IF $AXIS_ACT_MEAS.A6 >= 350 THEN
PTP {A6 347}
ENDIF
IF $AXIS_ACT_MEAS.A6 <= -350 THEN
PTP {A6 -347}
ENDIF
When I run this code it errors with KSS 1443. This appears to be happening because the first axis move is relative. So, I wanted to use a variable to determine how far I needed to move my out of range axis. Something like:
REAL MOVE_AXIS
IF $AXIS_ACT_MEAS.A4 >= 185 THEN
MOVE_AXIS=182-$AXIS_ACT_MEAS.4
PTP {A4 MOVE_AXIS}
ENDIF
However, WorkVisual is not happy with this. Any ideas on how to move my axis back into a valid range before calling PTP $AXIS_ACT?
Much Thanks!
bwait
Hi Steveb,
We are having the same problem. Were you able to get this to work? If so, how?
Thanks
Hi Guys,
I am trying to switch between RSI poscorr & axiscorr in the same xml schema similar to mjsobrep in the initial post. Our movements are #ABSOLUTE so passing a value of 0 to axiscorr or poscorr doesn't seem to be an option since 0 is a valid value. Is there a way to do this with absolute moves? I essentially want axiscorr to become inactive when executing poscorr and vice versa when executing axiscorr.
Any advice would be greatly appreciated!
Thanks