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?
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)
* 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*).
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.