Multi-Turn SSI Encoder: Turns Are Bits, Not Lost Counts

Tom Garrett7 min read
Motion ControlOther ManufacturerTroubleshooting
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

The number that matters is the bit boundary inside the SSI frame. A multi-turn word is not one continuous count scale; it is a revolution counter stacked on top of a single-turn position, and the split is fixed in silicon at 12 or 13 bits for the single-turn field. Every complaint that reads "the encoder lost its turns after a power fail" is an extraction problem at that boundary, not a retention problem in the encoder.

Fixes That Do Not Recover Turns

Re-homing to a proximity switch at power-up is the reflex answer. It burns cycle time, it needs clear travel from wherever the machine parked, and on a loaded axis it forces motion before the controller knows where the load is. It also throws away the single reason the absolute encoder was specified.

Substituting a servo drive with a battery-backed absolute motor encoder, which re-transmits position as a pulse train on a power-up handshake, does work. It costs a battery on the maintenance schedule, a power-up sequence in the PLC, and it measures the motor shaft — anything downstream of a coupling or gearbox is inferred, not measured.

Swapping to a linear SSI scale removes revolutions from the problem entirely and is the correct answer on a stroke-limited actuator. On a rotary axis or a long-travel drive it is a mechanical retrofit, not a configuration change.

Setting end-of-travel limits from the scaling wizard belongs at the end of commissioning, after position is correct. Soft limits constrain an already-valid scale; they carry no information about which revolution the axis is sitting on.

Where the Turns Actually Live

A multi-turn encoder carries a second measuring stage. In the gear-driven type, additional code discs turn through a reduction gear train, so the revolution count is stored in shaft angle — mechanical state, no memory, nothing to lose when the bus drops. In the battery-backed or energy-harvesting type, a counter increments on each revolution and is retained electrically.

Either way, the transmitted word is a concatenation, MSB first: multi-turn field, then single-turn field. Read as one integer it is monotonic across revolutions, which is exactly what a motion controller wants for a position input. The single-turn field wraps at 2ST counts every mechanical revolution, and the multi-turn field increments at that same instant — so the number of whole revolutions is the integer part of Counts divided by 2ST. Dividing by a power of two is a right shift. That is the entire mechanism.

An axis that appears to be "absolute within one revolution only" is an axis where the controller is masking or scaling the low field and discarding the high one, or where the configured frame length does not match the encoder.

Frame Parameters to Read Before Writing Logic

Quantity Typical value Where to read it Effect if wrong
Single-turn bits (ST) 12 or 13 bits (4096 or 8192 counts/rev) Datasheet, order code Sets the shift distance; wrong value puts the turn boundary mid-revolution
Multi-turn bits (MT) Commonly 12 bits (4096 revolutions) Datasheet Sets the rollover point of the whole scale
Total SSI data bits ST + MT, plus any status bits Timing diagram Controller reads shifted or truncated data
Code type Binary or Gray Datasheet / order code Gray must be decoded on the full frame before any mask or shift
Extra frame bits Leading zero, trailing error / parity / warning bit Timing diagram A trailing bit doubles every raw count
Clock rate vs cable length Derated with cable length Datasheet clock/cable table Corrupted LSBs read as position jitter
Monoflop / frame pause Minimum pause between frames Timing diagram Too short returns a ring-buffer repeat instead of fresh data
Count offset Machine constant Controller retentive memory Defines mechanical zero; loss forces re-referencing

Extraction Procedure

  1. Configure the SSI input for total data bits, code type and clock rate exactly per the timing diagram. Confirm the raw count moves by 1 for the smallest shaft motion the encoder resolves, with no doubling or skipping.
  2. Measure the single-turn width rather than trusting a worn order-code label. Capture raw Counts with the axis stationary, rotate the shaft exactly one revolution by hand, capture again. A delta of 8192 means ST = 13; 4096 means ST = 12.
  3. Move the axis to a known mechanical reference, record raw Counts, and store it as CountOffset in retentive memory. Choose the reference so the working stroke sits well away from the multi-turn rollover.
  4. Subtract the offset first, then shift. The order is not cosmetic — shifting first and correcting turns afterwards places the revolution boundary at the wrong shaft angle.
  5. Feed the continuous scaled position, not the turn count, to the position input, then set end-of-travel soft limits from the scaling wizard on that scale.
