Resolving R88D-GT20H Encoder Feedback on CP1E-N40DT-D Inputs

James Nishida13 min read
CJ/CP SeriesOmronTroubleshooting
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Resolving R88D-GT20H Encoder Feedback on CP1E-N40DT-D PLC Inputs

The combination of an Omron R88D-GT20H G-Series AC servo drive and a CP1E-N40DT-D PLC is a common low-cost positioning architecture, but the apparent simplicity of "wire A+, B+, Z+ into the PLC high-speed counter" hides a fundamental protocol limitation. Engineers frequently wire the encoder signal pins directly to CP1E inputs 0.00, 0.01, and 0.04 and find that no pulses are registered, no error is flagged, and the high-speed counter remains at zero. This article explains why the wiring is electrically valid but functionally useless, and provides a complete working replacement architecture using incremental encoder feedback plus INP and ERR drive outputs.

1. Problem Statement

A CP1E-N40DT-D is being used as a positioning controller for an R88D-GT20H drive (typically paired with an R88M-G series servomotor) through the PLS2 (Pulsed Output 2) instruction. The drive moves correctly when commanded, but no encoder feedback pulses are visible to the PLC, even though the wiring is connected:

  • Encoder A+ to CP1E input 0.00
  • Encoder B+ to CP1E input 0.01
  • Encoder Z+ to CP1E input 0.04

The PLC program runs without a fault, but the high-speed counter (HSC) value never changes. There is no error code in the PLC, no alarm on the drive, and the motor continues to follow the PLS2 pulse train as expected. The application requires position verification between the commanded pulse count and the actual motor position.

2. Affected Hardware and Firmware

Hardware and firmware baseline for this troubleshooting guide
Component Catalog / Part Number Notes
Servo Drive R88D-GT20H OMNUC G-Series, 200 W class, 1-axis position control
Servomotor (typical) R88M-G02030H 3,000 r/min incremental / absolute encoder, 200 W
PLC CPU CP1E-N40DT-D 40 I/O, transistor outputs, DC power supply
Programming Software CX-Programmer 9.x (or Sysmac Studio CP1E support) Used to configure built-in HSC inputs
Encoder Output Type Line driver (RS-422 equivalent) 5 V differential, not 24 V open-collector

The fault class is the same across all R88D-GT__H (200 V class) and R88D-GP__H (100 V class) G-Series drives when paired with any CP1E/CP1L/CP1H PLC; it is not firmware-version dependent but is intrinsic to the G-Series encoder interface architecture.

3. Root Cause Analysis

3.1 The G-Series Does Not Expose Absolute Encoder Position as Pulses

The R88D-GT20H motor uses an absolute encoder internally, but the CN2 encoder output connector on the drive does not stream the absolute position as a quadrature pulse train. According to the G-Series user manual, the CN2 pinout is wired to a duplicated channel of the motor encoder and is intended to be used as an incremental feedback signal for an external motion controller. The drive itself holds the absolute multi-turn and single-turn information internally and uses it for homing retention only.

There is no serial bus (such as SSI, BiSS, or EnDat) on the CN2 connector. The G-Series architecture assumes that any "absolute" position is held by the drive and exposed to the controller only through the INP (in-position) discrete output and the deviation-counter alarm behavior. Therefore, even a perfectly wired, perfectly terminated, perfectly configured CP1E HSC will count 0 pulses on a drive that is at rest and correctly positioned, because no incremental pulses are generated while the motor is stationary.

3.2 The Drive Encoder Output Is a Line-Driver Signal

The CN2 encoder output on the R88D-GT20H is a 5 V RS-422 line driver signal. The CP1E-N40DT-D's built-in inputs are 24 V DC sinking/sourcing, with a typical ON threshold of approximately 17 V. Directly wiring a 5 V differential signal into a 24 V input is electrically incompatible: the line driver will be unable to drive the input above its ON threshold, and the high-speed counter will never see a transition.

Signal-level mismatch between R88D-GT20H encoder output and CP1E input
Parameter R88D-GT20H CN2 Output CP1E-N40DT-D Built-in Input
Output type RS-422 line driver DC voltage input (sinking or sourcing)
Differential level ±3.3 V (typ) into 100 Ω Single-ended
Common-mode range 0 to 5 V N/A
ON threshold N/A (output) 17 V DC minimum (24 V input)
OFF threshold N/A 5 V DC maximum
Maximum input voltage N/A 26.4 V DC

