SRS Tool — Shock Response Spectrum Analyser

From OROS Wiki
Jump to navigation Jump to search

{DISPLAYTITLE:SRS Tool — Shock Response Spectrum Analyser}}

 SRS Tool
Developer OROS / Gemini
Platform Windows 10 / 11
Language Python 3.9+
UI PySide2 · Qt 5.15
Algorithm Smallwood 1981
File I/O .ors / .orm (NVGate)
Standards 30+ built-in curves
Licence Free / open-source

SRS Tool — Shock Response Spectrum Analyser

SRS Tool is a professional Shock Response Spectrum (SRS) analysis application built for structural dynamics engineers working with OROS NVGate data acquisition systems. It reads shock recordings directly from NVGate measurement folders, computes SRS using the Smallwood (1981) recursive digital filter, and pushes results back into NVGate as live TCP result channels — all from a single application.

Figure 1 — SRS Tool main window. Time signal with auto-detected shock zone (top right, yellow markers) and log-log SRS plot (bottom right). Three-channel triaxial measurement loaded: channels x, y, z.

What sets SRS Tool apart

Most SRS tools require manual import/export and ship with no built-in normative database. SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute.

Feature OROS SRS Tool Typical alternatives
30+ normative limit curves built-in — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup ✔ Included ✘ Manual entry only
Multi-channel Pass/Fail with per-channel verdict — x, y, z compared simultaneously in one run ✔ Included ✘ One channel at a time
NVGate TCP result injection — log-log display, autoscaled, direct to project ✔ Native ✘ Not available
Automatic shock zone detection — envelope algorithm, runs on load ✔ Automatic ~ Manual only
Primary + Residual SRS in a single computation pass ✔ One click ~ Two separate runs
SRSS + Worst-case Envelope — triaxial multi-axis combination ✔ Included ✘ Paid add-on
Interactive dB cursor on Pass/Fail chart — frequency, SRS, limit, margin at a glance ✔ Included ✘ Rarely available

Full feature list

  • Signal acquisition: reads NVGate signal files directly
  • Multi-channel: up to 10+ simultaneous channels; channel labels read from NVGate recording metadata (e.g. x, y, z)
  • Smallwood recursive filter: vectorised NumPy implementation; all frequencies computed in a single forward pass
  • Frequency axis: 1/3, 1/6, 1/12 or 1/24 octave resolution; user-defined f_min / f_max
  • SRS types: Maximax (absolute maximum), Positive, Negative
  • Physical quantities: Acceleration SRS + derived Pseudo-Velocity SRS + Pseudo-Displacement SRS
  • Shock zone: auto-detection + manual override (drag on plot or type Start/End in seconds)
  • Residual SRS: computes SRS on the signal segment after the shock ends
  • Multi-axis combination: SRSS and/or Worst-case Envelope across all loaded channels
  • Pass/Fail: 30+ built-in normative curves; user CSV; scale factor (dB); multi-channel worst-case
  • CSV export: full table (per-channel SRS, SRSS, limit, per-channel margin, worst margin, status)
  • PNG export: Pass/Fail chart at 150 dpi
  • NVGate injection: injects all SRS curves into NVGate on log-log display, autoscaled
  • Preprocessing: DC offset removal, noise floor suppression
  • Dark theme: optimised for lab-room screen visibility



Quick Start

⚡ Five steps from measurement folder to qualification verdict
  1. Main tabSelect signal folder… → navigate to the NVGate Measurement folder
  2. Channels appear automatically — shock zone is auto-detected (yellow markers on signal plot)
  3. Set Q = 10, range 1–10 000 Hz, resolution 1/12 oct → click Compute SRS
  4. Pass / Fail tab → limit curve is pre-set to MIL-STD-810H Mid-field → click ▶ Run Pass / Fail
  5. Read the per-channel verdict, export CSV / PNG, or click Inject into NVGate

Installation

Note: NVGate does not need to be running to load signals or compute SRS. It is only required for Inject into NVGate.


User Interface

Main Tab

Figure 2 — Main tab controls. From top: NVGate connection indicator, Signal folder, channel checkboxes with Reload, Calculation parameters, Output type selectors, Compute and Inject buttons.

NVGate connection indicator

