Resolving PS-AMC2 Scaling Problems with STP-DRV-6575 Stepper

Brian Holt9 min read
AutomationDirectMotion ControlTroubleshooting
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

Problem Overview

The Productivity Series PS-AMC2 (PS-AMC family) motion controller is commonly paired with the AutomationDirect STP-DRV-6575 stepper drive to drive NEMA 23/34/42 motors in linear positioning applications. Field commissioning frequently surfaces a scaling anomaly where commanded inch-distance moves produce incorrect motor revolutions. Reported symptoms include:

  • A 1-inch commanded move produces 40 motor revolutions instead of 4 (expected at 0.25 in/rev and 200 ppr).
  • An inflection point near 100 PPI where the relationship between the scaling value entered and the motor turns produced becomes non-linear (99 PPI yields ~5000 rev for a 1 in move; 100 PPI yields 5 rev).
  • Scaling values such as 10/40/80 PPI all yield exactly one-half the expected turns.
  • Simple Move velocities below 1 in/sec are refused when sub-inch Position Accuracy is enabled.

These defects appear even with the controller firmware current and after a full power cycle. The root cause is a combination of internal integer/float resolution, Minimum Position Accuracy rounding, and a project-download requirement on every AMC configuration change.

Hardware Configuration

The reference system used to reproduce and verify these faults is documented below:

Component Model / Setting
PLC Productivity Series P-series CPU (remote I/O master)
Motion Controller PS-AMC2 (2-axis, encoder-fed, remote I/O node)
Stepper Drive STP-DRV-6575 (output to NEMA 23/34 stepper)
Drive Resolution 200 pulses/rev (default microstep setting)
Mechanism Linear rail, lead screw producing 0.25 in/rev
Target PPI 800 pulses/in (200 ppr ÷ 0.25 in/rev)
Firmware Latest PS-AMC firmware at time of commissioning

The AMC module is added in Productivity Suite > Hardware Config > PS-AMC > Axis n > Scaling & Encoder. Set Position Unit > Standard (inch) and enter the desired pulses-per-inch value in the corresponding field.

Scaling Mathematics

The expected scaling math for the reference hardware is straightforward:

  • Drive microstep setting: 200 pulses/rev
  • Linear travel per motor rev: 0.25 in/rev
  • Required pulses per inch: 200 / 0.25 = 800 PPI
  • For a 1-inch move, the AMC must command 800 × 1 = 800 pulses, which equals 800 / 200 = 4 motor revolutions.
Engineering note: All position, velocity, and acceleration fields in the AMC use floating-point engineering units. Internally the AMC converts the engineering distance to pulse count using the configured PPI value. Any rounding that occurs before the conversion is what causes the visible scaling drift.

Root Cause Analysis

Three independent defects combine to produce the observed behavior. All three must be addressed for correct inch-unit motion.

Defect 1 — Position Data Type Set to Integer

The PS-AMC exposes a Position Data Type selection in the axis configuration. When left at the default Integer, the AMC's internal representation of fractional pulses truncates to zero. With 800 PPI and a commanded velocity of 0.01 in/sec, the AMC should emit 0.01 × 800 = 8 pulses/sec. Integer storage cannot represent the fractional pulse rate, and any commanded velocity below 1 in/sec appears as 0 pulses/sec on the output stage.

Symptom: scaling tests pass at 1, 5, 10 in/sec; Simple Move refuses any sub-1 in/sec value.

Defect 2 — Minimum Position Accuracy Rounding

The Minimum Position Accuracy field sets the smallest engineering increment the AMC will resolve. Setting this to 0.1 or 0.01 in enables correct scaling for those resolutions but forces a hard floor on velocity (the SMOV instruction cannot drop below 1 in/sec). Setting it to 0.001 or 0.0001 enables sub-inch velocity but causes the scaling math itself to break (the inflection point near 100 PPI is a rounding boundary in this mode).

Min. Position Accuracy Scaling Math Min. Velocity (Simple Move)
0.1 Correct 1.0 in/sec
0.01 Correct 1.0 in/sec
0.001 Incorrect (rounding) < 1.0 in/sec permitted
0.0001 Incorrect (rounding) < 1.0 in/sec permitted

