Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

SMC_Interpolator + SMC_controAxislbyPos

  • axilleas - 2024-02-05

    dear all

    I am working on a very generic gantry system (virtual drives + win v3 control) reading gcode from external file.
    In order to stop the interpolator function from running when gaps are detected, SMC_controlAxisByPos FB has the bStopIpo output which according to the manual is connected to the Interpolator's bEmergencyStop.
    Lets assume that the axis are parked in position X1000 Y1000 and the initial G code movement is G00 X500 Y500. The normal behavior is to travel from the actual x1000 y1000 to G00 X500 Y500.
    The SMC_Interpolator always gets the X0 Y0 as the initial position, meaning that the bStopIpo is active until the axis are in X0 Y0 and the release the interpolator to set the new positions to X500 Y500.
    Is there a suggested method to solve this behavior?

    bonus question: I get a lot of bStopIpo during standard interpolation movements (not gaps). While working with virtual axis this is not a problem but when real axis are installed this will be an issue. What exactly triggers the bStopIpo output? Slow axis accelerations compare to Gcode defaults?

    Kind Regards

  • tk096 - 2024-02-07

    you can define a start position for your GCode. How the start position can be defined depends on the CompileMode:
    For File and SMC_CNC_REF: Set the start position input of SMC_NCInterpreter (https://content.helpme-codesys.com/en/libs/SM3_CNC/Current/SM_CNC_POUs/NC2/Interpreter/SMC_NCInterpreter.html)
    For SMC_OutQueue:
    * Right-click on the CNC object in the project tree
    * Select Properties
    * Select the tab 'CNC'
    * Set the start position

    Concerning your second question: If the new set position cannot be reached with the given velocity limit (AXIS_REF_SM3.fSWMaxVelocity), SMC_controlAxisByPos will report bStopIpo and close the 'gap' with the given gap dynamics (SMC_controlAxisByPos.fGap*).

  • axilleas - 2024-02-08

    Thanks tk096.

    I have done projects running exactly as you described and I failed to help myself by just searching more.

    Thank you again


Log in to post a comment.