CNT not working with PRs

  • Rj3iA controller.


    I'm new to Fanuc, although this robot is already up and running. Since day one I haven't been able to get a continuous motion using PRs. I can't use Ps since everything but three points are variable.


    Here's a snippet that is not working as intended. The controller is executing all these points as FINE.


    All points are defined and used above all of this.


    PR[1] = P[2]
    PR[1,3] = R[6]
    PR[1] R[2]mm/sec FINE


    PR[5] = P[1]
    PR[5,3]= R[6]
    PR[5] R[2]mm/sec CNT50


    PR[2] = P[3]
    PR[2,3]= R[6]
    PR[2] R[2]mm/sec FINE


    Also, I created a new program using just these lines and the points, and there's no difference whatsoever.


    I found this thread about locking PRs, of which I had no idea, but moving all the assigments above and placing the three movement instructions between LOCK PREG and UNLOCK PREG doesn't change anything. Do they need to be locked way before the program steps in those lines? Maybe putting the assignments as far as possible from the movement instructions?


    There's a similar cell with an R30iA that is using CNT PRs all over the place, working perfectly. There's no LOCK PREG and all these PRs and Rs are being updated constantly. Does it have something to do with the controller?

    Edited once, last by vmec ().

  • What kind of controller do you really have? There was an RJ3 and a RJ3iB, but no RJ3iA.


    Do you have the constant path option installed? Without that, the robot will take a different path based on speed. At 2 mm/sec, you may not see any difference if you don't have constant path.


    Why are your speeds so low?


    What's the application?


    What is the mechanical unit? (Is it a M-410 or an LR Mate?)


  • What kind of controller do you really have? There was an RJ3 and a RJ3iB, but no RJ3iA.


    Sorry, mistake. Rj3iB dated 2001.



    Do you have the constant path option installed? Without that, the robot will take a different path based on speed. At 2 mm/sec, you may not see any difference if you don't have constant path.


    Why are your speeds so low?


    No. R[2] is a register in which I hold a global speed for certain movements. It is 2000mm/sec in this case.



    What is the mechanical unit? (Is it a M-410 or an LR Mate?)


    R-2000i 165F.



    Try changing from R[2]mm/s to a constant value.


    Thanks for this. No luck though. I removed R[2] for 2000mm/sec, and enclosed these in between LOCK and UNLOCK. It still goes for a FINE movement.

  • try with CNT100,
    try with P[] (not PR[])
    do you see some difference?


    if you are using register for setting speed, you can change variable $RGSPD_PREXE=1 , it's for better pre-execution.

  • I did test that before, with no result. CNT0 is the same as CNT100. I'm thinking Accupath or whatever it is isn't considering these PRs.


    As I said earlier, changing PR to P works. Motion gets interpolated and changing the CNT curve changes the movement, so CNT with fixed points work as expected.


    I will try setting that variable tomorrow, although it is not very safe to do that, right? Take into account I'm using registers as height offsets.

  • could you control this variable during the program is running: $IDL_CPU_PCT (not sure this variable was available for RJ3iB)
    if the value is less than 10, cpu is very busy and could have some problem to calculate pré-execution, and if it cannot calculate pré execution CNT have no effect


    if you are using multitask , try only with one task

    Edited once, last by pyrioun ().

  • if you have ACCUPATH option, you can disable it (please do a backup AOA before change variable)
    to disable it:
    $CJCFG.$ENB = FALSE
    $VCCFG.$DISABLE = TRUE
    Try again your program
    to reenable it:
    $VCCFG.$DISABLE = TRUE
    $CJCFG.$ENB = FALSE

  • Necroposting, but I want to post this for the record.


    Thanks for the suggestions pyrioun; unfortunately they didn't work. Most, since there were some I was too afraid of trying :icon_wink:


    They moved the robot cell and I had the time to test these. I still don't know where the problem was, but I recreated the original TP program line by line in a fresh new program, and the continuous path worked. I discovered this since a simple two point program did use interpolation so, clearly, the controller was capable of using it.


    There must be some property sheet that was permanently changed and excluded that program from using that path processor.

  • Vmec, did you ever figure out what it was? I am having the same issue. Did you just copy the program with a new name or did you literally re-write each line?

Advertising from our partners