Hey everyone.
I need to be able to jog my robot without using the SmartPad. How can I do this? (I'm using KRC4.)
I need to do this so the operator can position the robot so parts can be loaded before being welded.
thanks
Hey everyone.
I need to be able to jog my robot without using the SmartPad. How can I do this? (I'm using KRC4.)
I need to do this so the operator can position the robot so parts can be loaded before being welded.
thanks
what?
who is supposed to jog robot while operator is loading parts?
jog using what means (since smartPad is out of question)?
why can't you let robot retract to safe position by program?
You can use MxAutomation library with Beckhoff TwinCAT PLC.
It depends, you could properly wire up some buttons that moves the robot relative to current position, this would of cause only work when operator safety is okay.
But we would need to know more to give you a specific answer, but the only issue i can see is that you really need to know what you are doing with your safety, but a deadman switch and reduced speed controlled by external safety PLC could be your answer.
I think that MX automation is a bit over the top for this.
Anyways the cheapest solution is properly just to teach the operator to use the teachpendant.
Panic Mode: We are building robotic welding systems. The system we are working on now is a 2 sided system. Picture two 10' by 4' flat beds. Each bed holds the tooling/fixture for that side. Each bed has a motor gear unit connected on one end. The robot sits in the middle of the 2 beds. There is an operators console for each bed. We actually call the bed a bridle. While the robot is on one side welding parts on that bridle, the operator needs to be able to jog the other bridle so that welded parts can be removed and new parts loaded.
For safety, we are using laser scanners and safe robot. The plan is to use safe robot to monitor the space the robot is allowed to move around in while welding over one of the bridles. The operator needs to be able to jog the other bridle (MGU) to unload/load parts. Once the robot is finished welding, it returns to HOME (a position between the 2 bridles) and waits for the next START button to be pressed on either operator console.
The 2 laser scanners are positioned to guard each bridle (1 scanner per bridle). If the scanner sees a foreign object in front of the welding bridle (i.e. a person), the robot and that bridle stop. Once the person is no longer in the field of view, welding continues. If the other scanner sees a person in front of the non-welding bridle, that bridle is not allowed to move. Once that scanner no longer sees the person, the non-welding bridle needs to be able to move by using buttons on the operator's console.
What I need to know is how to connect the button on my operator's console to the robot so that I can move the MGU? If it makes it simpler, imagine the system is single sided and I wanted to be able to jog the MGU from an operator's console. I suppose I could write a program that continuously watches (using a loop) for a contact closure (from the OpCon) then runs a motion command for the MGU moving it a few degrees at a time. Is there another way? And then for the hard part....how would I monitor/move the non-welding bridle while the robot is welding on the other bridle.
Hopefully my question is more clear now.
Thanks for the responses!
Does the robot move the bridle while, or does it move to fixed positions?
I would properly use a external safety controller and let it control the bridles if the robot does not move it during welding.
jemi_3tech: I believe the welding bridle will move to a fixed position and stay there while welding takes place. Not positive though. Another guy is writing the programs and he is not here at the moment to ask.
exactly, since it goes to fixed position, positioning of turntable or bridle is controlled by KRC.
your post title and original problem description is wrong:
note, robot is just manipulator arm, robot axes are A1-A6, other axes are external axes: E1-E6.
jogging is manual control of robot or external axis. this requires manual mode (T1). you cannot "jog robot" while it is in auto working on other bridle. also jogging is slow and inaccurate (not repeatable), you want positioning.
so what you are really after is not jogging (and certainly not jogging of the robot). you are interested in controlling one external axis while robot is busy elsewhere (on the other side/bridle).
this is done all the time and operator station should among other things have button "operation complete" (or "parts loaded" or whatever you call it). as soon as process is complete and area is safe, that turntable (bridle) should turn - by program - to a fixed position. this requires external axis to be configured as asynchronous axis (so that it can be moved independent of robot) and you can use asynchronous PTP instructions in the SPS.
OK, I stand corrected. I said "jogging the robot" when I should have said "jogging an external axis". Perhaps more accurately stated, I need to be able to move the non-welding bridle using a separate operator console while the robot (A1-A6) and the other external axis (bridle) are welding (moving).
So if I understand your response panic mode, I am only able to move the non-welding bridle under program control. I cannot make an operator's console with a push button, and use that button to move the non-welding bridle. Correct?
Also, I was trying to post a quick sketch of the system (.jpeg) but the system didn't allow the upload. Not sure how to address this problem or who to send it to.
thanks
It is possible to do this simply by assigning the external axis as permanently Async, and essentially placing the external axes under control of the SPS with ASYPTP commands.
The tricky bit is that I'm not certain SafeRobot can prevent these axes from moving when an operator is standing at it. That'll need a bit of research.
So if I understand your response panic mode, I am only able to move the non-welding bridle under program control. I cannot make an operator's console with a push button, and use that button to move the non-welding bridle. Correct?
you can make external axis controlled by pair of buttons from operator console. axis must be made asynchronous, code will be in SPS.SUB (Submit Interpreter) and use ASYPTP when one of the buttons is pressed (and safety is ok).
for the time being forum folder is full and I am reluctant to delete any attachments. for the time being one can post links to images using 3rd party sites such as http://www.use.com (no registration needed, quick and simple post and forget interface).
SkyeFire: Not sure what "permanently Async" means. I have used the $ASYNC_AXIS system variable before to make an external axis (MGU) asynchronous with the robot (A1-A6) but ran into troubles when the MGU would resync without me resetting $ASYNC_AXIS. I experienced this while in T1 and programming. I'd be jumping around running various lines in the program and then the external axis would start moving again. So I stopped trying to use $ASYNC_AXIS. How do I make an external axis "permanently Async"?
I believe I want to make the external axis temporarily Async so I can move it with the operators console, then resync so the external axis once again moves under program control with the robot (A1-A6).
What I think I want to do:
My system has 2 external axis, E1 and E2. I need to make each of these axis asynchronous with the robot under program control one at a time. To make E1 async, $ASYNC_AXIS = 'B000001'
After E1 is made async, then I want to push a button on the operator's console to move E1 while the robot and E2 are moving. If in Machine.dat, I configure SIGNAL $ASYNC_AX1_P to my move button on the console and SIGNAL $ZUST_ASYNC to the enable button on the console, then when I push these 2 buttons, will the MGU move? Is there code somewhere else that says if these 2 systems variables are true then move the motor? Or do I need to use the ASYPTP command to move the motor? Since these button pushes happen asynchronously with the running robot program, I imagine I need code in the SPS to detect the button pushes (which I know how to do). And does the ASYPTP command also go in SPS?
After I'm done moving E1, I want to resync with $AXIS_AXIS = 'B000000'
There's two ways to set an external axis to Asynchronous mode: temporarily, using $ASYNC_AXIS, and permanently, using $EX_AX_ASYNC. Only using the latter will permit you to control the axis from the SPS.
Even with the latter setting, it is still possible to control the axis from your robot interpreter as well, using ASYPTP commands, but time-synchronized motion with the robot arm will not be possible.
Hello all. Just a quick follow-up post to say I got this working and it turned out to be a lot simpler than I originally thought.
Basically, while the robot is waiting for the operator, both of the external axis (E1 & E2) are set to async using the $ASYNC_AXIS = 'B0011' command. When the operator presses the START button on the OpCon the external axis that is needed is set back to synchronous. The other axis remains asynchronous and can be jogged by pressing buttons on the OpCon.
These jog buttons are inputs into the robot. In $machine.dat, these inputs are assigned to both external axis for jogging in either direction. I am also using a "Jog Enable" button on the OpCon which is connected to the Drives Enable input in $machine.dat.
Once the robot is finished running a program, it returns to HOME position when both external axis are set to async so either can be jogged (for parts loading/unloading).
I am in the early stages of testing this but so far, it seems to be working the way we need it to.