CAM Motion Recover after STO

konstantin
2026-02-12
2026-02-16
  • konstantin - 2026-02-12

    Hello,

    one of the projects I work on is about a racetrack collator with two independent belts on it - two different servo motors. Both motors share the same mechanical frame and there is a train on a belt that collects items from the input conveyor.

    The way the motion is performed is the following - there is a virutal master axis and both real axis are synchronised with different cam motion profiles.

    The problem is when an STO is triggered on any of the slave axis, the synchronization process starts from position 0 of the slaves.

    How can I force the slaves to retain their current position until the master passes their position? Then the slaves should catch up with the master according to the profile, the slaves should not start synchronization from 0 position.

    Best Regards
    Konstantin Kolev

     
  • gseidel - 2026-02-13

    Dear Mr. Kolev,

    can you please explain a little more: what happens at an STO? I assume the slave axes will be stopped and retain their current position?

    How, then, do you call MC_CamIn after the STO? Do you restart it with a new rising edge, but on the same master position as before the STO? Which StartMode are you using, is the cam slave absolute or relative, master absolute or relative?

    Are the slave axes modulo or finite axes?

    Best regards,

    Georg Seidel

     
    • konstantin - 2026-02-13

      Hello Mr. Seidel,

      both the master and the slave axis are modulo. Basically the situation is as follows:

      1. One master cycle is 100 units.
      2. Slave's modulo length is 2000 units.
      3. In the CAM table I defined 10 master cycles on X axis - 1000 units and on the Y axis is the slave - 2000 units.

      Then depending on the master position 0 to 1000 units the slave's position is plotted on the Y axis - 0 to 2000 units.

      For example, while the master is executing the 3rd cycle i.e. above 200 units, I trigger the STO function of the slave and it stops. The master executed his cycle but the slave was stopped during the execution.

      How can I set the slave to continue the CAM sequence from the point where it stopped i.e. third cycle of the master?

      When I reset the slave error and sync again, everyrhing starts from master's 0 position.

      Best Regards
      Konstantin Kolev

       
  • gseidel - 2026-02-16

    Dear Mr. Kolev,

    I'm not sure I understood correctly. But this is my take on your question:

    • When the STO of the slave is triggered, store the current master position (e.g. 225 units)
    • After the reset of the slave error, call MC_SetPosition on the virtual master and reset it to the stored position (225 units)
    • Optionally, before MC_CamIn is restartet, move the slave back to the slave position corresponding to the stored master position. (If you do this, no ramping in will be necessary)
    • Restart MC_CamIn, with absolute master position and absolute slave position. Choose the StartMode that is appropriate for your machine.

    Best regards,

    Georg Seidel

     

Log in to post a comment.