Best function to synchronise axis with belt

For a pick and place i’m looking for a way to synchronise with a place conveyor belt.
The belt is indexed, every 50 mm is a pitch. The belt is running continously. The belt is in an other machine but an encoder is mounted on the belt and connected to the pick and place. The products need to be placed after eachother but when not placed on time an empty pitch on the place belt is no problem.

I’m looking for the best B&R function to get this done, i’ve looked for functions like , GearIn, GearInPos, MpAxisCoupling, Cam or CNC, but it’s not clear for me which function I can take the best for this.



its not clearly descriped what kind of mechanik is the “pick and place” you are writing about, but i think it will be some kind of serial or parallel kinematic.

There is a Process Library called MpPick which covers the basic use Case of Pick and Place with mapp Motion. Keep in mind that this will have Licence costs for Cnc.


If you want to have more core access you can use the mcTrkPath Library. It is more flexible , but initialy more work.


The mcTrkPath and MpPick are currently supported by this mechanics.

If you only have a Single Axis you can use a CamAutomat with the FlyingSaw sample.
In this way you don’t need a licence for the cnc.



Hello Michael,

thanks for the reply.
The pick and place is with a XYZ.
The XYZ is now made as three single axisses controlled by MpAxisBasic.
The pick position is in most cases we have static but now for place we need to synchronise with an outfeed belt. So only the X axis needs to synchronise with the belt. When “InSync” the Z can place. My feeling now is that the CamAutomat with FlyingSaw should be enough to do the trick. I first will focus on that!



For XYZ the mcTrkPath will not work. If you want to go with cnc, there would be the option to program the traking movement yourself and use the OnlinePathInfluence to add the movement to the cnc tcp.

I once did it for a XYZ with a CamAutomat, it will work.
Depending on the use Case you could run in the need of the MasterAdditiveAxis.
If you need a X-Movement overlapped to the tracking.



Hello Michael,

Could you please share more information about OnlinePathInfluence FB ?

I need to make a conveyor tracking system that will work with a 2 axis delta robot (X-Z Coord.). Since tracking functionality does not currently support 2 axis delta, I am looking for an alternative to do this.

I thought of using the position of the conveyor axis as the main position of the robot and repeating the movements at certain periods. In this way, as the conveyor velocity increases, the velocity of the robot will also increase. In fact, I will have established a simple Cam Automat between the robot and the conveyor. However, CNC based systems do not support such a structure. I cannot use AxisGroup for master-Slave relationship of Cam Automats…

On the other hand, I can take the conveyor velocity and calculate a speed-dependent feed rate with the G93 Inverse-time feed rate function. But there are some things that restrict me here too. When I use G93, the feed rate is calculated according to the number of motion blocks in the G code. I will also use M codes for valves and some counting operations within the G code, so I am experiencing a deviation from the time I calculated. When I calculate a feed rate that will complete the entire movement in 3 seconds, motion does this, but the delays in the M codes make the total movement take almost 3.3 -3.5 seconds.This is not something I want either.

Hello Hakan Kececi,

Thanks for the internal Call in MSTeams.
Here some results for the community:

1. MC_BR_OnlinePathInfluence_N
AS-Help: MC_BR_OnlinePathInfluence

  • This functionblock allows to add a Offset to the TCP of the Robot. The Offset shall be limited in the dynamic as its directly added to the movement.
  • The functionblock has only an affect if a Programm is running. If you don’t want to have overlapping movement, you can hold the Programm with an “Blocking” M-Function or similar.
  • If you have overlapping movements “Programm-Interpolation-Movement” + “Offset” then consider that the Program Dynamic must be lower than the limits no G00/G100 … as the Offset will add additional Dynamic. The Robot is limited by the single Axis limits, if they are violated, the robots will leave the path without a error.

2. Your useCase

  • Fyling Saw with RobotKinematik instead of classic X-Z-Cartesian Mechanic.
    Add 2 Virtual Axis for X,Z Flying Saw and use OnlinePathInfluence to move Robot
    a) Position the FlyingSaw Axis to its Start Position (for Example: HomeDirect)
    b) Move the Robot to the Start Position ( you can use PLC-Variables in Program)
    c) Block the Cnc Program with an M-Function on Startposition
    d) Couple relative Position Changes from X,Z to the Offsets[0],Offset[1]
IF MC_BR_OnlinePathInfluence.Enabled THEN
Offset[0] := Offset[0] + (AxisX - AxisXOld); 
Offset[0] := 0.0; 
AxisXOld := AxisX;

=> if the Virtual Axis will move, the TCP of the Robot will move aswell.
=> as the Virtual AxisPosition is not overruning, the math is easy.
=> overrun of the Belt is considerd within the CAM-Automat of Flying Saw

Looking Forward to your Feedback.


1 Like