Camming

# What is Camming?

Camming is a mode in which controls follow a cam profile curve to derive slave-axis displacement from master-axis position, whether linear or rotary.
Camming is nonlinear coordinated motion between two axes, and normally, one axis is linear while the other is rotational.

# Why use Camming?

In a master-slave motion system, there are at least two axes and the position of each axis is measured by the motion controller.
Master Axis: this axis/motor may or may not be controlled by the motion controller.
Slave Axis: the motion controller controls the position of this axis/motor as a function of the position of the master axis.
The servo controller will take the master rotational or linear information from one axis and then follow the master to a predefined nonlinear path. The operation is cyclical and both axes will start each cycle at the same 0 position reference.
See also → Cam: A projection on a rotating part in machinery, designed to make sliding contact with another part while rotating and to impart reciprocal or variable motion to it.
A mechanical cam consists of a shaped rotating form and a follower that tracks its surface.
In the image below, the Slave Axis/Motor is moving in the y-axis and the Master Axis/Motor is moving around the z-axis.
You can achieve the same relationship between the master and slave positions using electronic control.
The simplest way is to define the relationship between the master and slave positions as a series of linear segments.
For each segment, you need to define the distance that the master will move during the segment and the position that the slave will achieve at the end of the segment.
This cam profile will be represented by the following cam table.
Note - Cam segments are numbered from zero
NOTE
Master motion happens in a RELATIVE fashion. Slave motion happens in an ABSOLUTE fashion.
NOTE
Camming does not use the given axis user units but instead works in encoder ticks. If you want to work in user units instead of encoder ticks simply multiply by your user unit (i.e. the number of ticks per unit).
EXAMPLE
A RELATIVE MOVE of 25 will move the axis 25 units ahead of the current position, rather than to position 25.
An ABSOLUTE MOVE of 25 will move the axis to position 25 rather than 25 units ahead of the current position.
So, in Segment 0, the Master Axis will move 50 units and the Slave Axis will move 200 units.
The speed of the Slave Axis gets computed so it can achieve the 200 units at the same time the Master Axis achieves the 50 units of Segment 0.
The same is true for all the other segments