A coloured dot in the NVGate box shows connection status, polled every 3 seconds automatically:

🟢 Connected NVGate reachable. Injection available.
🔴 Disconnected NVGate not running. SRS computation still fully functional.

Signal

Click Select signal folder… to open a folder browser (default root: C:\OROS\NVGate data\Projects). Select the Measurement subfolder — channels are listed and the signal is plotted immediately.

Channels

One checkbox per recorded channel, showing label, sampling rate, duration and unit:

  ☑  x   (25 600 Hz   13.86 s   m/s²)
  ☑  y   (25 600 Hz   13.86 s   m/s²)
  ☑  z   (25 600 Hz   13.86 s   m/s²)

Channel labels (x, y, z…) come from the Name field set by the operator in NVGate at recording time. Uncheck a channel to exclude it. ↺ Reload channels re-reads files from disk after a new recording.

Calculation parameters

Parameter Description Recommended default
Frequency range f_min to f_max of the SRS output 1 Hz → 10 000 Hz
Q / Damping Q factor or damping ratio ζ (linked: Q = 1/2ζ) Q = 10 (ζ = 5 %)
Resolution Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct 1/12 octave

Q = 10 (ζ = 5%) is the universal standard for aerospace shock SRS — MIL-STD-810H, ECSS-E-ST-10-03C, NASA-STD-7003A all specify this value. f_max is auto-clamped to Nyquist (f_s / 2).

Output

Type
Acc — Acceleration SRS. Always available.   Vel — Pseudo-velocity SRS.   Disp — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.)
Curve
Maximax — max(positive, |negative|). The standard curve required by most norms.   Positive — max tensile response.   Negative — max compressive response.

Signal and SRS plots

Figure 3 — Time signal plot. Three channels (x/y/z) overlaid. Yellow dashed lines mark the auto-detected shock zone. Drag horizontally anywhere on the plot to redefine the zone manually.
Figure 4 — SRS log-log plot. Channels x (blue), y (orange), z (green). Each curve is the Maximax acceleration SRS over the detected shock zone. Q = 10, 1/12 octave, 1–10 000 Hz.

Advanced Tab

Figure 5 — Advanced tab. Shock zone section (auto-detection parameters + manual Start/End override), Residual SRS option, preprocessing, and multi-axis SRSS / Envelope.

Shock Zone

The shock zone is auto-detected every time a signal loads — you normally do not need to touch these settings. Use manual override only to fine-tune the boundary.

Auto-detection

The detection algorithm:

  1. Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window
  2. Trigger threshold = Threshold % × peak envelope
  3. Zone = first to last sample above threshold
  4. Expand by Padding ms on each side, clamped to signal bounds
Parameter Effect Default
Threshold (% of peak) Lower → wider zone; higher → core impact only 5 %
Padding (ms) Symmetric margin added on both sides of detected zone 20 ms

Padding example: shock detected at 8.055 s – 9.978 s with 20 ms padding → zone becomes 8.035 s – 9.998 s, ensuring ring-down is fully captured.

Manual override

Type Start and End (seconds, 3-decimal precision) — the yellow markers on the signal plot update immediately. Dragging on the signal plot synchronises the spinboxes in return.

Residual SRS

Check Also compute residual SRS to run a second computation on the signal after the shock zone end. This captures the free-vibration decay required by MIL-STD-810H Method 517 and ECSS-E-ST-10-03C for fragility assessment. Residual curves appear on the SRS plot labelled "(residual)".

Advanced Preprocessing

Option Effect Typical use
Remove DC offset (N ms) Subtracts the mean of the first N ms from the whole signal Sensor bias, thermal drift
Noise floor (N ms) Zeroes the first N ms Pre-trigger noise before impact

Multi-axis Combination

Enabled automatically when ≥ 2 acceleration channels are loaded. Check one or both options before computing:

Option Formula Display
SRSS — Square Root Sum of Squares √(SRS_x² + SRS_y² + SRS_z²) White dashed curve, Maximax only
Worst-case Envelope max(SRS_x, SRS_y, SRS_z) at each frequency Orange dash-dot curve, all types

Pass / Fail Tab

Figure 6 — Pass/Fail controls. Grouped limit curve library (30+ curves), user CSV option, scale factor, channel selector, Run button, and export buttons.

