- What EPOS4 SSI configuration is required for maxon's EMT multi-turn encoder?
1.) EMT's SSI protocol specification
maxon's EMT multi-turn encoder uses the following SSI protocol:
(see also be attached document "Product-Information-ENX-22-EMT-EN.pdf")
The start of EMT's SSI data transmission is triggered by the clock signal (CLK) of the EPOS4.
- With the first CLK signal's falling edge the EMT encoder latches its current position.
- The first rising edge of the CLK signal sets the data line of the EMT encoder to “0”.
- The data line is kept low (= '0') for 8 CLK ticks then.
After this start phase the slave transmits the position data which consists of ...
- Multi-turn value (= number of turns): 16 bit
- Single-turn value (= position within one turn): 17 bit
The MSB is transmitted first. The transmission finally ends with the DATA line set to zero again.
2.) EPOS4's SSI configuration
2.1) Configuration of "Data bits" parameters
The 8 “starting bits” with zero state of the EMT data line have to be configured as “Special bits leading” by the EPOS4. Without such a configuration (resp. keeping the default "Special bits leading = 0) the evaluation of the multi-turn and single-turn position data by the EPOS4 goes wrong and results in an even strongly mismatching speed and wrong positioning (seen from the user's point of view checking the output shaft motion).
Due to the fact that the EPOS4 (like most other motor controllers) just processes 32 bit position data but the EMT encoder transmits 33 bit totally, at least one data bit has to be ignored by processing position data.
Considering the 8 "starting bits" and reducing the maximum number of 'Position' bits to be processed means that the EPOS4 requires one of the following configurations in case of an EMT encoder:
Solution 1: Reducing number of processed Multi-turn bits 'Position'
If an application moves quite a long time (i.e. over a long distance) in the same direction, reducing the number of processed Multi-turn bits 'Position' is no perfect solution. It might be better then to reduce the number of processed Single-turn bits 'Position' like recommended by solution 2 or even better solution 3 below.
Solution 2: Reducing number of processed Single-turn bits 'Position'
It will be suitable for most applications to reduce the processed number of single turn bits to 16 which results in still a more than sufficient resolution (of 65536 inc./turn resp. 0.0055°) for extreme precise motor control and accurate positioning. The full multi-turn resolution (of 16 bits = 65536) can be kept in this case.
Solution 3: Most recommended -> Reducing Single-turn bits 'Position' to 14
It must be taken into account that the lowest 3 - 4 significant bits of the "Single-turn" resolution can be influenced by noise due to encoder's internal interpolation or any mechanical vibration of the mechanics during operation. It can occur that the information of the "lowest significant bits" (= the transmitted position value) changes even at standstill and fluctuates around the target position. Finally this leads to a slight but fast oscillation of the motor shaft around the target position and be perceived as "unsteady" control, especially in case of motor controllers (such as an EPOS4) with fast control cycle rates that react very dynamically to every bit change of the position data.
Oscillation due to encoder signal noise can be overcome if the 3 - 4 lowest significant bits of the "Single-turn bits / Position" are ignored by the control and not processed at all, i.e. "Single-turn bits / Position" is configured just as 13 or 14 bits.
Practical hint & best position control base:
In practice, an even lower configuration of only 13 or 14 bit "Single-turn bits / position" often results in a better, smoother standstill control. For precise positioning, 13 bits (= 8192 inc. per motor shaft revolution or 0.044°) are almost ever sufficient, since the mechanics (or a gear) mounted on the motor shaft have often a far greater backlash and the most relevant impact concerning position accuracy of the load.
maxon recommends to use the following configuration in case of a EMT encoder:
The proper configuration of "Special bits leading" is mandatory by any EMT 'Multi-turn' and 'Single-turn' configuration:
"Special bits leading" = 8 (like shown by the screenshots above)
2.2.) Configuration of "Encoding" parameters
Find the required base technical data by chapter "1.3 Absolute Interface" of the attached document "Product-Information-ENX-22-EMT-EN.pdf":
=> EPOS4 's SSI configuration details:
Please take care to configure a "Data rate" of 1000 kBit/s in maximum because this is the data rate limit of the EMT.
2.3.) Configuration of "Advanced" parameters
3.) Important configuration settings in addition
3.1.) Following error window
The "Following error window" (-> EPOS Studio's "Startup wizard" -> Limits) configuration holds a default value of 2000 inc. which fits quite well to an incremental encoder with 500 cpt. which offers a resolution of 2000 inc. per turn (-> Encoder: channels A and B, phase shift and direction of rotation).
The EMT encoder offers a much higher resolution per each turn of the motor shaft. A default "Following error window" of 2000 inc. is far too low in case of an EMT and can trigger "Following error" (error code: 0x8611) quite fast in case of dynamic acceleration and deceleration. As a rule of thumb the "Following error window" should be adjusted to the following value:
"Following error window" = 1 ... 4 x encoder's resolution per motor shaft turn
In case of a SSI encoder this means depending on the Singe-turn bits 'Position" = n configuration:
"Following error window" = 1 ... 4 x 2^n
In case of an EMT with Single-turn bits 'Position' = 14 (like recommended above):
"Following error window" = 1 ... 4 x 2^14 = 16384 inc. ... 65536 inc.
Please keep the following main important points in mind concerning the configuration of a EMT multi-turn SSI encoder:
- Data rate: max. 1000 kBit/s
- Special bits leading: 8 (!)
- Multi-turn bits 'Data': 16
- Multi-turn bits 'Position' = 16
- Single-turn bits Data: 17
- Recommendation: Single-turn bits 'Position' = 14
Important to keep in mind too:
- Adjust the "Following error window" according to the EMT encoder's configured Single-turn bits 'Position' value.
As a rule of thumb the "Following error window" should be 1 ... 4 x 2^n, i.e. ...
- Single-turn bits 'Position' = 14
=> "Following error window" = 16384 ... 65536 inc.
- Single-turn bits 'Position' = 14
Find some more information about EPOS4's SSI configuration features by this link: