The case statement could be replaced by a more compact for loop
Posts by Mentat
-
-
Look into interrupts inside expert programming part of the manual. Inside your interrupt you will need BRAKE and at the end- RESUME.
-
Hello.
Not all parts are ok, so they get caught on the nest and the robot gives me the collision error.
Can't do it any differently unfortunatley.
Can you change the tooling, so it could react instead of the robot? Maybe it could have some elasticity and sensors to detect collision? Trying to automatically acknowledge robot collisions is a bad idea.
-
Why not use a trigger when the TCP gets close to the pocket?
-
Use an additional boolean to extend the trigger condition, e.g.
When you want to ignore- set GripSafeOn to false.
Or even easier- turn off the interrupt when inserting part into pocket and then turn it on.
-
This is indication of a bigger problem- you have not read the manual for your robot. I suggest that you do.
To answer the question, yes there is such a possibility.
-
The wires of contact to connect to the EMD were pulled in.
Solved.
-
Sounds a lot like Trigger to me, try and look into those?
-
Setting up a robot- KR120 R3100-2 with KSS 8.6.5. Set up went well until I got to mastering- after jogging robot to premastering position and connecting EMD to X32, the pendant does not detect the EMD. I have checked the EMD with other robots- works well; the X32 connector on the robot looks clean.
I suppose contacting KUKA is the next step, but maybe any of you ran into something like this before?
-
Ok but why is it declared as GLOBAL INTERRUPT? I understand why in the template module because they can be used in a main program but cell.src isn't suppose to be the highest level?
That part is boilerplate code, no special case was made for cell.src. Doesn't affect the functionality.
-
It will be recognized in all functions/procedures above cell.src (e.i. none).
-
Straight from the manual:
QuoteAn interrupt is only recognized at, or below, the level in which it is declared. In other words, an interrupt declared in a subprogram is not recognized in the main program (and cannot be activated there). If an interrupt is also to be recognized at higher levels, the declaration must be preceded by the keyword GLOBAL.
-
I would recommend not doing that- it's not safe.
-
I guess Get day name is just a switch statement that returns week days as words instead of integers (e.g GetDayName(3) ->Wednesday).
Mod most likely returns the remainder of integer division.
-
Hello guys
we have this code to correct a base, basing on CameraCorrection
CorrectionX, CorrectionY, CorrectionA ==> these are camera values
CodeFRAME CorrectionFrame CorrectionFrame =$nullframe CorrectionFrame.X = CorrectionX CorrectionFrame.Y = CorrectionY CorrectionFrame.A = CorrectionA BASE_DATA[7] = BASE_DATA[2] : CorrectionFrame
the correction will be only on the X and Y and also A rotation, is the last line correct in this case?
If you are correcting according to base_data[2], then yes. If corrections are according to nullframe, then they should swap places. That is, that depends in what base the Camera is working.
-
1. I haven't done much programing by teaching points, but pretty sure the answer is no.
2. Instead of changing points manually, you could just use a couple of regular expressions (in Notepad++) and have it done all at once; especially if you want to use one speed for lin and another speed for PTP motion.
Alternatively, just remove (using regex) most of the fold and leave only what you need, e.g. "Lin xp4"
-
Either use $date and use an algorithm to figure out the day of week. Or save 2020-01-01 weekday and find the remainder between then and $date (don't forget leap years).
For the former, there are plenty of algorithms that you just have to implement in KRL.
-
You will have to either send mantissa and exponent separately (or treat 32 bits as two different numbers) or use modified binary to decimal conversion with decimal places included (depending on the precision you have at the source)
e.g. 32, 16..4, 2, 1, 0.5, 0.25, 0.125
-
Seems like you your motions could benefit from splines, as they are interpolated through the points and you can set velocities and accelerations for different parts of it. Also to add triggers if you need to sync or mark some specific points on it.
I heard kss 8.5 having Directory loader functionality (just hearsay) without the module itself, so dynamically created splines might be an option. If not, writing some boilerplate splines and ending them approximately would still be very close to ideal.
-
Wow, that sounds hot.
As for solution, I think OpenShowVar would be easiest, workable and cheap. If you write movement commands onto a buffer on robot side to enable motion planning, the motion will be smooth.
Working industrial robot in automatic mode near people is entirely different can of worms.