Posts by JeffBO


    EthernetIP extended error codification is a standard, not Fanuc-specific. Here is the error description from an Hilsher documentation :

    0x126 | This extended status code is returned when the target device determines that the data
    segment provided in the Connection_Path parameter did not contain an acceptable number
    of 16-bit words for the configuration application path requested.

    I had similar experience with a Balluff device that needed extra configuration information to work. It's a list of bytes you should find either in the device's eds file, either in its documentation (you may have to mix both...).

    Fanuc EthernetIP menus can't handle this extra configuration bytes, so once you get the byte list, change the following system variables :

    $EIP_SC[x].$CONFIG_SZ = number of bytes in your list

    $EIP_SC[x].$CONFIG = byte values from the list

    where x is your device number from the Fanuc EthernetIP menu.


    Depending on your HMI's capabilities, you may have several solutions:

    - If your HMI has an Ethernet connection and support SNPX protocol, it can read/write your robot's DI, DO and registers like on a PLC. First, you'll need and ethernet connection beetween both and appropriate TCP/IP settings. Then, gather MARUIBHMI03031E manual (provided with handling tool manual) where you'll find SNPX setup, config and operation manual.

    - If your HMI doesn't support SNPX or doesn't have Ethernet capabilities, you can use fieldbus (modbus, profinet, etc.) and map your DI/DO accordingly from both sides.

    Hi Daneel,

    Fanuc says one port should be used for multi-purpose (remote i-pendant, etc.) and the the other should be dedicated to fieldbus communication. Using the other ethernet port on the controller could improve response time.

    Moreover, you could check system variables $ENETMODE.$SPEED :

    0 = 10 Mbps

    1 = 100 Mbps

    2 = auto speed -> preferred setting

    Hope this helps

    The only problem is that if i need more than one variable, for just that i have to burn a "Register" variable every time, and i have just 200.


    You can increase the limit of 200 registers :

    Controlled start > Menu > Program Setup > Numeric registers

    I set up the limit to 1000 on all my robots.

    Hope this helps.



    A solution from Fanuc to guarantee the type of offset you apply (Joint or cartesian), regardless how your positions has been taught:

    1 : Initialize a PR with the following code :

    PR[xx] = LPOS //--> Cartesian offset


    PR[xx] = JPOS //--> Joint offset

    2 : set all PR data to 0

    PR[xx] = PR[xx]-PR[xx]

    3 : Setup your offset values

    PR[xx,3] = 100 //--> Depending on your1st line of code, apply +100mm in Z axis or +100° in J3 joint

    4 : Use OFFSET PR[xx] or TOOL_OFFSET PR[xx] in your move instructions

    Hi Rahul,

    In a few words :

    TaskCreate : Task is executed "continuously" depending on the given priority level.

    TaskCreateSync : Task is executed every x.xx second. Priority level is 3000 (factory setting, can't be modified).

    Example :

    TaskCreate "MyTask",50,ExecuteATask()

    --> Function ExecuteATask() is executed once, with a priority of 50. You can have an infinite loop in your function.

    TaskCreateSync "MyTaskSync",0.5,bOverrun,ExecuteASyncTask()

    --> Function ExecuteASyncTask() is executed every 0.5 second.

    bOverrun=true : function is executed to the end, even if it takes more than 0.5s

    bOverrun=false : function is killed if not completed after 0.5s

    NEVER use infinite loop in such a function, otherwise your CPU will run out of resource.

    Hope this helps,


Advertising from our partners