January 17, 2019, 09:36:00 PM
Robotforum | Industrial Robots Community

 Settings to make Fanuc programming easier (From all of us)

Author Topic:  Settings to make Fanuc programming easier (From all of us)  (Read 15435 times)

0 Members and 1 Guest are viewing this topic.

February 05, 2017, 04:50:09 PM
Read 15435 times

Fabian Munoz

Hello all
I wanted to do this for a long time. A compilation of information that generally takes hours to find on manuals (if you can find them)
This is a contribution from of all us

I will collect the info from posts that I find beneficial (You can PM to help me)
I'm going to try to keep clean, just info, no comments, no thanks , just pure info
It will be and sticky and it will be locked.

On my first day collecting information I realized that's almost impossible to do it without modifying the original post. That brings the point that I should not copy and modify somebody post without the author permission. I'm just writing the author name to clarify where the info came from. For more clear details just search for the actual post


Linkback: https://www.robot-forum.com/robotforum/index.php?topic=22294.0
« Last Edit: February 06, 2017, 09:57:35 PM by Fabian Munoz »
  • Like    Thanks

Today at 09:36:00 PM
Reply #1



February 05, 2017, 04:51:04 PM
Reply #1

Fabian Munoz

From Nations, lexx905

  0    process I/O boards (also memory image)   
16    AB or Genius I/O   
32    Slave SLC2 I/O   
33    internal relay/register   
34    flag marker   
35    always on/off port   Slot 0 = OFF Slot 1 = ON
36    DCS port   
48    address mapped I/O for LR Mate Peripheral connectors
64    ME-NET   
65    INTERBUS-S   
66    PROFIBUS DP master   
67    PROFIBUS DP slave   
68    FL-net   
69    FL-net status   
70    InterBus-S master   
71    InterBus-S slave   
72    IO-LINK II master   
73    IO-LINK II slave   
74    FIPIO master   
75    FIPIO slave   
81    first DeviceNet board   
82    Used by DeviceNet   
83    Used by DeviceNet   
84    Used by DeviceNet   
85    controlnet; also used 86   
86    Used by ControlNet   
87    RoboWeld   
88    Ethernet Global Data (GE-EGD I/O)   
89    EthernetIP (ControlNet over ethernet) I/O   
90    Arclink Rack Number   
91    WTC Serial Weld Controller I/O   
92    CC-Link RD   
93    InterBus PxC PCI master   
94    InterBus PxC PCI slave   
95    InterBus PxC PCI cmd   
96    Modbus TCP   
97    TOYOPUC PC3J Interface   
98    InterBus PxC Slave interface   
99    PROFINET I/O Controller   
100    PROFINET I/O Device
106    EtherCat
« Last Edit: February 10, 2017, 12:51:08 PM by Fabian Munoz »
  • Like    Thanks

February 05, 2017, 06:03:58 PM
Reply #2

Fabian Munoz

From  soenderhegn

To stop running program do these steps.

Step 1. UI8 enable =OFF and program Will stop.
Step 2. Pulse UI4 Cstop 200 ms and main program will start from first Line
Step 3. Send new job from plc.
Step 4. Pulse UI start 150 ms an program Will restart when UI start goes low
« Last Edit: January 10, 2018, 03:56:58 PM by Fabian Munoz »
  • Like    Thanks

February 05, 2017, 06:47:09 PM
Reply #3

Fabian Munoz

From  HawkME, dmbj, scotty, Jaycephus

There are a few options for "zones".

1) is reference positions, standard feature, which are not cubes, but a recorded point with joint angle tolerances. If you open up the tolerances you can create larger zones of varying shapes, but it may be hard to visualize.
2) is space check, paid feature, which is a true zone function like you would expect.
3) is DCS, paid feature, which the main purpose is for safety, but does allow you to create zones that do not trigger any stop functions, just turn a bit on or off.
4) is create your own program using $MCH_POS, LPOS or JPOS to determine the current position.

I believe MCH_POS only updates in auto mode and outputs in world coords, you would have to test this. LPOS outputs in whatever the current UF & UT is, so if you want it in world, then set UF to 0 just before reading LPOS. Also, keep in mind that if the move prior to LPOS is CNT it will trigger LPOS before the move is complete.

Set $SCR_GRP[1]$M_POS_ENB to true and use the variable:
$SCR_GRP[1].$MCH_ANG[1] replace the 1 with what ever axis you want to monitor
$SCR_GRP [ 1 ].$MCH_POS_(X/Y/Z/W/P/R) to tell my PLC the robot positions in the world.

1) $SCR_GRP[1].$MCH_ANG is live and is a functional replacement for JPOS, and is faster if you just want a single joint, as you have mentioned already.
2) $SCR_GRP[1].$MCH_POS_(X/Y/Z/W/P/R) is not live, and is in World coords only, as you mentioned, BUT it only updates at the point of a move command when running a program (auto or manual execution).

So, to effectively $MCH_POS_(X/Y/Z/W/P/R) as live data, after a manual jog may have occurred, you would need to assign JPOS or all of the $SCR_GRP[1].$MCH_ANG angles to a PR, move to that position (zero motion to current position), and then the $SCR_GRP[1].$MCH_POS_(X/Y/Z/W/P/R) values will be updated to current.

(LPOS and JPOS would be usually preferred, but I have a configuration-issue that makes LPOS and JPOS fault out, currently, so I looked into using these System variables as alternatives.)
« Last Edit: January 09, 2018, 12:43:09 AM by Fabian Munoz »
  • Like    Thanks

February 10, 2017, 12:50:30 PM
Reply #4

Fabian Munoz

« Last Edit: February 12, 2017, 01:37:07 PM by Fabian Munoz »
  • Like    Thanks

