Resolving Sinumerik 810T GA3 C Axis M64/M79 Enable Fault

David Krause18 min read
Motion ControlSiemensTroubleshooting
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Resolving Sinumerik 810T GA3 C Axis M64/M79 Enable Fault

The Sinumerik 810T GA3 is a turning (T) variant of the Siemens 810/820 GA3 CNC platform running Basic Version 3 / Software Version 3. On Boley 100 turning machines, the C axis is often realized by reconfiguring the main spindle as a closed-loop rotary axis under M-function control. When M64 (or its handwritten-program alias M79) is programmed, the NCK transmits the command to the PLC, which must complete the spindle-to-C-axis handover before the block can finish. If the block holds indefinitely with the C axis never engaging, the fault is almost always in the PLC handshake, the spindle encoder reference, or the zero-mark offset machine data.

This reference covers:

  • Decoding M64 / M79 to the correct PLC interface flag (Merker in German)
  • Tracing the German-language ladder for the enable handshake
  • Setting machine data 402 (zero mark offset) per channel
  • Resolving the 180° discrepancy seen when M19 S0 is executed
  • Verification of position control resolution against input resolution
  • Mechanical checks to perform before any parameter change

Background reference for the 810/820 GA3 platform is found in the official SINUMERIK 810T/820T Basic Version 3 / Software Version 3 Programming Manual and the SINUMERIK 810/820 GA3 Installation Instructions (Software Version 3).

Problem Statement and Symptom Definition

The reported fault on the Boley 100 with Sinumerik 810T GA3:

  • The NC program block containing M64 (or M79 per the handwritten program note) is accepted by the NCK
  • The block does not finish; no further motion is executed
  • The HMI displays X, Z, and C1 as available axes, but C1 is not active
  • When M19 S0 is issued, the spindle rotates to a position that is mechanically 180° away from the programmed zero
  • The M19 position-control deviation is non-zero even at standstill
  • An English-language parameter list is available, but the specific zero-mark offset value to enter is not known

The C axis on this machine is realized through the main spindle assembly. A mechanical brake holds the spindle in position once the C axis is engaged so that cutting forces on the milling tool do not displace the workpiece. The spindle encoder is reused as the C axis position feedback. The handover from spindle (speed-controlled) mode to C axis (position-controlled) mode is gated by an M function that the PLC must decode, acknowledge, and confirm before the NCK continues.

Sinumerik 810T GA3 C Axis Architecture

On a turning-center configuration running on the 810/820 GA3 platform, a true C axis requires the controller to treat the spindle as a closed-loop rotary axis with full position-controlled servo behavior. Two paths exist:

  • Real C axis: the spindle is permanently configured as a rotary axis; a separate drive channel and encoder are used
  • Spindle-as-C: the spindle is reconfigured under an M function between speed-controlled (spindle) and position-controlled (C) mode

The Boley 100 in question uses the second topology. The main spindle drive and its existing hollow-shaft encoder double as the C axis feedback. The brake clamps the spindle in position once the C axis is engaged so that cutting forces on the milling tool cannot displace the workpiece.

For this handover to succeed on the 810 GA3, three legs must align:

  1. The M function (M64 or M79) must be transmitted to the PLC and recognized
  2. The PLC must set the spindle drive to position-control mode and engage the brake
  3. The spindle position actual value must match a defined zero reference

If any of the three legs fails, the NCK holds the block pending PLC acknowledgement or axis readiness, which is the symptom observed.

M Function Decoding to PLC Interface Flags

In the NC program, an M function such as M64 is decoded by the NCK and output to the PLC as interface flag (Flag, in German "Merker") signals. The 810/820 GA3 transmits M functions in two parallel forms:

  • Pulse flag — set for one PLC cycle at the moment the M word is decoded
  • Static (keep) flag — set for the entire duration that the M function is logically active in the NC

Per the installed configuration of the affected Boley 100, M64 appears at the PLC as:

