I taught it with a pointed rod about the size of a pencil and a 1/4" rod stuck in my router. I'm not saying its perfect, but it looked pretty good.
Posts by Elderwild
-
-
Read this: Picking part 2, from a tray of parts.
Using the six point is probably not helpful. Any inaccuracy in the workobject could be your issue. Check your calibration offsets and robot zero position. Then check the baseframe in your system parameters. If it is not 0,0,0 1,0,0,0 then that will throw you off.
I found a difference in the calibration offsets for Joint IRB5. The sticker on the robot says 5.672950 and in my file it says 4.28287. I do not know why they are different, it may be that the joint was replaced. What would be the repercussions of changing that number to see what happens? I'm assuming it probably won't work because the robot seems to be calibrated but Its hard to tell just by looking at it.
-
Lemster68 Beautiful code by the way! makes mine look like Neanderthal or Caveman.
PERS pose AOffs_*****{6,7}:=[[[[0,0,0],[1,0,0,0]],[[0,-127,0],[1,0,0,0]],[[0,-254,0],[1,0,0,0]],[[0,-381,0],[1,0,0,0]],[[0,-508,0],[1,0,0,0]],[[0,-635,0],[1,0,0,0]],[[0,-762,0],[1,0,0,0]]],[[[-101.6,0,0],[1,0,0,0]],[[-101.6,-127,0],[1,0,0,0]],[[-101.6,-254,0],[1,0,0,0]],[[-101.6,-381,0],[1,0,0,0]],[[-101.6,-508,0],[1,0,0,0]],[[-101.6,-635,0],[1,0,0,0]],[[-101.6,-762,0],[1,0,0,0]]],[[[-203.2,0,0],[1,0,0,0]],[[-203.2,-127,0],[1,0,0,0]],[[-203.2,-254,0],[1,0,0,0]],[[-203.2,-381,0],[1,0,0,0]],[[-203.2,-508,0],[1,0,0,0]],[[-203.2,-635,0],[1,0,0,0]],[[-203.2,-762,0],[1,0,0,0]]],[[[-304.8,0,0],[1,0,0,0]],[[-304.8,-127,0],[1,0,0,0]],[[-304.8,-254,0],[1,0,0,0]],[[-304.8,-381,0],[1,0,0,0]],[[-304.8,-508,0],[1,0,0,0]],[[-304.8,-635,0],[1,0,0,0]],[[-304.8,-762,0],[1,0,0,0]]],[[[-406.4,0,0],[1,0,0,0]],[[-406.4,-127,0],[1,0,0,0]],[[-407.1,-252.7,0],[1,0,0,0]],[[-406.4,-381,0],[1,0,0,0]],[[-406.4,-508,0],[1,0,0,0]],[[-406.4,-635,0],[1,0,0,0]],[[-406.4,-762,0],[1,0,0,0]]],[[[-508,0,0],[1,0,0,0]],[[-508,-127,0],[1,0,0,0]],[[-508,-254,0],[1,0,0,0]],[[-508,-381,0],[1,0,0,0]],[[-508,-508,0],[1,0,0,0]],[[-508,-635,0],[1,0,0,0]],[[-508,-762,0],[1,0,0,0]]]];
PROC TC*****_*****()
! Counter for ***** *****
nLastPart:=42;
IF nTableCounter>nLastPart nTableCounter:=0;
Incr nTableCounter;
IF nTableCounter=1 THEN
IF diTableA_AtLoad=0 THEN
nTableCounter:=1;
Wait_TableB;
bTableA_AtLoad:=FALSE;
ELSEIF diTableB_AtLoad=0 THEN
nTableCounter:=1;
Wait_TableA;
bTableA_AtLoad:=TRUE;
ENDIF
ELSE
! do Nothing
ENDIF
nRow:=Round(((nTableCounter+1)/7)+0.3);
nColumn:=1+((nTableCounter-1) MOD 7);
IF nRow=1 AND nColumn=7 THEN
nRow:=2;
nColumn:=1;
Incr nTableCounter;
ELSEIF nRow=5 AND nColumn=7 THEN
nRow:=6;
nColumn:=1;
Incr nTableCounter;
ELSE
! do Nothing
ENDIF
RETURN;
ENDPROC
PROC PickA_*****()
CONST robtarget PostPickup_50:=[[821.51,-211.47,445.43],[0.001655,0.674398,-0.738335,-0.006807],[-1,-1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget PostPickup_40:=[[35.86,-44.26,81.54],[0.080837,-0.877947,-0.465734,-0.075959],[-2,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget PostPickup_30:=[[50.6,-59.35,-7.39],[0.080817,-0.877943,-0.465743,-0.075974],[-2,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget PostPickup_20:=[[440.37,56.91,432.95],[0.00172,0.674479,-0.73826,-0.006895],[-2,-1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget PostPickup_10:=[[30.71,698.73,111.92],[0.001718,0.674474,-0.738265,-0.006883],[-2,-1,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget AbovePart_10:=[[33.51,698.61,409],[3E-06,0.674516,-0.73826,-3.6E-05],[-2,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget AbovePart_20:=[[29.29,698.8,-36.98],[1.3E-05,0.674513,-0.738263,-4.3E-05],[-2,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget PickupPart:=[[30.55,697.79,-72.33],[0.000107,0.674601,-0.738183,-0.000111],[-2,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
PDispOff;
EOffsOff;
PDispSet AOffs_*****{nRow,nColumn};
MoveJ AbovePart_10,v2000,z40,tGrip_14890\WObj:=wobjA;
MoveL AbovePart_20,v1000,z5,tGrip_14890\WObj:=wobjA;
MoveL PickupPart,v40,fine,tGrip_14890\WObj:=wobjA;
rGrab_*****;
MoveL PostPickup_10,v400,z10,tGrip_14890\WObj:=wobjA;
MoveL PostPickup_20,v1000,z20,tGrip_14890\WObj:=wobjA;
PDispOff;
MoveJ PostPickup_50,v3000,z50,tGrip_14890\WObj:=wobjA;
RETURN;
ENDPROC
-
Ran ABSJ to zeros and every thing looks good. Home position is where the marks are off, not Calibration. So I am at a complete loss as to what to do next. Think I might have to call ABB. I have absolute accuracy on this thing so it should be doing what I want, but I don't know why it isn't.
-
If the Calibration is off(not saying it is, it says synchronized), and robot zero is off (visibly so), How does one fix this and still have the old programs work properly? What else could be wrong? Would the calibration change as the machine ages? Could motion supervision be the problem? should I allow it to repo the robot (currently set to no)?
-
TP sys parameters, manipulator, base 0,0,0 1,0,0,0. Check
-
The load table is the Wobj. The 6 point did not help, it is the same as the 3 pt. I did yesterday. I did not do the Calibration, or have the Pendelum for it.
1) When you say calibration offsets, are you talking about the motor offsets for each joint?
2) The robot zero is not perfect, nor has it been since I started here. If I change that, won't it change everything in every routine across the board and screw all of my programs?
3) I can't even find the base frame in the system parameters. Which file is it usually in MOC?
-
I have an array of 42 (6,7) with 2 skips#7 and #35, right to left this time because otherwise #1 would be missing. Using program displacement for each position/next part on load table. I just redefined the table again using 6 pt. 3 User, 3 Obj. Going to see if that helps. Also added the commands to turn off any residual offsets and displacements at the beginning of the routine. Anything else that could be putting additive error that I might be missing?
Currently the table is laid out as per the machine drawing, each position center (-127,-101.6) from each other.
Just took a backup, so I'm game for trying a few things. This isn't the first time this has happened, but I feel like I should at least understand Why at this point.
-
Good morning all. I'm am in the middle of a new part program with 42 places on each table. New grippers, TCP looks good. Put in the table orientation using Object frame 3 pt. However, (1,1) is a perfect grab (1,6) is off by 1.5-2.0 millimeters at 508mm over? So, its figure out why and fix it or manually find variation on all 42 positions, do the math and change the offsets. Anyone have any idea why the robot will not pick up the proper layouts using the programmed offsets? I really want the PDispSet to be right, it would save a ton of time.
Thanks in advance for any help.
-
Why a stop/power off while in the cleaning position? Tell ABB to wait until you tell it to go back. Make sure the cleaning routine clears the needle from the box before you use the Home routine.
-
Create two new workobjects (wobj_stn1a ,wobj_stn2a) with the correct center and axes. Jog to the first position in wobj_stn1 and write down the co-ordinates from the wobj frame. Change to wobj_stn1a, write down the co-ordinates. Create pose data offset (stn1a_Offs, stn2a_Offs). Offset = wobj_stn1(x,y,z)-wobj_stn1a(x,y,z) etc... Change routine to use wobj_stn1a/b. PDispSet stn1a/b, execute program, PDispOff, RETURN. Should work. There are other ways, but I don't know your details for sure.
-
Not that I know Sh*t From Shinola compared to you Gents, but are You Sure you included the directory where your tool data is stored in when you did the update? Could it be something as simple as a check box that wasn't? Or maybe you programmed it but loaded the previously saved file before saving the newly programmed tool? Just kind of shooting in the dark here but that's what it seems like from the outside looking in. Anyway Good luck! SkyeFire
-
Regrettably, I can not give you a solid answer. I am no IRC5 expert, nor am I that familiar with Profinet. I suggest looking through the ABB library for setup instructions for your particular Profi Card. There is almost always a way, but some ways are better than others.
-
First we need to know what controller you are using. Robot and software version will also help. But yes, most likely you will be able to do that. The question is, What are you trying to accomplish by doing this?
-
panic mode, I love that you used C3P0 for an illustration, but even more that you have an articulate response in such short order!
-
-
The first table should be set up as a wObj or tool wObj(Table1). Find out how it was programmed in. i.e. Jog to (0,0) with your TCP pointer. Move to (Table2), make sure you have a new wObj or tool with the name you want to use(Table2). Define new (0,0) in the exact same spot relative to the old table with the axes in the proper orientation. Copy Table1 Pick/work routine and change (Table1) to (Table2) in you instructions. Bingo, you are done! Now use IF boolean and proximity sensors on tables to call either Pick(Table1) or Pick(Table2) depending on their position
Make sure you are using (Table2) in the jogging menu when you are programming it in.
-
Seriously! I've been so busy with upgrades and moving that I totally overlooked a Folder! Can't believe I did that.
-
We pick up parts that sometimes only weigh pounds, but because of what we do with them there is over 60 pounds of attachments. The max payload of 205kG seems like overkill, but when the part weighs 30 lbs., the arm load is over 100 lbs. Try to hold that out at arms length if you can only lift 120 lbs. Its all about how much force you need to deliver! We are about 4x over our largest payload, because we don't want stuff to bend or break. One solid kickback from a 5 HP saw could really mess up an undersized robot. Like SkyeFire suggested go at least 2x your estimated duty payload and you should be good to go! Have fun.
-
You appear to have a power supply issue. I suggest checking your incoming voltage from the breaker to start with. Make sure it is correct (whatever voltage you are using 220,380,440). If it isn't, check your circuit breaker and each of the lines supplying it. It you have a phase converter or transformer, check those too. Then move on to the robot. Check all of your connections at each of the offending errors. Check the main cable between the robot and controller for exposed wires or loose connections. Check the connection on top of the bleeder. If all else fails, replace the DC link. Good luck!