AutomationDirect SureServo SVA-2040 Modbus RTU Control with Click PLC: Complete Setup Guide
AutomationDirect SureServo SVA-2040 Modbus RTU Control with Click PLC: Complete Setup Guide 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 Servo drive: AutomationDirect SureServo SVA-2040 PLC: Click C0-00AR-D Communication port: CPU Port 2 (RS-232) HMI: AutomationDirect C-more (optional, for operator input) 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: Acme screw: 1-5 (5 TPI, 0.200 inch per revolution) Gearbox: 5:1 Belt/pulley: 2:1 Total ratio at screw: 10:1 Total ratio overall: 50:1 Encoder resolution: 10,000 counts per servo revolution Counts Per Unit of Travel General formula: Counts = (thousandths entered by operator) × 500 For your own drivetrain: Counts per thou = 10,000 ÷ (TPI × (1 ÷ totalratio)) -- Drive Parameter Settings Set these parameters on the drive keypad before attempting Modbus control. Communication Parameters Note: The Click PLC Modbus master must match — 19200 baud, 8 data bits, no parity, 2 stop bits. Control Mode 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: 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. 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. Add the decimal values of each DI you want Modbus to control: This installation: Write 47 to P3-08 (DI1+DI2+DI3+DI4+DI6 = 1+2+4+8+32 = 47) Common values: 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. 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 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 P0-17 Status Bit Decoding P0-17 returns a decimal value. Convert to binary to read each bit: 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: 279 − 256 = 23 → Bit 8 set (Servo On confirmed) 23 − 16 = 7 → Bit 4 set (At Position) 7 − 4 = 3 → Bit 2 set (At Zero Velocity) 3 − 2 = 1 → Bit 1 set (Servo Enabled) 1 − 1 = 0 → Bit 0 set (Servo Ready) 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: 21 − 16 = 5 → Bit 4 set (At Position) 5 − 4 = 1 → Bit 2 set (At Zero Velocity) 1 − 1 = 0 → Bit 0 set (Servo Ready) 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. Steps 1–2 only need to run once at PLC startup, not before every move. Ladder Notes Steps 1 and 2 are initialization — run them on first scan only, not in the move routine Step 3 (direction) must be written before step 4 (counts) every cycle The trigger pulse in steps 6–7 is edge-sensitive; the delay between them can be as short as one PLC scan but 200ms is reliable Monitor P0-17 bit 4 (At Position) to confirm move complete before triggering the next move or signaling external equipment -- Servo Enable and Disable 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. -- 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
Related Guides
- SureServo2 Modbus RTU Programming: Click PLC Setup and Servo Configuration
- How to Use a Drag Knife and Pen Plotter on Your CNC Router
- How to Surface Your CNC Spoilboard and Machine Aluminum on a Desktop Router
- How to V-Carve Inlays and Precision Signs on a Desktop CNC Router
- How to Use LaserGRBL: Free Laser Control Software for GRBL Engravers
- How to Use Vectric Aspire for CNC Routing: V-Carving, 3D Reliefs, and Toolpaths