Posts by JeffBO


    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,