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 equals800 / 200 = 4 motor revolutions.
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.
- Open the project and navigate to Hardware Config > PS-AMC > Axis2.
- Open Scaling & Encoder and set Position Data Type = Float.
- Set Position Unit = Standard (inch) and enter Pulses = 800 for 800 PPI.
- Set Minimum Position Accuracy = 0.01 for the standard 800 PPI / 0.25 in/rev configuration. Use
0.0001only with the high-resolution workaround in Section 7. - Save the project.
- Place the CPU in Stop Mode (CPU > Mode > Stop) and download the project (CPU > Download).
- Return the CPU to Run Mode.
- Run a verification SMOV with
fTarget = 1.0,fVelocity = 1.0,fRamps = 20.0and 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:
- Reconfigure the STP-DRV-6575 microstep setting to 20000 pulses/rev (consult the STP-DRV-6575 user manual for the dip-switch/SW procedure).
- In the AMC Scaling & Encoder dialog, set Pulses = 80000 for 80000 PPI (20000 ppr ÷ 0.25 in/rev = 0.0000125 in/pulse).
- Set Minimum Position Accuracy = 0.0001.
- Set Position Data Type = Float.
- 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:
- Disconnect the remote I/O network.
- Power-cycle the PS-AMC module.
- In Productivity Suite, navigate to CPU > Firmware > Update Firmware and select the latest released PS-AMC firmware package from the AutomationDirect support site.
- Confirm the flash write and wait for the module to reboot.
- 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
- PS-AMC Motion Controller Overview (PDF)
- ProductivityMotion AMC: Hardware Axis Configuration (video)
- PS-AMC Motion Controller Overview (video)
- ProductivityMotion AMC: Features In-Depth (video)
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.