Defect 3 — Stale Project After Configuration Edit

The Productivity Suite does not live-update the AMC's scaling values when the configuration is edited. The edited scaling factors remain in the project file until a project download is performed in Stop Mode. A power cycle alone is not sufficient. Until the project is downloaded, the AMC continues using the previously committed scaling.

Resolution Procedure

Apply the following sequence to restore correct inch-unit motion. Steps assume Productivity Suite v1.10 or later.

  1. Open the project and navigate to Hardware Config > PS-AMC > Axis2.
  2. Open Scaling & Encoder and set Position Data Type = Float.
  3. Set Position Unit = Standard (inch) and enter Pulses = 800 for 800 PPI.
  4. Set Minimum Position Accuracy = 0.01 for the standard 800 PPI / 0.25 in/rev configuration. Use 0.0001 only with the high-resolution workaround in Section 7.
  5. Save the project.
  6. Place the CPU in Stop Mode (CPU > Mode > Stop) and download the project (CPU > Download).
  7. Return the CPU to Run Mode.
  8. Run a verification SMOV with fTarget = 1.0, fVelocity = 1.0, fRamps = 20.0 and confirm exactly 4 motor revolutions via the drive's pulse monitor or a step counter on the output.

SMOV Instruction Tag Reference

The AMC's Simple Move (SMOV) instruction accepts floating-point tags for all motion parameters. The tags below are the standard feedback and command tags referenced during commissioning:

Tag Direction Data Type Purpose
fTarget Command Float Move distance (engineering units)
fVelocity Command Float Velocity (units/sec)
fRamps Command Float Acceleration and deceleration (units/sec²)
fCurrentPosition Feedback Float Live axis position
fCurrentVelocity Feedback Float Live axis velocity

Use Float-typed tags throughout. Using Integer for feedback will display 0 for any velocity below 1.0 in/sec even though the AMC is still emitting pulses. This is a display artifact, not a motion fault, but it can mask the existence of Defect 1.

High-Resolution Workaround

For applications that demand sub-0.01 in position accuracy (precision indexing, microscopy stages, semiconductor handling), the combined 200 ppr drive + 800 PPI scaling is too coarse. Use the high-resolution configuration instead:

  1. Reconfigure the STP-DRV-6575 microstep setting to 20000 pulses/rev (consult the STP-DRV-6575 user manual for the dip-switch/SW procedure).
  2. In the AMC Scaling & Encoder dialog, set Pulses = 80000 for 80000 PPI (20000 ppr ÷ 0.25 in/rev = 0.0000125 in/pulse).
  3. Set Minimum Position Accuracy = 0.0001.
  4. Set Position Data Type = Float.
  5. Download the project in Stop Mode.

This raises the pulse-to-inch ratio by a factor of 100, allowing the AMC to resolve sub-mil motion. Be aware that very small commanded velocities (e.g. 0.0001 in/sec) approach the internal pulse-rate resolution limit; below ~0.0001 in/sec, output pulse rates may quantize.

Firmware Reload Procedure

If the configuration sequence above does not restore the ability to command sub-1 in/sec velocities through SMOV, perform a full firmware reload on the PS-AMC module:

  1. Disconnect the remote I/O network.
  2. Power-cycle the PS-AMC module.
  3. In Productivity Suite, navigate to CPU > Firmware > Update Firmware and select the latest released PS-AMC firmware package from the AutomationDirect support site.
  4. Confirm the flash write and wait for the module to reboot.
  5. Re-download the project in Stop Mode.

Field reports indicate that the firmware reload resets the AMC's internal pulse-rate accumulator, which corrects the floor-velocity behavior even when the Minimum Position Accuracy setting remains at 0.01.

Verification Tests

Run the following verification matrix after every configuration change. Each test must pass before the application moves to production commissioning.

