I'm getting the message "port assignment is invalid." Also, I've looked through all my menus and can't find mention of flags anywhere. Is there an option or system variable that I need to enable?
Posts by TitusLepic
-
-
I don't currently have an autoexec program. After a bit of searching, I think I understand how to set one up. My question is on the UOP input. From what I'm understanding, UOP uses a physical connection on my input and output cards to trigger a specific function. I.e, I'm going to have to run a wire from an output to an input, map that input to UI[2], and write the autoexec program to keep that output high unless my hold condition is met? If that's what it takes, I can do it, but if there's a way to do it strictly in software that would be preferable.
Sorry about the ignorance on my part, I don't have a manual or any sort of advanced training.
-
I have an RJ3iB with a router. In my program, once I sent the spindle ON command to the router (DO) I have a wait statement that looks at the speed feedback (AI) from the spindle. Once the spindle is up to speed, the robot starts cutting our parts. The problem is that when the robot is in manual, if the operator releases the dead man the spindle turns off. When he restarts the program, the robot continues with it's motion without waiting for the spindle to come back up to speed. How do I make the robot so that no matter where it is in the program, if the spindle isn't up to speed, it won't move? This seems like it would be trivial to do with BGLogic, but unfortunately I don't have that option.
-
Racermike - line 66 jumps to lbl[R[29]], R[29] is set to 31 on line 77 or line 53.
Jseavers - thanks for the suggestion, I'll give it a try and see if the problem occurs again. -
When I toggle the outputs, the input sensors respond correctly.
Is there something that could cause the I/O to be simulated while the program is running? My main programs all call this one when they need a tool change - i.e, the production program will start at home with no tool, call Sel_Tool to pick up tool 1, make its cuts, call Sel_Tool to drop tool 1 and grab tool 2, go make its cuts, call Sel_Tool to drop tool 2 and grab tool 3, etc. It might work fine grabbing tool 1 and tool 2, then mess up when it goes to drop off tool 3. Or it might grab tool 1 and mess up when it goes to drop it off.
The most frustrating thing about it is that I can't reproduce the problem. The first two times it happened, I didn't find out about it until later. The last time it happened, the operator called me to the robot; RO[1] and RO[2] were OFF, RI[2] was OFF, I didn't think to check and see if anything was simulated. This problem only happens about once a week.
-
No, the problem is that RO[1] and RO[2] should be going on, but are staying off. When they stay off, the robot doesn't drop the tool and instead breaks the tool fork. Going into the I/O menu, I can see that they are off and that the sensor RI[2] is also off.
-
I have an RJ3iB running a router. When executing the tool change program, the robot will occasionally run through it with all of the motion and logic but seems to ignore any statements having to do with RI/RO. I.e, the following code will execute, but it seems to skip lines 48, 73, and 74 (our operator has always caught it and stopped the program at this point, but I'm assuming that it would also skip lines 82, 84, 87, 88, and 93). I have no idea why this is happening. I've tried to reproduce the problem and it always runs fine when I'm watching it.
Does anyone have any ideas what is causing this problem and how to prevent it?
Code
Display More1: !Change to world frame ; 2: R[34:UFRAME MEMORY]=$MNUFRAMENUM[1] ; 3: UFRAME_NUM=0 ; 4: ; 5: !Change to tool2 ; 6: UTOOL[1]=PR[11:TOOL NUM 2] ; 7: ; 8: !DEFINE APPROACH POSITIONS ; 9: JMP LBL[1] ; 10: !First Digit: Tool Number ; 11: !X00 Front Approach ; 12: !X01 Front Slow ; 13: !X02 Tool Location ; 14: !X03 Top Approach ; 15: !X04 Top Slow ; 16:L P[100] 100mm/sec FINE ; 17:L P[101] 100mm/sec FINE ; 18:L P[102] 100mm/sec FINE ; 19:L P[103] 100mm/sec FINE ; 20:L P[104] 100mm/sec FINE ; 21:L P[200] 100mm/sec FINE ; 22:L P[201] 100mm/sec FINE ; 23:L P[202] 100mm/sec FINE ; 24:L P[203] 100mm/sec FINE ; 25:L P[204] 100mm/sec FINE ; 26:L P[300] 100mm/sec FINE ; 27:L P[301] 100mm/sec FINE ; 28:L P[302] 100mm/sec FINE ; 29:L P[303] 100mm/sec FINE ; 30:L P[304] 100mm/sec FINE ; 31:L P[400] 100mm/sec FINE ; 32:L P[401] 100mm/sec FINE ; 33:L P[402] 100mm/sec FINE ; 34:L P[403] 100mm/sec FINE ; 35:L P[404] 100mm/sec FINE ; 36: LBL[1] ; 37: ; 38: !STOP SPINDLE ; 39: AO[1:Spindle Speed]=0 ; 40: DO[13:FORWARD spindle]=OFF ; 41: DO[14:REVERSE spindle]=OFF ; 42: DO[11:Tool Blowoff]=ON ; 43: IF DI[4:Rbt Not Home]=ON,JMP LBL[2] ; 44:L PR[2:NEAR HOME] 500mm/sec FINE ; 45: LBL[2] ; 46:J PR[3:SAFE] 100% FINE ; 47: WAIT AI[1:Speed Feedback]<10 ; 48: RO[1:TSD AND TAPER BLOW]=ON ; 49: ; 50: !SELECT DROP ; 51: R[29:DROP_PICK SELECT]=30 ; 52: IF R[30:TOOL DROP]<>0,JMP LBL[3] ; 53: R[29:DROP_PICK SELECT]=31 ; 54: LBL[3] ; 55: ; 56: !Load position data to PRs ; 57: LBL[4] ; 58: IF R[31:TOOL PICK]=0 AND R[29:DROP_PICK SELECT]=31,JMP LBL[6] ; 59: R[33:P SELECT]=R[R[29]]*100 ; 60: R[32:PR SELECT]=15 ; 61: LBL[5] ; 62: PR[R[32]]=P[R[33]] ; 63: R[32:PR SELECT]=R[32:PR SELECT]+1 ; 64: R[33:P SELECT]=R[33:P SELECT]+1 ; 65: IF R[32:PR SELECT]<20,JMP LBL[5] ; 66: JMP LBL[R[29]] ; 67: ; 68: !Drop tool ; 69: LBL[30] ; 70:L PR[15:FRONT APPROACH] 1500mm/sec FINE ; 71:L PR[16:FRONT SLOW] 500mm/sec CNT20 ; 72:L PR[17:TOOL LOCATION] 50mm/sec FINE ; 73: RO[2:UnClamp Tool]=ON ; 74: WAIT RI[2:Tool Unclamped]=ON ; 75: WAIT .50(sec) ; 76:L PR[18:TOP APPROACH] 250mm/sec CNT100 ; 77: R[29:DROP_PICK SELECT]=31 ; 78: JMP LBL[4] ; 79: ; 80: !Tool Pick ; 81: LBL[31] ; 82: RO[2:UnClamp Tool]=ON ; 83:L PR[18:TOP APPROACH] 1500mm/sec CNT100 ; 84: WAIT RI[2:Tool Unclamped]=ON ; 85:L PR[19:TOP SLOW] 500mm/sec CNT20 ; 86:L PR[17:TOOL LOCATION] 50mm/sec FINE ; 87: RO[2:UnClamp Tool]=OFF ; 88: WAIT RI[1:Tool Clamped]=ON ; 89: WAIT .50(sec) ; 90:L PR[15:FRONT APPROACH] 250mm/sec FINE ; 91: ; 92: !Final instructions ; 93: RO[1:TSD AND TAPER BLOW]=OFF ; 94:L PR[3:SAFE] 1500mm/sec CNT100 ; 95: JMP LBL[7] ; 96: ; 97: !Go Home ; 98: LBL[6] ; 99:L PR[3:SAFE] 1500mm/sec CNT100 ; 100:J PR[2:NEAR HOME] 100% CNT100 ; 101:L PR[1:HOME] 500mm/sec FINE ; 102: LBL[7] ; 103: R[30:TOOL DROP]=R[31:TOOL PICK] ; 104: UFRAME_NUM=R[34:UFRAME MEMORY] ;
-
I think this thread might help you: https://www.robot-forum.com/robotforum/fan…-into-register/
-
Did you teach your PRs relative to UF:0?
-
I've had this problem due to a loose connection between the card and the reader. Try holding a little pressure on the card to make sure you have good contact.
-
Thanks. The info on 6 & 7 was exactly what I was looking for.
-
Good morning,
I have an RJ3-iB robot and am trying to figure out how to set up touch sensing, mainly how to set up the schedule and the syntax for calling the search and offsets from my program.
In the touch schedule screen, I'm presented with these options:
1 Touch schedule
2 Master flag - I'm guessing this has to be on when I create & first run the program, and off the rest of the time?
3 Search speed
4 Search distance
5 Touch frame - What is a touch frame? I'm familiar with user frames and tool frames; assuming that a touch frame is the same thing (an xyzwpr offset from world 000000), why would I want this to be different than my user frame?
6 Search pattern - What is the difference between Simple, Fillet/Lap, V Groove, and OD/ID? When I use anything but Fillet/Lap, I get error THSR-013 "Illegal number of search"
7 Pattern Type - How many points in each plane do I need to search for each of these options? 1_D Shift, 2_D Shift, 3_D Shift, 3_D Shift & Rot, 2_D Shift & Rot, 1_D Shift & Rot
8 Incremental search - What does this option do?
9 Auto Return
10 Return Speed
11 Return Distance
12 Reference group - What is this?
13 Return term type
14 Contact record PR
15 Error on failure - I'm guessing that this throws a fault and stops execution instead of letting the program run with bad data?
16 Error register number - I've gotten plenty of errors while trying to figure Touch Sense out, but I've never seen any change in the error register. It's set to 32, I'm assuming that R[32] should have some value stored any time I get an error?
17 Robot group - I'm thinking that this has something to do with multiple robot control, is this correct?I've started on this with a simple 1D offset program.
J P[1] 100% CNT100
Search Start [1] PR[60] - I think that this is telling the program to use Schedule 1 and store the offset in PR60?
L P[2] 100 mm/s FINE Search[X] - I've noticed that the program disregards the movement part of this line - I.E, it will start searching from Position P[1] and ignore "L P[2] 100 mm/s FINE." Is this correct? I can't find a way to insert the search command except after a movement command, it seems odd to me that the movement command serves no purpose.
Search End
Touch Offset PR[60] - The way I understand it, the program should take the offset stored in PR[60] and adjust every position between this line and "Touch Offset End" accordingly.
L P[3] 100mm/s FINE
Touch Offset End
EndWhen I run me program with the Master flag set, the offset in PR[60] is 0,0,0,0,0,0. This seems right so far. When I move my work piece 10mm, remove the master flag, and run my program, PR[60] changes to 10,0,0,0,0,0. Again, seems right. However, when the robot moves to P[3], it goes to the same spot regardless of what the value of PR[60] is. What am I missing here?
Thanks.