SureServo2 Modbus RTU Programming: Click PLC Setup and Servo Configuration
If you've bought a Delta SureServo2 (SV2A series) drive to power an axis on a homebuilt CNC, indexer, or automation project, you've probably discovered the same thing I did: Delta's documentation covers the parameter list exhaustively but says almost nothing about actually wiring it to a PLC and driving it over Modbus RTU. This guide covers exactly that — using a Click PLC as the Modbus master to configure and control a SureServo2 drive, based on a working setup I built and tested myself.
This isn't a copy-paste of the manual. Every parameter and value below is one I actually used and verified working on real hardware.
What You're Working With
Two pieces of hardware, talking over a wired serial link:
- Delta SureServo2 drive (SV2A-2040 in this build) — the servo amplifier that actually drives the motor
- AutomationDirect Click PLC (C0-00AR-D) — acting as the Modbus master, sending position/velocity commands and reading status back
They talk over RS-232 Modbus RTU. The PLC issues commands; the servo drive executes them and reports position, alarms, and status back. This is a much cheaper way to get PLC-controlled servo motion than buying a drive with built-in EtherCAT or a dedicated motion controller card — but it means you're responsible for getting the serial parameters and parameter mapping exactly right, because there's very little hand-holding if something's off.
Communication Setup
Get these wrong and nothing else in this guide matters — the PLC and drive won't even talk. This is the confirmed-working configuration:
SettingValue InterfaceRS-232 Slave ID2 Baud rate19200 Data format8N2 (8 data bits, no parity, 2 stop bits) ProtocolModbus RTUSet the slave ID and communication parameters on the SureServo2 drive itself via its P-parameters (consult your drive's manual for the exact parameter number, as it varies slightly by firmware revision), then match those exact settings in the Click PLC's Modbus master configuration for that port. If the PLC shows a communication timeout or CRC error instead of a clean response, it's almost always a mismatch here — double check baud rate and stop bits before touching anything else.
Positioning Mode: PR (Program) Mode
The SureServo2 supports several control modes. For PLC-driven point-to-point motion, PR mode (position/program mode, sometimes called the internal indexer) is the one you want — it lets you pre-load a table of position commands into the drive itself, then trigger them via digital inputs or Modbus registers, rather than streaming raw pulse commands from the PLC in real time.
Configure your motion as incremental positioning rather than absolute. Incremental positioning means each move is relative to the current position, not a fixed absolute coordinate — this matters for anything with a repeating cycle (indexing, feed-per-stroke, etc.) since it means you don't have to re-zero between cycles, and it makes the whole system more forgiving of small positioning drift over time.
Digital Input Configuration
The SureServo2's DI (digital input) terminals are software-configurable — each physical input pin gets assigned a function via a parameter, rather than having fixed hardwired functions. The key one for homing:
ParameterValueFunction P3-0847Assigns the ORG (origin/home reference) function to a DI pinFunction code 47 is Delta's ORG assignment — it tells the drive "this input is my home reference sensor." Which physical DI number you assign it to (DI5 in this build) is up to you; just make sure your homing parameters reference the same pin you wired the sensor to.
Jog and Direction Control
ParameterPurpose P4-05Jog control — lets you manually bump the axis in either direction, essential for initial setup and troubleshooting before you trust the automated homing/positioning P1-03Direction reversal — flips which way "positive" motion runs without rewiring the motor phases. Use this instead of physically swapping motor leads if your axis moves the wrong wayGet jog working first, before you touch homing or PR mode. If you can't reliably jog the axis both directions with P4-05, fix that before debugging anything downstream — every problem after this point gets much harder to diagnose if you're not 100% sure the basic motion direction and control is solid.
Homing Configuration
This is where most of the real setup time goes. The working configuration for a proximity sensor used as the home reference:
- DI5 assigned as ORG (via P3-08=47 as above)
- NC (normally closed) sensor logic inversion via P2.040 — if your proximity sensor is wired NC rather than NO (normally open), the drive needs to know to invert its interpretation of the signal, or it'll think it's permanently home (or never home, depending on which way you get it backwards)
- Homing mode 3
The NC/NO inversion setting is the single most common thing that trips people up here. If homing behaves completely backwards — the axis runs away from the sensor instead of toward it, or it declares itself homed immediately without ever seeing the sensor trigger — check this parameter before anything else. It's a one-bit setting that silently flips the entire logic of the homing sequence.
Homing mode 3 (consult your drive's parameter manual for the full mode table, as SureServo2 supports several homing strategies) worked reliably for a proximity-sensor-based setup where the sensor sits at one end of travel rather than requiring a separate limit switch plus index pulse.
Troubleshooting Checklist
SymptomLikely Cause PLC reports Modbus timeout / no responseBaud rate, stop bits, or slave ID mismatch between PLC and drive. Re-verify all four communication parameters match exactly. PLC reports CRC/checksum errorsUsually noise on the RS-232 line (cable routed near motor power/VFD cabling) or an actual parameter mismatch. Try a shorter, shielded cable routed away from power conductors first. Axis moves the wrong directionFlip P1-03 rather than rewiring the motor. Homing runs away instead of toward the sensorCheck the NC/NO inversion setting (P2.040) — this is almost always a sensor logic mismatch. Drive declares "homed" without the sensor ever triggeringSame as above — inverted sensor logic reads the resting state as already-triggered. PR mode commands don't executeConfirm the drive is actually in PR/program mode (not JOG or another control mode) and that the correct DI/register is being used to trigger the pre-loaded position command.Safety Notes
A few things worth saying plainly, since this is motion control on real hardware:
- Servo drives can move an axis with significant force and speed. Before enabling PR mode or any automated homing sequence, make sure the full range of travel is physically clear and you have a way to kill power immediately if something goes wrong.
- Test jog motion (P4-05) at low speed first, in open air if possible, before commanding any move near a workpiece, fixture, or hard stop.
- Homing sequences run without an operator actively steering the motion — verify the sensor is solidly mounted and wired before trusting an automated home cycle unattended.
- If you're integrating this into a machine that also has spindle power, electromagnetic chucks, or other hazards, make sure your E-stop circuit cuts servo power too, not just the spindle.
This configuration — RS-232 Modbus RTU at 19200 8N2, PR mode with incremental positioning, ORG on DI5 via P3-08=47, and homing mode 3 with NC sensor inversion via P2.040 — is a solid, tested starting point for driving a SureServo2 axis from a Click PLC. Your specific mechanical setup (sensor placement, direction convention, travel limits) will need its own tuning on top of this, but the communication and parameter foundation here should get you talking to the drive reliably without the trial-and-error I went through to find it.
Related Guides
- AutomationDirect SureServo SVA-2040 Modbus RTU Control with Click PLC: Complete Setup Guide
- Implementing Material Pre-heating for Production
- How to Use the Flipper Zero as a USB Rubber Ducky
- Automated Plant Watering System with Raspberry Pi
- Running Home Assistant on a Raspberry Pi 4
- Auto-Backup Your Raspberry Pi SD Card to a Network Share
- Kiosk Mode on Raspberry Pi: Boot Straight to a Webpage
- Using Flipper Zero as a USB Rubber Ducky (BadUSB)