Incremental vs Absolute Encoder: Position Feedback for PLC Applications
Incremental vs Absolute Encoder: Position Feedback for PLC Applications
TL;DR: An incremental encoder outputs a stream of pulses — the PLC counts them to track relative movement from a reference point. Position is lost on power-off; the machine must home on startup. An absolute encoder outputs a unique digital code for every shaft position — the PLC reads the current position on power-up without homing. Use incremental for velocity feedback and cost-sensitive applications; use absolute for vertical axes, long conveyor tracking, or any machine where homing on startup is dangerous or impractical.

Rotary encoders are the position feedback backbone of factory automation. Every servo drive, stepper axis, conveyor length counter, and flow meter with shaft feedback uses an encoder. Picking the wrong type leads to either unnecessary cost (absolute encoder where incremental would do) or a dangerous machine that loses position on every power cycle.
Incremental Encoder: Count Pulses from a Reference
An incremental encoder produces a fixed number of pulses per shaft revolution (PPR — pulses per revolution). Most industrial incremental encoders output two square-wave channels, A and B, offset by 90° — this is quadrature encoding. The phase relationship between A and B tells the PLC which direction the shaft is rotating.
Channel A leads channel B when rotating clockwise. Channel B leads channel A when rotating counter-clockwise. The PLC's high-speed counter module (HSC) counts the rising and falling edges of both channels, giving 4× resolution (a 1000 PPR encoder gives 4000 counts per revolution in quadrature mode).
Index channel (Z): many encoders add a third channel, Z or I, that produces one pulse per revolution at a fixed reference position. The PLC uses the Z pulse to reset the position count to zero during homing — establishing the absolute reference the machine needs to know where it is.
Resolution: measured in pulses per revolution (PPR) or lines per revolution (LPR). Common industrial values: 100, 256, 500, 1000, 2500, 5000 PPR. For a 5000 PPR encoder in 4× quadrature mode: 20,000 counts/revolution.
Wiring: incremental encoders are almost always 5V or 24V line driver (RS-422 differential) outputs for noise immunity, or open collector (NPN or PNP) for shorter cable runs. Differential (RS-422) pairs: A+/A−, B+/B−, Z+/Z−. The PLC's HSC module must match the input type.
After power loss: the encoder outputs pulses from wherever the shaft currently is — it has no memory of absolute position. On power-up, the PLC's counter starts at zero. Without homing, the PLC does not know where the axis is. Every machine using incremental feedback must execute a homing cycle on startup.
Absolute Encoder: Position Without Homing
An absolute encoder encodes the exact angular position of the shaft as a unique digital word. A 12-bit single-turn absolute encoder has 4096 (2¹²) unique positions per revolution — at any shaft position, a different 12-bit code is output. On power-up, the encoder immediately reports the current position with no movement required.
Single-turn vs multi-turn:
- Single-turn: encodes position within one revolution (0° to 359°). Repeats on every rotation. For machines that never rotate more than one turn between reference points.
- Multi-turn: includes a gear train inside the encoder that tracks how many full rotations have occurred. A 12-bit single-turn + 12-bit multi-turn absolute encoder tracks 4096 positions × 4096 turns = 16 million unique positions. The internal gear train is battery-backed on some designs; on others (EnDat, HIPERFACE) the multi-turn count is maintained by counting pulses from a non-volatile energy-harvesting mechanism.
Interfaces: absolute encoders output their position word over a serial or parallel interface:
- Parallel: each bit of the position word drives a separate wire. Simple but requires many wires (a 12-bit encoder needs 12 signal wires + power + common). Only practical for short cable runs.
- SSI (Synchronous Serial Interface): a 2-wire clocked serial interface. The PLC or drive controller sends a clock, the encoder shifts out the position word synchronously. Most common for standalone absolute encoders connecting to PLC position modules.
- EnDat, BiSS-C, HIPERFACE: high-speed serial protocols used between servo motors with integrated absolute encoders and servo drives. Not typically used with standalone PLCs.
- IO-Link, CANopen, PROFIBUS, PROFINET: fieldbus-connected absolute encoders. The encoder appears as a device node on the network.
After power loss: the absolute encoder retains its position — or recovers it immediately from the shaft position on power-up (single-turn) or from a gear train counter (multi-turn). No homing is required.
Side-by-Side Comparison
| | Incremental | Absolute (Single-turn) | Absolute (Multi-turn) | |---|---|---|---| | Output | Pulse train (A/B/Z) | Digital position word | Digital position word (position + turn count) | | Position after power loss | Lost — requires homing | Retained (reads shaft angle instantly) | Retained (turn count + shaft angle) | | Interface | HTL/TTL square wave, RS-422 | Parallel, SSI | SSI, EnDat, HIPERFACE, fieldbus | | Homing required? | Yes — on every power-up | No | No | | Wiring | 4–6 wires (A/B/Z + power) | 12–20 wires (parallel) or 4 wires (SSI) | 4–6 wires (SSI / serial) | | Resolution | Counts per rev (configurable) | 2^N positions per rev | 2^N × 2^M positions total | | Relative cost | Lower | Higher | Highest | | Best for | Velocity, flow, conveyor length | Rotary table, turret index | Vertical axis, robot joint, linear stage |
How PLCs Read Incremental Encoders
A PLC reads an incremental encoder through a High-Speed Counter (HSC) module or a dedicated counter module. The standard CPU digital input is too slow — inputs are scanned at the PLC cycle rate (1–50 ms), which is far too slow for a 5000 PPR encoder at 3000 RPM producing 250,000 pulses per second.
The HSC module has dedicated hardware counters that count pulses independently of the PLC scan cycle, typically up to 500 kHz or more. The PLC program reads the counter register value each scan to get position.
Example (Allen-Bradley 1769-HSC, CompactLogix):
- Configure the HSC module for Channel A/B quadrature mode
- Set accumulator rollover (max count) to the travel range in counts
- In the PLC program: tag
HSC.ACCcontains the current position in counts - Homing routine: jog to a limit switch + Z pulse, reset the counter to zero, mark the machine as homed
Example (Siemens S7-1200 with HSC):
- Assign the A and B input terminals to the HSC function in the device configuration
- Set
counting mode = A/B encoderin the HSC properties PTO_COUNTor the High Speed Counter SFB returns the current count to a DINT tag
How PLCs Read Absolute Encoders
SSI interface: an SSI encoder requires a position module or a dedicated SSI input card. Siemens offers the SM1521 (SSI) for the S7-1500; Allen-Bradley offers the 1734-SSI POINT I/O module. The PLC program reads a DINT or INT tag containing the decoded position word directly.
Parallel interface: each bit wire connects to a standard digital input. The program assembles the integer position from individual input bits using bit manipulation. This only works for low-resolution encoders (8–10 bit) before the wiring count becomes impractical.
Fieldbus absolute encoders: the encoder appears as a standard device node. For PROFINET encoders, the PLC reads a consistent position process data word each cycle via standard I/O mapping — no special module needed.
Application Decision Guide
Use an incremental encoder when:
- Velocity feedback for a conveyor or motor (counting pulses per time window)
- Counting objects or measuring lengths (pulse count × pitch = distance)
- Cost is a constraint and the machine homes safely on every startup
- The axis is horizontal and position loss on e-stop is acceptable
Use an absolute encoder when:
- Vertical axes (gravity will move the load if position is lost; absolute encoder means the machine knows where it is the moment power returns)
- The machine cannot home automatically (insufficient travel, tooling interferes with home position sensor)
- Conveyor systems where product tracking must survive a power interruption
- Robot joints where homing every startup is unacceptably slow
- Long linear axes where a power-down and unexpected move would cause a crash
Frequently Asked Questions
Q: Does an incremental encoder work with a VFD?
A: Yes. Incremental encoders are the standard feedback device for vector-mode VFDs. The encoder A/B output connects to the drive's encoder input card. The drive uses the pulse count to calculate actual motor speed for closed-loop vector control. Most VFD encoder inputs accept either differential (RS-422) or open-collector signals at 5V or 24V — check the drive specification.
Q: What does PPR mean on an encoder?
A: PPR stands for Pulses Per Revolution. A 1000 PPR encoder produces 1000 complete A-channel pulses per shaft revolution. In 4× quadrature mode (counting A and B rising and falling edges), the effective count per revolution is 4000. Do not confuse PPR with CPR (Counts Per Revolution), which is already the 4× figure.
Q: My absolute encoder gives a different position after every power-up. What is wrong?
A: The most common cause for single-turn absolute encoders is that the "different position" is the correct current shaft angle — the shaft moved while power was off. If the position is genuinely wrong (not reflecting the actual physical position), check the SSI clock polarity and clock frequency settings on the PLC module. Some encoders require a specific clock frequency range; outside that range the shift register reads incorrectly. Also verify that the encoder code type (binary vs Gray code) matches the module configuration — Gray code and binary produce completely different values for the same position.
Q: What is the difference between Gray code and binary code on an absolute encoder?
A: Gray code (reflected binary) is an encoding where adjacent positions differ by only one bit. This prevents the large position errors that would occur in straight binary when multiple bits change simultaneously (e.g., 0111 → 1000 requires all 4 bits to switch at once — if they switch at slightly different times, intermediate values like 1111 or 0000 appear briefly). Gray code guarantees single-bit transitions between adjacent positions, eliminating transient position spikes. Most SSI absolute encoders default to Gray code; the PLC module or driver library converts to binary. Ensure the module is configured for the code type your encoder outputs.
Explore how encoders connect to PLC programs with the interactive encoder sensor page — it shows the A/B quadrature pulse output and the direction logic in real time.
Practice building an encoder-based position counter in ladder logic with the encoder programming examples post, which covers Delta, Siemens, and Allen-Bradley High-Speed Counter configuration.