So we had some power issues that ended up with the pulse encode count being off and some files being corrupt, so I loaded and old image but ended up having the remaster the zero positions. This was the first time I had to do this so it's took a couple tries, so maybe there is something I missed. I ended up having all the position change which is expected but I am running into one major issue. so when I do a cartesian moves, I'll head well move forward (x+) when moving downwards (z+) accentuated at low end making move of J shaped movement. So this makes reteaching my place positions difficult. Previously the robot didn't do this, so I am wondering if this is something I missed or there is something more to it.
issue with cartesian moves post mastering
-
haightc -
October 11, 2023 at 7:53 PM -
Thread is Resolved
-
-
SkyeFire
October 11, 2023 at 7:58 PM Approved the thread. -
As far as I know, it feels like it is something wrong with the base frame. I would say you can try messing around with your base frame (Mostly uframe 0).
I think you can goto Uframe0 > {METHOD} > Direct Entry Method and try entering W 180.0 S 0.0 R+180.0 .
-
You have answered yourself, if robot moves incorrectly on cartesian movements and does a curving motion while jogging on cartesian this can be caused either because you have incorrectly calibrated the robot or you have restored an incorrect image on the controller.
If you have loaded an image of an incorrect controller that has not the same mechanical unit type, the kinematic model will not match and linear movements will not work ok.
If you have very bad calibration, the same will happen.... have you moved the robot to 0 marks after doing the calibration and checked that it was exactly at 0 on all marks?
I suggest you to check the original mastering data and restore it manually if you can, this will only work if the encoders have never lost power or battery. Original mastering data usually cames with the robot after you receive it, where I work we usually make a copy of the document and store it inside the controller cabinet.
If you have the data and it is still valid, it's better to restore that data than to remaster the robot again yourself, as it will not lose precission.
-
Shellmer if you mean mains power, that happens frequently this is the first time we have had a major failure that wasn't easily recoverable. The imaged restored is from the same machine made earlier this year. I also have it also the programs to to auto backup to the flash card as well. Since there was corruption to the vision programs and some of the var and tp files, it's possible the battery did get depleted, looks like there was also a power surge during this period as well based on near by device having tripped UPS and AVRs. I'll have to look into seeing if any master data points are recorded, several of the companion platforms didn't have a origin points recorded when they were installed in around 2013.
Vadan Thakkar: I'll go check the uframe and see what that looks like, I haven't looked into at that yet. -
As far as I know, it feels like it is something wrong with the base frame. I would say you can try messing around with your base frame (Mostly uframe 0).
I think you can goto Uframe0 > {METHOD} > Direct Entry Method and try entering W 180.0 S 0.0 R+180.0 .
I am not sure how to get to uframe setting... if I choose setup > frame I just get the tool from. I can find a uframe offset but my options from that are just program line options line and it set to whole range.
In the tool frame, there is just one for the gripped and all values but Z are zero. I am guess this is just to set the z offset the gripper.
With a M1iA what are generally reasonable axis limits? I seem to get motion limit errors during moves that should be with in the range of motion. -
Active uframe or robot "world" being incorrectly set would not cause the robot to move on a curved way if doing cartesian movements, it only would cause to move on an incorrect direction, but the movement should be still linear, even if it goes in a diagonal direction.
If you are experiencing a "J shaped movement", I have given you two possible causes, forget about uframes, utools or cell frames until you can jog the robot lineary without strange motions.... if you jog the robot in world, user or tool it still should move lineary even if not in the correct direction, robot moving on a curved pattern or "falling" middle linear movement is not normal.
Regarding power loss, it is not a problem if the robot batteries that keep the encoders with power still have charge, these bateries are installed on the base of the robot and should be changed from time to time WHILE the robot is still powered on. These batteries are normal non-rechargable batteries that you can purchase on any shop.
If batteries got empty you should have received a "BLAL" alarm (Batery low alarm) or even a "BZAL" alarm (Battery zero alarm).
If you do not change the batteries after a BLAL you run the risk of losing mastering completelly if a power outage occours.
If this happens, the only way to fix it if to remaster each axis manually again with the zero marks, but it's very difficult to achieve the same precission on the robot as from factory when you do it manually... and you also say that robot has vision, that is the worst case scenario since a robot with vision needs to be very well calibrated in order to work correctly.
I repeat, have you checked if robot goes to 0 position AFTER mastering the axis again??? To check it the better way would be to create a new program, record a new point, change it to JOINT representation with fine termination, modify all axis values to 0 degrees and executing the motion.
After doing that you should check if robot moved to zero marks, if not, master the robot again.
Lastly, I don't know if I understood you correctly with this statement:
QuoteThe imaged restored is from the same machine made earlier this year
If the image came from the same exact CONTROLLER, so you made a image backup from that controller and you restored his own image on his own controller, then mastering data was likelly lost since it should restore the original mastering after restoring the original image. What loses the pulse count after a power loss are the pulsecoders, so even if mastering is ok on the controller side, new pulse values will be generated on the encoder (robot) side so mastering data is invalid after a complete power loss on the encoders)
If instead you are saying that you restored an image from a similar robot (even if same mechanical unit) from another cell that was installed this year into this robot that is from 2013, this is probably the problem.
You should never restore a image from a controller into another, as all options, data and even mastering from the robot you extracted the image will be restored, and mechanical units all have different mastering data, even if they are exactly the same model.
-
Last time I needed to reteach the positions I made an image (03 Jul 2023), no hardware changes. From what I understand that restored my all my programs and variables but not restore eeprom/rom files from the encoders. I had no battery low or fault alarms, but prior to image I was getting corrupt file errors. Post imaging I immediately got a hard pulse encoder error fault. The arm didn't move put was still throwing up a srvo-038-servo-pulse-mismatch error. So I first went in the master/cal menu and cleared the error, however it wouldn't go to any position saying it was out of range. So then I did the quick remaster but my positions were way out. So then i was like okay now I need to run the zero calibration, so one I did what I could move around though-out my workspace and reteach all the positions. It's the odd movements that just kept it from accurately placing tube as it would move to far in the x direction when descending, specifically to the as I was stating on the positive x side or rather as motor 1 extends. I'll also add that when when I did jog the robot, it did return to zero. Mean if I move to world position 0,0,0 motors were at there witness marks. Jog motor to witness marks, reported position were close to zero. I I did this just in case I there might be some type of encoder issue. I did check the user frame and it seems pretty far off, I just hadn't thought to check that previously. This would explain why I would get motor limit errors when running the program but not were teaching the positions. It's a pretty simple program, I've copied the ASCII export below for reference.
/PROG PICK
/ATTR
OWNER = MNEDITOR;
COMMENT = "";
PROG_SIZE = 3608;
CREATE = DATE 13-06-12 TIME 09:35:18;
MODIFIED = DATE 23-10-09 TIME 09:18:52;
FILE_NAME = PICKTEST;
VERSION = 0;
LINE_COUNT = 130;
MEMORY_SIZE = 4120;
PROTECT = READ_WRITE;
TCD: STACK_SIZE = 0,
TASK_PRIORITY = 50,
TIME_SLICE = 0,
BUSY_LAMP_OFF = 0,
ABORT_REQUEST = 0,
PAUSE_REQUEST = 0;
DEFAULT_GROUP = 1,*,*,*,*;
CONTROL_CODE = 00000000 00000000;
/APPL
/APPL
/MN
1: UTOOL_NUM=1 ;
2: UFRAME_NUM=1 ;
3: PAYLOAD[1] ;
4: RO[3:Cam Light]=ON ;
5: R[1:Vial Count]=1 ;
6: R[2:Tray Count]=0 ;
7: CALL GRP_OPEN ;
8:J PR[1:Home] 10% FINE ;
9: ;
10: TIMER[1]=RESET ;
11: TIMER[1]=START ;
12: ;
13: ;
14: LBL[5] ;
15:J PR[1:Home] 100% FINE ;
16: ;
17: WAIT .50(sec) ;
18: RO[3:Cam Light]=ON ;
19: WAIT DI[2:Tray in Position]=ON ;
20: ;
21: VISION RUN_FIND 'HOLECHECK25' ;
22: VISION GET_OFFSET 'HOLECHECK25' VR[1] JMP LBL[90] ;
23: ;
24: WAIT .50(sec) ;
25: ;
26: WAIT DI[2:Tray in Position]=ON ;
27: ;
28: LBL[10] ;
29: ;
30: ;
31: ;
32: ;
33: PR[5:Place]=P[R[1]] ;
34: ;
35:J P[29] 100% CNT100 ;
36:L P[30] 4000mm/sec FINE ;
37: ;
38: WAIT DI[1:@Pick Position]=ON ;
39: CALL GRP_CLOSE ;
40: WAIT .15(sec) ;
41: DO[1:CampmaticVialCLR]=ON ;
42: ;
43: ;
44:L P[27] 4000mm/sec CNT10 ;
45: DO[1:CampmaticVialCLR]=OFF ;
46: ;
47: ;
48:L PR[5:Place] 4000mm/sec FINE Offset,PR[12] VOFFSET,VR[1] ;
49: JMP LBL[211] ;
50: ;
51:L PR[5:Place] 4000mm/sec CNT50 Offset,PR[16:Place Aprch-1] ;
52: ;
53:L PR[5:Place] R[...]mm/sec CNT1 Offset,PR[17:Place Aprch-2] ;
54: LBL[211] ;
55: ;
56:L PR[5:Place] 1000mm/sec FINE AP_LD25 VOFFSET,VR[1] DB 10.0mm,CALL GRP_OPEN ;
57: WAIT RI[1:Gripper Open]=ON ;
58:L PR[5:Place] 4000mm/sec CNT50 Offset,PR[17:Place Aprch-2] ;
59: ;
60: R[1:Vial Count]=R[1:Vial Count]+1 ;
61: IF R[1:Vial Count]<=25,JMP LBL[10] ;
62: R[1:Vial Count]=1 ;
63: ;
64:L PR[1:Home] 4000mm/sec FINE ;
65: ;
66: DO[22:Robot Tray Index]=PULSE,0.5sec ;
67: ;
68: WAIT .50(sec) ;
69: DO[22:Robot Tray Index]=OFF ;
70: WAIT DI[2:Tray in Position]=ON ;
71: LBL[212] ;
72: JMP LBL[5] ;
73: ;
74: LBL[50] ;
75: DO[22:Robot Tray Index]=PULSE,0.5sec ;
76: WAIT DI[2:Tray in Position]=OFF ;
77: WAIT .50(sec) ;
78: WAIT DI[2:Tray in Position]=ON ;
79: JMP LBL[5] ;
80: ;
81: ;
82: !******************************** ;
83: !******************************** ;
84: !Teach Place Points Here ;
85: !******************************** ;
86:L P[1] 4000mm/sec FINE VOFFSET,VR[1] ;
87:L P[2] 4000mm/sec FINE VOFFSET,VR[1] ;
88:L P[3] 4000mm/sec FINE VOFFSET,VR[1] ;
89:L P[4] 4000mm/sec FINE VOFFSET,VR[1] ;
90:L P[5] 4000mm/sec FINE VOFFSET,VR[1] ;
91:L P[6] 4000mm/sec FINE VOFFSET,VR[1] ;
92:L P[7] 4000mm/sec FINE VOFFSET,VR[1] ;
93:L P[8] 4000mm/sec FINE VOFFSET,VR[1] ;
94:L P[9] 4000mm/sec FINE VOFFSET,VR[1] ;
95:L P[10] 4000mm/sec FINE VOFFSET,VR[1] ;
96:L P[11] 4000mm/sec FINE VOFFSET,VR[1] ;
97:L P[12] 4000mm/sec FINE VOFFSET,VR[1] ;
98:L P[13] 4000mm/sec FINE VOFFSET,VR[1] ;
99:L P[14] 4000mm/sec FINE VOFFSET,VR[1] ;
100:L P[15] 4000mm/sec FINE VOFFSET,VR[1] ;
101:L P[16] 4000mm/sec FINE VOFFSET,VR[1] ;
102:L P[17] 4000mm/sec FINE VOFFSET,VR[1] ;
103:L P[18] 4000mm/sec FINE VOFFSET,VR[1] ;
104:L P[19] 4000mm/sec FINE VOFFSET,VR[1] ;
105:L P[20] 4000mm/sec FINE VOFFSET,VR[1] ;
106:L P[21] 4000mm/sec FINE VOFFSET,VR[1] ;
107:L P[22] 4000mm/sec FINE VOFFSET,VR[1] ;
108:L P[23] 4000mm/sec FINE VOFFSET,VR[1] ;
109:L P[24] 4000mm/sec FINE VOFFSET,VR[1] ;
110:L P[25] 4000mm/sec FINE VOFFSET,VR[1] ;
111: !******************************** ;
-
112: ;
113: LBL[100] ;
114:L PR[1:Home] 4000mm/sec FINE ;
115: WAIT DI[2:Tray in Position]=ON ;
116: JMP LBL[10] ;
117: ;
118: LBL[90] ;
119: RO[3:Cam Light]=OFF ;
120: WAIT 1.00(sec) ;
121: DO[22:Robot Tray Index]=PULSE,0.5sec ;
122: WAIT .50(sec) ;
123: DO[22:Robot Tray Index]=OFF ;
124: WAIT DI[2:Tray in Position]=ON ;
125: JMP LBL[5] ;
126: ;
127: ;
128: ;
129: ;
130: ;
/POS
P[1]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = -31.677 mm, Y = -41.153 mm, Z = 6.781 mm,
W = -179.895 deg, P = -.565 deg, R = -3.264 deg
};
P[2]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = -8.836 mm, Y = -41.269 mm, Z = 8.353 mm,
W = -179.895 deg, P = -.565 deg, R = -3.264 deg
};
P[3]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 13.578 mm, Y = -41.496 mm, Z = 7.360 mm,
W = -179.895 deg, P = -.565 deg, R = -3.264 deg
};
P[4]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 35.065 mm, Y = -42.157 mm, Z = 14.613 mm,
W = -179.895 deg, P = -.565 deg, R = -3.264 deg
};
P[5]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 57.526 mm, Y = -42.834 mm, Z = 13.940 mm,
W = -179.895 deg, P = -.565 deg, R = -3.264 deg
};
P[6]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 78.665 mm, Y = -43.032 mm, Z = 19.015 mm,
W = -179.895 deg, P = -.565 deg, R = -3.264 deg
};
P[7]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 99.361 mm, Y = -43.217 mm, Z = 23.573 mm,
W = -179.895 deg, P = -.565 deg, R = -3.264 deg
};
P[8]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 119.737 mm, Y = -43.391 mm, Z = 26.121 mm,
W = -179.895 deg, P = -.565 deg, R = -3.265 deg
};
P[9]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = -40.058 mm, Y = -22.784 mm, Z = 8.363 mm,
W = -179.895 deg, P = -.565 deg, R = -3.265 deg
};
P[10]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = -19.943 mm, Y = -24.682 mm, Z = 14.641 mm,
W = -179.895 deg, P = -.565 deg, R = -3.265 deg
};
P[11]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 2.058 mm, Y = -25.348 mm, Z = 15.243 mm,
W = -179.895 deg, P = -.565 deg, R = -3.265 deg
};
P[12]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 25.219 mm, Y = -25.208 mm, Z = 11.122 mm,
W = -179.895 deg, P = -.565 deg, R = -3.265 deg
};
P[13]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 46.680 mm, Y = -25.480 mm, Z = 15.687 mm,
W = -179.895 deg, P = -.565 deg, R = -3.265 deg
};
P[14]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 69.164 mm, Y = -25.708 mm, Z = 14.119 mm,
W = -179.895 deg, P = -.565 deg, R = -3.265 deg
};
P[15]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 89.958 mm, Y = -26.336 mm, Z = 13.877 mm,
W = -179.895 deg, P = -.565 deg, R = -3.265 deg
};
P[16]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 110.596 mm, Y = -26.974 mm, Z = 22.914 mm,
W = -179.895 deg, P = -.565 deg, R = -3.265 deg
};
P[17]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 131.178 mm, Y = -27.608 mm, Z = 31.055 mm,
W = -179.895 deg, P = -.565 deg, R = -3.265 deg
};
P[18]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = -30.419 mm, Y = -5.473 mm, Z = 12.513 mm,
W = -179.895 deg, P = -.565 deg, R = -3.265 deg
};
P[19]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = -7.494 mm, Y = -5.770 mm, Z = 4.996 mm,
W = -179.895 deg, P = -.565 deg, R = -3.265 deg
};
P[20]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 13.972 mm, Y = -7.007 mm, Z = 12.632 mm,
W = -179.895 deg, P = -.565 deg, R = -3.265 deg
};
P[21]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 36.004 mm, Y = -7.678 mm, Z = 16.499 mm,
W = -179.895 deg, P = -.565 deg, R = -3.265 deg
};
P[22]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 57.498 mm, Y = -8.328 mm, Z = 16.648 mm,
W = -179.895 deg, P = -.565 deg, R = -3.265 deg
};
P[23]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 79.025 mm, Y = -8.983 mm, Z = 19.870 mm,
W = -179.895 deg, P = -.565 deg, R = -3.265 deg
};
P[24]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 99.703 mm, Y = -9.605 mm, Z = 18.347 mm,
W = -179.895 deg, P = -.565 deg, R = -3.265 deg
};
P[25]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 121.254 mm, Y = -10.268 mm, Z = 25.602 mm,
W = -179.895 deg, P = -.565 deg, R = -3.265 deg
};
P[27]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 57.888 mm, Y = 64.831 mm, Z = 65.834 mm,
W = 179.638 deg, P = .446 deg, R = 148.210 deg
};
P[29]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 26.756 mm, Y = 33.191 mm, Z = 59.853 mm,
W = -179.895 deg, P = -.565 deg, R = -3.265 deg
};
P[30]{
GP1:
UF : 1, UT : 1, CONFIG : ', , 0',
X = 41.221 mm, Y = 61.127 mm, Z = 44.219 mm,
W = -179.895 deg, P = -.565 deg, R = -3.264 deg
};
/END
-
If a pulse mismatch alarm is posted, you do not need to remaster. Just reset the pulse coder alarm from the mastering page by pressing F3 for RES_PCA. Then cycle power, set $DMR_GRP[1].$MASTER_DONE to TRUE, and calibrate from the mastering page.
If the robot post a message that it was calibrated, verify the mastering by jogging in world and confirming that the moves are straight and in the correct direction.
If that does not work, you should be able to quick master, but again, that should not be needed.
-
M1a mastering is a bit different than other robots did you follow the manual?
-
If a pulse mismatch alarm is posted, you do not need to remaster. Just reset the pulse coder alarm from the mastering page by pressing F3 for RES_PCA. Then cycle power, set $DMR_GRP[1].$MASTER_DONE to TRUE, and calibrate from the mastering page.
If the robot post a message that it was calibrated, verify the mastering by jogging in world and confirming that the moves are straight and in the correct direction.
If that does not work, you should be able to quick master, but again, that should not be needed.
It was kind of a wall of text but that is what I did when I said cleared the fault but everything was wrong.
-
M1a mastering is a bit different than other robots did you follow the manual?
Yep, took me a couple times. First I took me a minute to to figure out which mark was the mastering mark. the master marks and thin little scratch lines which were easy to see and normally the machine runs in an enclosure. What I ended up doing to to resolve the weird j movement issue was jogging it around the work area several times and that seems to get the servos back insync when I ran the quick master again. One I was able to that settle I set the user frame again and retaught positions. I keep getting close to having the machine running again but running it issues with the program. I didn't write the program and editing on the teach pendant feels kind of cumbersome, I would be nice if I could just type it out like with a traditional programming/script language. I'm going to to make a new thread for some guidance on that
-
*problem solved for me.
I experienced the same problem with new robot.
First i noticed that when i move j2 joint, j3 was also moving but there was no change in j3 values in pos screen and encoder values.
Then i tried to move the robot in world coordinate system. Robot was not moving linearly in world coordinate system. When i close to center of robot, it moves like linear but whenever i go far from the center robot moves parabolicly or like j shape.
Also we did shift test. In program i shift the robot 1 meter but when i measured the distance it was like 1.8m.
We tried every mastering method but didn't worked because problem was not the calibration. Even init start didn't work.
When we bought the robot we took image backup. After that fanuc service loaded to robot new software with special options.
We tought that software could be wrong. So we loaded the first image backup we took then problem solved.
If you don't have that image backup, fanuc service can provide to you.
Menu>status>version id. You can see the robot model. Even the robot model is correct your sofware could be wrong. Because order number of robot could not be supported by that sofware.
Now we are waiting for new software with the options.