Skip to main content
Submitted by andrew on Mon, 10/02/2017 - 15:37

 Download White Paper    

Part 3 of 3: Superposition of Motion Profiles



      This is the final paper of three delving into advanced electronic gearing topics in motion control.  The first two, Tension Control on Spindle Wheel and Positional Correction on Color Print Rollers in Offset Printing, dealt with both low and high bandwidth corrections by correcting for frequency and phase.

      This paper will cover how to apply electronic gearing to superimpose two motion profiles for a single axis.  Three different examples will be discussed showing the many different applications where adding two motion profiles together can simplify the system’s design.

Example 1: Writing on a cake that is moving on a conveyor



Figure 1: Cake writing on a moving conveyor

Problem Definition

      Figure 1 shows a cake moving horizontally on a conveyor.  The frosting dispenser above the cake needs to write “Happy Birthday” as the cake moves along.  In order for the final image to be orthogonal, the actual profile needs to be skewed, as shown in Figure 2.


Figure 2: “Happy Birthday” motion profile in absolute coordinates

      The problem can be simplified by breaking down the system into two reference frames: the cake’s coordinates, and the absolute coordinates.  The dispenser must ultimately move according to the absolute coordinates of the system, but “Happy Birthday” must be drawn according to the cake’s coordinates as seen in Figure 3.  


Figure 3: “Happy Birthday” motion profile in cake coordinates


      Electronic gearing allows for a given axis to superimpose its coded profile with the profile of a secondary encoder input.  

      In this example, there are 2 axes, A and B for the frosting dispenser, and an independent conveyor system.  In this case, the A axis for the dispenser is in the same direction as the conveyor.  This means that the absolute profile is the sum of writing “Happy Birthday” in the cake’s coordinate system and the conveyor movement. 

      Using a DMC-4020 motion controller from Galil, the following code would provide a simplified solution.  In Code 1, the A and B axes represent the cake dispenser, respectively, while the auxiliary A axis is the conveyor system’s position. 

GAA=DA; 'Dispenser’s A axis geared to conveyor feedback
GRA=ratio; 'Resolution ratio of conveyor and dispenser’s A encoders
'Motion code to write "Happy Birthday"
'Written with Axes A and B operating in the cake's coordinate axes
EN; 'End routine

Code 1: DMC-4020 code to gear cake-writing dispenser to conveyor

      This solution allows for the programmer to separate the code of the cake’s coordinate profile into a stand-alone routine.  


Example 2: Scanning an object with a helical motion profile


Figure 4: Helical profile to scan cylindrical object


Problem Definition

      Figure 4 shows a sensor that needs to move in a helical profile to scan a cylindrical object.  The sensor is controlled by three axes in the X, Y, Z Cartesian coordinate system.  

      A typical 3-axis helical motion requires 2 different components: the circle profile for X and Y, and the linear profile for Z.  When programming it as such, the developer must take into account all differences in speed and acceleration for the circle and the linear axis to be able to maintain the exact spacing required for the helical motion profile.  This is further complicated when speeds are changed during the helical move itself.


      With electronic gearing, not only can a particular axis be geared to another axis, but an axis may also be geared to a vector move on a plane.  This allows for the vertical Z profile to be correctly synced to the circular X and Y profiles.  The benefit this provides is the ability to properly coordinate the accelerations and speeds of both the circular and linear components.  The effect is that changes in the vector speed automatically apply to the geared vertical Z profile.

      Code 2 is used on a Galil DMC-4030 motion controller where the axes A, B, and C represent the X, Y, and Z axes in Figure 4.  The DMC-4030’s C axis is geared to the S vector plane – the 2 dimensional vector plane of axes A and B.

GAC=S; 'Gear axis C to vector plane S
GRC=ratio; 'Sets vertical spacing of helical motion
VMAB; 'Declare axes A and B for vector plane S
CR radius,startAng,angToDrw; 'Draw circles in vector plane S
VE; 'End vector segment
BGS; 'Begin vector move
EN; 'End routine

