SSI: Synchronous Serial Interface for Absolute Encoders
SSI (Synchronous Serial Interface) is a point-to-point communication protocol designed specifically for transmitting absolute position from encoders to controllers. It is the de facto standard for absolute encoders with serial interface.
Working Principle
SSI is a synchronous master-slave protocol:
- The master (PLC/controller) generates a clock signal (CLK)
- The encoder (slave) responds with position bits on the data channel (DATA), synchronized on the clock rising edge
- Transmission is unidirectional: the encoder only sends position, it doesn't receive commands
- The master sends N clock pulses (one for each data bit)
- The encoder shifts position bits from MSB (most significant bit) to LSB
- After the last bit, the master stops generating clock
- A pause period (monoflop time, typically 12-30 ΞΌs) resets communication for the next cycle
- Clock speed: 100 kHz β 2 MHz (typically 500 kHz)
- Number of bits: 13-25 bits (single-turn) or up to 30 bits (multi-turn)
- Physical interface: RS-422 differential (4 data wires)
- Maximum distance: 50 m (at 500 kHz), 10 m (at 2 MHz)
- Encoding: Gray code (standard) or natural binary
- Clock+ and Clock- (from master to encoder)
- Data+ and Data- (from encoder to master)
- +24V and GND (power supply)
- Total: 6 wires (+ shield)
- Robust digital transmission (RS-422 differential)
- No position loss after power-off
- Simple protocol, easy to implement
- Supported by all major PLCs (Siemens, Beckhoff, Allen-Bradley)
- Unidirectional communication (no diagnostics from encoder)
- One encoder per connection (point-to-point, no bus)
- No remote parameterization
- Siemens: SM338 modules, ET200 with SSI module
- Beckhoff: EL5001, EL5002
- Allen-Bradley: SSI modules 1769-SSI
Protocol Timing
Technical Specifications
Wiring
Gray Code
SSI typically uses Gray code to prevent transition errors. In Gray code, between two adjacent positions only one bit changes. If reading in natural binary during a transition (e.g., from 0111 to 1000), slight misalignment could read an incorrect value (e.g., 0000 or 1111).