3.3 The CP1E HSC Inputs Must Be Explicitly Enabled

Even when an HSC-compatible input is physically wired, the CP1E ships with all built-in high-speed counter functions disabled. The 0.00, 0.01, and 0.04 terminals can be assigned to HSC0, HSC1, or HSC3, but only after the configuration is downloaded and the PLC is power-cycled. Until then, those inputs behave as ordinary DC inputs and may register 0/1 transitions at the standard scan rate, not as HSC counts.

Critical: Any change to the CP1E built-in input configuration in CX-Programmer requires a full power cycle of the PLC for the new function assignment to take effect. A simple mode switch or warm restart is not sufficient.

4. Encoder Signal Architecture of the G-Series

Understanding the encoder data path is essential for selecting a workable architecture. The R88D-GT20H receives the raw encoder signal from the R88M-G motor over the CN2 cable and:

  1. Decodes the absolute single-turn and multi-turn counts for internal servo control.
  2. Reproduces an incremental quadrature (A/B) plus index (Z) signal on the CN2 output pins for external use.
  3. Generates the INP discrete output when the deviation counter is below the configured threshold (Pn522 on the G-Series).
  4. Asserts the ALM (alarm) output when a position, overcurrent, overspeed, or encoder fault occurs.

Therefore, the only feedback signals that are reliably accessible to a CP1E are the discrete INP and ALM/ERR outputs. The quadrature signal is available but is the wrong voltage for direct CP1E input use.

5. Recommended Solution Architecture

The reliable, documented way to verify position on a CP1E-controlled G-Series axis is:

  1. Disable the absolute encoder mode in the drive (parameter Pn001 = 0 for incremental, or the equivalent G-Series incremental selection).
  2. Add an external home proximity switch wired to a CP1E standard input.
  3. Use the INP drive output as the in-position verification flag.
  4. Use the drive ALM output as a position-error indicator.
  5. Issue ORG (Origin Search) and PLS2 instructions to move the axis.
  6. Confirm the INP signal is asserted after every move before issuing the next command.

This approach trades the goal of "read raw encoder count" for the more practical goal of "confirm the axis reached the commanded position," which is what the application actually requires.

6. Wiring and Termination

6.1 Drive to PLC Control Wiring

Standard CP1E-to-R88D-GT20H wiring for PLS2 + INP/ALM feedback
Drive Terminal (CN1) Signal CP1E Terminal Notes
7 (PULS+) Pulse + Output 100.00 Pulse train CW
8 (PULS-) Pulse - Output 100.00 common Differential return
11 (SIGN+) Direction + Output 100.01 Direction
12 (SIGN-) Direction - Output 100.01 common Differential return
37 (INP+) In-position + Input 0.02 24 V sourcing output from drive
36 (INP-) In-position - 24 V common (0 VDC) Return
29 (ALM+) Alarm + Input 0.03 Open on alarm by default
28 (ALM-) Alarm - 24 V common Return
External Home prox PNP Input 0.05 Mechanical home reference

6.2 Encoder Output Wiring (Optional, If HSC Verification Is Required)

If a closed-loop count is required (for example, for a registration application), a line-receiver board must be inserted between the drive's CN2 output and the CP1E HSC input. A typical implementation uses a TI AM26LS32 or equivalent RS-422-to-TTL receiver, followed by a 24 V level-shifter to drive the CP1E input. The Z (index) channel is wired to 0.04 as a count reset.

For most positioning applications, this hardware addition is unnecessary. The combination of PLS2 plus INP assertion provides equivalent functional verification at a fraction of the wiring cost.

7. CX-Programmer Configuration Steps

The following procedure configures the CP1E-N40DT-D to use outputs 100.00 and 100.01 as the PLS2 pulse output channel, and input 0.02 as the in-position verification flag.

7.1 Configure the Pulse Output Channel

  1. Open the project in CX-Programmer and double-click Settings in the project tree.
  2. Select the Built-in Input/Output tab.
  3. On the Pulse Output 0 row, set Use = Used, Output Mode = CW/CCW, and confirm the assigned outputs (100.00 and 100.01).
  4. Click Transfer to PLC, confirm the dialog, and wait for the transfer to complete.
  5. Cycle power to the CP1E. The new pulse output assignments do not take effect until a cold start.

7.2 Configure the In-Position Input as an Interrupt

  1. In the same Settings dialog, click the Built-in Input tab.
  2. Map input 0.02 (the INP input) to the desired interrupt task, for example Interrupt Task 140.
  3. Write the in-position handling routine into the interrupt task: set a completion flag, latch the current PLS2 target register, and clear the busy flag.
  4. Transfer and power-cycle the PLC again.

7.3 Sample PLS2 Ladder

| W0.00  --[ ]--+--[PLS2(887) D0 D10 D20]--|
| (Move Cmd)   |   S: D0   = Pulse Frequency (Hz)
|              |   N: D10  = Pulse Count
|              |   Accel: D20 = Acceleration rate
|              |   Decel: D22 = Deceleration rate
|              |
| 0.02 (INP) --[ ]--( W1.00 )--|  In-Position OK
| 0.03 (ALM) --[/]--( W1.01 )--|  Alarm clear

After the PLS2 instruction is executed, the program monitors W1.00 for completion. The next move is gated on W1.00 = ON and W1.01 = ON (no active alarm).

8. Drive Parameter Settings

The G-Series drive must be configured for the CP1E command interface. The relevant parameters are:

R88D-GT20H parameter settings for CP1E PLS2 control
Parameter Value Description
Pn001 0 (or as required) Control mode selection; for PLS2 set to position control
Pn010 0 Position command pulse type = CW/CCW pulse train
Pn011 1 (or as required) Command pulse multiplier (electronic gear numerator)
Pn012 1 Command pulse divider (electronic gear denominator)
Pn520 User-defined Deviation counter overflow level (position-following error limit)
Pn522 User-defined (pulses) Positioning completion window (INP threshold)
Pn524 0 INP output signal selection = positioning complete
Verification of settings: The exact parameter numbers differ slightly between G-Series firmware revisions. Refer to the parameter list in the R88D-GT20H user manual (Cat. No. I561) shipped with the drive or available on the Omron download portal. Never assume parameter defaults; always read back with the handheld or CX-Drive.

9. Verification Procedure

After wiring and configuration, perform the following verification sequence:

  1. Power the drive and PLC. Confirm the drive front panel shows bb (base block) or run with no alarm code.
  2. From CX-Programmer, force W0.00 ON. The drive should rotate at the commanded frequency for the commanded pulse count.
  3. Monitor W1.00. It should transition ON within the positioning window defined by Pn522.
  4. Move the load manually and verify that W1.01 (alarm) does not assert unless the deviation counter exceeds Pn520.
  5. Issue a series of varying PLS2 commands and confirm that W1.00 consistently asserts within the expected time window.
  6. If W1.01 asserts, read the drive's alarm code from the front panel and consult the alarm list in the G-Series user manual.

10. Alternative: Motion Controller Architecture

If true position feedback is required rather than in-position verification, the application is using the wrong controller category. The CP1E is a programmable logic controller with pulse-output capability; it is not a motion controller with servo-loop closure. For closed-loop position control, use one of the following:

Recommended Omron controllers for closed-loop position control
Controller Capability Typical Use
CP1H-XA40DT-D 4-axis pulse output, 1 MHz max Mid-range point-to-point with HSC verification
CP1L-M40DT-D 2-axis pulse output, 100 kHz Low-end point-to-point
NJ/NX Series Up to 64 axes via EtherCAT Synchronized multi-axis motion with absolute feedback
CK3E/CK5M Standalone motion controller Standalone high-axis-count applications
1S-Series (R88D-1SN) Native EtherCAT drive with absolute multi-turn encoder Direct position feedback via process data

For G-Series replacement in new applications, the 1S-Series is the modern equivalent and provides native absolute encoder data through EtherCAT, eliminating the position-feedback problem at its source. For a 1S-Series tuning and commissioning walk-through, the Omron 1S-Series Multi-axis Setup and Tuning Getting Started Guide (I827) provides step-by-step procedures. A broader view of the Omron servo and inverter product family is available on the Servos and Inverters category page.