The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve.

Built-in limit curve library

30+ normative curves are pre-programmed — select a standard from the grouped drop-down and run immediately. No other standalone SRS tool provides this library out of the box.

Standard Curves included
MIL-STD-810H — Method 517 Near-field (< 0.3 m), Mid-field ★ (0.5–1.5 m), Far-field (> 1.5 m), Gunfire, Tall vehicles
ECSS-E-ST-10-03C Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment & system level)
NASA-STD-7003A Payload near/far-field, structure-borne near/far
DEF-STAN 00-35 Land vehicle, Ship (deck), Airborne external/internal
MIL-S-901D High-impact shock Grade A / Grade B
IEST-RP-DTE032 Light / medium / heavy equipment
RTCA DO-160G Avionics Cat. A / B / C

★ MIL-STD-810H Mid-field is the default — the most common qualification specification.

User-defined CSV

Select ← User-defined (CSV), load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example:

10, 5     100, 50     2000, 50     10000, 50

Scale factor (dB)

Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20)

dB Multiplier Typical use
+6 ×2.00 Conservative / tighter requirement
+3 ×1.41 Standard qualification margin check
0 ×1.00 Nominal — no change
−6 ×0.50 Relaxed limit

Pass/Fail results

Figure 7 — Pass/Fail chart. Three channels (x/y/z) vs MIL-STD-810H Mid-field limit (red dashed). All channels are well within spec: the margin subplot (bottom) shows 30–60 dB positive margin throughout the full frequency range.

Top panel — SRS vs Limit

Each channel plotted in a distinct colour. Limit curve: red dashed. Red fill = exceedance (SRS > limit). Orange fill = caution zone (0 ≤ margin < 3 dB).

Bottom panel — Margin (dB)

Margin M(f) = 20 × log₁₀( Limit(f) / SRS(f) )

Colour Condition Meaning
Green M ≥ 3 dB Well within specification
Orange 0 ≤ M < 3 dB Caution — low margin
Red M < 0 dB FAIL — exceedance

Interactive cursor

Hover anywhere on either panel to see a floating readout snapped to the nearest frequency band, showing frequency, SRS value, limit value, margin in dB, and PASS/FAIL status. The readout border turns green, orange or red accordingly.

Verdict text

The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output:

PASS   —   Maximax SRS
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m)

Per-channel result:
  PASS  x     min +42.1 dB @ 500 Hz
  PASS  y     min +38.7 dB @ 342 Hz
  PASS  z     min +45.3 dB @ 1000 Hz

Worst margin (all channels): +38.7 dB  @  342.0 Hz
No exceedance detected over the computed frequency range.

Export

Button Output Content
Export CSV… .csv Per-channel SRS · Worst SRS · Limit · Per-channel margin · Worst margin · Status. Header block includes curve name and scale factor for traceability.
Export graph PNG… .png / .pdf Both panels at 150 dpi.

NVGate Integration

Reading signal files

SRS Tool reads NVGate data with NVGate closed, using no additional DLL. File layout:

Measurement8/
  Record_1_1/
    Channel_1_0_XXXXXXXX/
      Channel_1.orm    ← JSON: sampling rate, unit, channel Name
      Part_0.ors       ← binary: float32 little-endian, SI units
    Channel_2_0_XXXXXXXX/  …

Channel label comes from the Name field in .orm (set in NVGate at recording time). Falls back to SourceName ("Input 1", "Input 2"…) if empty.

Injecting results into NVGate

Click Inject into NVGate (or the duplicate button in the Advanced tab) to send all computed curves via the NVDrive TCP protocol as NVD REAL SPECTRUM channels:

  • All SRS curves → separate TCP result channels
  • X and Y axes: log scale (set automatically)
  • Y axis: autoscaled
  • All curves displayed in window SRS_Results of Layout1

NVGate channel naming convention:

SRS Acc Shock AbsMax: x
SRS Acc Shock AbsMax: y
SRS Acc Shock AbsMax: z

Calculation Reference

Shock Response Spectrum

The SRS is the peak response of a bank of Single Degree Of Freedom (SDOF) oscillators, each with a different natural frequency f_n, driven by a common base acceleration x(t):

