Difference between revisions of "SRS Tool — Shock Response Spectrum Analyser"
(Created page with "{{DISPLAYTITLE:SRS Tool — User Guide}} __TOC__ = SRS Tool — Shock Response Spectrum Analyser = '''SRS Tool''' is a professional Shock Response Spectrum (SRS) analysis application developed for structural dynamics engineers working with OROS NVGate acquisition systems. It reads recorded time signals directly from NVGate project folders, computes SRS using the Smallwood (1981) recursive digital filter, and injects results back into NVGate as live TCP result channels...") |
(Added SEO metadata to SRS Tool page) |
||
| (32 intermediate revisions by one other user not shown) | |||
| Line 1: | Line 1: | ||
{{ | {{#seo: | ||
|title=SRS Tool: Shock Response Spectrum Analysis for OROS NVGate | |||
|keywords=SRS Tool, Shock Response Spectrum, SRS analysis, MIL-STD-810H, ECSS, NASA-STD, Smallwood filter, vibration analysis, NVGate, OROS software | |||
|description=Professional SRS analysis software for OROS NVGate. Fast shock response spectrum computation, built-in normative limit curves (MIL-STD-810H, ECSS), and automated pass/fail reporting. | |||
}} | |||
'''SRS Tool''' is a professional [https://en.wikipedia.org/wiki/Shock_response_spectrum 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. | |||
'''SRS Tool''' | [[File:11_main_full.png|center|800px|thumb|'''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 makes SRS Tool unique== | ||
SRS Tool is built around the idea that an engineer should go from raw measurement to qualification verdict in under one minute. | |||
{| class="wikitable" style="width:100%" | {| class="wikitable" style="width:100%; font-size:12px; border-collapse:collapse;" | ||
| | ! style="width:54%; background:#f0f4f8;" | Feature | ||
! | ! style="width:23%; background:#f0f4f8; text-align:center;" | OROS SRS Tool | ||
! style="width:23%; background:#f0f4f8; text-align:center;" | Typical alternatives | |||
|- | |- | ||
| ''' | | '''30+ normative limit curves built-in''' — MIL-STD-810H, ECSS, NASA-STD, DEF-STAN, ready to use with no setup | ||
| style="background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;" | ✔ Included | |||
| style="background:#ffebee; color:#b71c1c; text-align:center;" | ✘ Manual entry only | |||
|- | |- | ||
| Multi-channel Pass/Fail with | | '''Multi-channel Pass/Fail with per-channel verdict''' — x, y, z compared simultaneously in one run | ||
| style="background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;" | ✔ Included | |||
| style="background:#ffebee; color:#b71c1c; text-align:center;" | ✘ One channel at a time | |||
|- | |- | ||
| ''' | | '''NVGate TCP result injection''' — log-log display, autoscaled, direct to project | ||
| style="background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;" | ✔ Native | |||
| style="background:#ffebee; color:#b71c1c; text-align:center;" | ✘ Not available | |||
|- | |- | ||
| ''' | | '''Automatic shock zone detection''' — envelope algorithm, runs on load | ||
| style="background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;" | ✔ Automatic | |||
| style="background:#fff8e1; color:#7a5200; text-align:center;" | ~ Manual only | |||
|- | |- | ||
| ''' | | '''Primary + Residual SRS''' in a single computation pass | ||
| style="background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;" | ✔ One click | |||
| style="background:#fff8e1; color:#7a5200; text-align:center;" | ~ Two separate runs | |||
|- | |- | ||
| '''Worst-case | | '''SRSS + Worst-case Envelope''' — triaxial multi-axis combination | ||
| style="background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;" | ✔ Included | |||
| style="background:#ffebee; color:#b71c1c; text-align:center;" | ✘ Rarely available | |||
|- | |- | ||
| | | '''Interactive dB cursor''' on Pass/Fail chart — frequency, SRS, limit, margin at a glance | ||
| style="background:#e8f5e9; color:#1b5e20; text-align:center; font-weight:bold;" | ✔ Included | |||
| style="background:#ffebee; color:#b71c1c; text-align:center;" | ✘ Rarely available | |||
|- | |||
| | |||
|} | |} | ||
=== Full feature list === | === Full feature list === | ||
* '''Signal acquisition:''' reads NVGate | * '''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) | * '''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 | * '''Smallwood recursive filter:''' vectorised NumPy implementation; all frequencies computed in a single forward pass | ||
| Line 56: | Line 66: | ||
* '''Preprocessing:''' DC offset removal, noise floor suppression | * '''Preprocessing:''' DC offset removal, noise floor suppression | ||
* '''Dark theme:''' optimised for lab-room screen visibility | * '''Dark theme:''' optimised for lab-room screen visibility | ||
---- | ---- | ||
= | = Quick Start = | ||
== | <div style="border:1px solid #2e7d32; border-radius:4px; overflow:hidden; margin:14px 0;"> | ||
<div style="background:#2e7d32; color:#fff; font-weight:bold; padding:7px 14px; font-size:12px;">⚡ Five steps from measurement folder to qualification verdict</div> | |||
<div style="padding:12px 16px; background:#f9fdf9; font-size:12px; line-height:2.0;"> | |||
# '''Main tab''' → '''Select signal folder…''' → navigate to the NVGate Measurement folder | |||
# Channels appear automatically — shock zone is '''auto-detected''' (yellow markers on signal plot) | |||
# Set '''Q = 10''', range '''1–10 000 Hz''', resolution '''1/12 oct''' → click '''Compute SRS''' | |||
# '''Pass / Fail tab''' → limit curve is pre-set to MIL-STD-810H Mid-field → click '''▶ Run Pass / Fail''' | |||
# Read the per-channel verdict, export CSV / PNG, or click '''Inject into NVGate''' | |||
</div> | |||
</div> | |||
---- | |||
= Installation = | |||
---- | ---- | ||
[https://partnerzone.digigram.com/s/NKAeEkA5ijFDZin SRS V1.3 here ] | |||
Extract and launch the SRS_Tool.exe | |||
( You need to select the '''folder''' of the signal measurement. ) | |||
= Main Tab = | = Main Tab = | ||
[[File: | [[File:04_left_panel_main.png|right|300px|thumb|'''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.]] | ||
== Signal == | == Signal == | ||
Click '''Select signal folder…''' to open a folder browser (default root: <code>C:\OROS\NVGate data\Projects</code>). Select the '''Measurement folder''' — channels are listed and the signal is plotted immediately. | |||
== Channels == | == Channels == | ||
One checkbox per recorded channel, showing label, sampling rate, duration and unit: | |||
<pre> ☑ 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²)</pre> | |||
Channel labels (x, y, z…) come from the <code>Name</code> 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 == | |||
{| class="wikitable" style="font-size:12px;" | |||
! Parameter !! Description !! Recommended default | |||
{| class="wikitable" | |||
! Parameter !! Description !! | |||
|- | |- | ||
| ''' | | '''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 | | '''Resolution''' || Octave subdivision: 1/3, 1/6, 1/12, 1/24 oct || 1/12 octave | ||
|} | |} | ||
<div style="border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;"> | |||
'''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). | |||
</div> | |||
: | |||
Q = 10 | |||
== Output == | == Output == | ||
; Type | ; Type | ||
: '''Acc''' — Acceleration SRS | : '''Acc''' — Acceleration SRS. Always available. '''Vel''' — Pseudo-velocity SRS. '''Disp''' — Pseudo-displacement SRS. (Vel and Disp require an acceleration input.) | ||
; Curve | ; Curve | ||
: '''Maximax''' — | : '''Maximax''' — max(positive, |negative|). The standard curve required by most norms. '''Positive''' — max tensile response. '''Negative''' — max compressive response. | ||
== Signal and SRS plots == | |||
[[File:05_signal_plot.png|center|760px|thumb|'''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.]] | |||
[[File:06_srs_plot.png|center|760px|thumb|'''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.]] | |||
== | == 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: | |||
<pre>SRS Acc Shock AbsMax: x | |||
SRS Acc Shock AbsMax: y | |||
SRS Acc Shock AbsMax: z</pre> | |||
---- | |||
---- | ---- | ||
= Advanced Tab = | = Advanced Tab = | ||
[[File: | [[File:09_left_panel_adv.png|right|300px|thumb|'''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 == | == Shock Zone == | ||
<div style="border-left:4px solid #e65100; background:#fff8f5; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;"> | |||
'''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. | |||
</div> | |||
=== Auto-detection === | === Auto-detection === | ||
The detection algorithm | The detection algorithm: | ||
# Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window | # Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window | ||
# | # Trigger threshold = ''Threshold %'' × peak envelope | ||
# | # Zone = first to last sample above threshold | ||
# Expand by '' | # Expand by ''Padding ms'' on each side, clamped to signal bounds | ||
{| class="wikitable" | {| class="wikitable" style="font-size:12px;" | ||
! Parameter !! Effect !! Default | |||
! Parameter !! | |||
|- | |- | ||
| '''Threshold''' || | | '''Threshold (% of peak)''' || Lower → wider zone; higher → core impact only || 5 % | ||
|- | |- | ||
| '''Padding''' || | | '''Padding (ms)''' || Symmetric margin added on both sides of detected zone || 20 ms | ||
|} | |} | ||
'''Padding | '''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 === | === 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 == | |||
{| class="wikitable" style="font-size:12px;" | |||
{| class="wikitable" | |||
! Option !! Effect !! Typical use | ! Option !! Effect !! Typical use | ||
|- | |- | ||
| '''Remove DC offset''' (N ms) || Subtracts the mean of the first N ms from the | | '''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 | | '''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: | |||
; SRSS — | {| class="wikitable" style="font-size:12px;" | ||
! 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 | |||
|} | |||
---- | ---- | ||
| Line 291: | Line 222: | ||
= Pass / Fail Tab = | = Pass / Fail Tab = | ||
[[File: | [[File:07_left_panel_pf.png|right|300px|thumb|'''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 | The Pass/Fail tab compares computed SRS against any normative or user-defined limit curve. | ||
== | == Built-in limit curve library == | ||
= | <div style="border-left:4px solid #1565C0; background:#e8f0fb; padding:9px 14px; margin:10px 0; font-size:12px; border-radius:0 3px 3px 0;"> | ||
'''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. | |||
</div> | |||
{| class="wikitable" style="font-size:12px;" | |||
! Standard !! Curves included | |||
{| class="wikitable" style=" | |||
! Standard | |||
|- | |- | ||
| '''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 | | '''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''' || | | '''ECSS-E-ST-10-03C''' || Protoflight, Proto+, Acceptance, Qualification, Protoqualification (equipment & system level) | ||
|- | |- | ||
| '''NASA-STD-7003A''' || Payload near | | '''NASA-STD-7003A''' || Payload near/far-field, structure-borne near/far | ||
|- | |- | ||
| '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal | | '''DEF-STAN 00-35''' || Land vehicle, Ship (deck), Airborne external/internal | ||
|- | |- | ||
| '''MIL-S-901D''' || High- | | '''MIL-S-901D''' || High-impact shock Grade A / Grade B | ||
|- | |- | ||
| '''IEST-RP-DTE032''' || | | '''IEST-RP-DTE032''' || Light / medium / heavy equipment | ||
|- | |- | ||
| '''RTCA DO-160G''' || Avionics | | '''RTCA DO-160G''' || Avionics Cat. A / B / C | ||
|} | |} | ||
★ MIL-STD-810H Mid-field is the default — the most common qualification specification. | |||
=== User-defined CSV === | === User-defined CSV === | ||
Select '''← User-defined (CSV)''' | Select '''← User-defined (CSV)''', load a two-column file (Hz, g). Interpolation is log-log linear between breakpoints. Example: | ||
<pre>10, 5 100, 50 2000, 50 10000, 50</pre> | |||
<pre> | |||
10,5 | |||
100,50 | |||
2000,50 | |||
10000,50 | |||
</pre> | |||
=== Scale factor (dB) === | === Scale factor (dB) === | ||
Scales the limit curve before comparison: L_scaled(f) = L_nominal(f) × 10^(dB/20) | |||
{| class="wikitable" style="font-size:12px;" | |||
! dB || Multiplier || Typical use | |||
{| class="wikitable" | |||
! | |||
|- | |- | ||
| +6 | | +6 || ×2.00 || Conservative / tighter requirement | ||
|- | |- | ||
| +3 | | +3 || ×1.41 || Standard qualification margin check | ||
|- | |- | ||
| 0 | | 0 || ×1.00 || Nominal — no change | ||
|- | |- | ||
| −6 | | −6 || ×0.50 || Relaxed limit | ||
|} | |} | ||
== | == Pass/Fail results == | ||
[[File:03_passfail_result.png|center|760px|thumb|'''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) ) | |||
== | {| class="wikitable" style="font-size:12px;" | ||
! Colour !! Condition !! Meaning | |||
|- | |||
| style="background:#e8f5e9; color:#1b5e20;" | Green || M ≥ 3 dB || Well within specification | |||
|- | |||
| style="background:#fff8e1; color:#7a5200;" | Orange || 0 ≤ M < 3 dB || Caution — low margin | |||
|- | |||
= | | style="background:#ffebee; color:#b71c1c;" | Red || M < 0 dB || '''FAIL''' — exceedance | ||
|} | |||
: | |||
=== Interactive cursor === | === 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. | |||
The readout | |||
=== | === Verdict text === | ||
The result box below the chart shows | The result box below the chart shows global verdict, per-channel minimum margin, and the 10 worst exceedance frequencies. Example output: | ||
<pre>PASS — Maximax SRS | |||
<pre> | |||
PASS — Maximax SRS | |||
Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m) | Limit: MIL-STD-810H Meth.517 — Mid-field (0.5–1.5 m) | ||
Per-channel result: | Per-channel result: | ||
PASS x | PASS x min +42.1 dB @ 500 Hz | ||
PASS y | PASS y min +38.7 dB @ 342 Hz | ||
PASS z | PASS z min +45.3 dB @ 1000 Hz | ||
Worst margin (all channels): + | Worst margin (all channels): +38.7 dB @ 342.0 Hz | ||
No exceedance detected over the computed frequency range. | No exceedance detected over the computed frequency range.</pre> | ||
</pre> | |||
== Export == | == Export == | ||
{| class="wikitable" style="font-size:12px;" | |||
! Button !! Output !! Content | |||
{| class="wikitable" | |||
|- | |- | ||
| '''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. | ||
|} | |} | ||
---- | ---- | ||
= | = Calculation Reference = | ||
== Shock Response Spectrum == | |||
The | 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): | ||
< | <code>z''(t) + 2ζωₙz'(t) + ωₙ²z(t) = −x''(t)</code> | ||
</ | |||
{| class="wikitable" style="font-size:12px;" | |||
! Curve !! Definition !! Standard? | |||
|- | |||
| Positive SRS || max<sub>t</sub>[ ωₙ² z(t) ] || Supplementary | |||
|- | |||
| Negative SRS || max<sub>t</sub>[ −ωₙ²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: | |||
{| style="font-size:12px; font-family:monospace; border-collapse:collapse; margin:8px 0;" | |||
|- | |||
| style="padding:2px 10px;" | E = exp(−ζωₙΔt) K = ωd·Δt (ωd = ωₙ√(1−ζ²)) | |||
|- | |||
| style="padding:2px 10px;" | b₀ = 1 − E·sin(K)/K b₁ = 2(E·sin(K)/K − E·cos(K)) b₂ = E² − E·sin(K)/K | |||
|- | |||
| style="padding:2px 10px;" | a₁ = 2E·cos(K) a₂ = −E² | |||
|- | |||
| style="padding:2px 10px; font-weight:bold;" | 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)''' | |||
{| class="wikitable" style="font-size:12px;" | |||
! Resolution !! Bands 1–10 000 Hz | |||
{| class="wikitable" | |||
|- | |- | ||
| 1/3 octave || 40 | |||
|- | |- | ||
| 1/ | | 1/6 octave || 80 | ||
|- | |- | ||
| 1/ | | '''1/12 octave''' (default) || '''160''' | ||
|- | |- | ||
| 1/24 octave || 320 | |||
| 1/24 octave | |||
|} | |} | ||
== | == Q factor and damping == | ||
<code>Q = 1/(2ζ) ↔ ζ = 1/(2Q)</code> | |||
{| class="wikitable" style="font-size:12px;" | |||
! Q !! ζ !! Use | |||
{| class="wikitable" | |||
|- | |- | ||
| '''10''' || '''5 %''' || '''Aerospace standard — MIL-STD-810, ECSS, NASA''' | |||
|- | |- | ||
| | | 50 || 1 % || Lightly damped structures | ||
|- | |- | ||
| 5 || 10 % || Rubber-mounted, heavily damped | |||
| 5 || 10 % || | |||
|} | |} | ||
== Primary and Residual SRS == | == Primary and Residual SRS == | ||
{| class="wikitable" style="font-size:12px;" | |||
! 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 == | |||
{| class="wikitable" style="font-size:12px; font-family:monospace;" | |||
! 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 == | |||
== | {| class="wikitable" style="font-size:12px;" | ||
! 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 = | |||
{| class="wikitable" style="font-size:12px; width:100%;" | |||
! Unit !! Physical quantity !! Vel/Disp SRS available | |||
|- | |||
| '''m/s², g''' || Acceleration || style="background:#e8f5e9; color:#1b5e20; text-align:center;" | ✔ Yes | |||
|- | |||
| m/s, mm/s || Velocity || style="background:#ffebee; color:#b71c1c; text-align:center;" | ✘ No | |||
|- | |||
| m, mm, µm || Displacement || style="background:#ffebee; color:#b71c1c; text-align:center;" | ✘ No | |||
: | |||
|- | |- | ||
| N, kN || Force || style="background:#ffebee; color:#b71c1c; text-align:center;" | ✘ No | |||
|- | |- | ||
| | | V, mV || Voltage || style="background:#ffebee; color:#b71c1c; text-align:center;" | ✘ No | ||
|- | |- | ||
| | | Pa, N/m² || Pressure || style="background:#ffebee; color:#b71c1c; text-align:center;" | ✘ No | ||
|- | |- | ||
| | | rad/s, RPM || Angular velocity || style="background:#ffebee; color:#b71c1c; text-align:center;" | ✘ No | ||
|} | |} | ||
---- | ---- | ||
= | = Glossary = | ||
== | {| class="wikitable" style="font-size:12px; width:100%;" | ||
! style="width:20%;" | Term !! Definition | |||
|- | |||
| '''SRS''' || Shock Response Spectrum. Peak SDOF response as a function of natural frequency. | |||
|- | |||
| '''Maximax''' || max(Positive, |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. | ||
|} | |} | ||
---- | ---- | ||
= | = Appendix SRS Limit Curves — Normative Reference = | ||
This page documents all predefined SRS limit curves available in the SRS Tool. | |||
Each curve is identified by a '''confidence level''' tag shown next to its name in the interface. | |||
== Confidence level indicators == | |||
== | {| class="wikitable" style="width:100%" | ||
! Tag !! Meaning !! What to expect | |||
|- | |||
| style="background:#e8f5e9; color:#1b5e20; font-weight:bold; text-align:center;" | [normative] | |||
| Curve taken '''directly from the published standard''' as an SRS specification. | |||
| Breakpoints are faithful to the document. Use for compliance testing. | |||
|- | |||
| style="background:#fff3e0; color:#e65100; font-weight:bold; text-align:center;" | [approximate] | |||
| Standard defines a '''time-domain waveform''' (half-sine, sawtooth…), '''not''' an SRS. | |||
| The SRS envelope is computed from the pulse shape. For exact results, import the waveform and run compute_srs() on it. | |||
|- | |||
| style="background:#fce4ec; color:#880e4f; font-weight:bold; text-align:center;" | [indicative] | |||
| Levels depend on '''mounting position, equipment mass or mission profile''', or the exact document version was not available. | |||
| Use as a first-pass estimate only. Always verify with the applicable programme document. | |||
|} | |||
All curves use '''Q = 10''' (damping ζ = 5 %) and acceleration units (g). | |||
Between breakpoints, interpolation is '''log-log linear''' (constant dB/octave slope). | |||
== | == Summary table == | ||
{| class="wikitable sortable" style="width:100%; font-size:90%;" | |||
! Standard !! Sector !! Tag !! Application !! Peak level !! Freq. range | |||
{| class="wikitable" style="width:100%" | |- | ||
| NASA GEVS 2500 g || Space || style="background:#e8f5e9; color:#1b5e20;" | normative || Hardware on primary structure || 2 500 g || 20–10 000 Hz | |||
|- | |||
| NASA GEVS 1000 g || Space || style="background:#e8f5e9; color:#1b5e20;" | normative || Hardware on panel or bracket || 1 000 g || 20–10 000 Hz | |||
|- | |||
| NASA GEVS 3750 g (Qual.) || Space || style="background:#e8f5e9; color:#1b5e20;" | normative || Qualification unit (dedicated test article) || 3 750 g || 20–10 000 Hz | |||
|- | |- | ||
| Ariane 5 Equipment Bay || Space || style="background:#fce4ec; color:#880e4f;" | indicative || Satellite equipment bay, component level || 2 000 g || 100–10 000 Hz | |||
|- | |- | ||
| | | Ariane 6 || Space || style="background:#fce4ec; color:#880e4f;" | indicative || All payload positions, component level || 1 600 g || 100–10 000 Hz | ||
|- | |- | ||
| | | VEGA-C || Space || style="background:#fce4ec; color:#880e4f;" | indicative || Small satellite missions, component level || 1 200 g || 100–10 000 Hz | ||
|- | |- | ||
| | | ECSS-E-ST-10-03C Protoqual. || Space || style="background:#fce4ec; color:#880e4f;" | indicative || European space programmes, proto-qualification || 2 000 g || 20–10 000 Hz | ||
|- | |- | ||
| | | MIL-STD-810H M517 Near-field || Military / Pyro || style="background:#e8f5e9; color:#1b5e20;" | normative || Equipment < 0.5 m from pyrotechnic source || 10 000 g || 100–10 000 Hz | ||
|- | |- | ||
| | | MIL-STD-810H M517 Mid-field || Military / Pyro || style="background:#e8f5e9; color:#1b5e20;" | normative || Equipment 0.5–1.5 m from pyrotechnic source || 1 000 g || 100–10 000 Hz | ||
|- | |- | ||
| | | MIL-STD-810H M517 Far-field || Military / Pyro || style="background:#e8f5e9; color:#1b5e20;" | normative || Equipment > 1.5 m from pyrotechnic source || 100 g || 100–10 000 Hz | ||
|- | |- | ||
| | | MIL-STD-810H M516 Functional 40 g || Military / Mech || style="background:#fff3e0; color:#e65100;" | approximate || Functional shock — must operate before and after || 80 g (2×A) || 5–2 000 Hz | ||
|- | |- | ||
| | | MIL-STD-810H M516 Crash 40 g || Military / Mech || style="background:#fff3e0; color:#e65100;" | approximate || Crash hazard — must not endanger personnel || 60 g || 5–2 000 Hz | ||
|- | |- | ||
| | | MIL-STD-810H M516 Bench 15 g || Military / Mech || style="background:#fff3e0; color:#e65100;" | approximate || Bench handling — drops during maintenance || 30 g || 5–2 000 Hz | ||
|- | |- | ||
| | | MIL-S-901D Grade A || Military / Naval || style="background:#fce4ec; color:#880e4f;" | indicative || US Navy lightweight shipboard equipment (< 136 kg) || 2 000 g || 20–10 000 Hz | ||
|- | |- | ||
| | | MIL-S-901D Grade B || Military / Naval || style="background:#fce4ec; color:#880e4f;" | indicative || US Navy medium-weight equipment (136–2 268 kg) || 1 000 g || 20–10 000 Hz | ||
|- | |- | ||
| | | DO-160G Cat. B 6 g || Aviation || style="background:#fff3e0; color:#e65100;" | approximate || Airborne equipment — operational flight shock || 12 g || 5–2 000 Hz | ||
|- | |- | ||
| | | DO-160G Cat. C 15 g || Aviation || style="background:#fff3e0; color:#e65100;" | approximate || Avionics — bench handling during maintenance || 30 g || 5–2 000 Hz | ||
|- | |- | ||
| | | DO-160G Cat. D 20 g || Aviation || style="background:#fff3e0; color:#e65100;" | approximate || Airborne equipment — crash / emergency landing || 40 g || 5–2 000 Hz | ||
|- | |- | ||
| | | DEF STAN 00-35 Cat. M || European Defence || style="background:#fce4ec; color:#880e4f;" | indicative || UK defence — general military ground equipment || 1 000 g || 10–10 000 Hz | ||
|- | |- | ||
| | | DEF STAN 00-35 Cat. P || European Defence || style="background:#fce4ec; color:#880e4f;" | indicative || UK defence — aircraft store / weapon release || 2 000 g || 100–10 000 Hz | ||
|- | |- | ||
| | | GAM EG-13 Choc sévère || European Defence (DGA) || style="background:#fce4ec; color:#880e4f;" | indicative || French military — pyrotechnic devices, ejection seats || 2 000 g || 20–10 000 Hz | ||
| | |||
|- | |- | ||
| GAM EG-13 Choc modéré || European Defence (DGA) || style="background:#fce4ec; color:#880e4f;" | indicative || French military — vehicle impacts, transport drops || 500 g || 10–5 000 Hz | |||
|- | |- | ||
| | | STANAG 4370 AECTP-201 M417 || NATO || style="background:#fce4ec; color:#880e4f;" | indicative || NATO — pyroshock, severity level 3 || 2 000 g || 100–10 000 Hz | ||
|- | |- | ||
| | | STANAG 4370 AECTP-201 M403 || NATO || style="background:#fff3e0; color:#e65100;" | approximate || NATO — mechanical shock, severity level 3 || 50 g || 5–2 000 Hz | ||
|- | |- | ||
| | | IEC 60068-2-27 15 g / 11 ms || Industrial || style="background:#fff3e0; color:#e65100;" | approximate || General industrial / commercial equipment qualification || 30 g || 5–2 000 Hz | ||
|- | |- | ||
| | | IEC 60068-2-27 50 g / 11 ms || Industrial || style="background:#fff3e0; color:#e65100;" | approximate || Rugged industrial equipment — severe shock || 100 g || 5–2 000 Hz | ||
|- | |- | ||
| | | IEC 60068-2-27 100 g / 6 ms || Industrial || style="background:#fff3e0; color:#e65100;" | approximate || Harsh shock environments — impacts, sudden accelerations || 200 g || 5–2 000 Hz | ||
|- | |- | ||
| | | IEC 61373 Cat.1 Class B || Railway || style="background:#fff3e0; color:#e65100;" | approximate || Railway — equipment mounted on vehicle body (interior) || 6 g || 2–2 000 Hz | ||
|- | |- | ||
| | | IEC 61373 Cat.1 Class A || Railway || style="background:#fff3e0; color:#e65100;" | approximate || Railway — bogie-mounted equipment (running gear) || 15 g || 2–2 000 Hz | ||
|- | |- | ||
| | | IEC 61373 Cat.2 Under-body || Railway || style="background:#fff3e0; color:#e65100;" | approximate || Railway — under-body / axle-box mounted equipment || 50 g || 2–2 000 Hz | ||
|} | |} | ||
---- | |||
== How the SRS Tool uses these curves == | |||
= | # Select a curve in the '''Pass/Fail''' tab. | ||
# The tool interpolates the curve at the same frequency resolution as the measured SRS using log-log linear interpolation. | |||
# Margin is computed point-by-point: '''Margin (dB) = 20 × log₁₀(limit / SRS)''' | |||
# The overall result is PASS only if the margin is positive at '''all''' frequencies. | |||
== Adding a custom curve == | |||
You can import your own limit curve via a two-column CSV file (frequency Hz, level g) using the '''Load CSV''' button in the Pass/Fail tab. The SRS Tool applies the same log-log interpolation as built-in curves. | |||
[[Category:SRS Tool]] | |||
[[Category:Test Standards]] | |||
<div style="margin-top:28px; padding-top:12px; border-top:1px solid #ddd; font-size:11px; color:#888; text-align:center;"> | |||
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). | |||
</div> | |||
Latest revision as of 14:19, 4 May 2026
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.
What makes SRS Tool unique
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 | ✘ Rarely available |
| 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
Installation
SRS V1.3 here Extract and launch the SRS_Tool.exe
( You need to select the folder of the signal measurement. )
Main Tab
Signal
Click Select signal folder… to open a folder browser (default root: C:\OROS\NVGate data\Projects). Select the Measurement folder — 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
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
Advanced Tab
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:
- Compute a smoothed envelope: rolling mean of |signal| over a 3 ms window
- Trigger threshold = Threshold % × peak envelope
- Zone = first to last sample above threshold
- 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
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
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. |
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. |
Appendix SRS Limit Curves — Normative Reference
This page documents all predefined SRS limit curves available in the SRS Tool. Each curve is identified by a confidence level tag shown next to its name in the interface.
Confidence level indicators
| Tag | Meaning | What to expect |
|---|---|---|
| [normative] | Curve taken directly from the published standard as an SRS specification. | Breakpoints are faithful to the document. Use for compliance testing. |
| [approximate] | Standard defines a time-domain waveform (half-sine, sawtooth…), not an SRS. | The SRS envelope is computed from the pulse shape. For exact results, import the waveform and run compute_srs() on it. |
| [indicative] | Levels depend on mounting position, equipment mass or mission profile, or the exact document version was not available. | Use as a first-pass estimate only. Always verify with the applicable programme document. |
All curves use Q = 10 (damping ζ = 5 %) and acceleration units (g). Between breakpoints, interpolation is log-log linear (constant dB/octave slope).
Summary table
| Standard | Sector | Tag | Application | Peak level | Freq. range |
|---|---|---|---|---|---|
| NASA GEVS 2500 g | Space | normative | Hardware on primary structure | 2 500 g | 20–10 000 Hz |
| NASA GEVS 1000 g | Space | normative | Hardware on panel or bracket | 1 000 g | 20–10 000 Hz |
| NASA GEVS 3750 g (Qual.) | Space | normative | Qualification unit (dedicated test article) | 3 750 g | 20–10 000 Hz |
| Ariane 5 Equipment Bay | Space | indicative | Satellite equipment bay, component level | 2 000 g | 100–10 000 Hz |
| Ariane 6 | Space | indicative | All payload positions, component level | 1 600 g | 100–10 000 Hz |
| VEGA-C | Space | indicative | Small satellite missions, component level | 1 200 g | 100–10 000 Hz |
| ECSS-E-ST-10-03C Protoqual. | Space | indicative | European space programmes, proto-qualification | 2 000 g | 20–10 000 Hz |
| MIL-STD-810H M517 Near-field | Military / Pyro | normative | Equipment < 0.5 m from pyrotechnic source | 10 000 g | 100–10 000 Hz |
| MIL-STD-810H M517 Mid-field | Military / Pyro | normative | Equipment 0.5–1.5 m from pyrotechnic source | 1 000 g | 100–10 000 Hz |
| MIL-STD-810H M517 Far-field | Military / Pyro | normative | Equipment > 1.5 m from pyrotechnic source | 100 g | 100–10 000 Hz |
| MIL-STD-810H M516 Functional 40 g | Military / Mech | approximate | Functional shock — must operate before and after | 80 g (2×A) | 5–2 000 Hz |
| MIL-STD-810H M516 Crash 40 g | Military / Mech | approximate | Crash hazard — must not endanger personnel | 60 g | 5–2 000 Hz |
| MIL-STD-810H M516 Bench 15 g | Military / Mech | approximate | Bench handling — drops during maintenance | 30 g | 5–2 000 Hz |
| MIL-S-901D Grade A | Military / Naval | indicative | US Navy lightweight shipboard equipment (< 136 kg) | 2 000 g | 20–10 000 Hz |
| MIL-S-901D Grade B | Military / Naval | indicative | US Navy medium-weight equipment (136–2 268 kg) | 1 000 g | 20–10 000 Hz |
| DO-160G Cat. B 6 g | Aviation | approximate | Airborne equipment — operational flight shock | 12 g | 5–2 000 Hz |
| DO-160G Cat. C 15 g | Aviation | approximate | Avionics — bench handling during maintenance | 30 g | 5–2 000 Hz |
| DO-160G Cat. D 20 g | Aviation | approximate | Airborne equipment — crash / emergency landing | 40 g | 5–2 000 Hz |
| DEF STAN 00-35 Cat. M | European Defence | indicative | UK defence — general military ground equipment | 1 000 g | 10–10 000 Hz |
| DEF STAN 00-35 Cat. P | European Defence | indicative | UK defence — aircraft store / weapon release | 2 000 g | 100–10 000 Hz |
| GAM EG-13 Choc sévère | European Defence (DGA) | indicative | French military — pyrotechnic devices, ejection seats | 2 000 g | 20–10 000 Hz |
| GAM EG-13 Choc modéré | European Defence (DGA) | indicative | French military — vehicle impacts, transport drops | 500 g | 10–5 000 Hz |
| STANAG 4370 AECTP-201 M417 | NATO | indicative | NATO — pyroshock, severity level 3 | 2 000 g | 100–10 000 Hz |
| STANAG 4370 AECTP-201 M403 | NATO | approximate | NATO — mechanical shock, severity level 3 | 50 g | 5–2 000 Hz |
| IEC 60068-2-27 15 g / 11 ms | Industrial | approximate | General industrial / commercial equipment qualification | 30 g | 5–2 000 Hz |
| IEC 60068-2-27 50 g / 11 ms | Industrial | approximate | Rugged industrial equipment — severe shock | 100 g | 5–2 000 Hz |
| IEC 60068-2-27 100 g / 6 ms | Industrial | approximate | Harsh shock environments — impacts, sudden accelerations | 200 g | 5–2 000 Hz |
| IEC 61373 Cat.1 Class B | Railway | approximate | Railway — equipment mounted on vehicle body (interior) | 6 g | 2–2 000 Hz |
| IEC 61373 Cat.1 Class A | Railway | approximate | Railway — bogie-mounted equipment (running gear) | 15 g | 2–2 000 Hz |
| IEC 61373 Cat.2 Under-body | Railway | approximate | Railway — under-body / axle-box mounted equipment | 50 g | 2–2 000 Hz |
How the SRS Tool uses these curves
- Select a curve in the Pass/Fail tab.
- The tool interpolates the curve at the same frequency resolution as the measured SRS using log-log linear interpolation.
- Margin is computed point-by-point: Margin (dB) = 20 × log₁₀(limit / SRS)
- The overall result is PASS only if the margin is positive at all frequencies.
Adding a custom curve
You can import your own limit curve via a two-column CSV file (frequency Hz, level g) using the Load CSV button in the Pass/Fail tab. The SRS Tool applies the same log-log interpolation as built-in curves.
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).