11. Troubleshooting Matrix

Common encoder feedback issues and resolutions
Symptom Probable Cause Resolution
HSC stays at 0 with motor running 5 V line-driver signal into 24 V CP1E input Add RS-422 receiver + level shifter, or use INP feedback instead
HSC counts up only briefly, then freezes Drive in absolute encoder mode; CN2 only outputs pulses during motion Switch Pn001/Pn011 to incremental, add home prox
HSC counts only Z, not A/B Wiring of differential pairs reversed on A+ vs A- Verify A+/A- and B+/B- paired wiring per CN2 pinout
PLS2 runs but no INP signal Pn524 not set to positioning complete, or wiring of INP+/INP- reversed Check Pn524, verify INP wiring polarity
INP chatters at end of move Pn522 (positioning window) too tight for application Increase Pn522 to a value larger than the position ripple
Alarm A.CC or A.EC at first move Electronic gear (Pn011/Pn012) mismatch with command pulse rate Set Pn011/Pn012 to 1:1 and re-test; then tune to mechanical ratio
INP never asserts after move Deviation counter overflow; Pn520 too tight Increase Pn520 or reduce command acceleration
PLC input LED flickers but HSC does not increment HSC not enabled in CX-Programmer Settings Configure Built-in Input tab, transfer, and power-cycle

12. Safety and Commissioning Notes

  • Always confirm the ALM (alarm) output is wired into a PLC input that participates in the safety stop logic. The G-Series alarm output is open-collector and must be configured as normally-closed or normally-open according to the application.
  • Set Pn520 (deviation counter overflow) to a value that is well above the normal following error at maximum acceleration. A value of 8192 pulses is a typical starting point for a 200 W axis.
  • After any drive parameter change, cycle the drive control power (SERVO OFF then SERVO ON) for the new value to take effect.
  • Do not hot-plug the CN2 encoder cable. The R88M-G encoder is sensitive to ESD and supply rail disturbances during insertion.
  • When migrating from G-Series to 1S-Series, replace the CN1 wiring scheme entirely. The 1S-Series uses EtherCAT on CN1 and does not accept pulse-train commands.

Why do I see no pulses on the CP1E high-speed counter even with the encoder wired correctly?

The R88D-GT20H encoder output is an RS-422 line-driver signal at 5 V differential. The CP1E-N40DT-D inputs require a single-ended 24 V signal with an ON threshold of about 17 V. The level mismatch prevents the CP1E from recognizing any transition. Use the drive's INP (in-position) output instead, or add a line-receiver and level-shifter.

Can the G-Series absolute encoder be read as a continuous position by a CP1E?

No. The G-Series drive holds the absolute position internally and does not stream it as a serial or pulse-train signal. The CN2 connector only provides a duplicated incremental quadrature output that is useful during motion, not at standstill. For absolute position readback, migrate to the 1S-Series on EtherCAT, where absolute data is exposed in the cyclic process image.

How do I enable the CP1E high-speed counter for inputs 0.00, 0.01, and 0.04?

In CX-Programmer, open the project tree, double-click Settings, and select the Built-in Input tab. Assign HSC0, HSC1, or HSC3 to the chosen input terminals, transfer the project to the PLC, and cycle PLC power. The HSC will not function until the cold restart completes.

What is the correct drive parameter to enable the INP (in-position) output on the R88D-GT20H?

On the G-Series, the INP output is controlled by Pn522 (positioning completion window) and Pn524 (output signal selection). Set Pn524 to 0 for "positioning complete" and set Pn522 to a pulse count that is slightly larger than the position ripple you observe at rest, for example 10 to 50 pulses for a 200 W axis.

Should I upgrade from the R88D-GT20H to a 1S-Series drive to get true position feedback?

Yes, if closed-loop position readback is required rather than in-position verification. The 1S-Series (R88D-1SN_ECT) provides native multi-turn absolute encoder data over EtherCAT and is supported by NJ/NX-series controllers. For applications that only need in-position confirmation, the G-Series with INP feedback is sufficient and avoids the cost of a controller upgrade.

Back to blog