Form Interface (English) Interface (German) Duration
Pulse F43.0 M43.0 One PLC scan at block decode
Static (keep) F44.0 M44.0 Maintained while M64 is active in NC
Verification required: the mapping M64 → F43.0 / F44.0 is a machine-specific decoder table on this Boley 100, not the factory default. The 810/820 GA3 default M-function distribution places M64 in the upper M group, typically mapped to the F56-F59 flag range. The mapping shown above must be confirmed from the machine data (M decoder table) before any PLC work — do not assume the default. To verify, trigger M64 from MDA mode and observe whether F43.0 pulses and F44.0 latches, or pulse them manually from the PG and observe whether the NC reports M64 active.

To trace the M64 logic, force the relevant flag in the PLC or trigger the M function from MDA mode and observe the ladder:

  • Watch F43.0 (pulse): it must go high for one scan when the block is decoded
  • Watch F44.0 (static): it must stay high as long as M64 is active in the NC
  • If neither flag changes, the M decoder is not picking up the M function — check the M decoder table, channel configuration, and whether the M-function decoder machine data is enabled for channel 1
  • If only the pulse fires but the static does not latch, the PLC is not confirming receipt of the M function — the NC will then hold the block waiting for the static acknowledgement

Tracing the M64 Block in the PLC Ladder

The ladder on the Boley 100 is in German. Siemens 810/820 GA3 documentation uses "Merker" (M) for flags (F), "Eingang" (E) for inputs (I), and "Ausgang" (A) for outputs (Q). When reading the German ladder, the column header conventions are:

German English Address Space
E / Eingang I / Input Byte 0-31
A / Ausgang Q / Output Byte 32-63
M / Merker F / Flag Byte 64-255 (varies by config)
T / Timer T / Timer Byte 0-31
Z / Zähler C / Counter Byte 0-31

The M64/M79 enable sequence typically follows this handshake:

  1. NCK decodes M64 → sets F43.0 pulse and F44.0 static
  2. PLC sets spindle drive to position-control mode (writes a control word to the spindle drive, often via a flag in the F80-F95 range for spindle commands)
  3. PLC engages the spindle brake (output flag, e.g., A32.x or A33.x)
  4. PLC waits for spindle drive to confirm position-control ready (reads status flag from spindle drive)
  5. PLC sets an "axis ready" or "C axis engaged" confirmation flag back to the NCK
  6. NCK sees the confirmation and finishes the block; C1 is now available for programmed motion

If step 6 never occurs, the NCK holds the block. The fault lies in one of:

  • The M function was never received by the PLC (decoder table issue)
  • The PLC did not set the spindle to position control (drive command flag not asserted)
  • The PLC did not engage the brake (brake output not driven)
  • The PLC never sent the "axis ready" confirmation back to the NCK

To identify the missing step, trace in this order:

  1. Connect with the PG (PG 675 / PG 685 with S5-DOS / STEP 5) in online mode
  2. Force F43.0 and observe what fires downstream
  3. Add status displays on the spindle control word bits
  4. Verify the brake output (look for the brake solenoid driver output) is asserted
  5. Verify the "C axis engaged" flag (often a fixed-position flag like F100.x) is set

Zero Mark Offset — Machine Data 402

The reference point offset, also called the zero mark offset, is stored per axis in the 810/820 GA3 axis machine data. Per the source, machine data 402 * where * is the channel number, is the zero mark offset for the C axis. The 810T GA3 has either one or two channels; channel 1 is the standard turning channel, and the C axis is typically assigned to channel 1 on this Boley 100.

The zero mark offset compensates for the difference between the mechanical zero of the encoder and the machine-defined reference (workpiece zero) of the C axis. If the encoder was removed and reinstalled, or if any mechanical work was done on the spindle/encoder stack-up, the zero mark offset must be re-established.