(* ST = 13 single-turn bits, 8192 counts per revolution *)
Net      := Counts - CountOffset;
Turns    := Shr(Net, 13);              (* whole revolutions *)
InTurn   := Net AND 8191;              (* 0..8191 within the revolution *)
Position := Net * UnitsPerCount;       (* continuous engineering units *)

(* ST = 12: shift 12, mask 4095 *)

Verification at the Shaft

  1. Single-revolution test: mark the shaft, rotate one turn forward. Turns must increment by exactly 1 and InTurn must return to its starting value within your hand-positioning repeatability.
  2. Boundary test: park the axis a few counts either side of a wrap, cycle control power, and compare. Identical readings before and after prove the extraction survives the boundary.
  3. Power-fail-with-motion test: remove power, move the axis by hand through several revolutions, restore power. The new reading must match the mechanically measured position. If it returns the pre-shutdown value instead, the revolution counter is electrically retained and its battery or harvesting path is dead.
  4. Sign test: drive below CountOffset and watch Turns. A jump to a very large positive number exposes a logical shift on a negative operand.
  5. Independent check: measure the load over full stroke with tape or laser at both ends and compare against scaled position. This is the only test that catches a slipping coupling.

Recurring Failure Modes

Gray-coded frames fail silently under masking. The single-turn field of a Gray-coded word is not itself a valid Gray count, so decode the complete frame to binary first, then shift and mask.

A status or error bit clocked out after the LSB multiplies every raw count by two. The signature is unmistakable: one encoder count moves the number by 2, and the shift distance that works is one bit larger than the datasheet says. Configure the input to strip the trailing bit rather than compensating in logic.

Multi-turn rollover is a real limit, not a theoretical one. With 12 multi-turn bits the counter wraps after 4096 revolutions, and a long-travel axis with a low-ratio reducer reaches that sooner than expected. Bias CountOffset so the machine's working range sits mid-scale.

Two-thirds of the remaining trouble is mechanical. The multi-turn stage is honest about the encoder shaft and knows nothing about a loose set screw or a slipping bellows coupling; that error is permanent, survives power cycles, and reads exactly like drift. On battery-backed units, do not pull the encoder battery or unplug the encoder connector while the machine is de-energized — the revolution count is gone and the axis needs mechanical re-referencing.

Stop and escalate when the one-revolution delta does not land on a power of two, or when the frame length that yields clean data disagrees with the datasheet. At that point get the timing diagram and order-code decode from the encoder manufacturer's official support channel, and confirm with your controller vendor that the SSI module supports that frame length and code type before touching the logic again.

FAQ

What happens if the axis moves while control power is off?

A gear-driven multi-turn stage tracks the revolutions mechanically, so the first frame after power-up already reports the new position with no homing move. A battery-backed or energy-harvesting counter tracks it only while its retention path is healthy; if the reading comes back at the pre-shutdown value, that path has failed.

What happens if I shift right before subtracting the count offset?

The revolution boundary lands at the wrong shaft angle, so Turns is off by one across part of every revolution and the error changes sign as the axis crosses a wrap. Compute Net := Counts - CountOffset first, then shift and mask that value.

What happens if I shift by 12 bits on a 13-bit single-turn encoder?

The turn count increments twice per mechanical revolution and the reported position folds back on itself every half turn. Rotate the shaft one revolution and read the raw delta: 8192 means shift 13 and mask 8191, 4096 means shift 12 and mask 4095.

Back to blog