Hi,
Use multiple networks.
Put either Ethernet/IP or vision-process into another sub-net/port.
On R30iB(Plus) controllers, you may be able to use the dedicated fanuc vision port for YOUR vision process.
Best regards
PnsStarter
Hi,
Use multiple networks.
Put either Ethernet/IP or vision-process into another sub-net/port.
On R30iB(Plus) controllers, you may be able to use the dedicated fanuc vision port for YOUR vision process.
Best regards
PnsStarter
Hi,
Quote
My question is simple, is it possible to index a system variable
No you can't.
You have to code it by hand with select/case and/or LBL/JMP LBL
e.g.
For [R189:Index]=1 to 255
JMP LBL[R[189]]
...
LBL[1]
$PLST_GPR1[1].$Payload=R[190:Value_Payload]
..
JMP LBL[1000]
...
LBL[255]
$PLST_GPR1[255].$Payload=R[190:Value_Payload]
...
JMP LBL[1000]
LBL[1000]
ENDFOR
Display More
you can also use a sub program(with select case inside) for setting vars
e.g.
best regards
PnsStarter
Hi i_robot72
in the past I always used the "$MC_PATH" variable for this, which only exists on virtual robots.
You can intercept with Karel if this is present.
But in TP this is not possible.
Since some time I use in TP for this : "$NULL_CYCLE"
On a virtual controller this is normally zero and does not change!!!
On the real controller it changes its value between MinINT and MaxINT.
So you can check this against zero to determine that the controller is virtual.
Best regards
PnsStarter
Very good point! I'm going to try this on the actual robot and see if it has to do anything with that actually. Because before I remember my bytes being in big-endian format but when running it on the virtual robot it is in little endian which is really weird. But that could account for the wrong end of the information taken. Why would the virtual robot use little endian while the robot pendant itself use big endian?
Yes. it is like you said.
I believe it's because the real controller is based on fanuc's "more unix like" os and/or processor type.
The virtual controller runs "inside"windows X86/64..
Hello,
if you have roboguide installed, check this folder:
"c:\ProgramData\FANUC\FRVRC Media\V9.40\product\gige\"
check the ".cam" files e.g. b_aca1920_48gm.cam --> acA1920-48gm
.. so this is a "compatibility list" for your specific Controller-Version (V9.4,V9.1)
You can also check the FR or MD device at the real controller for ".cam" files
I tried that by myself.
First I borrowed and then bought a camera from a "basler" reseller.
Best regards
PnsStarter
Hi StoopidEngineer,
a lot of people are using ultraedit. I think there are a couple of "highlighters" available.
Or you can use vs code or vs codium . Plugins are available.
But don't expect too much. Fanuc's TP is not very TXT-file-friendly:
- Comments may or may not be shown inside the ls file
- Indirect arguments
- line numbers...
...
best regards
PnsStarter
Hi DZonzi,
yes it is possible.
Use a macro(with a DI to execute)
within your (macro)program use the INC instruction .
..
PROGRAM MACRO_X+
PR[x] = 10,0,0,0,00
PR[y] = LPOS
L PR[y] 20mm/sec Offset PR[X] INC
...
think about safety, frames, feedback etc!!
Hi,
at real robot:
Create a program.
Teach one point at the left side(table surface) in front of the robot.
--> P[1]
Move(instruction) the robot with an offset of 500mm(1000mm) to Y-, measure.(WORLD COORD)
!PR[1]= 0,0,0,0,0,0
!PR[1,Y]= -500
J P[1] 25% fine;
L P[1] 100mm/sec fine Offset PR[1];
Is your measurment result ~500mm ?
No? --> Mastering,Calibration is not correct.
By the way , why did you master the robot?
Best regards
PnsStarter
Hi,
As gpunkt wrote:
Check your tool frame!
best regards
PnsStarter
I believe Background Logic was introduced in
R-J3iC (R30iA) --> V7.x
Hi CSpark11,
I believe the limits of the limit check are stored inside the .vd file...
You can create a second vision process. A copy without the limit check.
When GET_OFFSETfails check with the second tool if part is present...
Best regards
PnsStarter
Hi Jhon,
you need the 4D-graphics option(r764) on controller.
The 4D Edit software (RG plugin or stand alone software) is needed to create the TOOLING4D.XML, WORKCELL4D.XML and "yourCadData".POD files.
These files will be loaded to 'FR:' through LOADTPGL.CM, FTP or manually.
Best regards
PnsStarter
Hi Vadimas,
I believe it is in your hands.
you can check the value befor writing to GO...
best regards
PnsStarter
Hi joshrice1,
Background logic can't lock a motion group!
create one or more tp programs that will move the group to the needed position(s).
(Maybe with a Skip Condition inside for the DI)
Start these programs via Manual Function or DI...
check out if this is a "safe" solution!
best regards PnsStarter
As HawkME wrote: "J2 & J3 will jog together to roughly keep the faceplate parallel to the ground, or matching it's current orientation."
but maybe you can use something like this:
--- $MOR_GRP[1].$current_ang[9]
Minimum: 0 Maximum: 0 Default: 0 KCL/Data: RO Program: RO UIF: Not
available CRTL: Not available Data Type: REAL Memory: Not available
Name: Current Angle
Description: Indicates the joint angles, in radians, of the output of the filter. This is the motion
command to the servo system.
Power Up: Data is updated dynamically by the motion system. At a cold start, this variable is
reset to its default.
Screen: POSITION
---
$MCR_GRP[1].$forceupdate
Minimum: Not available Maximum: Not available Default: Not available KCL/Data:
Not available Program: RW UIF: Not available CRTL: Not available Data Type:
INTEGER Memory: Not available
Name: Update current angle with machine puls
Description: Do not change this system variable. 0 : NOTHING 1 : PUT ON ECC BIT AND
FORCE UPDATE $MOR_GRP[].$current_ang WITH MACHINE PULSE.
Power Up: Changes to this variable take effect immediately
----------
I have never used this "in the wild" , and I don't know about the update timing or "stability"
---
4: R[7:temp]=$MOR_GRP[1].$CURRENT_ANG[1] ;
5: R[1:J1]=R[7:temp]*57.2958 ;
6: R[7:temp]=$MOR_GRP[1].$CURRENT_ANG[2] ;
7: R[2:J2]=R[7:temp]*57.2958 ;
8: R[7:temp]=$MOR_GRP[1].$CURRENT_ANG[3] ;
9: R[7:temp]=R[7:temp]*57.2958 ;
10: R[3:J3]=90+R[2:J2]+R[7:temp] ;
11: R[7:temp]=$MOR_GRP[1].$CURRENT_ANG[4] ;
12: R[4:J4]=R[7:temp]*57.2958 ;
13: R[7:temp]=$MOR_GRP[1].$CURRENT_ANG[5] ;
14: R[5:J5]=R[7:temp]*57.2958 ;
15: R[7:temp]=$MOR_GRP[1].$CURRENT_ANG[6] ;
16: R[6:J6]=R[7:temp]*57.2958 ;
Display More
::: "57.2958" factor, convert from radians to degrees
- ADD a "constraint" to Axis3-OutputRegister
8: R[7:temp]=$MOR_GRP[1].$CURRENT_ANG[3] ;
9: R[7:temp]=R[7:temp]*57.2958 ;
10: R[3:J3]=90+R[2:J2]+R[7:temp] ;
- Connect the register via OPC...
best regards
PnsStarter
Hi,
I believe RJ2 controller does not support Argument/Parameters ! And because of that the compiler for that version does not know the "GET_TPE_PRM" builtIn..
Best regards
PnsStarter