Motion Control - ElmoMC

Pulse & Direction Commands


Pulse and direction commands are sent by an upper generator to a lower level controller – the Elmo drive – via the drive’s auxiliary input.

SimplIQ drives include two position decoders — main and auxiliary – and they have similar characteristics to each other. The position decoders measure quadrate or pulse/direction.

Both decoders have time limits regarding the maximum number of pulses that can be set in order to transmit accurate speed information. The information is sent via timer sets A and B and the maximum counting rate of a decoder is 20 MHz.

When the drive receives the pulses it translates them into the position command, with one pulse is equal to one motor count.
Each transition of the pulse increases or decreases PY (Auxiliary Position) by one count, according to the level of the direction signal.

The following settings must be defined in order for a drive to activate the pulse and direction modes:

  1. Set RM=1 in order to enable the auxiliary position command.
  2. Set YA [4] =0 in order to define the pulse and direction modes.

Figure 1: Example: Connecting the Bassoon to an upper controller

Position ModeWhile applying pulse and direction in position mode, the controller maintains the desired position which also affects the velocity profile.

The Speed Estimator estimates the speed of the motor based on the number of pulses and amount of time that has elapsed. The speed error is then calculated and the speed can be corrected.

Elmo Digital Output Diagram Figure 2: Position controller

Figure 3: Example of how the controller maintains both the position and velocity commands

Velocity Mode

Velocity mode is different from Position mode, as the pulse is transmitted to the velocity controller as a velocity command.

The speed is determined by the distance between two consecutive pulses.

In the diagram below, the auxiliary command is transmitted directly to the speed controller.

Figure 4: Speed controller

Figure 5: Example of how the controller maintains the velocity command, when there is no position command

Encoder Filter Frequency

The encoder filter signal can improve the noise immunity. The inputs are first run through a glitch filter, as the logic of the quadrature decoder can sense the transitions. The glitch filter has a digital delay line that samples four time points on the signal and verifies that a majority of the samples are at a new state before outputting that new state to the internal logic. The sample rate of this delay line is programmable, and is adaptable to a variety of signal bandwidths.

When an analog encoder is used, the basic signal, before interpolation, is filtered using the same method.
The EF[2] parameter sets the sample rate of the corresponding digital glitch filter for the auxiliary encoder.

A counter increases or decreases to the value of EF[2]. When the count reaches the specified value, the counter is reset and the filter takes a new sample of the raw A, B, Index and Home input signals. If EF[2] is zero the digital filter is bypassed.

If EF[2] is high, the encoder reading of the noise immunity will be better, but true fast transitions (occurring at fast speed) may be dismissed as false. A number that is too low may result in noise pulses being counted. A good value for the required delay of the encoder filter is one quarter of the minimum time that is expected between transitions.


Suppose that the maximum frequency that is supplied by the generator is 800 kHz and the motor is equipped with an encoder of 1000 lines (4000 counts/rev with resolution multiplication). The expected minimum pulse transition time is:

The frequency of 800 kHz is equal to 12,000 rpm.

4000 cpr * 12,000 rpm = 48,000,000 counts per minute
48,000,000/60 = 800,000 counts per second
1/800,000 = 1.25 μsec

The minimum required stable time for the pulse signal should be set to approximately:
1.25 μsec/4 = 312 nsec

The encoder filter ranges are as follows:

In the above case, take 312 nsec and round it down to 300 nsec. According to the table above, for 300 nsec EF [2] = 2 is the recommended value.