← How-Tos
electronics Jun 28, 2026 ◑ 4 views ◯ 8 min read

AutomationDirect SureServo SVA-2040 Modbus RTU Control with Click PLC: Complete Setup Guide

sureservoservo drivemodbus rtuclick plcautomationdirectrs 232industrial automationcncsurface grinder

This guide covers commissioning and controlling an AutomationDirect SureServo SVA-2040 servo drive from a Click C0-00AR-D PLC using RS-232 Modbus RTU. It is based on a working installation automating the crossfeed of an Elgin surface grinder — incrementing the grinding wheel a precise amount on each table stroke.

If you are using any SureServo drive (SVA or SV2A variants differ — this guide is specifically for the SVA-2040 in Pr internal indexer mode), this covers every Modbus address, parameter setting, DI configuration, math formula, and ladder sequence you need.

---

Hardware

Physical Wiring

Connect the Click CPU Port 2 RS-232 to the SureServo CN3 communication port. The SVA-2040 uses a standard DB9 RS-232 pinout — refer to the SureServo user manual Chapter 3 for the exact pin assignments. A null modem cable is NOT needed; use a straight-through RS-232 cable.

---

Mechanical Setup (Application-Specific — Scale for Yours)

This installation uses:

Counts Per Unit of Travel

TravelFormulaThis Application
Counts per inch10,000 × TPI × ratio10,000 × 5 × 10 = 500,000
Counts per 0.001" (1 thou)Counts/inch ÷ 1000500,000 ÷ 1000 = 500
Counts per 0.005"Counts/thou × 5500 × 5 = 2,500
Counts per 0.010"Counts/thou × 10500 × 10 = 5,000

General formula: Counts = (thousandths entered by operator) × 500

For your own drivetrain: Counts per thou = 10,000 ÷ (TPI × (1 ÷ total_ratio))

---

Drive Parameter Settings

Set these parameters on the drive keypad before attempting Modbus control.

Communication Parameters

ParameterAddress (Hex)984 Modbus AddressValueDescription
P3-000300h4007692Modbus slave address
P3-010301h4007702Baud rate (2 = 19200)
P3-020302h4007716Protocol: 8N2 RTU
P3-050305h4007740Port type: RS-232

Note: The Click PLC Modbus master must match — 19200 baud, 8 data bits, no parity, 2 stop bits.

Control Mode

ParameterAddress (Hex)984 AddressValueDescription
P1-010101h4002581Pr mode (internal indexer)
P1-330121h4002901Incremental positioning
P2-30021Eh4005435Limit flash writes (set during commissioning)

Direction Control

Negative position values cannot be entered into Click DS registers (limited to 0–32,767) and cannot be entered on the drive keypad (stops at 0). Do not attempt two's complement workarounds — the DS register type will not accept them.

Use P1-03 to flip output polarity on the fly:

Parameter984 AddressValueResult
P1-034002600Forward (default direction)
P1-034002601Reverse (polarity flipped)

No power cycle required. Write this before each move to set direction.

---

Digital Input (DI) Configuration

These settings control which functions are assigned to each DI terminal on the drive.

DIParameter984 AddressSettingFunctionContactP4-07 BitDecimal Value
DI1P2-10400523111Position Command Select 0 (PCS0)NOBit 01
DI2P2-11400524112Position Command Select 1 (PCS1)NOBit 12
DI3P2-12400525113Position Command Select 2 (PCS2)NOBit 24
DI4P2-13400526108Command TriggerNOBit 38
DI5P2-14400527124Home SensorNCBit 416
DI6P2-15400528101Servo EnableNOBit 532
DI7P2-16400529107Position Command PauseNOBit 664
DI8P2-17400530127Start Home Move TriggerNOBit 7128

DI4 must be set to 108 (Command Trigger, NO contact) — the default value of 8 is active-low and will not work correctly with Modbus virtual DI control.

---

Modbus Control Registers

P3-08 — Modbus DI Mask (Write Once at Startup)

P3-08 enables Modbus control of specific DIs. DIs not included in this mask remain under hardware terminal control.

984 Address400777
Write onceYes — survives power cycle

Add the decimal values of each DI you want Modbus to control:

DIBitDecimalInclude?
DI1 (PCS0)Bit 01YES — Modbus position select
DI2 (PCS1)Bit 12YES — Modbus position select
DI3 (PCS2)Bit 24YES — Modbus position select
DI4 (Trigger)Bit 38YES — always
DI5 (Home Sensor)Bit 416NO — physical sensor wired to terminal
DI6 (Servo Enable)Bit 532YES — always
DI7 (Pause)Bit 664Optional
DI8 (Home Trigger)Bit 7128YES — if homing via Modbus

This installation: Write 47 to P3-08 (DI1+DI2+DI3+DI4+DI6 = 1+2+4+8+32 = 47)

Common values:

ConfigurationValue
Servo Enable + Trigger only40
Servo Enable + Trigger + Home168
Full Modbus (all DIs)255
This installation (DI1–DI4 + DI6)47

P4-07 — Virtual DI Control (Write Per Command)

P4-07 sets the active state of each virtual DI in real time. Only DIs enabled in P3-08 respond.