Setting procedure for MD 402 on the C axis (channel 1):

  1. Switch to the setup parameter area on the HMI
  2. Navigate to axis machine data for the C axis (or the spindle, if the spindle is being reconfigured as C)
  3. Enter the value for MD 402 1 (channel 1, zero mark offset) in encoder increments
  4. The unit is the smallest representable position increment, which depends on the position control resolution setting
  5. A power-on reset (NCK restart) is typically required for the new value to take effect — most axis machine data on the 810/820 GA3 do not take effect online
Before modifying MD 402, confirm:
  • Whether the encoder has been removed, replaced, or disturbed
  • Whether any mechanical work was performed on the spindle/encoder coupling
  • The current value of MD 402 1 (document it before changing)
  • The reference position of the C axis using a dial indicator or test bar
The reference point is the position at which the encoder zero mark should align with the machine zero of the C axis. If the spindle has been rotated mechanically with the encoder disconnected, the zero mark may be lost and the reference approach procedure must be re-executed.

Spindle Orientation (M19) and C Axis Coupling

M19 is the spindle orientation command on the 810/820 GA3. It positions the spindle to a defined angular position with the spindle in position-control mode. On a Boley 100, the spindle must be oriented before it can be handed over as a C axis.

The command M19 S0 orients the spindle to the programmed position S0 (0°). On a correctly configured machine, the spindle should rotate to the position where the encoder zero mark aligns with the 0° position reference.

The reported 180° discrepancy — M19 S0 produces a real position of 180° on the encoder — is a classic symptom of a zero mark offset error combined with a single-mark-per-revolution encoder. The encoder produces one zero mark per revolution. If the zero mark offset is set such that the controller is reading the wrong edge of the zero mark, or if the encoder was reinstalled 180° out of phase, the apparent zero will be 180° away from the true zero.

Resolving the 180° Zero-Point Discrepancy

To resolve the 180° offset on M19 S0:

  1. Mechanical verification first: rotate the spindle manually (drive disabled) and observe the encoder count. One full mechanical revolution must produce exactly one full electrical revolution of encoder counts. If the encoder counts disagree with the mechanical rotation, the encoder coupling is loose or the encoder is damaged.
  2. Zero mark check: with the drive disabled, slowly rotate the spindle through one full revolution and observe the zero mark signal on the encoder feedback. The zero mark should fire once per mechanical revolution.
  3. Reference approach: re-execute the reference approach sequence. The spindle should move to the reference point and the position display should show the reference point value (typically 0.000°).
  4. If the position is 180° off after referencing, adjust MD 402 1 by an amount equal to half the encoder counts per revolution.
  5. If the adjustment of MD 402 1 does not move the apparent position, the encoder is reading the wrong zero mark edge. Check the encoder index gating setting in the axis machine data.

For a 180° offset, the corrective value for MD 402 1 is:

MD 402 1 (new) = MD 402 1 (current) + (encoder counts per revolution) ÷ 2

This shift is only valid if the underlying error is the zero mark edge. If the encoder has been physically rotated, the mechanical fix is to remove the encoder, rotate the shaft by 180°, reinstall, and re-reference.

Cause Symptom Corrective Action
Encoder zero mark misaligned with mechanical reference M19 S0 lands 180° off Re-establish reference point; adjust MD 402 1
Encoder reinstalled 180° out of phase Persistent 180° offset regardless of parameter changes Remove encoder, rotate shaft by 180°, reinstall
Position control resolution set to half actual Reported position is half of actual Recheck MD for position control resolution; should match input resolution
Reference point value MD wrong After referencing, position is offset by a constant angle Adjust reference point value MD
Encoder increments per revolution wrong Position scaling off by integer multiple Verify encoder model and set MD for encoder increments

Position Control Resolution and Input Resolution

The position control resolution (the smallest position command the controller can issue) must match the input resolution (the smallest position increment the encoder feedback can resolve). Mismatched values cause systematic position errors, including the 180° case if the mismatch is a factor of two.

