Hey Theo.G,
I PMed you. I'll try to help
Hey Theo.G,
I PMed you. I'll try to help
Hopefully your controllers can have this, but we used R762 Ethernet Encoder. You set it up and one encoder works for multiple robots.
You have to set up a DCS cartesian position check for this. You will look at robot model and User model for your tool/part.
#1 thing is your User model cannot overlap with the robot model. You have to make your tool model start away from the faceplate.
#2 under method in the CPC, you are going to choose Target Model Collision.
And
$WAITTMOUT = 1000 (is a 10 second wait, that's the tough part)
WAIT DI [1] = ON or Di[2] = ON TIMEOUT, LBL[1]
JMP LBL[2]
LBL[1]
"what to do if no DI in 10 seconds"
LBL[2]
"one of the 2 DI's came on"
First thing I would do is make sure you put the User frame data into the PR as cartesian.
$PR_CARTREP = 1
PR[210:Uframe5] = Uframe [5]
Then you can manipulate PR[210] X,Y, or Z all you want, And stuff it back into the userframe.
(And then switch cartrep back to Zero if it causes other issues).
Change line 9 to Joint, Line 10 to linear. With offsets and linear it will take the shortest route. By making the line 9 move above a Joint, it will use your taught pose with the offset applied.
"Zero out your offset register, in Linear"
PR[10:offset] = LPOS - LPOS
"Now create your offset"
PR[10,1:offset] = GI[1] * R[... X spacing]
PR[10,2:offset] = GI[2] * R[... Y spacing]
"apply it to your point"
L P[1:set part] 100mm/sec fine, Offset PR[10:offset]
Make sure you apply to the above coming in and the above going out also.
Fun with math....
ACE,
here's a way to get zero speed, before they had 0 speed. Dirty deeds done dirt cheap. LOL
I wanted the Yellow collaborative to “stop” when red zone was broken. MCR_GRP[1].$PROGOVERRIDE is a multiplier of gen override, usually set 100. I set MCR_GRP[1].$PROGOVERRIDE to 10, and $MCR.$GENOVERRIDE to 1, can’t see it moving. Set it back when the zone is clear.
1st the switch you are using has 1 NO and 1 NC contact, and it is not safety rated. "I'm following the instructions of my boss, who is our current robot programmer." Well he should know better.
None of what you are attempting is safety rated, all I will say is will your Boss jump in front of the bus when it comes. Because it will come.
We are talking Human safety here, it will not/can not be done with a 20 dollar non-safety push button and programming.
DCS at the least, dual channel safety rated deadman device, with a 0% speed tied in through DCS speed check is doable.
We would utilize light curtains/area sensors with DCS position checks, a 0% speed in background if the operator entered the area, and a DCS speed check. Of course only the future of our company as an integrator relies on the operators safety.
With 43 years of industrial maintenance and robot programming/installation background I can tell you when the $#!t hits the fan, YOU will be the fall guy. I'm sorry, it needed to be said and it's not meant as a slam against you ACE.
You can also create the Roboguide from a backup. From the RG (robot tab) open one of the web browsers, robot tools/comment tool.
When your done file/backup AOA. Go grab the DIOCNFGSV.IO from that backup and manually load into the robots
Try "per unit load", it looks at R[13:current pallet done] to set next cycle
We had it on 2 M1000's, same reply from Fanuc......
If you used a normal "layout" here you could use a counter based picking, starting at Zero.
R[54:col] = (R[50:count] div R[57:row max]
R[53:row= (R[50:count] mod R[57:row max]
Tiers (or layers) takes a little more
R[60:Tier] = (R[50:Count] div (R57:Row max * R[58:col max]))
R[61:Parts on Layer] = (R[50:Count] mod (R57:Row max * R[58:col max]))
then row and column would be.....
R[54:col] = (R[61:Parts on Layer] div R[57:row max]
R[53:row= (R[61:Parts on Layer] mod R[57:row max]
I like rows/columns *Row spacing/column spacing for offset calculations. Only 1 taught point.
But I can't come up with a matrix for your picking sequence, other than a hard coding.
Assuming the Yellow is the "row number"
and the pink is "column number"
1: LBL[1] ;
2: IF R[51:Place#]<>1,JMP LBL[2] ;
3: R[53:Row]=0 ;
4: R[54:Col]=0 ;
5: JMP LBL[99] ;
6: ;
7: LBL[2] ;
8: IF R[51:Place#]<>2,JMP LBL[3] ;
9: R[53:Row]=1 ;
10: R[54:Col]=0 ;
11: JMP LBL[99] ;
12: ;
13: LBL[3] ;
14: IF R[51:Place#]<>3,JMP LBL[4] ;
15: R[53:Row]=0 ;
16: R[54:Col]=1 ;
17: JMP LBL[99] ;
18: ;
19: LBL[4] ;
20: IF R[51:Place#]<>4,JMP LBL[5] ;
21: R[53:Row]=2 ;
22: R[54:Col]=0 ;
23: JMP LBL[99] ;
24: ;
25: LBL[5] ;
26: IF R[51:Place#]<>5,JMP LBL[6] ;
27: R[53:Row]=1 ;
28: R[1:Stop]=0 ;
29: JMP LBL[99] ;
30: ;
31: LBL[6] ;
32: IF R[51:Place#]<>6,JMP LBL[7] ;
33: R[53:Row]=3 ;
34: R[54:Col]=0 ;
35: JMP LBL[99] ;
36: ;
With a BG_LOGIC program, do what AlanL said. Then under setup, BG_LOGIC, put your program name in and F2 RUN
Just has to be mixed logic with the parenthesis.
I hate to ask, but did you format the card with the robot?
I would try going into controlled start/maintenance,/manual setup and setting it to Path Priority and see if that affects your speed change. The robots are default set to cycle time priority.
Not directly, But you can load the 6 data's individually. You would have to break the PR out into registers, then...
I'm curious though, why do you want to do this.
I have applied the above to taking rotation out of the VR and applying it in a tool offset on R.
You have to CALL USERCLEAR as Energy Addict said before posting. Or I prefer where you call the command to put spaces in so it will post center screen, Do the message command, enter nothing in it.
message[...]
message[...]
message[...]
message[...]
message[...]
message[Hang up the teach pendant cable Dumass]
message[...]
message[...]
message[...]
message[...]
message[...
The system should do what you are trying to do. 1 image RunFind, then it will do GET OFFSET until there are no more parts.
BUT, do you have the process looking for more than 1 part in the top of your tree, default is 1 i think. Check that out Remigijus
Also check out the Sorting function, you can determine the order of picking.