Code 2: Helical motion for scanning object

Example 3: Profile positional move with added sinusoidal motion

Problem Definition

      In some applications, a smaller cyclic, pecking, or back-n-forth motion is needed on top of a linear move.  For example, a grinding application may require a grinder to cyclically move in a sinusoidal pattern as it moves down a material.

      Following the same structure as in the previous two examples, this problem can be broken down in to two separate profiles: the point to point move, and the sinusoidal motion.  The challenge here is that there are two profiles to superimpose, but only one axis.  In previous examples, an axis was geared to another physical encoder or vector plane. 


      The functionality of virtual axes can also be applied to electronic gearing.  A virtual axis, juxtaposed to a real axis, is an imaginary axis that has the ability to profile just like a real axis.  However, the virtual axis has no associated I/O; it does not read actual position, nor does it have a commanded output with a PID filter.  Its purpose is to provide the ability to use it with certain modes that may require only the profiling ability of an axis, without the actual control of a motor.  By using a virtual axis, this function can be accomplished without using an additional real axis. 

      For the DMC-40x0 motion controller, two virtual axes are available: M and N.  Therefore, the real axis A can profile the sinusoidal motion and the virtual axis M can profile the linear move.  Axis A is geared to the virtual axis M with the following commands.

GAA=M; 'Gear axis A to virtual axis M
GRA=ratio; 'Typically a 1 to 1 ratio

Code 3: Gear real axis to virtual axis

      The M axis’ point to point move is commanded in the same manner as a real axis.

PRM=position; 'Positional move relative to current position
SPM=speed; 'Speed of virtual axis

Code 4: Command virtual axis for linear move

      Figure 5 shows the profiled sinusoidal motion on axis A, the point to point profile on virtual axis M, and the final superimposed result – the actual motion of the grinder.


Figure 5: Superimposed move of grinder

      The final challenge is profiling the sinusoidal motion.  This can be simplified with vector mode and the circle command (CR) that was introduced in Example 2.  To draw a circle in the XY Cartesian plane, the X must profile a cosine wave, while the Y profiles a sine wave.  Since only the sine wave is desired, a second axis can be used to initialize vector mode only.  The second virtual axis, N, is used for that purpose.  In this case, the virtual axis allows the user to satisfy the requirements of initializing vector mode to draw the circle, without dedicating a real axis.  Figure 6 shows the XY Cartesian plot of a circle drawn with virtual axis N and real axis A compared with the motor position versus time plot of real axis A.  The end result of a profiled sine wave is clearly visible.


Figure 6: Generate sine profile on DMC-40x0

      Code 5 is used to complete the sinusoidal profile of the A axis and begin both the sinusoidal motion and the linear movement of the grinder.

amp=100; 'Amplitude of sinusoidal motion
freq=5; 'Frequency of sine profile
pi=3.1416; 'Constant pi
rate=freq*amp*pi*2; 'Calculate commanded speed to achieve amp and freq
duration=5*360; 'Total degrees of sine wave (5 full cycles)
VMNA; 'Declare vector mode with N and A axes
VSS=rate; 'Set vector speed
CR amp,0,duration; 'A axis draws sine wave for a given duration
VE; 'End vector segment
BGS; 'Begin sinusoidal movement
BGM; 'Begin point to point movement
EN; 'End routine

Code 5: Profile sinusoidal movement

      Figure 7 shows the actual profiled output for axis A on the DMC-40x0 motion controller.


Figure 7: Actual profile of grinder


      As shown in the above examples, complex motion can be broken down into two simplified, superimposed motion profiles by using the functionality of electronic gearing.  The examples show the variety of applications that can benefit from the features of electronic gearing.  As demonstrated, electronic gearing is not just limited to only real axes geared to each other, but can be expanded to include independent system feedback, 3-D profile, or other non-intuitive profiles that can be broken down into multiple profiles superimposed together. 

      For further questions about electronic gearing or other topics, contact a Galil Applications Engineer at (916) 626-0101, or by email at