Skip to content
Contact Get Started

Motion & NC

An axis and a channel are both created under Motion, and they are not two sizes of the same thing. An axis is one moving thing that your logic commands. Gather axes under a channel and they stop being separate: they become the axes of a CNC, run by a part program.

They are not added from the same place either.

The project tree on the left: NC, with Axes under it, and an axis under that. On the right, what right-clicking each one offers. NC offers Add Channel, Add AxesGroup, Add Synchronous Coupling and Remove. Axes offers only Add Axis. Captioned, the axis is added under Axes, the channel on NC above it.

  1. Add the axis. Right-click Axes and choose Add Axis.
  2. Say what it is. On the axis’s own page, Name is not a label: inside a channel it is the role, so an axis named X is the channel’s X. Channel ID says which channel it belongs to.
  3. Join it to the drive. Right-click the axis and choose Edit Link. Only unused hides the drives already spoken for.
  4. Join it to your logic. Not from the menu: Select Axis Ref sits on the axis’s own page.
  5. Gather them into a CNC. Right-click NC and choose Add Channel.

An axis is not the drive and it is not the variable. It is the thing between them, and it carries a link to each:

Linked Slave (I/O)the drive on the fieldbus that this axis movesfrom Edit Link
Linked PLC (Axis Ref)the variable your logic commands it throughon the axis’s page

They are made in two different places, and the second is the one that gets missed: an axis with a drive and no Axis Ref moves nothing, because your logic has nothing to command it through. The Servo Type says what the drive speaks, and the Unit decides what every other number on the axis means.

A channel gathers axes and gives each one a role: X, Y, Z, A, B, C. Nothing under the axis changes. The same drive is still on the bus, the same variable is still in your logic. What changes is who commands it.

Two panels side by side. On the left, under the heading Axes, your PLC logic commands Axis 1, Axis 2 and Axis 3 separately, each reaching its own drive on the bus. On the right, under the heading Channel, a part program commands one box labelled Channel 1 holding the same three axes as X, Y and Z, reaching the same drives.

Outside a channel, axes are motion: your logic starts them, one at a time or as a group you coordinate yourself. Inside a channel they are the axes of a CNC, and a part program moves them together along a path.

So the channel is the CNC. There is no second thing to add: a machine with no channel is a motion machine, and the moment it has one it is a control that runs part programs. A machine that needs two of them carries two channels.

Some of what the machine needs to know belongs to one axis alone: what it is joined to, what its units are, how far it may travel, how its error is corrected. That is set on the axis and stays true wherever the axis is used.

The rest means nothing until axes move together: how the machine’s geometry is solved, how a path across several axes is planned, what the channel treats as the spindle. That is set on the channel.

When you cannot tell which level a value belongs to, ask whether it would still be true if this axis were the only one on the machine. If it would, it belongs to the axis.

Motion does not run inside your PLC task. Adding it to the project adds two real-time tasks, which appear under NC and carry the same period, priority and core as any other task:

NC Preparationturns the part program into the motion that is coming, ahead of the cut, at its own longer period
NC Executionissues that motion one cycle at a time, runs the axes, and exchanges the drives’ process image

NC Execution is the rate the machine is commanded at. Axes and channels are created under it and take their rate from it, and the drives are in the sync unit group it exchanges, so its period is both the interpolation rate and the rate the bus carries it at. Shortening it asks more of the target every cycle; lengthening it coarsens every path the machine cuts.

NC Preparation works ahead of what is being cut, so it is given a longer period and a lower priority than execution. It is the task a program’s look-ahead depends on: a channel that has nothing prepared has nothing to issue, however fast execution runs.

Your PLC task keeps its own period and its own priority: it asks for motion rather than performing it, which is why a slow scan in your logic does not become a rough surface on the part.

A chain that cannot be solved stops the build

Section titled “A chain that cannot be solved stops the build”

The build refuses a chain the solver cannot use, and names what is wrong with it. Two things it will not take:

  • A rotary axis whose part in the chain is missing, or claimed by two axes at once.
  • Three linear axes that do not point in three independent directions.

That refusal is the last cheap moment. A chain that got past it would reach a target as a configuration that has already shipped, where the same fault shows up as a machine moving wrongly rather than as a message naming the axis.

  • I/O & EtherCAT: bringing the drives onto the bus, so an axis has something to link to.
  • Linking: the third link, joining a variable to a terminal’s process data.
  • PLC: the logic that commands the channel.
  • Building & Deploying a Project: what compiling produces, and how it reaches a target.