Technical Note · Shock Testing
NLAF: Shock Amplitude on Nonlinear Systems
Why a shock pulse equalized at low level comes out the wrong size at full level on a nonlinear system, how Panther's Non-Linear Adjustment Factor (NLAF) corrects the amplitude pulse by pulse without disturbing the equalized shape, and how to schedule a test so it works best.
Key takeaways
- Panther equalizes a shock pulse at a low level (−20 dB by default) and scales it up. On a linear system the full-level pulse is right. On a nonlinear one (long-stroke shakers, airbag tests, amplifiers near their limits) the shape stays right but the level does not: a few percent to more than 20% low, or high.
- NLAF is the wanted peak divided by the measured peak. Panther works it out after every pulse, averages it over the pulses since it was last applied, and scales the drive by it during the ramp and between schedule rows.
- Auto NLAF is on by default in automatic tests, and each correction is limited to the Level Increment (3 dB by default). In manual mode, the Update button under NLAF # applies the averaged value to the next output.
- It changes only the drive's gain, never the compensation. That is why it is preferred to repeated compensation updates when the shape is good and only the peak is off.
- Measured on Panther with a simulated test system that loses 22% of its gain at full level: the test aborts on its first full-level pulse without NLAF; with Auto NLAF it runs to the end and each row of pulses lands closer to the reference. A system that gains 15% over-tests every pulse by 14% without NLAF and comes back to within 0.1% with it.
- Schedule for it: split the full-level pulses into several rows, and use a smaller Level Increment on strongly nonlinear systems. On a linear system NLAF stays at 1.0, so a large factor there means something else is wrong.
Why shock pulses come out wrong at full level
A Panther shock test reaches full level in stages. System identification measures the shaker system's frequency response with low-level random noise. The reference pulse divided by that response gives the compensated drive. A few pulses at the equalization level (−20 dB by default) confirm the drive, and the compensation is adjusted if they miss the alarm limits. The schedule then ramps up in steps of the Level Increment, one pulse per step, to the levels in the schedule.
Every step of that sequence assumes the system scales: twice the drive, twice the response. Many shock systems don't, and the bigger the pulse the further they stray:
- Long-stroke and airbag systems. Near the ends of its travel an electrodynamic shaker's force factor falls and its suspension stiffens; pneumatic and airbag systems change stiffness with pressure and stroke.
- Power amplifiers approaching their voltage or current limits.
- Fixtures and test articles with isolators, elastomers or joints whose stiffness depends on amplitude.
When the nonlinearity mainly changes the system's gain, the full-level response keeps the equalized shape but arrives at the wrong size. It is systematic, not random: every pulse at that level misses by about the same amount.
What NLAF is
The Non-Linear Adjustment Factor is the gain the drive would need for the response to land on the reference:
A factor of 1.10 means the response was 9% low and the drive should rise by 10% (0.83 dB). After every pulse Panther logs it with the pulse's errors, for example "Avg Error = 0.37%; Error at Peak = 9.40%, Suggested NLAF = 1.10375". The peak error is logged as a magnitude; the factor shows the direction.
| NLAF | Response was | Drive change |
|---|---|---|
| 0.80 | 25% high | −1.94 dB |
| 0.90 | 11.1% high | −0.92 dB |
| 1.00 | on target | 0 dB |
| 1.10 | 9.1% low | +0.83 dB |
| 1.20 | 16.7% low | +1.58 dB |
| 1.41 | 29.1% low | +3.00 dB (one application's limit at the default increment) |
How Panther applies it
- Averaged over a group. One pulse is the smallest group, but the factor is best used as a group average, which smooths out pulse-to-pulse scatter.
- Applied after equalization, during the ramp and between schedule rows in automatic tests with Auto NLAF on. The pulses within one row go out as a group at a fixed drive.
- Limited per application to ± the Level Increment, so no single correction can change the drive by more than one ramp step. The log says "Apply NLAF" or, when the limit acts, "Apply Limited NLAF".
- Cumulative. The corrected drive carries over to every following pulse and level. Going back down to a lower level, the next pulses measure the new error and Auto NLAF corrects back.
- Never combined with a compensation update. An output that updates the compensation clears the pending NLAF, so the two corrections never stack on the same pulse.
| Where | What | Default |
|---|---|---|
| Schedule dialog: Auto NLAF | Applies the averaged NLAF automatically after equalization, during the ramp and between schedule rows. Automatic mode only. | On |
| Schedule dialog: Level Increment (dB) | The ramp step between levels, and the most one NLAF application can change the drive | 3 dB |
| Schedule dialog: Equalization Level | Where the compensated pulse is first confirmed | −20 dB |
| Manual control panel: NLAF # Update | Applies the averaged suggestion to the next manual output | – |
| Event log | "Suggested NLAF" after every pulse; "Apply NLAF" or "Apply Limited NLAF" when applied. In manual mode, a "Gain Shift" warning with its NLAF equivalent when the system gain moves more than 1 dB from its system-identification value | – |
What it does for accuracy
To show the effect over a whole test, we ran Panther Shock against its device simulator, with a simulated test system whose gain changes with level. The pulse was a 20 g, 11 ms half-sine with pre- and post-pulses. The schedule was Panther's default ramp (equalization at −20 dB, 3 dB steps) followed by ten full-level pulses in rows of 3, 3 and 4, judged against Panther's factory limits of 10% (alarm) and 20% (abort) on the peak error. Each simulated system changes its gain with the peak drive of every pulse, by exactly −10%, −22% or +15% at full level, or saturates its drive by 15% at full level. Because the test system is known exactly, every error Panther reports can be checked against the truth: the simulator records the gain it applied to every pulse. The five systems are deliberately simple: each nonlinearity is a single, smooth effect, the same on every pulse.
| System at full level | Auto NLAF | First full-level pulse | Mean |peak error| | Pulses past the 10% alarm | Outcome |
|---|---|---|---|---|---|
| Linear | Off | −0.05% | 0.05% | 0 of 10 | Completes |
| On | +0.02% | 0.01% | 0 of 10 | Completes; total NLAF 0.00 dB | |
| Gain falls 10% | Off | −10.1% | 10.1% | 10 of 10 | Completes, just past the alarm throughout |
| On | −6.8% | 2.9% | 0 of 10 | Completes; last pulse −0.5%; drive +1.08 dB | |
| Gain falls 22% | Off | −22.4% | – | – | Aborts on the first full-level pulse |
| On | −17.2% | 10.2% | 3 of 10 | Completes; last pulse −5.4%; drive +3.21 dB | |
| Gain rises 15% | Off | +14.0% | 14.0% | 10 of 10 | Completes as an over-test |
| On | +8.5% | 2.7% | 0 of 10 | Completes; last pulse +0.1%; drive −0.96 dB | |
| Drive saturates, 15% at full level | Off | −13.1% | 13.1% | 10 of 10 | Completes, low; top of the pulse flattened |
| On | −9.6% | 4.3% | 0 of 10 | Peak corrected, last pulse −1.0%; the flattened top remains (see Limits) |
Three things stand out. On a linear system Auto NLAF does nothing measurable: every suggestion was between 0.9997 and 1.0006, and its total correction 0.00 dB. Where the gain changes with level, it turns a test that runs near or past the limits into one that converges onto the reference. And it starts on the way up: the ramp takes out part of the change before any full-level pulse is spent, and each row at full level takes out more.
Getting the most from NLAF
NLAF can only act between groups, and it always learns from the last level, which is a little below the next one. Both facts make the schedule part of the accuracy.
| Schedule | First full-level pulse | Last | Mean |peak error| | Past the 10% alarm |
|---|---|---|---|---|
| 3 dB steps, one row of 10 | −17.2% | −17.2% | 17.2% | 10 of 10 |
| 3 dB steps, rows of 3, 3, 4 | −17.2% | −5.4% | 10.2% | 3 of 10 |
| 3 dB steps, ten rows of 1 | −17.3% | −0.2% | 4.3% | 2 of 10 |
| 1 dB steps, rows of 3, 3, 4 | −11.5% | −4.0% | 7.1% | 3 of 10 |
- Split the pulses at level into rows. NLAF is applied between rows, so ten pulses in rows of two or three get several corrections at full level; ten in a single row all run at the drive the ramp reached. The total pulse count does not change.
- Use a smaller Level Increment for strongly nonlinear systems. Smaller steps mean each correction is learned closer to the level it is used at. The ramp takes a few more pulses at lower levels.
- Mind the per-step limit. One application can move the drive by at most the Level Increment. With 1 dB steps, a large correction takes several groups.
- In manual mode, run a few pulses, read the suggested NLAF in the log, and press Update when the values agree.
NLAF or a compensation update?
Panther can also correct a shock drive by updating the compensation: the measured error, times a feedback factor, adjusts the frequency-domain compensation for the next pulse. That is the right tool when the shape is wrong. When the shape is right and only the peak is off, NLAF is the better one. (This comparison is from our model of the two corrections; the Panther runs above cover NLAF.)
| System | Method | First full-level pulse | Last | Mean |peak error| | Shape error over the pulse |
|---|---|---|---|---|---|
| Gain falls 10% | No correction | −9.4% | −11.2% | 9.9% | 0.1% |
| Compensation update, feedback 0.25 | −7.2% | −2.7% | 3.7% | 0.1% | |
| Compensation update, feedback 0.75 | −4.9% | −1.3% | 1.3% | 0.1% | |
| NLAF after every pulse | −4.3% | −1.3% | 1.2% | 0.1% | |
| Drive saturates, 15% | Compensation update, feedback 0.25 | −9.9% | −4.3% | 5.8% | 1.4% |
| Compensation update, feedback 0.75 | −7.2% | −2.4% | 2.5% | 0.9% | |
| NLAF after every pulse | −5.7% | −1.4% | 1.3% | 4.1% |
On a gain nonlinearity the two reach the same place, and NLAF gets there at least as fast. The difference is what they leave behind. NLAF is one logged number applied to the drive, limited per step, and the compensation stays exactly as system identification measured it. A compensation update writes the full-level gain change (−1.1 to −1.25 dB here) into the compensation itself, and in a real test it learns from every line of a single pulse's spectrum, including lines where the pulse carries little energy and the measurement is mostly noise or distortion. That is why the Panther manual, from field experience, recommends using NLAF to set the peak when the shape is good, rather than repeatedly updating the compensation.
On the clipping system the compensation update did something NLAF cannot: it reduced the shape error over the pulse from about 4% to about 1% by pre-shaping the drive around the flattening. The price is a compensation that now describes this system at this level, distortion included, rather than the system itself. (Our update rule follows the manual's description but not Panther's limits on each update, so the model shows the direction, not Panther's exact numbers.)
Shape wrong: update the compensation. Size wrong: NLAF. Look at the overlay of control and reference. If the response follows the reference but is uniformly too small or too large, leave the compensation alone and let NLAF scale it. If the pre- and post-pulses, the rise or the ringing differ, the compensation needs work, and a gain factor cannot fix it.
Limits and cautions
- NLAF corrects size, not shape. When the system clips, as a saturating amplifier or a shaker at the end of its stroke does, the top of the pulse flattens. NLAF still brings the peak up (in Table 3 from −13.1% to −1.0% by the last pulse), but the flattened top remains and grows slightly as the drive rises: the shape error over the pulse went from 2.7% to 4.0%. A flattened top means the system is at a limit, and no correction can add capacity.
- NLAF raises the drive on a softening system. The 22% system needed up to 4.5 dB more drive. Check that the shaker's displacement, velocity and force limits, and the drive limit, still hold at the corrected level.
- On a linear system, NLAF should stay at 1.0. On a wire, a small rigid load or any system known to be linear, a suggested NLAF far from 1 is a symptom, not a correction: something else is wrong, such as a sensitivity, a range or a channel mapping. Turn Auto NLAF off and find the cause before running at level.
- It needs repeatable pulses. NLAF assumes the next pulse behaves like the last few. On a system that changes from pulse to pulse, averaging over a larger group gives a steadier factor.
Common misconceptions
| Misconception | Reality |
|---|---|
| "If the pulse is low at full level, re-run system identification." | The system identification measured the system correctly, at the level it was run. A gain that changes with level is exactly what NLAF corrects, without throwing away a good compensation. |
| "Equalize at full level and the problem goes away." | It does, at the cost of extra full-energy pulses on the test article. NLAF corrects using the pulses the schedule runs anyway. |
| "NLAF corrects only the next pulse." | It is cumulative: the corrected drive carries over to every following pulse and level until a new NLAF changes it. |
| "Auto NLAF works in manual mode." | It has no effect there. In manual mode, use the Update button under NLAF #. |
| "A big NLAF means a very nonlinear system." | It can. On a system known to be linear it means something else is wrong; turn Auto NLAF off and investigate. |
| "NLAF can fix a clipped pulse." | It sets the peak; it cannot restore a flattened top. That needs more capacity, not more gain. |
Quick reference
| Item | Rule |
|---|---|
| Suggested NLAF | wanted peak / measured peak = L·Rpk / |C|pk, after every pulse |
| Applied value | average of the suggestions since the last application |
| When (Auto NLAF) | after equalization, during the ramp and between schedule rows; automatic mode only |
| When (manual) | on the next output after Update under NLAF # |
| Limit | ± the Level Increment per application (3 dB default = a factor of 0.71 to 1.41) |
| Persistence | cumulative: carried to every following pulse and level |
| With compensation updates | never both on the same output |
| Drive change | 20·log10(NLAF) dB |
| Factory peak-error limits | alarm 10%, abort 20% |
How Panther helps
- Amplitude correction built into the schedule: Auto NLAF is on by default and acts through the ramp and between schedule rows, so the nonlinearity is corrected on the way up rather than discovered at full level.
- Safe by construction: each correction is limited to one level increment, and a compensation update and an NLAF are never applied to the same pulse.
- The equalized shape is kept: NLAF scales the drive and leaves the system identification untouched, so a good compensation stays good.
- Visible: every pulse logs its average error, its peak error and its suggested NLAF, and every application is logged with its value.
- Manual control when you want it: in manual mode, apply the averaged correction with one button when the suggestions agree.
References and further reading
- MIL-STD-810H Change 1, Environmental Engineering Considerations and Laboratory Tests, Method 516.8, Shock.
- C. M. Harris and A. G. Piersol (eds.), Harris' Shock and Vibration Handbook, 5th ed., McGraw-Hill.
- Spectral Dynamics Technical Library: Shock Response Spectrum; Resonance; FFT Fundamentals.