z(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x(t)

Curve Definition Standard?
Positive SRS maxt[ ωₙ² z(t) ] Supplementary
Negative SRS maxt[ −ωₙ²z(t) ] Supplementary
Maximax SRS max(Positive, Negative) Required by most norms

Smallwood Recursive Filter

The Smallwood (1981) filter avoids step-by-step numerical integration, giving an exact discrete-time equivalent with coefficients computed once per frequency:

E = exp(−ζωₙΔt)    K = ωd·Δt    (ωd = ωₙ√(1−ζ²))
b₀ = 1 − E·sin(K)/K     b₁ = 2(E·sin(K)/K − E·cos(K))     b₂ = E² − E·sin(K)/K
a₁ = 2E·cos(K)     a₂ = −E²
y[k] = b₀x[k] + b₁x[k−1] + b₂x[k−2] + a₁y[k−1] + a₂y[k−2]

All N natural frequencies are processed in a single forward pass through the signal using NumPy broadcasting — typically 50–100× faster than a frequency-by-frequency loop.

Frequency axis

Log-spaced at 1/n octave: f_k = f_min × 2^(k/n)

Resolution Bands 1–10 000 Hz
1/3 octave 40
1/6 octave 80
1/12 octave (default) 160
1/24 octave 320

Q factor and damping

Q = 1/(2ζ) ↔ ζ = 1/(2Q)

Q ζ Use
10 5 % Aerospace standard — MIL-STD-810, ECSS, NASA
50 1 % Lightly damped structures
5 10 % Rubber-mounted, heavily damped

Primary and Residual SRS

Zone Signal segment Required by
Primary [t_start → t_end] — the shock transient All norms
Residual [t_end → end] — free vibration decay MIL-STD-810H §517, ECSS §8.4.3

Pseudo-velocity and pseudo-displacement

Quantity Formula Unit (SA in m/s²)
Pseudo-velocity SV(fn) = SA(fn) / (2π·fn) m/s
Pseudo-displacement SD(fn) = SA(fn) / (2π·fn)² m

Multi-axis combination

Method Formula Applied to Use case
SRSS √(SA_x² + SA_y² + SA_z²) Maximax only Euclidean resultant, triaxial sensor
Worst-case Envelope max(SA_x, SA_y, SA_z) at each f All types Space programmes (ECSS App. H)

Supported Input Units

Unit Physical quantity Vel/Disp SRS available
m/s², g Acceleration ✔ Yes
m/s, mm/s Velocity ✘ No
m, mm, µm Displacement ✘ No
N, kN Force ✘ No
V, mV Voltage ✘ No
Pa, N/m² Pressure ✘ No
rad/s, RPM Angular velocity ✘ No

Glossary

Term Definition
SRS Shock Response Spectrum. Peak SDOF response as a function of natural frequency.
Maximax Negative|). The absolute peak response — required by most norms.
SDOF Single Degree Of Freedom. A mass–spring–damper system with one resonant frequency.
Q factor Quality factor. Q = 1/(2ζ). Q = 10 is the universal aerospace standard.
ζ Damping ratio. Fraction of critical damping. ζ = 5 % ↔ Q = 10.
Primary SRS SRS over the shock transient [t_start, t_end].
Residual SRS SRS on the post-shock free vibration [t_end, end].
SRSS Square Root Sum of Squares: √(SRS_x² + SRS_y² + SRS_z²).
Envelope Point-by-point max across channels at each frequency.
Margin (dB) 20·log₁₀(Limit/SRS). Positive → PASS, negative → FAIL.
Padding Symmetric time margin added around the auto-detected shock zone.
Pyroshock Shock from explosive devices: separation bolts, pyrocutters, pin pullers.
.orm NVGate JSON channel metadata: sampling rate, unit, name.
.ors NVGate binary signal: float32 little-endian samples, SI units.
NVDrive OROS TCP protocol for programmatic communication with NVGate.

Algorithm: D.O. Smallwood, An Improved Recursive Formula for Calculating Shock Response Spectra, Shock and Vibration Bulletin, 1981.  ·  Standards referenced: MIL-STD-810H (2019) · ECSS-E-ST-10-03C (2012) · NASA-STD-7003A (2011) · DEF-STAN 00-35 Part 3 (2021).