984 Address401032
ValueBinaryDIs ActiveEffect
000000000NoneServo disabled, no trigger
3200100000DI6Servo enabled, trigger inactive
4000101000DI6 + DI4Servo enabled, trigger HIGH
800001000DI4 onlyTrigger without servo (do not use alone)

The Command Trigger is edge-sensitive — the drive responds to the 0→1 rising edge on DI4 (Bit 3). You must pulse it: write 40, short delay, write 32.

Position Registers

Parameter984 AddressDescription
P1-15400272Position — full revolutions
P1-16400273Position — encoder counts (fractional rev)
P1-03400260Direction polarity (0=forward, 1=reverse)

For incremental moves less than one revolution, write 0 to P1-15 and the count value to P1-16. For longer moves, write whole revolutions to P1-15 and remaining counts to P1-16.

Status and Diagnostic Registers

Parameter984 AddressDescription
P0-01400002Fault code (0 = no fault)
P0-02400003Position feedback (counts)
P0-17400018Output status (bit field — see below)
P4-05401030Jog control register

P0-17 Status Bit Decoding

P0-17 returns a decimal value. Convert to binary to read each bit:

BitDecimalMeaning when SET
Bit 01Servo Ready
Bit 12Servo Enabled
Bit 24At Zero Velocity
Bit 38At Target Velocity
Bit 416At Position (move complete)
Bit 532At Torque Limit
Bit 664Overload Warning
Bit 7128Brake Released
Bit 8256Servo On (confirmed)

To decode any P0-17 value: subtract the largest bit value that fits, check that bit, repeat with the remainder.

Example — P0-17 returns 279:

Result: Servo on, enabled, at position, at zero velocity, ready. This is the normal idle state after a completed move.

Example — P0-17 returns 21:

Result: Servo disabled, brake engaged. Normal state after servo disable command.

---

Complete Move Sequence (Pr Incremental Mode)

This is the full ladder sequence for one incremental move. Write each Modbus value in order; wait for the success bit between writes if your MBUS blocks use one.

StepActionWrite To (984 Addr)ValueWait For
1Initialize Modbus mask400777 (P3-08)47Success bit
2Set incremental mode400290 (P1-33)1Success bit
3Set direction400260 (P1-03)0 or 1Success bit
4Write move counts400273 (P1-16)Calculated valueSuccess bit
5Enable servo401032 (P4-07)32P0-17 bit 1 = set
6Fire command trigger401032 (P4-07)40200ms timer
7Drop trigger401032 (P4-07)32P0-17 bit 4 = set
8Move complete——Next action

Steps 1–2 only need to run once at PLC startup, not before every move.

Ladder Notes

---

Servo Enable and Disable

ActionWrite ToValue
Enable servo401032 (P4-07)32
Disable servo401032 (P4-07)0

Confirm enable by reading P0-17 — bit 1 (decimal 2) should be set. A value of 279 is the typical confirmed-enabled-at-rest reading.

---

Jog via Modbus (Testing / Commissioning)

Jog is useful for verifying Modbus motion commands before building the full position sequence.

StepWrite ToValue
Set jog speed (RPM)401030 (P4-05)e.g. 100
Jog CW401030 (P4-05)4999
Stop401030 (P4-05)5000

---

Troubleshooting

Servo enable write appears successful but motor shaft does not lock: Read P3-08 (400777). If it returns 0, the Modbus DI mask was never written or did not persist. Write 47 to P3-08 and retry.

Command trigger fires but motor does not move:

  1. Read P0-01 (400002) — if non-zero, clear the fault first
  2. Confirm P1-33 = 1 (incremental mode)
  3. Confirm P1-16 (400273) has a non-zero value written
  4. Confirm P4-07 shows 40 during the trigger pulse (read it back)
  5. Check that DI4 (P2-13) is set to 108, not the default 8

Motor moves in the wrong direction: Write 1 to P1-03 (400260) to flip polarity. Do not attempt negative values in Click DS registers — they are unsigned and will not accept them.

P0-17 reads lower than expected after enable: Bit 8 (256) indicates servo on confirmed. If bit 1 (2) is set but bit 8 (256) is not, the drive has received the enable command but internal conditions (e.g. motor not connected, resolver fault) are preventing full servo-on.

MBUS block returns SC43 (Out of Range) error: The 984 address you are writing to is outside the range the Click considers valid for that function code, or the data value exceeds the parameter's range. Double-check the 984 address calculation: 984 address = (hex address converted to decimal) + 400001.

---

Quick Reference — All Addresses

ParameterHex Addr984 AddressNotes
P0-010001h400002Fault code
P0-020002h400003Position feedback
P0-170011h400018Status bits
P1-010101h400258Control mode
P1-030103h400260Direction polarity
P1-15010Fh400272Position revolutions
P1-160110h400273Position counts
P1-330121h400290Incremental mode
P2-10020Ah400523DI1 function
P2-11020Bh400524DI2 function
P2-12020Ch400525DI3 function
P2-13020Dh400526DI4 function
P2-14020Eh400527DI5 function
P2-15020Fh400528DI6 function
P2-160210h400529DI7 function
P2-170211h400530DI8 function
P2-30021Eh400543Flash write limit
P3-000300h400769Slave address
P3-010301h400770Baud rate
P3-020302h400771Protocol
P3-050305h400774Port type
P3-080308h400777Modbus DI mask
P4-050405h401030Jog control
P4-070407h401032Virtual DI outputs