On the 810/820 GA3, these resolutions are set in the axis machine data area. Per the 810/820 GA3 Installation Instructions, the relevant machine data categories include:

  • Position control resolution (the granularity of the position command output)
  • Input resolution (the granularity of the position feedback input)

The two must be matched to a consistent unit system. Common configurations:

  • 0.001° input / 0.001° position control (1000 increments per degree, 360000 per revolution)
  • 0.0001° input / 0.0001° position control (10000 increments per degree)
  • Encoder counts per revolution: 8192, 16384, 32768, 65536 are common for Heidenhain ROD encoders

If the input resolution is set to half the encoder's actual count (e.g., 2048 instead of 4096), the controller will report a position that is half the true mechanical position, producing a 180° offset across a full revolution.

To verify:

  1. Determine the encoder model and its native counts per revolution
  2. Read the input resolution MD for the C axis
  3. Compute the expected counts per revolution: counts per revolution = 360° ÷ input resolution
  4. Compare against the encoder's actual counts per revolution
  5. If mismatched, adjust the input resolution MD to match the encoder

PLC Ladder Markers and German Convention

The ladder on the Boley 100 is documented in German. When reading the German ladder, the engineer must translate "Merker" to "Flag" (F) and note that German Siemens S5 documentation uses different address conventions than English documentation. Specifically:

  • "M" in German (Merker) = "F" in English (Flag) in the NC/PLC interface context
  • "E" (Eingang) = "I" (Input)
  • "A" (Ausgang) = "Q" (Output)

If a flag is referenced as "M 43.0" in the German ladder, it corresponds to "F43.0" in the English NC/PLC interface. This is a common translation pitfall when working with German documentation.

To trace the M64 logic in the German ladder:

  1. Locate the network (Netzwerk) that references M43.0 (pulse) or M44.0 (static)
  2. Trace the output of that network — what flag does it set, what output does it drive?
  3. Follow the spindle drive control word setup
  4. Follow the brake output
  5. Follow the "C axis engaged" confirmation back to the NCK

The handwritten program note "M79" suggests the M function may have been remapped at some point. Check the M decoder table for both M64 and M79 to determine which is the active function on this machine.

Mechanical and Encoder Reference Verification

Before changing any machine data, the engineer must confirm the mechanical state of the C axis. The reported 180° offset is consistent with an encoder zero mark error, but a mechanical fault must be ruled out first.

Mechanical verification steps:

  1. Encoder mounting: with the drive disabled, attempt to rotate the encoder housing by hand. There should be no movement. If the encoder is loose on its mounting, the zero mark reference is unstable.
  2. Encoder coupling: check the coupling between the encoder shaft and the spindle. A worn or loose coupling will introduce backlash and possibly a phase shift.
  3. Belt drive: if the encoder is driven by a belt from the spindle, check the belt tension and the pulley alignment. A slipping or worn belt will cause position errors.
  4. Hollow-shaft encoder: if a hollow-shaft encoder is used, confirm that the torque arm is properly seated and that the encoder housing is locked in place. A hollow-shaft encoder that is free to rotate will produce a wandering zero.
  5. Zero mark visibility: with the drive disabled, slowly rotate the spindle by hand through one full revolution while monitoring the encoder zero mark signal (typically on a status display or with a scope on the encoder output). Confirm exactly one zero mark pulse per revolution.
If any mechanical issue is found, repair it before adjusting machine data. Adjusting MD 402 1 to compensate for a mechanical fault will mask the fault and may produce an unstable reference.

Verification Procedure

