The oldest robot I worked with is RJ3, don't know that you got this or not, but check you have sysvar "$ASCII_SAVE" if it's turned on, than the normal save creates an *.ls file...at least RJ3 have that variable.
Posts by moln4r
-
-
-
If i understand this correctly, than the offset must work that way you used it.
you can create a routine to set offsets for a position register, than you just call it anytime you want, to modify the PR you use:
create a program (in this case the name of the program is "SET_OFFS") what contains this:
1: PR[1,1]=AR[1] ;
2: PR[1,2]=AR[2] ;
3: PR[1,3]=AR[3] ;
4: PR[1,4]=AR[4] ;
5: PR[1,5]=AR[5] ;
6: PR[1,6]=AR[6] ;than in your main program do this:
1:PR[2]=LPOS ; <-- position register 2 now becomes the same value than the current position (Linear) of the robot.
2:CALL SET_OFFS(0,0,50,0,0,0) ; <-- Call the routine and set AR3 to 50 what sets PR1,3 Z axis in this case (1x,2y,3z) to 50mm offset.
3:L PR[2] 300mm/sec CNT100 Offset,PR[1] <-- so the robot in this line going to move 50mm + on the z axis from the current position. -
Hi everybody,In my case i have nothing, when i try to cycle power from Teach pendant
i have a popup, i select yes (for Cold restart) after that i get a message SYST-213 User Power cycle
after that, nothing. I wait for a while but still nothing and i can't navigate anymore on the TP Menu, the TP FreezeAnyone have an idea about a solution ?
It's an R30ib Controller
Thanks in advance
Yep I think it works like:
-Select what kind of start you want
-Cycle power manually.this works like this here on an R30iB MATE controller.
but we also have a R30IA (this one is not mate) there you can restart directly from the tp. -
Just a tip on the i/o config.
You can set up the correct rack/slot/start in the i/o page by pressing config, but it's maybe better if you delete all the i/o config, and set the $IOAUTOCONF variable to true, than restart the controller.It will check for the available i/o cards and configure them for you.
If you turn on a DO after that, you can check it works or not. -
If I understand this correctly you want to copy the program without the positions.When you select paste on the tp, there is an option "logic" maybe at key F3, that pastes the whole clipboard data but the positions are not pasted like:
J [P...] 100% Fine
So leave the old program as it is, paste the new one with the logic option, than add the correct number to the positions what you need.Than delete the old program part.
-
Thank you for your reply, yes I figured it out.My problem was I doesn't found out that the rack 48 is not "need" to be there it's just a factory setting by the robot...but now it's clear.
-
Hi guys!
The situation:
I'm programming a new cell what is very similar to one of our older ones, I can use the same inputs and outputs, but on the new one every output is shifted like what is do101 in the old cell its do121 in the new one.do121 is do 141 etc...All the inputs and outputs shifted 20 lines.
Can this be modified in the configuration?Thanks for any tips.
-
You can also add ACC option on the end of each movement line, and play with acceleration.
-
also it's possible you need to change the sysvar: ASCII SAVE to on
-
Hi!
LR Mate 200iD / R-30iB Mate / V8.30P
the situation is, we have a cell here where the handled parts are changed, everything is the same on the part, except its higher than before.
I'm sure I doesn't need to record all the positions again, and thinking about to change the tool frame but i'm also sure that this is not the right way to do this.It's just a "pick & place" like cell no any serious joint movements so the tool frame change doesn't really affect anything, but not the right way and it's frustrates me.
What is the correct way to offset the whole application -10mm on the Z axis?
Frames/Tool offset/frame offset/Program shift/program adjust? -
Really can't help, but here is one of our rj3ib controllers
-
Don't forget the program using the last $WAITTMOUT always, maybe you have more than one?
Also you can check the spark like this:
1: RO[4:GRIPPER CLOSE]=ON ;
2: WAIT RI[5:GRIPPER CLOSED]=ON
3: WAIT 0.1 sec
4: WAIT RI[5:GRIPPER CLOSED]=ON TIMEOUT,LBL[6] ;If this way it works, than you can start investigating for the spark.
-
Try:Skip condition R[1]=1
L P[1] 200mm/s Fine Skip LBL [888]
JMP LBL [999]
LBL [888]
L P[2] 200mm/s Fine Skip LBL [777]
JPM LBL [999]
LBL [777]
.
.
.
.
LBL [999]
R1=0
Go home or whatever...This way it works!Thank you so much!
So...
The robot moves to the point, than jumps to the desired label if the condition NOT met, but NOT moves to the point and skips the LINE IF the condition met.wow -
Hi!
So I think I missed something in the manual, because I don't understand whats happening or why
R-J3 v5.11
The situation is, I want the robot to skip a position if there was an error before.We hardwired a DI to the UO fault output.So when there is a fault DI12 turns on, what triggers a macro like this:Wait DI[12]=ON
R[1]=1Than In the main program I set it up like this:
Skip condition R[1]=1
L P[1] 200mm/s Fine Skip LBL [999]
L P[2] 200mm/s Fine Skip LBL [999].
.
.
.
LBL [999]
R1=0
Go home or whatever...But no matter what I do it's always skips to label 999 even if Register 1 =0...even tryed to test it with an input like
Skip condition RI[1]=ON
etc...etc
But skips again, even if RI1 never turns on!
What I'm missing guys? -
These are two examples, maybe from here you can solve your problem.
There are many ways to do the recovery for automatic. These are just basic ideas
I believe I's already answer this question with many more detailsThe only "problem" I see with my method is that after you run the macro, you (manually) have to call the main.
PROG_A PROG_B
' '
PR[1]=P(1) PR[1]=P(1)
PR[2]=P(2) PR[2]=P(2)
PR[3]=P(3) PR[3]=P(3)
PR[4]=P(4) '
PR[5]=P(5) L P(1)
' R[1] = 1
L P(1) L P(2)
R[1] = 1 R[2] = 2
L P(2) L P(3)
R[1] = 2 R[1] = 3
L P(3) END
R[1] = 3
L P(4)
R[1] = 4
L P(5)
R[1] = 5
ENDMACRO_A MACRO_B
IF R[1]= 1 JMP LBL (1) IF R[1]= 1 JMP LBL (1)
IF R[1]= 2 JMP LBL (2) IF R[1]= 2 JMP LBL (2)
IF R[1]= 3 JMP LBL (3) IF R[1]= 3 JMP LBL (3)
IF R[1]= 4 JMP LBL (4) '
IF R[1]= 5 JMP LBL (5) LBL 1
' L PR[1]
LBL 1 JMP LBL(99)
L PR[1] '
JMP LBL(99) LBL 2
' L PR[2]
LBL 2 JMP LBL(1)
L PR[2] '
JMP LBL(1) LBL 3
' L PR[2]
LBL 3 JMP LBL(2)
L PR[3] '
JMP LBL(2) LBL(99)
' END
LBL 4
L PR[4]
JMP LBL(3)
'
LBL 5
L PR[4]
JMP LBL(99)
'
'
LBL(99)
ENDYes, thank you for the help, this part is done, and it's working fine, the problem is after this, when i call the main program, it's not starts from line 1.
Also you can't use Positions in macros, at least not on rj3ib v6.30 for sure.Thats why I have the Homerun program.Thanks anyway! -
What controller is it ?,Just to be clear, if you select MENU, SETUP, do you get another pop up that reads Prog Select ? In case you do, what do you get when you select that ?
How do you your program selection ? You do it manually or you have a PLC ?
RJ-3 controller, I don't remember any "prog select" in the setup menu but I will check tomorrow.Program selection goes manually so
I start the main program, than if it stops for any reason, the operator need to hold down the stop button (CSTOPI not hold) what is triggering a macro, what calls the homerun program, than calls the main program again.Also tried to call the main program directly from the homerun prog but no luck....And also there was a try to change the problematic position a PR and set the PR in the homerun program like -->
Main prog example:10 PR [10]=P[8]
11 L PR [10] 200mm/s fineSo this way if the main program runs, than it goes to the problematic position.(P8)
But.
If the Homerun program triggered by the macro it sets
PR [10]=P[1] (P1 is the same position in both homerun and main)
So the homerun program sets PR10 to the same position (home)
What I tried to do with this is:
Main prg Coll detect on line 11 what is PR[10] -->
Macro triggers by operator, sends the robot to home position than sets PR[10] to the same position (home)
Main prog continue in line 11, where PR[10] is the same pos where the robot is, so goes to line 12 where I can send the main prog to label1 (line1) with an IF statement and a register set by homerun program like:
Homerun prg:
R[2]=1
Main Prg Continues:
11 PR [10] 200mm/s Fine
12 IF R[2]=1 JMP LBL [1]
But looks like when the main program coninues, it sets PR[10] Back to P[8] ...
So PRs are not global values?At that point I got really confused.... -
moln4rWhat you are doing with the points is fine, pretty much the only way to do it.
Just keep good track of the steps on that registerAs far as the macro
Could you tell us what if the system strucutre for your programs (other, PNS, etc)
How is the structure of your master program ?There is no PNS or RSR configured, honestly never used those...Found a link here on the forum to a nice article about the setup, but I can't find Program Select Mode in the sys/settings... maybe I'm in an older version.The robot is from 1999, v6.30 if I remember right.
-
-
Hi everybody!
I'm trying to create some auto recovery program but may I'm missing something...
We have an RJ-3/M6i robot where sadly the operator can take the part in a wrong angle to the fixture and the robot stops with collision detect later in a position.My idea was that I give a numeric value to a register after all the points in the program, and another program can handle the situation by checking that register... for example if the main program is in P[8] than R1=8 than the homerun program knows where the robot is than just jumps to a label and goes back home safely.
So what I want is when the operator presses a button than the robot goes home, in the right path of course, than restarts the main program.I created a macro what is waiting for the cycle stop UI[4] signal (aborting the main program) and when the button is held down for 2 sec calls the homerun prog....and everything works, the robot goes home, the same macro calls the main program, but no matter what I do, the main prog trying to continue from the line it stopped (with collision detect) ... what I'm missing?