In the field of precision motion control, the demand for dual axis synchronous drive is increasing, such as gantry platforms, dual drive laser processing, synchronous scanning systems, etc. The dual axis controllers (DSCDP, DSCDL, DSCDM) in the ETEL DSCxx series integrate two independent servo control channels on a 6U rack board, which can simultaneously drive two single-phase or two-phase linear/rotary motors. Coupled with analog sine and cosine (including EnDat 2.1 absolute value) or TTL encoders, they achieve sub micron level positioning. However, the debugging complexity of dual axis systems is much higher than that of single axis systems - from dual axis DIP switch address allocation, independent encoder wiring isolation, dual channel initialization and zeroing, to separate tuning of two axis regulators, any parameter mismatch in any link can lead to system errors or even motor runaway. This article is based on the core content of the DSC series operation and software manual (version F), combined with the unique structure of the dual axis controller, and systematically outlines the key steps and typical troubleshooting strategies for on-site debugging.
Dual axis model identification and hardware differences
The DSC series dual axis controller includes three main models, with differences in hardware characteristics and applicable scenarios:
1.1 DSCDP
Dual axis servo controller, supporting three-phase motors (star connection), PWM frequency 18kHz.
Peak current per axis is 11A (2 seconds), suitable for medium power dual axis applications.
Supports digital Hall sensors (K90=3/4/5), without built-in analog input (different from DSCDL).
1.2 DSCDL
Dual axis linear motor dedicated controller, supporting single-phase/two-phase motors.
The current loop sampling time is 13.89 μ s (72kHz), which is the fastest among the three and suitable for low inductance linear motors.
Each axis is equipped with one analog input (AIN, ± 10V, 16 bit ADC), supporting EnDat 2.1 absolute encoder (K79=4).
Support small displacement initialization (K90=6), suitable for vertical axis or high friction systems.
1.3 DSCDM
Low cost dual axis controller, with multiplexed pins for digital I/O and analog I/O (direction selection required through K171).
Without DIN2, returning to zero requires selecting DIN1 or DIN9 as the Home switch input through K58 (bit2/bit3).
Only supports ± 36VDC power supply (SELV), with a power-off discharge time of only 2 minutes (different from other models' 10 minutes).
On site selection prompt: If it is a linear motor dual axis application and requires analog speed/torque commands, DSCDL should be prioritized; If it is cost sensitive and only requires digital I/O control, DSCDM is more economical.
Dual axis axis number setting and TEB communication
2.1 DIP switch axis number allocation rules
The axis number of the dual axis controller is set through a 4-digit DIP switch, and the rule is different from that of a single axis:
Axis number=DIP switch binary value x 2
The first axis equals the value multiplied by 2, and the second axis automatically increases by 1
Example: DIP switch set to 3 (binary 0011) → first axis=6, second axis=7.
Special case: When all switches are turned to "1" (high position), the controller reads the axis number previously saved through the AXI command (if not saved, it defaults to axis 0 and 1).
Common error: If multiple DSCDP/DSCDL/DSCDM share the TEB ring, the axis number must be unique and continuous (such as axis 0/1, 2/3, 4/5...). If "BAD NOTE TEB ERR" (M64=59) appears, it indicates the presence of duplicate axis numbers and requires checking the DIP switch settings of each controller. The manual clearly states that the AXI command must be applied to even axes when using the dual axis controller, and the new axis number must be even.
2.2 TEB Communication and Synchronization (K87)
The TEB synchronization frequency of the dual axis controller is 2kHz (STI=500 μ s), which is different from the 6kHz of DSC2P/DSC2V. In multi axis interpolation mode, it is necessary to set:
The optimal K87 value for DSCDP/DSCDL/DSCDM is 257 (bit0=1 synchronized at 2kHz, bit8=1 delayed by 1 FTI=55.56 μ s).
If K87=0 (asynchronous), TEB communication can still work, but the accuracy of multi axis interpolation decreases.
Dual encoder independent wiring (JC5/JC6)
DSCDP/DSCDL/DSCDM provide independent encoder interfaces for each axis (JC5 corresponds to motor 1, JC6 corresponds to motor 2), both using 15 pin high-density D-Sub female sockets.
3.1 Encoder type and K79 parameters
Dual axis controller supports:
K79=0: Simulate sine cosine (1Vpp) encoder, requiring K70~K73 (offset/amplitude correction) to be set.
K79=4: EnDat 2.1 absolute encoder, attention should be paid to clock frequency of 500kHz and cable length ≤ 150m (distributed capacitance of 90pF/m).
K79=1: TTL encoder (RS422), input frequency limit of 400kHz (limited by analog front-end).
Special precautions for dual axis:
The power supply (+5V) of the two encoders is protected by independent 1A fuses (F2). If the power supply of one axis encoder is blown, only that axis will report "ENCODER FUSE KO" (M64=35).
The offset/amplitude correction parameters (K70~K73) of the analog encoder need to be independently set for both axes and optimized by executing the AUT command separately.
3.2 Encoder Monitoring (M40/M41/M43)
The encoder signal quality can be monitored in real-time through M40 (sine signal) and M41 (cosine signal). For DSCDL, the encoder signal value conversion formula is: voltage [V]=encoder value [inch]/65536 × 0.74 (x coefficient 0.74), which is different from the x=0.83 of DSC2P/DSC2V.
If the amplitude of M43 (sin ²+cos ²) is too low, it will trigger "ENCODER AMPLITUD" (M64=20), and K72/K73 (amplitude correction) needs to be adjusted or the installation gap of the encoder reading head needs to be checked.

Phasing fault diagnosis during initialization
The brushless motor must perform initialization (Phasing) upon initial power on to determine the initial electrical angle of the rotor relative to the stator magnetic poles. The two axes of the dual axis controller can independently select the initialization mode (K90), but it should be noted that some modes are not available on specific models.
4.1 K90=2 (constant current initialization) - General mode
Suitable for most iron core and iron core less motors. The parameters K92 (constant current amplitude) and K94 (initialization time) are crucial.
Fault phenomenon: During initialization, the motor does not move or moves very little, reporting "Initialize LOW CUR" (M64=153) or "TIMEOUT AUT CMD" (M64=156).
Troubleshooting steps:
Gradually increase K92 (but not exceeding the incremental value corresponding to the peak current of the motor).
Increase K94 (typical value of 5000~15000, corresponding to 5~15 seconds).
If the motor is equipped with a brake, confirm that the brake has been released (controlled by DOUT).
Fault phenomenon: During initialization, the motor moves too far (exceeding ± 20% of the magnetic pole period), and reports "Initialize HIGH CUR" (M64=154).
Countermeasure: Reduce K92 or switch to small displacement initialization mode (K90=6).
4.2 K90=6 (small displacement initialization) - DSCDL specific
For vertical axis or high friction systems, small displacement initialization measures the motor position through short-term pulse current measurement, with almost no visible movement. This mode is best supported on DSCDL (recommended for vertical motion in the manual).
Parameter settings:
K91 (pulse current amplitude): Initially set to around 5% of K60 (force limit).
K101 (pulse interval time): The high inertia system needs to be increased to 2000-5000ms.
If it reports' Initial LOW TIME '(M64=155), K101 should be increased; If it reports' Initial HIGH CUR '(M64=154), K91 should be lowered.
4.3 Digital Hall Sensor Initialization (K90=3/4/5) - DSCDP/DSCDM
DSCDP and DSCDM support initialization through digital Hall signals (H1/H2/H3), suitable for commutation requirements without encoders. However, it should be noted that:
The H1/H2/H3 of DSCDM are dedicated pins and cannot be used as standard DIN.
K90=5 (only Hall commutation, no encoder) can eliminate the encoder, but the positioning accuracy is lower.
4.4 Phase reversal (K56) and AUT command
If the output direction of the motor after initialization is opposite to the command, executing AUT.<axis>=10 (bit1+bit3) can automatically calculate K56 (phase sequence reversal) and K53 (fine phase adjustment). For dual axis controllers, the AUT command needs to be executed separately for both axes and in the "Power Off" state.
Homing mode selection and exception handling
The dual axis controller's return to zero (IND command) supports up to 40 modes (K40), but some modes have limitations on specific models.
5.1 Effects of DIN2 Deficiency in DSCDM
DSCDM does not have a DIN2 pin, so when using the Home switch's return to zero mode (K40=2/3/6/7/16/17/18/19/36/37), alternative pins must be selected through K58's bit2 and bit3:
Bit2=1: Home switch connected to DIN1
Bit3=1: Home switch connected to DIN9
If K58 is not set correctly, it will report "HOME NOT POSSBLE" (M64=69).
5.2 Zero return timeout or collision limit
The common error is "SING IDX SEARCH" (M64=62) or "MULT IDX SEARCH" (M64=61), indicating that the reference pulse was not found. Key points of investigation:
K41 (return to zero speed): It is recommended to set it at 10% to 20% of the rated speed.
K43 (limit detection tracking error) and K44 (limit detection force limit): It is necessary to ensure that K43>50% of K30 (tracking error limit) and K44<80% of K60 (force limit).
K48 (distance from origin switch/Index): For Home switch mode, K48 must be greater than the physical length of the Home switch.
5.3 Repeated accuracy difference at the origin after zeroing is completed
Possible reasons:
Fine phase adjustment is not enabled (K52=1). After activation, replace the initialization phase with K53 (measured by the AUT command) each time the reset is completed.
Return to zero direction setting error (K40's positive/negative direction does not match the edge of the encoder Index signal).
For multi reference pulse encoders such as Heidenhain LIDA, K75 (reference pulse spacing) must be precisely set.
Dual axis digital I/O independent configuration
The dual axis controller provides independent digital I/O interfaces for each axis (JC12 corresponds to motor 1, JC13 corresponds to motor 2), but special attention should be paid to the DIN/DOUT pin reuse of DSCDM.
6.1 Digital Input (DIN1/DIN2/DIN9/DIN10)
DIN10 (positive limit), DIN9 (negative limit), DIN2 (Home switch, DSCDM not available).
The input voltage of+12~+28V corresponds to logic "1", and 0V corresponds to logic "0".
6.2 Digital Output (DOUT1/DOUT2)
The optocoupler isolation collector is open, and an external pull-up or load power supply (+Text, 12-28V) is required.
The total output current is ≤ 500mA (limited by F1 fuse).
6.3 DSCDM Pin Reuse (K171)
The DIN and DOUT pins of DSCDM share the same pin, and the direction needs to be selected through K171:
Bit=0: corresponding pin is a digital input
Bit=1: corresponding pin is a digital output
Attention: Misconfiguration may result in hardware damage (as explicitly warned in the manual).

Parameter tuning of regulator and vibration suppression
The parameters of the two axis adjusters of the dual axis controller need to be independently set and adjusted separately.
7.1 Current loop regulation (K80/K81)
DSCDL specificity: The current loop sampling time is 13.89 μ s (72kHz), which is the fastest among the three. K80 range 0~16383 (different from DSCDP/DSCDM range 0~2147483647), K81 range 0~127.
Automatic tuning of AUT usually provides a good initial value, but if current oscillation occurs, K80 can be manually reduced or K82 can be increased (current output filtering).
7.2 Position ring adjustment (K1/K2/K4)
K1 (Proportional Gain): Increasing it can reduce tracking error, but if it is too large, it can cause overshoot.
K2 (speed feedback gain): Increasing it can suppress overshoot and oscillation, but it will reduce the system stiffness.
K4 (Integral Gain): Used to eliminate static position errors.
7.3 Feedforward compensation (K20/K21) and filters (K8/K9)
The initial value of speed feedforward K20 is set to 70%~100% of K2.
Acceleration feedforward K21 is used to compensate for tracking deviation during acceleration and deceleration phases.
Mechanical resonance (500Hz~1kHz howling) can enable K8 (velocity filtering) or K9 (force reference filtering). The formula for calculating the cutoff frequency of K8/K9 is detailed in section 13.1.2.3 of the manual.
Quick diagnostic reference for error codes
Error code display information Possible reasons (dual axis specific) Priority processing
M64=2/3 OVER CURRENT1/2 phase sequence error (K56) or K83 set too low, execute AUT=10, check K83
M64=4 I2T ERROR Periodic motion overload, improper setting of K84/K85, recalculate K84/K85
M64=20 ENCODER AMPLITUD encoder signal amplitude too low. Check the gap between the reading heads and adjust K72/K73
M64=35 ENCODER FUSE KO. The power supply fuse F2 of a certain axis encoder is blown. Check the encoder cable and replace the fuse
M64=59 BAD NOTE TEB ERR TEB There is a duplicate axis number on the TEB ring. Check the DIP switch and use AXI to reassign
M64=69 HOME NOT POSSBLE DSCDM not set K58 instead of DIN2 set K58 bit2 or bit3
M64=153 Initial LOW CUR K92 Current too low increases K92
M64=154 Initial HIGH CUR K92. If the current is too high, reduce K92 or switch to K90=6
M64=155 Initial LOW TIME K101 Time is too short, increase K101
Parameter Save (SAV) and Curing
After all parameter adjustments are completed, execute SAV.<axis>=2 to save the K, X, E, R, F parameters and axis numbers to Flash. For dual axis controllers:
The SAV command must be applied to even axes (such as SAV.6=2), and the second axis automatically follows.
If only the sequence (S register) and lookup table (L) need to be saved, use SAV.<axis>=0 or 1.