After the M64 enable logic is traced and MD 402 1 is set, verify the C axis as follows:

  1. From MDA mode, issue M19 S0. The spindle should orient to the position where the encoder reads 0.000°. If the display shows 180.000°, the zero mark is still misaligned; re-check MD 402 1.
  2. From MDA mode, issue M64 (or M79, per the machine's mapping). The block should finish. The HMI should show the C1 axis as active.
  3. Issue a C axis motion command: C0 followed by a C axis positioning move, e.g., C90. The spindle should rotate to 90° mechanical.
  4. Issue C0, then C180, then C270, then C0 to test a full revolution. All positions should be within the position control tolerance (typically ±0.01° to ±0.05° depending on resolution).
  5. Verify the brake: with the C axis engaged and the brake released, attempt to rotate the spindle by hand. There should be no movement. If the spindle can be rotated by hand, the brake is not engaged.
  6. Re-reference the C axis: from MDA, run the reference point approach sequence. The display should show the reference point value (typically 0.000°) at the reference position.
  7. Run a part program with C axis interpolation (e.g., a circular interpolation with C as the rotary axis). Verify the path accuracy with a dial indicator or test bar.

If all steps pass, the C axis is correctly configured.

Field Commissioning Checklist

When commissioning or recommissioning a C axis on a 810/820 GA3, use this checklist:

  • Confirm the M function to enable C axis (M64 vs M79 vs other) from the machine's M decoder table
  • Confirm the flag mapping for that M function (pulse and static)
  • Trace the PLC ladder to verify the spindle drive command, brake output, and axis ready confirmation
  • Verify mechanical integrity of encoder mounting, coupling, and zero mark
  • Set MD 402 1 (zero mark offset, channel 1) to the correct value
  • Verify position control resolution matches input resolution
  • Run M19 S0 and verify position
  • Run C axis positioning moves and verify accuracy
  • Run a part program with C axis interpolation and verify path accuracy
  • Document the final MD 402 1 value and the position control resolution settings

Frequently Asked Questions

Why does the NC block containing M64 not finish on the Sinumerik 810T GA3?

The NCK holds the block pending PLC acknowledgement of the M function. The PLC must decode the M function (F43.0 pulse / F44.0 static on this Boley 100), set the spindle drive to position control, engage the brake, and confirm C axis readiness. If any step fails, the block holds. Trace the ladder in the order: M function decode → spindle drive command → brake output → axis ready confirmation.

What is machine data 402 on the 810T GA3 and why does it matter for the C axis?

MD 402 (per channel, with channel number appended, e.g. MD 402 1) is the zero mark offset for the axis. It compensates for the difference between the encoder zero mark and the machine-defined reference. If the encoder was disturbed or replaced, MD 402 must be re-established by re-referencing the C axis. The 180° offset on M19 S0 is a classic symptom of an incorrect zero mark offset.

How do I resolve the 180° discrepancy when M19 S0 is executed?

First rule out mechanical causes (loose encoder, worn coupling, slipping belt). Then adjust MD 402 1 by half the encoder counts per revolution to shift the apparent zero. If the shift does not take effect, the encoder is reading the wrong zero mark edge; check the index gating setting. A persistent 180° offset that cannot be corrected by parameter changes indicates the encoder has been physically rotated and must be reinstalled 180° out of phase.

The PLC ladder is in German — how do I find the M64 logic?

Translate "Merker" to "Flag" (F), "Eingang" to "Input" (I), and "Ausgang" to "Output" (Q). Search the ladder for the flag address for M64 (M43.0 for pulse, M44.0 for static on this machine in German notation) and trace the network downstream. The handshake sequence is: M function decode → spindle drive command → brake output → axis ready confirmation.

Why is the C axis position control resolution important?

The position control resolution (smallest command increment) must match the input resolution (smallest feedback increment) to avoid systematic position errors. A mismatch by a factor of two produces a 180° offset across a full revolution, identical in symptom to a zero mark error. Verify the encoder's native counts per revolution and set the input resolution MD to match. See the 810/820 GA3 installation instructions for the resolution scaling procedure.

Can I change MD 402 on the 810T GA3 online, or do I need a power-on reset?

Most axis machine data on the 810/820 GA3 takes effect only after a power-on reset (NCK restart). Set the new value, save, and perform a controlled restart. Online changes typically do not take effect for axis machine data in this generation.

Back to blog