Test SMOV Parameters Expected Output
T1 — 1 in @ 5 in/sec, Accel 20K fTarget=1.0, fVelocity=5.0, fRamps=20000 800 pulses; 4 motor rev
T2 — 3 in @ 0.1 in/sec fTarget=3.0, fVelocity=0.1, fRamps=1.0 80 pulses during motion
T3 — 3 in @ 0.01 in/sec fTarget=3.0, fVelocity=0.01, fRamps=1.0 8 pulses during motion
T4 — High-res 0.0001 in/sec 80000 PPI, fVelocity=0.0001 8 pulses/sec on output
T5 — DataView feedback fCurrentVelocity tag at 0.5 in/sec Reads 0.5 (Float) not 0 (Int)

Capture the Encoder Monitor screen in Hardware Config > PS-AMC > Axis n during each test to confirm pulse counts in real time.

Troubleshooting Matrix

Symptom Likely Cause Remediation
1 in move = 40 rev (10× expected) Integer data type, Min Position Accuracy too coarse Switch to Float, set Accuracy = 0.01
99 vs 100 PPI inflection (5000 vs 5 rev) Internal rounding boundary Set Min Position Accuracy = 0.01, reload project in Stop
Old scaling persists after edit Project not downloaded CPU > Mode > Stop, then CPU > Download
SMOV rejects v < 1 in/sec Float data type not set, or stale firmware Set Float, perform firmware reload
High-resolution scaling won't move PPI too high for integer math Use Float + Accuracy = 0.0001 + 20000 ppr drive
DataView shows 0 for v < 1 in/sec Integer feedback tags Change fCurrentVelocity tag type to Float

Field-Proven Cautions

  • The AMC never accepts a scaling value below 1 PPI as valid for inch units. The lower limit is enforced by the productivitySuite configuration dialog.
  • Power cycling the PS-AMC does not commit a new scaling value — only a Stop-Mode project download does.
  • The 99/100 PPI inflection is a known artifact of the AMC's pre-scaling accumulator; do not attempt to use scaling values in this band for production machines.
  • For multi-axis systems, repeat the Stop-Mode download for every axis whose configuration was edited; the download is a single CPU-wide operation but the AMC applies it per-axis.
  • Velocity moves (using the VMOV instruction instead of SMOV) accept sub-1 in/sec values regardless of Position Data Type — if the application requires very slow continuous motion, use VMOV and verify with the Encoder Monitor.

Related Documentation

Why does my PS-AMC2 still report the old pulses-per-inch value after I edit the Scaling & Encoder dialog?

The Productivity Suite does not push AMC configuration edits live. You must place the CPU in Stop Mode and perform a project download (CPU > Download). A simple power cycle of the PS-AMC module is not sufficient to commit the new PPI value.

My Simple Move refuses any velocity below 1 in/sec. How do I fix it?

Set the axis Position Data Type to Float under Hardware Config > PS-AMC > Axis n > Scaling & Encoder. If the floor remains, perform a full firmware reload on the PS-AMC module via CPU > Firmware > Update Firmware, then re-download the project in Stop Mode.

How do I achieve sub-0.01 in motion resolution with the STP-DRV-6575?

Reconfigure the STP-DRV-6575 to 20000 pulses/rev and set the AMC's Position Unit Pulses value to 80000 PPI (20000 ppr / 0.25 in/rev = 80000 PPI = 0.0000125 in/pulse). Set Minimum Position Accuracy to 0.0001 and Position Data Type to Float, then download the project in Stop Mode.

Why does the Encoder Monitor show 0 pulses/sec at 0.5 in/sec even though the motor is moving?

The feedback tag (fCurrentVelocity) is bound to an Integer-typed variable. Integer storage cannot represent fractional pulse rates, so anything below 1 in/sec reads as 0. Re-bind the feedback tag to a Float-typed variable to display the correct velocity.

Is there a scaling value I should avoid with the PS-AMC2?

Yes — avoid values near 99 to 100 PPI in inch-unit mode. This band sits on an internal rounding boundary in the AMC's pre-scaling accumulator and produces wildly incorrect motor turns (e.g. 99 PPI giving ~5000 motor rev for a 1 in move versus 100 PPI giving only 5 rev). Always choose a PPI value that yields a clean integer pulse-per-step relationship with the configured Minimum Position Accuracy.

Back to blog