Synchronized motion stepper

Hi Community,

I would like to get some assistance regarding synchronized motion for my application, I will write my explanation in a best possible way.

Hardware
Below are the parts I am using in my system/application

  1. X20CP0484 x1
  2. X20SM1426 x2
  3. 80MPD1.300S014-01 x2

Objective(s)
Using the above hardware list, I am trying to achieve the motion like in the animation(SyncMotionAnimation.mp4), video in the google drive. Unfortunately, in actual system it is not moving as expected. The same formula used in the animation video is being used in the Automation Studio(AS) program.

Formula


Figure 1 Formula

Concept
Rotary axis rotates periodically 0° - 360°
Linear axis moves forth and back based on the size of the square and the angle of the rotary axis.
These values are being used in the formula to get the target position for the linear axis

Referring to the image above, the square has length of 100mm at all sides and current angle of the rotary axis is 0°, the target distance of the linear axis will be 50.0mm.
Below is the table(Table 1) that theoretically shows the relation between the rotary axis(Step angle of 5° until 45°) and linear axis distance when square length is 100mm.

Angle(°) Distance(mm)
0 50.0
5 50.2
10 50.8
15 51.8
20 53.2
25 55.2
30 57.7
35 61.0
40 65.3
45 70.7

Table 1 Angle vs Distance

Mechanical properties
Rotary axis : Stepper motor’s shaft has a 13T gear that drives 84T gear(Mounted to a rotary table)
Linear axis : Stepper motor’s shaft is mounted to a gear box with reduction of 10 and the final drive is belt. One full rotation of the stepper motor’s shaft is equivalent to 12mm in linear movement.
Below are screenshots of the rotary and linear axes config and hardware view

Configuration view of rotary axis


Figure 2 Rotary axis config view

Hardware view of rotary axis


Figure 3 Rotary axis hardware view

Configuration view of linear axis


Figure 4 Linear axis config view

Hardware view of linear axis


Figure 5 Linear axis hardware view

Software architecture
I am using MpAxisBasic and MpAxisParType function blocks to control and set parameters of each axis.
To achieve the motion as described, two MC_BR_MoveCyclicPosition function block is used

In total there will be three axes in this application, 1 virtual axis and 2 actual axes.

Virtual axis as a master and actual axis 1 and 2 as a follower.
Virtual axis and actual axis 1 are 1:1 ratio, meaning actual position of virtual axis is used as cyclic position for actual axis 1
For actual axis 2, the cyclic position is obtained from the result of formula shown in Figure 1.

Virtual actual position à Formulaà Actual axis 2 cyclic position(MC_BR_MoveCyclicPosition)

In general, the movement is working, where when the rotary table starts to rotate, the linear axis does move back on forth. But the accuracy is way too off, I have attached a video(SyncMotionActual.mp4) of the actual application in the google drive.

Besides that I have also attached the AS program if the application for your reference in the same google drive.

Troubleshoot done
Using MappCockpit, I have tested the movement of both axes by moving it individually to make sure the movement of the mechanics is as per set in software.
Meaning, when I command the rotary axis to move absolute 45°, it moves 45° in actual.
Similarly, when I command linear axis to move 10mm, it moves 10mm in actual.

Additional information
AS version 4.12.2.93


Figure 6 Runtime versions

I would like to get your assistance to meet my objectives for this application.
Please let me know if you can access the google drive and/or if you need further information.

Appreciate your time and help!

Best regards