learn · South Africa
Motion Control Basics: Position, Profiles and Encoder Units
Learn motion control basics with checked move profiles, encoder and gearing calculations, vendor status and South African course assessment questions.

Motion control basics connect a requested position to a planned trajectory, feedback and a defined completion condition. For PLC learners, the useful starting point is a single axis with explicit units. Calculate how far it moves during acceleration, check whether it can reach the requested speed, and explain what a completion flag actually means.
This guide covers relative and absolute moves, trapezoidal profiles, encoder scaling, gearing, homing questions and servo-versus-VFD selection. Worked numbers describe an ideal mathematical exercise, not measured machine accuracy. South African learners can use the calculations to compare course content and prepare questions for supervised motion training.
If you are still learning command ownership and start-stop behaviour, begin with the PLC motor-control guide. Motion adds position and trajectory requirements to those foundations; it does not remove the need to define requests, interruptions and feedback.
Practise PLC programming foundations →Position, velocity, acceleration and jerk have different units
Position describes a location in a coordinate system. A linear axis might use millimetres, while a rotary axis might use degrees or revolutions. Velocity is the rate of position change. Acceleration is the rate of velocity change, and jerk is the rate of acceleration change.
For the linear example below, the units are mm, mm/s, mm/s² and mm/s³ respectively. A number such as 50 is incomplete without its unit and context. Fifty revolutions per minute is not the same request as fifty millimetres per second, even when both appear on a drive screen.
Separate the final target from the changing position setpoint along the trajectory. Actual position is feedback interpreted through the configured axis scaling and reference. For this lesson, define tracking error as setpoint minus actual position. Define final position error as final target minus actual position. These errors answer different questions while a move is underway.
For example, if the final target is 100 mm, the current setpoint is 40 mm and actual position is 39.8 mm, tracking error is 0.2 mm. The remaining distance to the final target is 60.2 mm. Calling both numbers “position error” without identifying the reference makes a trend difficult to interpret.

Relative and absolute positioning
An absolute move requests a coordinate, such as 100 mm. A relative move requests a displacement, such as another 100 mm. For a simple stationary arithmetic exercise beginning at 25 mm, an absolute request to 100 mm travels 75 mm, while a relative request of +100 mm ends at 125 mm.
The base used by a native relative-motion instruction must be checked in its documentation, especially if another move is already active. Do not assume that every library adds the distance to the same measured or commanded position at the same instant.
Beckhoff's TwinCAT Tc2_MC2 MC_MoveRelative documentation describes its relative positioning from the current set position and triggering with an Execute rising edge. It also distinguishes Busy, Active, Done, CommandAborted and Error. These are useful details to identify before writing a sequence around that particular block.
For the rest of the calculations, assume a stationary ideal axis, a known starting coordinate and no concurrent command. A positive displacement increases position; a negative displacement decreases it. We calculate profile distances as positive magnitudes, then apply the direction to the position result.
Worked 100 mm move: calculate every phase
Assume a move starts and ends at rest. The displacement is 100 mm, the requested maximum speed is 50 mm/s, and both acceleration and deceleration magnitudes are 200 mm/s². Use an ideal trapezoidal velocity profile: acceleration changes instantly at phase boundaries, so this model does not impose a finite jerk limit.
The acceleration time is speed divided by acceleration: 50 / 200 = 0.25 s. The acceleration distance is half the final speed multiplied by that time: 0.5 × 50 × 0.25 = 6.25 mm. Equal deceleration produces the same duration and distance at the end.
The remaining distance for constant speed is 100 − 6.25 − 6.25 = 87.5 mm. At 50 mm/s, that phase takes 1.75 s. Total ideal trajectory duration is therefore 0.25 + 1.75 + 0.25 = 2.25 s.
| Phase | Duration | Distance | Position at phase end | Velocity at phase end |
|---|---|---|---|---|
| Acceleration | 0.25 s | 6.25 mm | 6.25 mm | 50 mm/s |
| Constant speed | 1.75 s | 87.5 mm | 93.75 mm | 50 mm/s |
| Deceleration | 0.25 s | 6.25 mm | 100 mm | 0 mm/s |
The area under the velocity-time graph equals displacement. Two triangular areas contribute 6.25 mm each, and the rectangular cruise area contributes 87.5 mm. This provides a second way to verify the result without relying on a motion-block animation.
A real axis may require additional time to satisfy its configured completion conditions. Do not add an invented “typical settling time” and present the sum as a measured cycle time. Record what is calculated, what the runtime reports and what the physical equipment demonstrates separately.
Check positions inside the move
During acceleration, position is 0.5 × acceleration × time². At 0.125 s, position is 1.5625 mm and velocity is 25 mm/s. Half the acceleration time covers only one quarter of the acceleration distance, because velocity is still increasing.
At 1.00 s from the start, the axis has completed acceleration and spent 0.75 s at full speed. Position is 6.25 + 50 × 0.75 = 43.75 mm. At 2.125 s, halfway through deceleration, position is 98.4375 mm and velocity is 25 mm/s.
These intermediate points are useful when reviewing a calculation or chart. A final value of 100 mm does not prove the trajectory was correct: an erroneous profile can still be forced to the target at its last sample.

