You can change system variable $SHFTOV_ENB, If it is set to 1 you'll get coarse increments when holding the shift button, if you set the variable to 0 it will give you the finer adjustments you want.
Posts by dhumphries
-
-
Un punto tiene dos coordenatas la de herramienta y la de trabajo, los dos son utilizados para calcular el posicion en el control. Si entiendo su problema, no intendes como modificar el angulo de un punto que no es un punto ensenado pero un registro de posicion. En este caso un punto y un registro de posicion son iguales, los dos incluyen un offset de trabajo, y un offset de herramienta. La diferencia es que un registro de posicion no es ensenado, no puedes "touchup" un registro de posicion, sino el registro es calculado. Por ejemplo puedes ensenar un punto, y crear un registro de posicion que es exactamente 200 mm en la direccion +X. Tendras que investigar donde las coordenatas del registro son grabados, y modificar estos puntos, o la matematica que cambia los coordenatas.
-
Well I must be super lucky then I've done this type of translation on 5 different robot systems and I am able to translate a position register relative to the position register's user frame, not world. PR[i,j] wouldn't be very useful if it was only modifying relative to world.
-
Is there a way to enable skipjump, it is functionally the same, but logically inverted, however that doesn't mean it is as easy to work with:
skip condition DI1=on
p[1] skip lbl [1]
jump lbl [100]
lbl[1]
p[2] skip lbl [2]
jump lbl [100]
lbl [2]
p[3] skip lbl [3]
jump lbl [100]
lbl [3]
.
.
.
lbl[100]
versus
skip condition DI1=on
P[1] skipjump lbl[100]
p[2] skipjump lbl[100]
p[3] skipjump lbl[100]
.
.
.
lbl[100]
Skip jump seems much more efficient, and easier for someone to learn, why would Fanuc remove the skipjump function?
-
I've done this for loading parts on a machining center with multiple pallets, but only translated in x and y directions.
In theory you could do something like this:
!Part A ;
PR[2:work frame]=UFRAME[3:Part A] ;
UFRAME[2:Temp]=PR[2:work frame] ;
UFRAME_NUM=2 ;
UTOOL_NUM=2 ;
J P[1] 30% CNT100 ;
J P[2] 30% CNT100 ;
J P[3] 30% CNT100 ;J P[4] 30% CNT100 ;
J P[5] 30% CNT100 ;
J P[6] 30% CNT100 ;
!Part B ;
PR[13:OffsetWorkFrame]=PR[2:WorkFrame] ;
!Translate coordinate system 180 degrees about x axis ;
PR[13,4:OffsetWorkFrame]=PR[13,1:OffsetWorkFrame]+180 ;
!Translate coordinate system minus 1 unit in Y direction;
PR[13,2:OffsetWorkFrame]=PR[13,2:OffsetWorkFrame]-1 ;
UFRAME[2:Temp]=PR[13:OffsetWorkFrame] ;
UFRAME_NUM=2 ;
UTOOL_NUM=2 ;
J P[1] 30% CNT100 ;
J P[2] 30% CNT100 ;
J P[3] 30% CNT100 ;
J P[4] 30% CNT100 ;
J P[5] 30% CNT100 ;
J P[6] 30% CNT100 ;
You would have to teach user frame 3 as it relates to part A ( the lower left corner could be the origin) then copy the user frame you created to a position register and then copy the position register to a temporary user frame. Then teach the points in your program in user frame 2, when part A is complete copy the position register containing the information for user frame 3 to another position register, modify elements 4 and 2 of that position register and copy that new information to user frame 2, now all taught points are rotated 180 degrees and offset to the right, move to the same points as before.
I say this works in theory, but I'm not certain the robot will reach the points as intended, there may be singularities.
-
Mi primera lengua es Ingles, perdoname si mi explicacion no es perfecto. El tool offset te permite que puedes rotar la terminacion del alambre del soldador redondo de un solo punto. El offset de trabajo es un coordenada con respeto a la direccion de la parte que el robo esta soldando. Por ejemplo si tinenes dos fixtures en un angulo de 45 grados puedes ensenar un offfset de trabajo por cada uno de los fixutres para que cuando mueves el robo por la largura del fixutre siempre es en la direccion de X. El offset de trabajo por un fixture sera offset 1 y el offset de trabajo por el otro sera offset 2. Asi es mas facil ensenar puntos que estan en una linea con respecto al fixture.
What I'm trying to say in english is that the tool coordinate system is relative to the end of the welding wire, setting the tool coordinate allows you to predictably jog the angle of the welding gun without the tip moving. The work coordinate systems allow you to setup multiple coordinate systems in relation to the workpiece, for example if you had two welding fixtures at 45 degrees you can setup 2 coordinate systems so jogging from left to right along the length of the fixture is an X+ move .
-
.eds is the file for ethernet/IP and I believe ethernet/IP is the standard communication protocol on the R30iB. Your robot could have devicenet and/or others, but they would be options.
-
I am working on an application using a robot for grinding, I want to be able to turn off the grinder and retract the robot from the grinding wheel then wait for an operator to recover in the event of a loss of air pressure, or other error. I currently have the robot programmed using a condition monitor looking at a DI for air pressure, the condition monitor program calls a program that turns I/O off, but I can't program any motion or call another program that has motion because the motion group is locked by the main program.
I believe the Skip Jump function described in the programming manual might be the way to go about programming this:
7.3.16 Skip Jump
The SkipJump motion option is available to all tools. Its functionality is similar to the function of
Skip Label, except that the action is the reverse of that of Skip Label motion option.
SKIP CONDITION [I/O] = [value]
J P[1] 50% FINE SkipJump, LBL[3]I have not found the correct combination of soft keys and menus to use the SKIPJUMP function, it doesn't seem to exist in my control, I have found the functions for SKIP CONDITION and SKIP LBL, but SKIPJUMP eludes me. Can somebody tell me where I should be able to find the SKIPJUMP function, or if I have to enable the function in the parameters somewhere?
Finally, I'm not super thrilled about having to add the skipjump, LBL commands to every line of motion in the program, I really like the idea of using the condition monitor where a branch program is called, I just can't figure out how to manage the motion part. Any advice would be appreciated.