February 12, 2017, 01:36:24 PM
Reply #5

Fabian Munoz

From Racermike123

This alarm occurs when the robot positional data that is stored in the CPU does not match the positional data of the pulse coders.
Mastering is not necessarily required but it could be. As in the instance of restoring an image that has different mastering data.
I suggest jogging the robot to zero and verifying the witness marks. If all is OK RES_PCA, cycle power, set $DMR_GRP[1].$MASTER_DONE=TRUE, and calibrate

  • Like    Thanks

March 18, 2017, 08:45:10 PM
Reply #6

Fabian Munoz

From Racermike123
  • Like    Thanks

Today at 09:36:00 PM
Reply #7



January 09, 2018, 12:48:46 AM
Reply #7

Fabian Munoz

From  Jaycephus,stare284

FANUC Robots have a gigantic list of system variables, many of which are normally aren't meant to be accessed, and may not be documented for one reason or another. Many are for internal use and are read only, but some dramatically affect performance and are writable, at the least during Controlled Start, if not normal Start.

System Variables that affect performance:
$Group[1].$USEMAXACCEL - enables 'fast acceleration' feature
$Group[1].$MAX_SPEED - Not described in manual
$MCR_GRP[1].$fjog_enb - Fast Jogging Mode Enable
System Variables for Status
$MCR.$GENOVERRIDE:       This is the system variable that changes when you hit the +% and -% buttons.
The value must be decoded, according to the software reference manual, it is bit coded as follows:
     1   MFS_EMGOP
     2   MFS_EMGTP
     4   MFS_DEADMAN
     8   MFS_FENCE
   16   MFS_ROT
   32   MFS_HBK
   64   MFS_EMGEX
  128  MFS_PPABN
1024  MFS_FALM
Other System Variables (some of these can be set from System:Config, or other places in the interface.)
$CR_AUTO_DO - set for DO to indicate robot is in Auto, integer in the range of configured DO
$CR_T1_DO - set for DO to indicate robot is in Teach mode, integer in the range of configured DO
$DMAURST = TRUE - Auto Deadman reset. Teach pendant resets robot faults, enables servos as soon as deadman switch pressed when in Teach mode (T1).
$GENOV_ENB = TRUE - Speed override enabled.
$SCR.$RUNOVLIM: will control the speed globally in any program during T1 non-step mode and i believe fully automatic. So even if you set an override in a TP program higher than this system variable, the system variable will override it.
$SCR.$JOGLIM:   The percentage of system maximum speed you can jog the robot. maximum of 250mm/sec. (applies for T1 non-step and step)
$SCR.$JOGOVLIM: The global override for non-step mode T1 speed. Careful with this one as if you turn it to 100 you may see a fault occasionally because it reaches over 250mm/sec.
$SCR.$COLDOVRD:        Default speed set when you reboot the robot.
$MCR_GRP[1].$PRGOVERRIDE: - this is a programmable/secret scaling factor for override, affects programs to make them run slower even though the General Override is set to 100%. (default=100=100%, full speed)
$PARAM_GROUP[1].$SV_OFF_TIME - allow setting timeout for brake activation, per axis, as in after jogging and holding deadman. By default, brakes activate after 20 seconds.

These are only writeable when the SFSPD signal is OFF. (Either change in Control Start mode, or set SFSPD off.)
$SCR.$SFRUNOVLIM:       PROGRAM RUN OVERRIDE LIMIT (in T1 mode, use to allow 100% manual Run mode)

*Though these manual-mode jog and run speed changes can massively speed up your development time, I recommend setting them back to original settings when putting the robot into service. Inexperienced or average users could crash the robot much more easily.

$SHELL_WRK.$curr_line   contains the current line value
« Last Edit: August 22, 2018, 01:16:46 PM by Fabian Munoz »
  • Like    Thanks

August 22, 2018, 01:14:27 PM
Reply #8

Fabian Munoz

From Nation

In solid works, you have to setup a coordinate system to match the faceplate coordinate system, then output the COG and the moments of inertia about the COG in that coordinate system. You only need the principal axis, boxed in red in the attached image. You also need to convert solid work's output from grams*mm2 to kg*m2.

If you want to do it by hand, the HandlingTool manual goes over how to calculate moments of inertia in the payload section.
« Last Edit: August 22, 2018, 01:16:03 PM by Fabian Munoz »
  • Like    Thanks

October 07, 2018, 12:37:21 AM
Reply #9

Fabian Munoz

From bmello


WHEN DI[1]=(1), UI[2: HOLD]=PULSE, 0.2SEC    Hold program with UOP
PR[1]=LPOS      Write current cartesian point to position register
R[1]=1    Set register to indicate program was paused (will be used in TP program)
UI[4: CSTOPI]=PULSE,0.2SEC      Abort program UOP
UI[5: RESET]=PULSE,0.2SEC      Fault reset UOP
UI[18: PRODUCTION START]=PULSE,0.2SEC    Production start UOP


IF R[1]=1 JMP LBL[2]      If last program was aborted
IF R[1]=0 JMP LBL[3]      If last program was not aborted

L P[1: POUNCE] 250mm/s CNT50
SET R[1]=0
L P[2: HOME] 250mm/s FINE

L P[1: POUNCE] 250mm/s CNT50
L PR[1: PROC_START] 250mm/s FINE  Using the PR that was saved when the program paused
L P[2: PROC_END] 100mm/s FINE
L P[1: POUNCE] 250mm/s CNT50
L P[1: HOME] 250mm/s CNT50
  • Like    Thanks

Share via facebook Share via linkedin Share via pinterest Share via reddit Share via twitter