Short moves may never reach the requested speed
For symmetric acceleration and deceleration magnitude a, the combined distance required to reach maximum speed v and return to rest is v² / a. In our example, 50² / 200 = 12.5 mm. A longer move has a constant-speed segment. At exactly 12.5 mm, that segment has zero duration.
For a shorter move, the ideal velocity profile is triangular. The peak speed is sqrt(distance × a), and the total duration is twice the peak speed divided by acceleration. These formulas apply to this rest-to-rest, symmetric, non-jerk-limited exercise.
| Requested distance | Peak speed | Cruise duration | Total ideal duration |
|---|---|---|---|
| 1 mm | 14.1421 mm/s | 0 s | 0.141421 s |
| 10 mm | 44.7214 mm/s | 0 s | 0.447214 s |
| 12.5 mm | 50 mm/s | 0 s | 0.5 s |
| 50 mm | 50 mm/s | 0.75 s | 1.25 s |
| 100 mm | 50 mm/s | 1.75 s | 2.25 s |
Requesting a maximum speed of 50 mm/s does not mean every move attains it. The CODESYS SoftMotion MC_MoveRelative reference explicitly notes that its specified maximum velocity is not necessarily reached. Its units and buffer-mode descriptions should be read for that library version.
What changes when jerk is limited?
A finite jerk limit changes how acceleration develops. The sharp acceleration transitions assumed above are no longer the same trajectory, so the simple phase durations cannot be reused without checking the new profile.
Rockwell's Motion Axis Move reference distinguishes trapezoidal and S-curve profiles and uses jerk operands for the S-curve selection. That is a documented instruction choice, not a reason to insert a generic jerk number into a different library.
Also check the meaning of zero. In the Beckhoff block cited earlier, zero for Jerk selects the configured default; it does not simply mean “ignore jerk”. Keep the ideal calculation labelled independently from native parameter settings.
Encoder scaling: counts are not an accuracy guarantee
Consider a hypothetical encoder interface reporting 4,096 usable counts per motor revolution. Specify that these are the counts exposed by the interface, rather than assuming a pulse-per-revolution figure already includes every decoding convention. A directly coupled screw advances 5 mm per motor revolution.
The nominal movement per count is 5 / 4096 = 0.001220703125 mm, or about 1.221 micrometres. The inverse scale is 819.2 counts/mm. A requested displacement of 100 mm corresponds to 81,920 counts in this ideal conversion.
This calculation describes nominal numerical spacing. It does not prove that a real load reaches every requested position within 1.221 micrometres. Mechanical compliance, screw error, backlash, measurement location, temperature, installation and control performance can all affect the result.
The scaling and resolution guide develops the distinction between a conversion, the available numerical steps and measurement accuracy. Carry units through the motion calculation in the same way you would for an analogue signal.
Add a defined gearbox ratio
Now insert an ideal 10:1 reduction, explicitly meaning ten motor revolutions for one screw revolution. The load advances 5 / 10 = 0.5 mm per motor revolution. With the same 4,096 counts per motor revolution, nominal movement per count becomes 0.0001220703125 mm.
The numerical spacing is ten times smaller, but the required motor speed for the same linear speed is ten times larger. At 50 mm/s, direct drive needs 10 motor revolutions per second, or 600 rpm. With the stated reduction, it needs 100 motor revolutions per second, or 6,000 rpm.
A finer numerical scale is therefore not a complete selection argument. Check the motor-speed requirement, load, transmission limits and the actual mechanical arrangement. Do not choose a ratio from encoder resolution alone.

Backlash and electronic gearing require explicit references
A backlash specification must identify where its angle is measured. Suppose a hypothetical gearbox has 0.1 degree of output-shaft backlash, and its output drives a 5 mm-per-revolution screw. The corresponding ideal linear lost movement is 5 × 0.1 / 360 = 0.00138889 mm, or about 1.389 micrometres.
For 1 degree at that same output shaft, the result is 0.0138889 mm, or about 13.889 micrometres. Do not divide an output-referred backlash angle by the gearbox ratio again. An input-referred specification would require a different interpretation.
This arithmetic is not a promise that a compensation setting can remove every error under changing load. It simply makes the reference and unit conversion reviewable. Ask for the mechanical specification before drawing conclusions from a number labelled “backlash”.
Electronic gearing is another relationship, distinct from the physical gearbox. For an ideal teaching example, define slave revolutions as 5/2 times master revolutions, with both starting at zero and no offset. Four master revolutions then request ten slave revolutions. If the slave drives a 5 mm-per-revolution screw directly, that corresponds to 50 mm of requested load movement.
A real gearing function adds questions about engagement, offsets, direction, synchronisation and loss of the master signal. An electronic ratio does not change the physical transmission or prove that the commanded movement was achieved. State whether each plotted value is requested or measured.
Read motion status before advancing the PLC sequence
A motion command can be accepted without having finished. It may also be interrupted by another command or report an error. The surrounding sequence should identify these outcomes instead of treating every non-busy state as successful completion.
For Rockwell MAM, the cited reference distinguishes DN, indicating successful initiation, from PC, indicating the end position was reached. Advancing a process on the wrong flag can start the next action too early. Do not translate a similarly named flag from another platform without reading its definition.
For Beckhoff MC_MoveRelative, the documented Done behaviour depends on the position-monitoring configuration. With neither target-position nor position-range monitoring active, Done can follow the logical end of setpoint generation. A generic claim that Done always proves a particular physical tolerance would therefore be misleading.
For a programming assessment, give the learner a small event record: request issued, command accepted, movement active, command aborted, or movement completed. Ask which event permits the next step and what evidence supports that choice. An aborted command should not silently become a successful operation.
A separate position-window calculation
Define an educational display predicate: data must be valid, and the absolute difference between target and reported actual position must be no greater than 0.05 mm. With a target of 100 mm, reported positions of 99.95, 100 and 100.05 mm satisfy this mathematical window. Values of 99.9499 or 100.0501 mm do not.
If position data is invalid, show the window result as unavailable rather than claiming the axis is in position. This predicate contains no dwell time, velocity condition or native completion semantics. It is a calculation to test, not a replacement for the motion controller's documented status.

