Problem: PTO Pulse Generation on 6ES7 322-1BH10-0AA0
The combination of a CPU 315-2DP (6ES7315-2AG10 or similar), an IM 153-1 ET 200M head, and the digital output module SM 322; DO 16 x DC 24 V / 0.5 A High Speed (6ES7322-1BH10-0AA0) is frequently wired to drive stepper motor amplifiers through the step/direction interface. Engineers regularly attempt to produce pulse trains of 500 Hz, 800 Hz, or higher from the standard DO backplane of the S7-300, only to find that the produced step rate collapses or the pulse-train duty cycle distorts once the OB1 scan time reaches ~17 ms.
The defect is not in wiring, ground loops, or field-device termination - it is a fundamental ceiling imposed by three coupled timing limits:
- OB scan period on the CPU 315-2DP (no OB38 / OB1x < 10 ms available).
- Output reaction time of the SM 322-1BH10 output stage (0→1 and 1→0 propagation).
- Stepper driver input conditioning (optocoupler + debounce / Schmitt trigger RC), which further divides the achievable pulse rate.
SM 322-1BH10-0AA0 Module Specifications
The High Speed variant 6ES7322-1BH10-0AA0 differs from the standard 6ES7322-1BH01-0AA0 in switching performance and group isolation. Key parameters that drive PTO feasibility:
| Parameter | SM 322; DO 16 x DC 24 V / 0.5 A High Speed (6ES7322-1BH10-0AA0) |
|---|---|
| Outputs | 16, electrically isolated in two groups of 8 |
| Rated supply voltage | 24 V DC (20.4 V to 28.8 V) |
| Output voltage, max. | typ. Up − 0.4 V |
| Output current per channel | 0.5 A (continuous), 5 A inrush / 100 ms |
| Switching frequency on resistive load, max. | ≈ 1 kHz |
| Switching frequency on inductive load, max. | ≈ 0.5 Hz (free-wheeling diode required) |
| Reaction time 0 → 1 (resistive) | typ. 100–300 µs |
| Reaction time 1 → 0 (resistive) | typ. 100–300 µs |
| Short-circuit protection | Electronic, latching |
| Isolation test voltage | 500 V DC (groups / backplane) |
| Hot-swap capable | No (only via IM 153-1 red/green pair, slot 0) |
Source: Siemens product master data – 6ES7322-1BH10-0AA0.
CPU 315-2DP Cycle Time and OB Limitations
The CPU 315-2DP belongs to the S7-300 family with integrated PROFIBUS-DP master. Its cyclic interrupt OBs have these fixed clocking boundaries:
| OB | Default period | Configurable range (HW Config) | Available on CPU 315-2DP? |
|---|---|---|---|
| OB1 | scan-time driven | n/a | Yes |
| OB10/11/12/13 | Time-of-day | 1 min – 24 h | Yes |
| OB35 | 100 ms | 1 ms – 60 000 ms (phase = 0) | Yes |
| OB36 | — | — | No |
| OB37 | — | — | No |
| OB38 | 10 ms | 1 ms – 60 000 ms | No (only S7 317 / S7 400) |
| OB40 | Hardware interrupt | process-driven | Yes |
For the SM 322-1BH10-0AA0 driving a stepper pulse stream, the relevant OB is OB35. The minimum OB35 period the CPU 315-2DP will accept is 1 ms, but only if the configured OB35 execution time plus the main scan stays below the period. With a typical OB35 of 5–10 ms and an OB1 of 17 ms, the effective half-period ceiling for a toggled output is roughly 17 ms × 0.5 ≈ 8.5 ms (low → high → low), i.e. ≈ 60 Hz in raw user-program toggling.
Why the SM 322-1BH10 Cannot Reach 800 Hz Reliably
Three independent stop bands each reject the 800 Hz target:
2.1 OB clocking stop band
To toggle an output at 800 Hz with 50 % duty, the application must change the output bit every T/2 = 625 µs. No OB on the CPU 315-2DP can fire that fast without leaving CPU time for OB1, PROFIBUS DP cycle, and the S7 timer / counter updates.
2.2 DO reaction-time stop band
The 6ES7322-1BH10-0AA0 has typical propagation of 100–300 µs per edge. For an 800 Hz square wave (1.25 ms period, 625 µs half-period), the cumulative lag on the rising edge plus the falling edge is up to 600 µs. The duty cycle will skew from 50 % to roughly 20 %/80 % depending on direction, which most stepper drivers interpret as a step on the rising edge only and still accept, but the step rate is reduced to what the module can sustain, typically 500 Hz – 1 kHz.
2.3 Driver input stop band
Stepper-driver optocoupler inputs normally include an RC filter of 10 µs – 100 µs to reject noise. Combined with the optocoupler rise/fall time, the effective input bandwidth is 50 kHz – 200 kHz, which is not the problem. The real stop band is the way the user toggles the bit. Toggling inside OB1 at 17 ms scan → 29 Hz is the most common failure mode and matches what the source reports.
Calculating Maximum Achievable Frequency
Use this framework to size any proposal before commissioning:
Fmax = 1 / ( 2 × (Tob + Tdo + Tdriver) )
Where:
-
T_ob= OB scan period in seconds (OB35 for periodic). -
T_do= sum of 0→1 and 1→0 propagation of the DO module. -
T_driver= optocoupler + RC time constant of the driver input.
Example A: 800 Hz target, OB35 = 10 ms, SM 322-1BH10-0AA0, typical driver
-
T_ob= 10 × 10⁻³ s = 10 000 µs -
T_do= 200 µs + 200 µs = 400 µs -
T_driver= 50 µs
F_max = 1 / (2 × (10 000 + 400 + 50) × 10⁻⁶) = 1 / 0.0209 ≈ 47.8 Hz
The OB clocking alone caps the result at ~50 Hz regardless of how "fast" the module is.
Example B: 800 Hz target, OB35 = 1 ms (lowest legal)
F_max = 1 / (2 × (1 000 + 400 + 50) × 10⁻⁶) ≈ 345 Hz
Still short of 800 Hz. To hit 800 Hz with the SM 322-1BH10-0AA0, OB35 would need to drop to ~200 µs, which is below the CPU 315-2DP capability.
Hardware Alternatives for PTO Generation
When 250 Hz – 100 kHz step rates are required, replace the SM 322-1BH10-0AA0 with one of the following, in increasing order of performance:
| Alternative | Order Number | Max step rate | Mounting | Notes |
|---|---|---|---|---|
| ET 200S 1STEP pulse generator | 6ES7138-4DC00-0AB0 | up to 1 kHz TTL, 25 kHz 24 V | IM 151 / ET 200S | Reuses the IM 153-1 if Profibus DP master available |
| ET 200S 2STEP pulse generator | 6ES7138-4DC10-0AB0 | 2 channels, up to 1 kHz TTL, 25 kHz 24 V | IM 151 / ET 200S | Two independent axes per module |
| FM 353 positioning module (stepper) | 6ES7353-1AH01-0AE0 | up to 25 kHz | S7-300 central rack | Full NC-style positioning, MD/SD interface |
| FM 354 servo positioning module | 6ES7354-1AH01-0AE0 | up to 25 kHz (analog) | S7-300 central rack | For servo drives with ±10 V interface |
| CPU 314C-2DP integrated PTO | 6ES7314-6CG03-0AB0 | up to 2.5 kHz per channel | CPU integral | Two PTO channels onboard, replaces CPU 315-2DP |
| S7-1200 CPU PTO | e.g. 6ES7214-1AG40-0XB0 | up to 100 kHz | CPU integral | Migration target; requires STEP 7 Basic / TIA Portal |
| S7-1500 PTO via TM PTO | 6ES7553-1AA00-0AB0 | up to 1 MHz | S7-1500 TM | Only with CPU 1500 family |
Each FM 350/351/352/353/354 family module occupies one S7-300 slot and is parameterised through the dedicated FM setup interface in STEP 7 (HW Config → FM Properties). The FM 353 is the canonical drop-in for replacing a manual OB35 pulse loop with hardware-accelerated step generation that the CPU off-loads completely.
ET 200S 1STEP / 2STEP Drop-In on an Existing IM 153-1 Station
If the project is locked to PROFIBUS DP and the IM 153-1 must stay, the most cost-effective swap is to remove the SM 322-1BH10-0AA0 from its slot and insert an ET 200S pulse generator in an ET 200S sub-rack fed from the IM 153-1 DP/PA link. The 6ES7138-4DC00-0AB0 (1STEP) provides:
- One pulse/direction output, 24 V or RS-422 (5 V TTL).
- Resolution 32 bits, max output frequency 25 kHz (24 V) or 1 MHz (TTL).
- Integrated ramp generator (linear, jerk-limited).
- Hardware inputs for reference, encoder, and digital I/O.
It is configured via the GSD file SIEM8170.GSD and integrated as a PROFIBUS DP slave to the CPU 315-2DP. The user program exchanges 12 bytes of output / 12 bytes of input data via SFC 14 / SFC 15.
Software Compensation Patterns (When Hardware Swap Is Not Possible)
On a CPU 315-2DP that cannot be replaced, the highest pulse rate that can be obtained from an SM 322-1BH10-0AA0 without an FM module is in the 250 Hz – 500 Hz range, and only under strict conditions:
- Configure OB35 to 1 ms in HW Config (CPU 315-2DP supports this).
- Place all pulse logic in OB35. Do not call SFC 14/15, Profibus I/O consistency, or PID blocks from OB35.
- Use a word-mask output and direct PQW to trigger the SET / RESET. The bit must be toggled inside the OB35 and not gated by an OB1 flag.
- Use
QPA(set) andQNA(reset) bit instructions on an immediate-write flag, e.g.SET/CLRonPIB/PQBwith:Pqualifier to bypass the process image and force the backplane update. - Hold OB1 to >100 ms and exclude the toggle from any conditional check that depends on OB1 scan.
Sample OB35 toggle snippet (ST):
// OB35 - pulse toggle at OB35 tick
IF OB35_FIRST_SCAN THEN
i_state := 0;
END_IF;
i_state := 1 - i_state;
IF i_state = 1 THEN
QP 0.0; // immediate set, no PII update
ELSE
RN 0.0; // immediate reset
END_IF;
SET / CLR on the process image from OB35 does not bypass the OB1 cycle on its own. The backplane write is scheduled by the CPU on the next backplane window and may still slip to 1.5 ms – 2 ms. Real-world measured throughput with this pattern on a CPU 315-2DP is ~400 Hz with irregular spacing (jitter 30 % – 40 %). It is suitable for slow jog, not for closed-loop positioning.Stepper Driver Input Requirements
Before sizing the pulse source, validate the driver interface. Most stepper drives (Siemens FM STEP, Oriental Motor CVD, Linistepper, Nanotec, Leadshine DM, Schneider Lexium MDrive, etc.) present an optocoupler STEP input with the following electrical envelope:
| Parameter | Typical value | Comment |
|---|---|---|
| Input voltage, nominal | 5 V DC or 24 V DC | Most 24 V inputs tolerate 5 V – 28 V |
| Input current, nominal | 8 mA – 15 mA | External series resistor if driving from 24 V |
| Minimum pulse width | 1 µs – 10 µs | Driver-limited, not CPU-limited |
| Edge trigger | Rising edge (most drivers) | Confirm in driver datasheet |
| Max step rate | 50 kHz – 1 MHz | Driver can typically exceed what the SM 322 can produce |
A standard pattern is to drive the optocoupler LED from a 24 V output through a 1.8 kΩ – 2.2 kΩ current-limiting resistor. The optocoupler presents a near-resistive load to the SM 322-1BH10-0AA0 and therefore does not cause the inductive-load derating. The bandwidth ceiling is the CPU+OB cycle, not the module.
Verification and Commissioning Checks
Use this matrix after every change to confirm the PTO chain meets specification:
| Test point | Expected reading | Pass criterion |
|---|---|---|
| SM 322-1BH10 output voltage, high | ≥ Up − 1.0 V | Driver sees proper logic 1 |
| SM 322-1BH10 output voltage, low | ≤ 2 V | Driver sees proper logic 0 |
| Edge count / 1 s, scope on STEP | target Hz ± 5 % | Frequency within tolerance |
| Duty cycle, scope | 40 % – 60 % | Skew < 10 % |
| Jitter (peak-to-peak period) | < 20 % | Stable step rate, no missed steps |
| CPU scan time, STEP 7 Module Information | OB1 < OB35 period / 2 | No OB35 overrun |
| Driver STEP error counter | 0 / N pulses | No step loss |
| Module status SF / BF | Off | No diagnostic interrupt |
Recommended test sequence:
- Power up the CPU and SM 322 with a 24 V dummy resistive load (e.g. 470 Ω, 1 W) instead of the stepper driver.
- Program OB35 to 1 ms and toggle the bit at 250 Hz; observe on scope.
- If the duty cycle is asymmetric or jitter > 20 %, the OB clock is the bottleneck. Migrate to FM 353 or ET 200S 1STEP.
- Replace the resistive load with the stepper driver STEP input.
- Confirm the driver reference-input pulses (DIR or CW/CCW) follow the expected 0/1 state.
- Run a 30-minute continuous test. Monitor module diagnostics for
SF = diagnostic interrupt, indicating short circuit or overload on the SM 322-1BH10.
Frequently Asked Questions
Can the 6ES7322-1BH10-0AA0 output 800 Hz pulses from a CPU 315-2DP?
No, not reliably. The CPU 315-2DP supports OB35 down to 1 ms, but the resulting toggle ceiling with this DO is approximately 350 Hz. To produce 800 Hz pulses, replace the SM 322 with an FM 353, ET 200S 1STEP (6ES7138-4DC00-0AB0), or migrate to a CPU with integrated PTO such as the CPU 314C-2DP or an S7-1200/S7-1500.
What is the maximum switching frequency of the 6ES7322-1BH10-0AA0?
Approximately 1 kHz on purely resistive loads, and as low as 0.5 Hz on inductive loads unless a free-wheeling diode is wired across the load. Refer to the official Siemens product data sheet for the exact timing parameters and group isolation limits.
Which OB should I use for PTO on a CPU 315-2DP?
Use OB35, configured to the lowest possible period (1 ms). OB36, OB37 and OB38 are not present on the CPU 315-2DP; only S7-317 and S7-400 CPUs expose OB38. Keep all pulse-generation logic inside OB35 and avoid blocking calls such as SFC 14/15 or Profibus I/O consistency from that OB.
Why does my stepper motor only run at 10 Hz?
Either the OB is too slow, the toggle logic lives in OB1 instead of OB35, or the optocoupler input of the driver is loaded with a series resistor that turns the source into an inductive-like load for the module. Move all toggling to OB35, raise the OB35 frequency to 1 ms, and verify with a scope that the edges are clean.
Can I keep my IM 153-1 and just add an FM 353?
No. The FM 353 must sit in the central rack of the S7-300 directly next to the CPU 315-2DP. It cannot live in an ET 200M station behind an IM 153-1 because it is backplane-DMA-based. For a Profibus DP-based PTO behind IM 153-1, use the ET 200S 1STEP (6ES7138-4DC00-0AB0) instead.