Homing and reference validity
Homing establishes an axis reference through a defined procedure. Whether an axis needs a particular referencing action after startup depends on its feedback system, retained information, configuration and application. Avoid a universal rule that every servo must perform the same homing movement after every power cycle.
An absolute encoder can report position information, but the application still needs confidence in the relationship between that information and the machine coordinate system. Mechanical changes, configuration changes or lost reference validity need a defined response. A number on a screen is not enough to establish that relationship.
For classroom work, use a separate ReferenceValid condition and specify which exercises depend on it. Simulate it becoming false and verify that the sequence reports the issue without inventing a new coordinate. Do not claim that a generic relative move necessarily causes a collision when referencing is absent; the permitted behaviour is application-specific.
Practical axis work also requires appropriate travel limits, protective functions and access procedures. This article supplies calculation and software-reading exercises. It does not specify protective wiring, validate stopping performance or authorise a motion sequence on physical equipment.
Servo versus VFD: compare the required function
Start with the process requirement: continuous speed regulation, repeated indexing, coordinated movement, a position tolerance, a cycle time or a holding requirement. Then examine the complete motor, drive, feedback and mechanical system capable of meeting it.
The product category alone does not justify a fixed positioning error or a universal price ratio. Some drive systems offer position-control functions; feedback location and mechanical behaviour still matter. A servo designation does not guarantee a specified load accuracy without an appropriate system and verification.
For a South African quotation, request comparable scope: motor, drive, feedback, cables, transmission, controller compatibility, engineering, commissioning and support. Keep the quotation date and included services visible. An unsupported rand figure for one component is a poor basis for choosing an entire axis.
The South African VSD training guide helps identify drive-course scope, while mechatronics courses cover the broader combination of mechanics, electronics and programming. Use these routes according to the skill you need to develop.
Build a motion-learning portfolio
Create a worksheet for the 100 mm move and its shorter variants. Record the assumptions, equations, intermediate points and units. Add the encoder and gearbox conversions, then explain which results are mathematical and which would need physical measurement.
For the PLC programming side, the Structured Text learning resource is a related foundation for variables, calculations and conditional logic. It is not presented here as a native motion-controller runtime.
Use repeatable PLC program testing to organise expected and observed results for the surrounding sequence. Vendor-specific motion practice requires an environment that actually supports the selected instruction, axis type and library.

Questions for motion-control training in South Africa
What should a beginner course cover before servo commissioning?
Look for units, absolute and relative positioning, profile calculations, feedback scaling, reference validity and status interpretation. Ask for an individual worked assessment. For courses in Johannesburg, Pretoria, Durban, Cape Town or online, verify the actual platform and practical access rather than inferring them from the location.
Why does my short move not reach maximum velocity?
There may be insufficient distance to accelerate to that speed and decelerate to rest under the selected profile. The 10 mm example reaches about 44.72 mm/s despite a 50 mm/s maximum request. Native jerk limits and other configured behaviour can further change the trajectory.
Does a higher-resolution encoder make my axis more accurate?
It changes the available position information or numerical spacing, but it does not independently establish load accuracy. Identify the measurement location, mechanical transmission and required verification. A count-to-distance calculation is one part of that assessment.
Is MC_MoveRelative the same as a Rockwell MAM instruction?
They can address related positioning tasks, but their interfaces, triggering and status conventions differ. Read the selected implementation. A portable understanding comes from explaining the requested behaviour and verifying the native result, not assuming identical code across platforms.
Can I learn motion control at home without a servo drive?
You can practise calculations, units, state sequencing and documentation interpretation. Use suitable vendor tools when studying native motion instructions, and separate their simulated results from hardware evidence. Supervised equipment work is needed for the physical commissioning skills that a worksheet cannot demonstrate.
Build your PLC programming foundations →